Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit b4fc645

Browse files
committed
Make pg_dumpall's database ACL query independent of hash table order.
Previously GRANT order on databases was not well defined, due to the use of EXCEPT without an ORDER BY. Add an ORDER BY, adapt test output. I don't, at the moment, see reason to backpatch this.
1 parent 248776e commit b4fc645

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

src/bin/pg_dump/pg_dumpall.c

+6-4
Original file line numberDiff line numberDiff line change
@@ -1307,11 +1307,13 @@ dumpCreateDB(PGconn *conn)
13071307
"pg_encoding_to_char(d.encoding), "
13081308
"datcollate, datctype, datfrozenxid, datminmxid, "
13091309
"datistemplate, "
1310-
"(SELECT pg_catalog.array_agg(acl) FROM (SELECT pg_catalog.unnest(coalesce(datacl,pg_catalog.acldefault('d',datdba))) AS acl "
1311-
"EXCEPT SELECT pg_catalog.unnest(pg_catalog.acldefault('d',datdba))) as foo)"
1310+
"(SELECT pg_catalog.array_agg(acl ORDER BY acl::text) FROM ( "
1311+
" SELECT pg_catalog.unnest(coalesce(datacl,pg_catalog.acldefault('d',datdba))) AS acl "
1312+
" EXCEPT SELECT pg_catalog.unnest(pg_catalog.acldefault('d',datdba))) as datacls)"
13121313
"AS datacl, "
1313-
"(SELECT pg_catalog.array_agg(acl) FROM (SELECT pg_catalog.unnest(pg_catalog.acldefault('d',datdba)) AS acl "
1314-
"EXCEPT SELECT pg_catalog.unnest(coalesce(datacl,pg_catalog.acldefault('d',datdba)))) as foo)"
1314+
"(SELECT pg_catalog.array_agg(acl ORDER BY acl::text) FROM ( "
1315+
" SELECT pg_catalog.unnest(pg_catalog.acldefault('d',datdba)) AS acl "
1316+
" EXCEPT SELECT pg_catalog.unnest(coalesce(datacl,pg_catalog.acldefault('d',datdba)))) as rdatacls)"
13151317
"AS rdatacl, "
13161318
"datconnlimit, "
13171319
"(SELECT spcname FROM pg_tablespace t WHERE t.oid = d.dattablespace) AS dattablespace "

src/bin/pg_dump/t/002_pg_dump.pl

+1
Original file line numberDiff line numberDiff line change
@@ -2484,6 +2484,7 @@
24842484
create_sql => 'REVOKE CONNECT ON DATABASE dump_test FROM public;',
24852485
regexp => qr/^
24862486
\QREVOKE CONNECT,TEMPORARY ON DATABASE dump_test FROM PUBLIC;\E\n
2487+
\QGRANT CREATE ON DATABASE dump_test TO regress_dump_test_role;\E\n
24872488
\QGRANT TEMPORARY ON DATABASE dump_test TO PUBLIC;\E
24882489
/xm,
24892490
like => { pg_dumpall_dbprivs => 1, },

0 commit comments

Comments
 (0)