mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-03 08:27:19 +02:00
Fix pg_dumpall to restore its ability to dump from ancient servers.
Fix breakage induced by commitsd8d3d2a4f3
and463f2625a5
: pg_dumpall has crashed when attempting to dump from pre-8.1 servers since then, due to faulty construction of the query used for dumping roles from older servers. The query was erroneous as of the earlier commit, but it wasn't exposed unless you tried to use --binary-upgrade, which you presumably wouldn't with a pre-8.1 server. However commit463f2625a
made it fail always. In HEAD, also fix additional breakage induced in the same query by commit491c029dbc
, which evidently wasn't tested against pre-8.1 servers either. The bug is only latent in 9.1 because463f2625a
hadn't landed yet, but it seems best to back-patch all branches containing the faulty query. Gilles Darold
This commit is contained in:
parent
11868e1704
commit
2c267e47af
@ -700,7 +700,7 @@ dumpRoles(PGconn *conn)
|
|||||||
"ORDER BY 2");
|
"ORDER BY 2");
|
||||||
else
|
else
|
||||||
printfPQExpBuffer(buf,
|
printfPQExpBuffer(buf,
|
||||||
"SELECT 0, usename as rolname, "
|
"SELECT 0 as oid, usename as rolname, "
|
||||||
"usesuper as rolsuper, "
|
"usesuper as rolsuper, "
|
||||||
"true as rolinherit, "
|
"true as rolinherit, "
|
||||||
"usesuper as rolcreaterole, "
|
"usesuper as rolcreaterole, "
|
||||||
@ -714,7 +714,7 @@ dumpRoles(PGconn *conn)
|
|||||||
"usename = current_user AS is_current_user "
|
"usename = current_user AS is_current_user "
|
||||||
"FROM pg_shadow "
|
"FROM pg_shadow "
|
||||||
"UNION ALL "
|
"UNION ALL "
|
||||||
"SELECT 0, groname as rolname, "
|
"SELECT 0 as oid, groname as rolname, "
|
||||||
"false as rolsuper, "
|
"false as rolsuper, "
|
||||||
"true as rolinherit, "
|
"true as rolinherit, "
|
||||||
"false as rolcreaterole, "
|
"false as rolcreaterole, "
|
||||||
@ -724,7 +724,8 @@ dumpRoles(PGconn *conn)
|
|||||||
"null::text as rolpassword, "
|
"null::text as rolpassword, "
|
||||||
"null::abstime as rolvaliduntil, "
|
"null::abstime as rolvaliduntil, "
|
||||||
"false as rolreplication, "
|
"false as rolreplication, "
|
||||||
"null as rolcomment, false "
|
"null as rolcomment, "
|
||||||
|
"false AS is_current_user "
|
||||||
"FROM pg_group "
|
"FROM pg_group "
|
||||||
"WHERE NOT EXISTS (SELECT 1 FROM pg_shadow "
|
"WHERE NOT EXISTS (SELECT 1 FROM pg_shadow "
|
||||||
" WHERE usename = groname) "
|
" WHERE usename = groname) "
|
||||||
|
Loading…
Reference in New Issue
Block a user