aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bin/pg_dump/pg_dumpall.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c
index b5f64e8d68e..0022d2d74ef 100644
--- a/src/bin/pg_dump/pg_dumpall.c
+++ b/src/bin/pg_dump/pg_dumpall.c
@@ -804,11 +804,17 @@ dumpRoles(PGconn *conn)
buf, "ROLE", rolename);
fprintf(OPF, "%s", buf->data);
-
- if (server_version >= 70300)
- dumpUserConfig(conn, rolename);
}
+ /*
+ * Dump configuration settings for roles after all roles have been dumped.
+ * We do it this way because config settings for roles could mention the
+ * names of other roles.
+ */
+ if (server_version >= 70300)
+ for (i = 0; i < PQntuples(res); i++)
+ dumpUserConfig(conn, PQgetvalue(res, i, i_rolname));
+
PQclear(res);
fprintf(OPF, "\n\n");