|
|
|
@ -6,7 +6,7 @@ |
|
|
|
|
* Portions Copyright (c) 1994, Regents of the University of California |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.90 2007/02/10 14:58:55 petere Exp $ |
|
|
|
|
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.91 2007/05/15 20:20:21 alvherre Exp $ |
|
|
|
|
* |
|
|
|
|
*------------------------------------------------------------------------- |
|
|
|
|
*/ |
|
|
|
@ -702,8 +702,8 @@ dumpRoleMembership(PGconn *conn) |
|
|
|
|
|
|
|
|
|
res = executeQuery(conn, "SELECT ur.rolname AS roleid, " |
|
|
|
|
"um.rolname AS member, " |
|
|
|
|
"ug.rolname AS grantor, " |
|
|
|
|
"a.admin_option " |
|
|
|
|
"a.admin_option, " |
|
|
|
|
"ug.rolname AS grantor " |
|
|
|
|
"FROM pg_auth_members a " |
|
|
|
|
"LEFT JOIN pg_authid ur on ur.oid = a.roleid " |
|
|
|
|
"LEFT JOIN pg_authid um on um.oid = a.member " |
|
|
|
@ -717,14 +717,24 @@ dumpRoleMembership(PGconn *conn) |
|
|
|
|
{ |
|
|
|
|
char *roleid = PQgetvalue(res, i, 0); |
|
|
|
|
char *member = PQgetvalue(res, i, 1); |
|
|
|
|
char *grantor = PQgetvalue(res, i, 2); |
|
|
|
|
char *option = PQgetvalue(res, i, 3); |
|
|
|
|
char *option = PQgetvalue(res, i, 2); |
|
|
|
|
|
|
|
|
|
fprintf(OPF, "GRANT %s", fmtId(roleid)); |
|
|
|
|
fprintf(OPF, " TO %s", fmtId(member)); |
|
|
|
|
if (*option == 't') |
|
|
|
|
fprintf(OPF, " WITH ADMIN OPTION"); |
|
|
|
|
fprintf(OPF, " GRANTED BY %s;\n", fmtId(grantor)); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* We don't track the grantor very carefully in the backend, so cope |
|
|
|
|
* with the possibility that it has been dropped. |
|
|
|
|
*/ |
|
|
|
|
if (!PQgetisnull(res, i, 3)) |
|
|
|
|
{ |
|
|
|
|
char *grantor = PQgetvalue(res, i, 3); |
|
|
|
|
|
|
|
|
|
fprintf(OPF, " GRANTED BY %s", fmtId(grantor)); |
|
|
|
|
} |
|
|
|
|
fprintf(OPF, ";\n"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
PQclear(res); |
|
|
|
|