diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c index b5f64e8d68e0ef9a7585c20be85804581148bfd5..0022d2d74ef9146112710e59d916d3a7aa15230b 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");