pg_dump should use current_database() instead of PQdb()

Started by Peter Eisentrautabout 8 years ago3 messageshackers
Jump to latest
#1Peter Eisentraut
peter_e@gmx.net

A report from a pgbouncer user revealed that running pg_dump -C/--create
does not work through a connection proxy if the virtual database name on
the proxy does not match the real database name on the database server.
That's because pg_dump looks up the database to be dumped using the
information from PQdb(). It should be using current_database() instead.
(The code was quite likely written before current_database() was
available (PG 7.3)).

See attached patch.

There are a few other uses of PQdb() in pg_dump, but I think those are
OK because they relate to connection information.

--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Attachments:

0001-pg_dump-Use-current_database-instead-of-PQdb.patchtext/plain; charset=UTF-8; name=0001-pg_dump-Use-current_database-instead-of-PQdb.patch; x-mac-creator=0; x-mac-type=0Download+22-31
#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#1)
Re: pg_dump should use current_database() instead of PQdb()

Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:

A report from a pgbouncer user revealed that running pg_dump -C/--create
does not work through a connection proxy if the virtual database name on
the proxy does not match the real database name on the database server.
That's because pg_dump looks up the database to be dumped using the
information from PQdb(). It should be using current_database() instead.
(The code was quite likely written before current_database() was
available (PG 7.3)).

See attached patch.

Looks reasonable in a quick once-over, but I've not tested it.

regards, tom lane

#3Peter Eisentraut
peter_e@gmx.net
In reply to: Peter Eisentraut (#1)
Re: pg_dump should use current_database() instead of PQdb()

On 4/10/18 12:40, Peter Eisentraut wrote:

A report from a pgbouncer user revealed that running pg_dump -C/--create
does not work through a connection proxy if the virtual database name on
the proxy does not match the real database name on the database server.
That's because pg_dump looks up the database to be dumped using the
information from PQdb(). It should be using current_database() instead.
(The code was quite likely written before current_database() was
available (PG 7.3)).

See attached patch.

committed

--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services