Thread: -HEAD pg_dumpall broken against older backends
Hi! looks like somebody forgot to test some changes to the pg_dumpall code in Revision 1.70 against <8.1 installations - resulting in the following syntax error: -- -- PostgreSQL database cluster dump -- \connect postgres pg_dumpall: query failed: ERROR: syntax error at or near "null" LINE 1: ... passwd as rolpassword, valuntil as rolvaliduntil null as ro... ^ pg_dumpall: query was: SELECT usename as rolname, usesuper as rolsuper, true as rolinherit, usesuper as rolcreaterole, usecreatedb as rolcreatedb, usecatupd as rolcatupdate, true as rolcanlogin, -1 as rolconnlimit, passwd as rolpassword, valuntil as rolvaliduntil null as rolcomment FROM pg_shadow UNION ALL SELECT groname as rolname, false as rolsuper, true as rolinherit, false as rolcreaterole, false as rolcreatedb, false as rolcatupdate, false as rolcanlogin, -1 as rolconnlimit, null::text as rolpassword, null::abstime as rolvaliduntil null FROM pg_group proposed patch to fix problem is attached. Stefan Index: src/bin/pg_dump/pg_dumpall.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/pg_dumpall.c,v retrieving revision 1.72 diff -u -r1.72 pg_dumpall.c --- src/bin/pg_dump/pg_dumpall.c 5 Mar 2006 15:58:51 -0000 1.72 +++ src/bin/pg_dump/pg_dumpall.c 29 Mar 2006 13:29:01 -0000 @@ -444,7 +444,7 @@ "true as rolcanlogin, " "-1 as rolconnlimit, " "passwd as rolpassword, " - "valuntil as rolvaliduntil " + "valuntil as rolvaliduntil, " "null as rolcomment " "FROM pg_shadow " "UNION ALL " @@ -457,8 +457,8 @@ "false as rolcanlogin, " "-1 as rolconnlimit, " "null::text as rolpassword, " - "null::abstime as rolvaliduntil " - "null " + "null::abstime as rolvaliduntil, " + "null as rolcomment " "FROM pg_group"); res = executeQuery(conn, buf->data);
Stefan Kaltenbrunner wrote: > looks like somebody forgot to test some changes to the pg_dumpall > code in Revision 1.70 against <8.1 installations - resulting in the > following syntax error: Dump output is never expected to be backward compatible. -- Peter Eisentraut http://developer.postgresql.org/~petere/
Peter Eisentraut <peter_e@gmx.net> writes: > Stefan Kaltenbrunner wrote: >> looks like somebody forgot to test some changes to the pg_dumpall >> code in Revision 1.70 against <8.1 installations - resulting in the >> following syntax error: > Dump output is never expected to be backward compatible. But pg_dumpall should be able to extract a dump from an older server. regards, tom lane
Peter Eisentraut wrote: > Stefan Kaltenbrunner wrote: > >> looks like somebody forgot to test some changes to the pg_dumpall >> code in Revision 1.70 against <8.1 installations - resulting in the >> following syntax error: >> > > Dump output is never expected to be backward compatible. > > We don't expect pg_dumpall to be issuing invalid SQL at any time, though. That's what Stefan has uncovered. The code in question is only called when it's run against an older server. cheers andrew
Peter Eisentraut wrote: > Stefan Kaltenbrunner wrote: > >>looks like somebody forgot to test some changes to the pg_dumpall >>code in Revision 1.70 against <8.1 installations - resulting in the >>following syntax error: > > > Dump output is never expected to be backward compatible. yeah - but if you take a look at the code/patch you will see that the problem in this case is that pg_dumpall generates invalid SQL if it is operating against an older backend which is an obvious typo/thinko in this case. It has nothing to do with generating backwards compatible dumps - and using the pg_dumpall from the (newer) target version for upgrades has been recommended for a while (or rather is documented to work in the manual) I think. Stefan
Stefan Kaltenbrunner wrote: > Hi! > > looks like somebody forgot to test some changes to the pg_dumpall code > in Revision 1.70 against <8.1 installations - resulting in the > following syntax error: > > patch applied, thanks andrew