Fix dumping role comments when using --no-role-passwords
Commit 9a83d56b38c added support for allowing pg_dumpall to dump roles without including passwords, which accidentally made dumps omit COMMENTs on roles. This fixes it by using pg_authid to get the comment. Backpatch to all supported versions. Patch simultaneously written independently by Álvaro and myself. Author: Álvaro Herrera <alvherre@alvh.no-ip.org> Author: Daniel Gustafsson <daniel@yesql.se> Reported-by: Bartosz Chroł <bartosz.chrol@handen.pl> Discussion: https://postgr.es/m/AS8P194MB1271CDA0ADCA7B75FCD8E767F7332@AS8P194MB1271.EURP194.PROD.OUTLOOK.COM Discussion: https://postgr.es/m/CAEP4nAz9V4H41_4ESJd1Gf0v%3DdevkqO1%3Dpo91jUw-GJSx8Hxqg%40mail.gmail.com Backpatch-through: v12
This commit is contained in:
parent
33bfbef1d6
commit
be01c8c345
@ -760,28 +760,31 @@ dumpRoles(PGconn *conn)
|
||||
i_is_current_user;
|
||||
int i;
|
||||
|
||||
/* note: rolconfig is dumped later */
|
||||
/*
|
||||
* Notes: rolconfig is dumped later, and pg_authid must be used for
|
||||
* extracting rolcomment regardless of role_catalog.
|
||||
*/
|
||||
if (server_version >= 90600)
|
||||
printfPQExpBuffer(buf,
|
||||
"SELECT oid, rolname, rolsuper, rolinherit, "
|
||||
"rolcreaterole, rolcreatedb, "
|
||||
"rolcanlogin, rolconnlimit, rolpassword, "
|
||||
"rolvaliduntil, rolreplication, rolbypassrls, "
|
||||
"pg_catalog.shobj_description(oid, '%s') as rolcomment, "
|
||||
"pg_catalog.shobj_description(oid, 'pg_authid') as rolcomment, "
|
||||
"rolname = current_user AS is_current_user "
|
||||
"FROM %s "
|
||||
"WHERE rolname !~ '^pg_' "
|
||||
"ORDER BY 2", role_catalog, role_catalog);
|
||||
"ORDER BY 2", role_catalog);
|
||||
else if (server_version >= 90500)
|
||||
printfPQExpBuffer(buf,
|
||||
"SELECT oid, rolname, rolsuper, rolinherit, "
|
||||
"rolcreaterole, rolcreatedb, "
|
||||
"rolcanlogin, rolconnlimit, rolpassword, "
|
||||
"rolvaliduntil, rolreplication, rolbypassrls, "
|
||||
"pg_catalog.shobj_description(oid, '%s') as rolcomment, "
|
||||
"pg_catalog.shobj_description(oid, 'pg_authid') as rolcomment, "
|
||||
"rolname = current_user AS is_current_user "
|
||||
"FROM %s "
|
||||
"ORDER BY 2", role_catalog, role_catalog);
|
||||
"ORDER BY 2", role_catalog);
|
||||
else if (server_version >= 90100)
|
||||
printfPQExpBuffer(buf,
|
||||
"SELECT oid, rolname, rolsuper, rolinherit, "
|
||||
@ -789,10 +792,10 @@ dumpRoles(PGconn *conn)
|
||||
"rolcanlogin, rolconnlimit, rolpassword, "
|
||||
"rolvaliduntil, rolreplication, "
|
||||
"false as rolbypassrls, "
|
||||
"pg_catalog.shobj_description(oid, '%s') as rolcomment, "
|
||||
"pg_catalog.shobj_description(oid, pg_authid') as rolcomment, "
|
||||
"rolname = current_user AS is_current_user "
|
||||
"FROM %s "
|
||||
"ORDER BY 2", role_catalog, role_catalog);
|
||||
"ORDER BY 2", role_catalog);
|
||||
else if (server_version >= 80200)
|
||||
printfPQExpBuffer(buf,
|
||||
"SELECT oid, rolname, rolsuper, rolinherit, "
|
||||
@ -800,10 +803,10 @@ dumpRoles(PGconn *conn)
|
||||
"rolcanlogin, rolconnlimit, rolpassword, "
|
||||
"rolvaliduntil, false as rolreplication, "
|
||||
"false as rolbypassrls, "
|
||||
"pg_catalog.shobj_description(oid, '%s') as rolcomment, "
|
||||
"pg_catalog.shobj_description(oid, 'pg_authid') as rolcomment, "
|
||||
"rolname = current_user AS is_current_user "
|
||||
"FROM %s "
|
||||
"ORDER BY 2", role_catalog, role_catalog);
|
||||
"ORDER BY 2", role_catalog);
|
||||
else if (server_version >= 80100)
|
||||
printfPQExpBuffer(buf,
|
||||
"SELECT oid, rolname, rolsuper, rolinherit, "
|
||||
|
Loading…
x
Reference in New Issue
Block a user