pg_dumpall --clean is completely broken

Started by Tom Laneabout 17 years ago3 messageshackers
Jump to latest
#1Tom Lane
tgl@sss.pgh.pa.us

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

#2Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#1)
Re: pg_dumpall --clean is completely broken

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 mode

Allow pg_dump --clean to drop roles that own objects or
have 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. +

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#2)
Re: pg_dumpall --clean is completely broken

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