7.5-dev, pg_dumpall, dollarquoting

Started by Stefan Kaltenbrunnerover 21 years ago10 messages
#1Stefan Kaltenbrunner
mm-mailinglist@madness.at

Hi!

since we have a lot of databases here that suffer from pg_dump's
deficits in 7.3 and 7.4 regarding dependencies, we tried pg_dump from
the upcoming 7.5 release.
This version works much better, but it is not possible to dump a
complete cluster using pg_dumpall in a 7.3 or 7.4 compatible way because
pg_dumpall lacks the "-X disable-dollar-quoting" switch.
Would it be possible to modify pg_dumpall to accept the same commands as
pg_dump (at least those that make sense) - or am I missing something here ?

thanks

Stefan

#2Christopher Kings-Lynne
chriskl@familyhealth.com.au
In reply to: Stefan Kaltenbrunner (#1)
Re: 7.5-dev, pg_dumpall, dollarquoting

Hi Stefan,

since we have a lot of databases here that suffer from pg_dump's
deficits in 7.3 and 7.4 regarding dependencies, we tried pg_dump from
the upcoming 7.5 release.

Would you be able to specify exactly the deficiences? It's my mission
at the moment to make pg_dump 7.5 known-issue free :)

This version works much better, but it is not possible to dump a
complete cluster using pg_dumpall in a 7.3 or 7.4 compatible way because
pg_dumpall lacks the "-X disable-dollar-quoting" switch.
Would it be possible to modify pg_dumpall to accept the same commands as
pg_dump (at least those that make sense) - or am I missing something here ?

I can add it - do the other hackers want it?

The main problem stefan is that 7.5 dump is seriously only guaranteed to
restore to 7.5. You can use the 7.5 dump to upgrade to 7.5, but not to
restore to 7.4.

At the moment, dollar quoting is your main problem, but there's also the
set default_with_oids stuff, plus I'm also hopefully soon going to fix
the dumping owners issue, which will most likely make pg_dump 7.5 less
likely to restore to 7.4...

Chris

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Christopher Kings-Lynne (#2)
Re: 7.5-dev, pg_dumpall, dollarquoting

Christopher Kings-Lynne <chriskl@familyhealth.com.au> writes:

pg_dumpall lacks the "-X disable-dollar-quoting" switch.

I can add it - do the other hackers want it?

It should be there --- in general pg_dumpall should be able to pass down
any pg_dump switch that makes sense.

regards, tom lane

#4Andrew Dunstan
andrew@dunslane.net
In reply to: Tom Lane (#3)
Re: 7.5-dev, pg_dumpall, dollarquoting

Tom Lane wrote:

Christopher Kings-Lynne <chriskl@familyhealth.com.au> writes:

pg_dumpall lacks the "-X disable-dollar-quoting" switch.

I can add it - do the other hackers want it?

It should be there --- in general pg_dumpall should be able to pass down
any pg_dump switch that makes sense.

Perhaps rather than replicating every pg_dump option pg_dumpall needs a
single option that can encapsulate them?

e.g.
--dump-options="--foo --bar --baz"

Just a thought

cheers

andrew

#5Josh Berkus
josh@agliodbs.com
In reply to: Andrew Dunstan (#4)
Re: 7.5-dev, pg_dumpall, dollarquoting

KL-

Would you be able to specify exactly the deficiences? It's my mission
at the moment to make pg_dump 7.5 known-issue free :)

Well, since you asked:
(please excuse me if I'm covering old ground. I was off Hackers for almost a
month this spring)

1) When pg_dump 7.4.1 (I have not tested on CVS) pulls a dump from a 7.2
database with confusing dependancies (e.g. functions depend on views which
depend on multiple tables and other views containing other functions), some
objects (almost always functions) still get silently dropped from the dump
file. This "silent dropping" was also a problem in 7.3 (pulling from 7.2),
but nobody wanted to work on it -- especially as it's only possible to
demonstrate with a sufficiently complex early 7.2 database.
I have a good test database for this, I will test with CVS.

2) pg_restore needs to be more tolerant with certain kinds of errors. For
example, if an object already exists in the target database, due to being
from template1, it should be possible to tell pg_restore to ignore the error
with a switch. Currently, this issue prevents me from using pg_restore on
some systems, where the restore isn't run as the superuser. Another switch,
telling pg_restore to attempt to ignore all errors and restore anyway, would
also be keen (though I can see potential abuse issues).
Has this already been addressed in CVS?

