summaryrefslogtreecommitdiff
path: root/src/bin/pg_dump/dumputils.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/pg_dump/dumputils.c')
-rw-r--r--src/bin/pg_dump/dumputils.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/bin/pg_dump/dumputils.c b/src/bin/pg_dump/dumputils.c
index 81ec650e5ca..b41f2b91258 100644
--- a/src/bin/pg_dump/dumputils.c
+++ b/src/bin/pg_dump/dumputils.c
@@ -364,11 +364,12 @@ buildACLCommands(const char *name, const char *subname,
*/
bool
buildDefaultACLCommands(const char *type, const char *nspname,
- const char *acls, const char *owner,
+ const char *acls, const char *racls,
+ const char *initacls, const char *initracls,
+ const char *owner,
int remoteVersion,
PQExpBuffer sql)
{
- bool result;
PQExpBuffer prefix;
prefix = createPQExpBuffer();
@@ -384,14 +385,22 @@ buildDefaultACLCommands(const char *type, const char *nspname,
if (nspname)
appendPQExpBuffer(prefix, "IN SCHEMA %s ", fmtId(nspname));
- result = buildACLCommands("", NULL,
- type, acls, "", owner,
- prefix->data, remoteVersion,
- sql);
+ if (strlen(initacls) != 0 || strlen(initracls) != 0)
+ {
+ appendPQExpBuffer(sql, "SELECT pg_catalog.binary_upgrade_set_record_init_privs(true);\n");
+ if (!buildACLCommands("", NULL, type, initacls, initracls, owner,
+ prefix->data, remoteVersion, sql))
+ return false;
+ appendPQExpBuffer(sql, "SELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\n");
+ }
+
+ if (!buildACLCommands("", NULL, type, acls, racls, owner,
+ prefix->data, remoteVersion, sql))
+ return false;
destroyPQExpBuffer(prefix);
- return result;
+ return true;
}
/*