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

Lines changed: 6 additions & 4 deletions
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

Lines changed: 1 addition & 0 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy