pgsql: Fix pg_dumpall with database names containing =
Fix pg_dumpall with database names containing =
If a database name contained a '=' character, pg_dumpall failed. The problem
was in the way pg_dumpall passes the database name to pg_dump on the
command line. If it contained a '=' character, pg_dump would interpret it
as a libpq connection string instead of a plain database name.
To fix, pass the database name to pg_dump as a connection string,
"dbname=foo", with the database name escaped if necessary.
Back-patch to all supported branches.
Branch
------
REL9_1_STABLE
Details
-------
http://git.postgresql.org/pg/commitdiff/957bafb2091136161cb7f1a8a56439310c6bd1b2
Modified Files
--------------
src/bin/pg_dump/pg_dumpall.c | 34 +++++++++++++++++++++++++++++++++-
1 files changed, 33 insertions(+), 1 deletions(-)
--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers
On 20 February 2013 15:14, Heikki Linnakangas <heikki.linnakangas@iki.fi> wrote:
Fix pg_dumpall with database names containing =
If a database name contained a '=' character, pg_dumpall failed. The problem
was in the way pg_dumpall passes the database name to pg_dump on the
command line. If it contained a '=' character, pg_dump would interpret it
as a libpq connection string instead of a plain database name.To fix, pass the database name to pg_dump as a connection string,
"dbname=foo", with the database name escaped if necessary.Back-patch to all supported branches.
I also notice that if you create a database with an "=" in, you can't
connect to it using psql.
thom@swift ~/Development/postgresql $ psql "8=8"
psql: invalid connection option "8"
thom@swift ~/Development/postgresql $ psql -d "8=8"
psql: invalid connection option "8"
thom@swift ~/Development/postgresql $ psql --dbname="8=8"
psql: invalid connection option "8"
thom@swift ~/Development/postgresql $ psql -d '8=8'
psql: invalid connection option "8"
thom@swift ~/Development/postgresql $ psql postgres
Expanded display is used automatically.
psql (9.3devel)
Type "help" for help.
postgres=# \c "8=8"
invalid connection option "8"
Previous connection kept
postgres=# \c 8=8
invalid connection option "8"
Previous connection kept
--
Thom
--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers
On 26.02.2013 18:03, Thom Brown wrote:
On 20 February 2013 15:14, Heikki Linnakangas<heikki.linnakangas@iki.fi> wrote:
Fix pg_dumpall with database names containing =
If a database name contained a '=' character, pg_dumpall failed. The problem
was in the way pg_dumpall passes the database name to pg_dump on the
command line. If it contained a '=' character, pg_dump would interpret it
as a libpq connection string instead of a plain database name.To fix, pass the database name to pg_dump as a connection string,
"dbname=foo", with the database name escaped if necessary.Back-patch to all supported branches.
I also notice that if you create a database with an "=" in, you can't
connect to it using psql.
Specifying it as a connection string works:
psql dbname='8=8'
That's the same trick I applied to pg_dumpall's pg_dump invocations.
- Heikki
--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers
On 26 February 2013 16:29, Heikki Linnakangas <hlinnakangas@vmware.com> wrote:
On 26.02.2013 18:03, Thom Brown wrote:
On 20 February 2013 15:14, Heikki Linnakangas<heikki.linnakangas@iki.fi>
wrote:Fix pg_dumpall with database names containing =
If a database name contained a '=' character, pg_dumpall failed. The
problem
was in the way pg_dumpall passes the database name to pg_dump on the
command line. If it contained a '=' character, pg_dump would interpret it
as a libpq connection string instead of a plain database name.To fix, pass the database name to pg_dump as a connection string,
"dbname=foo", with the database name escaped if necessary.Back-patch to all supported branches.
I also notice that if you create a database with an "=" in, you can't
connect to it using psql.Specifying it as a connection string works:
psql dbname='8=8'
That's the same trick I applied to pg_dumpall's pg_dump invocations.
Yes, but while this is true, it still seems like some kind of parsing
oversight. Once I'm in that database, I can't switch user from within
psql:
8=8=# \c - moo
invalid connection option "8"
Previous connection kept
--
Thom
--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers
On 27.02.2013 11:52, Thom Brown wrote:
Once I'm in that database, I can't switch user from within psql:
8=8=# \c - moo
invalid connection option "8"
Previous connection kept
Hmm, true. Also, any other connection options you specified in the
original connection string are lost. For example, if you first connected
with:
psql "dbname=foo sslmode=require"
and then did "\c - anotheruser", the second connection would not require
ssl.
- Heikki
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers