diff options
Diffstat (limited to 'src/bin/pg_dump/dumputils.c')
-rw-r--r-- | src/bin/pg_dump/dumputils.c | 23 |
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; } /* |