From 710647c541514ded39adbc8b100b53d0a0378407 Mon Sep 17 00:00:00 2001 From: Nathan Bossart Date: Wed, 1 May 2019 23:04:04 +0000 Subject: [PATCH v1 1/1] Fix ordering of GRANTs for databases in pg_dump. --- src/bin/pg_dump/pg_dump.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index db8ca40a78..28e78756a8 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -2672,13 +2672,23 @@ dumpDatabase(Archive *fout) "(%s datdba) AS dba, " "pg_encoding_to_char(encoding) AS encoding, " "datcollate, datctype, datfrozenxid, datminmxid, " - "(SELECT array_agg(acl ORDER BY acl::text COLLATE \"C\") FROM ( " - " SELECT unnest(coalesce(datacl,acldefault('d',datdba))) AS acl " - " EXCEPT SELECT unnest(acldefault('d',datdba))) as datacls)" + "(SELECT array_agg(acl ORDER BY row_n) FROM " + "(SELECT acl, row_n FROM " + "unnest(coalesce(datacl,acldefault('d',datdba))) " + "WITH ORDINALITY AS perm(acl,row_n) " + "WHERE NOT EXISTS ( " + "SELECT 1 FROM " + "unnest(acldefault('d',datdba)) " + "AS init(init_acl) WHERE acl = init_acl)) as datacls)" " AS datacl, " - "(SELECT array_agg(acl ORDER BY acl::text COLLATE \"C\") FROM ( " - " SELECT unnest(acldefault('d',datdba)) AS acl " - " EXCEPT SELECT unnest(coalesce(datacl,acldefault('d',datdba)))) as rdatacls)" + "(SELECT array_agg(acl ORDER BY row_n) FROM " + "(SELECT acl, row_n FROM " + "unnest(acldefault('d',datdba)) " + "WITH ORDINALITY AS initp(acl,row_n) " + "WHERE NOT EXISTS ( " + "SELECT 1 FROM " + "unnest(coalesce(datacl,acldefault('d',datdba))) " + "AS permp(orig_acl) WHERE acl = orig_acl)) as rdatacls)" " AS rdatacl, " "datistemplate, datconnlimit, " "(SELECT spcname FROM pg_tablespace t WHERE t.oid = dattablespace) AS tablespace, " -- 2.16.5