Thread: pg_dumpall --clean is completely broken

pg_dumpall --clean is completely broken

From
Tom Lane
Date:
A thread over in -admin has made me realize the truth of $SUBJECT.
With --clean, pg_dumpall does indeed emit a DROP command for each
role, tablespace, or database ... just before recreating it.  This
takes no account of dependencies and so the role and tablespace
drops are pretty much guaranteed to fail due to databases still
depending on them.

I'm not sure if we need any real dependency analysis.  It seems
like it would be sufficient to issue the drops in a separate
pass:- drop all the databases- drop all the tablespaces- drop all the roles- go on with creation

The roles might still have references to each other in step 3,
but the DROP ROLE docs claim that's okay (I haven't tested).

Comments?
        regards, tom lane


Re: pg_dumpall --clean is completely broken

From
Bruce Momjian
Date:
Tom Lane wrote:
> A thread over in -admin has made me realize the truth of $SUBJECT.
> With --clean, pg_dumpall does indeed emit a DROP command for each
> role, tablespace, or database ... just before recreating it.  This
> takes no account of dependencies and so the role and tablespace
> drops are pretty much guaranteed to fail due to databases still
> depending on them.
> 
> I'm not sure if we need any real dependency analysis.  It seems
> like it would be sufficient to issue the drops in a separate
> pass:
>     - drop all the databases
>     - drop all the tablespaces
>     - drop all the roles
>     - go on with creation
> 
> The roles might still have references to each other in step 3,
> but the DROP ROLE docs claim that's okay (I haven't tested).

Does your recently-applied patch address any of these TODO items?
Stop dumping CASCADE on DROP TYPE commands in clean modeAllow pg_dump --clean to drop roles that own objects orhave
privileges
 

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


Re: pg_dumpall --clean is completely broken

From
Tom Lane
Date:
Bruce Momjian <bruce@momjian.us> writes:
> Does your recently-applied patch address any of these TODO items?

>     Stop dumping CASCADE on DROP TYPE commands in clean mode

That has nothing to do with pg_dumpall.
>     Allow pg_dump --clean to drop roles that own objects or
>     have privileges 

Hmm ... pg_dump never drops roles at all, and shouldn't.  Is this
a garbled reference to pg_dumpall?  If so I might've fixed it.
It's not entirely clear what the item is about though.
        regards, tom lane