diff options
author | Stephen Frost <sfrost@snowman.net> | 2016-05-24 20:10:16 -0400 |
---|---|---|
committer | Stephen Frost <sfrost@snowman.net> | 2016-05-24 20:10:16 -0400 |
commit | 2e8b4bf80473d0e4a4254b417424e79195a9ce6a (patch) | |
tree | d6e3dbaf63969ee5898dbe661e68f6bbd008cf23 /src/bin/pg_dump/dumputils.c | |
parent | 2d2e40e3befd8b9e0d2757554537345b15fa6ea2 (diff) | |
download | postgresql-2e8b4bf80473d0e4a4254b417424e79195a9ce6a.tar.gz postgresql-2e8b4bf80473d0e4a4254b417424e79195a9ce6a.zip |
Qualify table usage in dumpTable() and use regclass
All of the other tables used in the query in dumpTable(), which is
collecting column-level ACLs, are qualified, so we should be qualifying
the pg_init_privs, the related sub-select against pg_class and the
other queries added by the pg_dump catalog ACLs work.
Also, use ::regclass (or ::pg_catalog.regclass, where appropriate)
instead of using a poorly constructed query to get the OID for various
catalog tables.
Issues identified by Noah and Alvaro, patch by me.
Diffstat (limited to 'src/bin/pg_dump/dumputils.c')
-rw-r--r-- | src/bin/pg_dump/dumputils.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/bin/pg_dump/dumputils.c b/src/bin/pg_dump/dumputils.c index c55a2fa14ec..0acdf54fa5e 100644 --- a/src/bin/pg_dump/dumputils.c +++ b/src/bin/pg_dump/dumputils.c @@ -715,20 +715,20 @@ buildACLQueries(PQExpBuffer acl_subquery, PQExpBuffer racl_subquery, * these are run the initial privileges will be in place, even in a * binary upgrade situation (see below). */ - printfPQExpBuffer(acl_subquery, "(SELECT array_agg(acl) FROM " - "(SELECT unnest(coalesce(%s,acldefault(%s,%s))) AS acl " + printfPQExpBuffer(acl_subquery, "(SELECT pg_catalog.array_agg(acl) FROM " + "(SELECT pg_catalog.unnest(coalesce(%s,pg_catalog.acldefault(%s,%s))) AS acl " "EXCEPT " - "SELECT unnest(coalesce(pip.initprivs,acldefault(%s,%s)))) as foo)", + "SELECT pg_catalog.unnest(coalesce(pip.initprivs,pg_catalog.acldefault(%s,%s)))) as foo)", acl_column, obj_kind, acl_owner, obj_kind, acl_owner); - printfPQExpBuffer(racl_subquery, "(SELECT array_agg(acl) FROM " - "(SELECT unnest(coalesce(pip.initprivs,acldefault(%s,%s))) AS acl " + printfPQExpBuffer(racl_subquery, "(SELECT pg_catalog.array_agg(acl) FROM " + "(SELECT pg_catalog.unnest(coalesce(pip.initprivs,pg_catalog.acldefault(%s,%s))) AS acl " "EXCEPT " - "SELECT unnest(coalesce(%s,acldefault(%s,%s)))) as foo)", + "SELECT pg_catalog.unnest(coalesce(%s,pg_catalog.acldefault(%s,%s)))) as foo)", obj_kind, acl_owner, acl_column, @@ -753,19 +753,19 @@ buildACLQueries(PQExpBuffer acl_subquery, PQExpBuffer racl_subquery, { printfPQExpBuffer(init_acl_subquery, "CASE WHEN privtype = 'e' THEN " - "(SELECT array_agg(acl) FROM " - "(SELECT unnest(pip.initprivs) AS acl " + "(SELECT pg_catalog.array_agg(acl) FROM " + "(SELECT pg_catalog.unnest(pip.initprivs) AS acl " "EXCEPT " - "SELECT unnest(acldefault(%s,%s))) as foo) END", + "SELECT pg_catalog.unnest(pg_catalog.acldefault(%s,%s))) as foo) END", obj_kind, acl_owner); printfPQExpBuffer(init_racl_subquery, "CASE WHEN privtype = 'e' THEN " - "(SELECT array_agg(acl) FROM " - "(SELECT unnest(acldefault(%s,%s)) AS acl " + "(SELECT pg_catalog.array_agg(acl) FROM " + "(SELECT pg_catalog.unnest(pg_catalog.acldefault(%s,%s)) AS acl " "EXCEPT " - "SELECT unnest(pip.initprivs)) as foo) END", + "SELECT pg_catalog.unnest(pip.initprivs)) as foo) END", obj_kind, acl_owner); } |