--
Josh Berkus
Aglio Database Solutions
San Francisco

#6Christopher Kings-Lynne
chriskl@familyhealth.com.au
In reply to: Josh Berkus (#5)
Re: 7.5-dev, pg_dumpall, dollarquoting

1) When pg_dump 7.4.1 (I have not tested on CVS) pulls a dump from a 7.2
database with confusing dependancies (e.g. functions depend on views which
depend on multiple tables and other views containing other functions), some
objects (almost always functions) still get silently dropped from the dump
file. This "silent dropping" was also a problem in 7.3 (pulling from 7.2),
but nobody wanted to work on it -- especially as it's only possible to
demonstrate with a sufficiently complex early 7.2 database.
I have a good test database for this, I will test with CVS.

Nothing gets silently dropped. It will cause an ERROR on creation and
then keep going, but it won't silently drop it... (unless it's a
binary dump thing...)

Anyway, pg_dump in CVS does correct dump ordering based on a topological
sort of the pg_depend relation (thank Tom for that). It will of course
only work on a 7.3 or higher backend.

2) pg_restore needs to be more tolerant with certain kinds of errors. For
example, if an object already exists in the target database, due to being
from template1, it should be possible to tell pg_restore to ignore the error
with a switch. Currently, this issue prevents me from using pg_restore on
some systems, where the restore isn't run as the superuser. Another switch,
telling pg_restore to attempt to ignore all errors and restore anyway, would
also be keen (though I can see potential abuse issues).
Has this already been addressed in CVS?

Hmmm, dunno about this - it wasn't on my radar really. I'll experiment
with it, but I don't think I'm going to have time before June 30th :(

Chris

#7Tom Lane
tgl@sss.pgh.pa.us
In reply to: Christopher Kings-Lynne (#6)
Re: 7.5-dev, pg_dumpall, dollarquoting

Christopher Kings-Lynne <chriskl@familyhealth.com.au> writes:

2) pg_restore needs to be more tolerant with certain kinds of errors.

Hmmm, dunno about this - it wasn't on my radar really. I'll experiment
with it, but I don't think I'm going to have time before June 30th :(

I think we dealt with this already: pg_restore has been taught that the
correct response to a SQL command error is to report it and forge ahead,
not curl up and die.

regards, tom lane

#8Josh Berkus
josh@agliodbs.com
In reply to: Christopher Kings-Lynne (#6)
Re: 7.5-dev, pg_dumpall, dollarquoting

Chris,

Nothing gets silently dropped. It will cause an ERROR on creation and
then keep going, but it won't silently drop it... (unless it's a
binary dump thing...)

Silently dropped on dump, not on restore.

Anyway, pg_dump in CVS does correct dump ordering based on a topological
sort of the pg_depend relation (thank Tom for that). It will of course
only work on a 7.3 or higher backend.

Right. The issue is really complex databases which were developed in 7.2 or
7.1, which is missing the pg_depends information. In that case, pg_dump
seems to get confused about dependency sorting, and a few objects with long
dependency chains simply don't get backed up.

I'll see if I can put together a nice demo for this.

My concern in reporting this is that there are still a lot of commercial users
out there running 7.2, and I'd like to minimize upgrade pain.

--
Josh Berkus
Aglio Database Solutions
San Francisco

#9Tom Lane
tgl@sss.pgh.pa.us
In reply to: Josh Berkus (#8)
Re: 7.5-dev, pg_dumpall, dollarquoting

Josh Berkus <josh@agliodbs.com> writes:

Right. The issue is really complex databases which were developed in 7.2 or
7.1, which is missing the pg_depends information. In that case, pg_dump
seems to get confused about dependency sorting, and a few objects with long
dependency chains simply don't get backed up.

That would be a flat-out bug. Can we see a test case?

regards, tom lane

#10Christopher Kings-Lynne
chriskl@familyhealth.com.au
In reply to: Tom Lane (#3)
Re: 7.5-dev, pg_dumpall, dollarquoting

It should be there --- in general pg_dumpall should be able to pass down
any pg_dump switch that makes sense.

Do the -S and -O switches also make sense? Should I add them?

Chris