Thread: pg_dump should use current_database() instead of PQdb()
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
Attachment
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
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