diff options
Diffstat (limited to 'src/backend/commands/variable.c')
-rw-r--r-- | src/backend/commands/variable.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c index 6ce8daeb95a..491dc38caf3 100644 --- a/src/backend/commands/variable.c +++ b/src/backend/commands/variable.c @@ -776,6 +776,7 @@ check_session_authorization(char **newval, void **extra, GucSource source) Oid roleid; bool is_superuser; role_auth_extra *myextra; + RoleAttr attributes; /* Do nothing for the boot_val default of NULL */ if (*newval == NULL) @@ -800,7 +801,8 @@ check_session_authorization(char **newval, void **extra, GucSource source) } roleid = HeapTupleGetOid(roleTup); - is_superuser = ((Form_pg_authid) GETSTRUCT(roleTup))->rolsuper; + attributes = ((Form_pg_authid) GETSTRUCT(roleTup))->rolattr; + is_superuser = (attributes & ROLE_ATTR_SUPERUSER); ReleaseSysCache(roleTup); @@ -844,6 +846,7 @@ check_role(char **newval, void **extra, GucSource source) Oid roleid; bool is_superuser; role_auth_extra *myextra; + RoleAttr attributes; if (strcmp(*newval, "none") == 0) { @@ -872,7 +875,8 @@ check_role(char **newval, void **extra, GucSource source) } roleid = HeapTupleGetOid(roleTup); - is_superuser = ((Form_pg_authid) GETSTRUCT(roleTup))->rolsuper; + attributes = ((Form_pg_authid) GETSTRUCT(roleTup))->rolattr; + is_superuser = (attributes & ROLE_ATTR_SUPERUSER); ReleaseSysCache(roleTup); |