Fixes null grantor issue

pull/7451/head
gurkanindibay 2024-02-07 17:49:23 +03:00
parent e9717984d2
commit 752979dc4a
4 changed files with 10 additions and 7 deletions

View File

@ -1241,12 +1241,6 @@ PreprocessGrantRoleStmt(Node *node, const char *queryString,
return NIL;
}
/*
* Postgres don't seem to use the grantor. Even dropping the grantor doesn't
* seem to affect the membership. If this changes, we might need to add grantors
* to the dependency resolution too. For now we just don't propagate it.
*/
stmt->grantor = NULL;
stmt->grantee_roles = distributedGranteeRoles;
char *sql = DeparseTreeNode((Node *) stmt);
stmt->grantee_roles = allGranteeRoles;

View File

@ -170,6 +170,12 @@ citus_ProcessUtility(PlannedStmt *pstmt,
Node *parsetree = pstmt->utilityStmt;
if (IsA(parsetree, GrantRoleStmt))
{
GrantRoleStmt *grantRoleStmt = (GrantRoleStmt *) parsetree;
elog(LOG, "GrantRoleStmt: ");
}
if (IsA(parsetree, TransactionStmt))
{
TransactionStmt *transactionStmt = (TransactionStmt *) parsetree;

View File

@ -252,7 +252,7 @@ SELECT result FROM run_command_on_all_nodes(
[{"member":"dist_role_4","role":"dist_role_3","grantor":"test_admin_role","admin_option":false}, +
{"member":"non_dist_role_3","role":"dist_role_3","grantor":"test_admin_role","admin_option":false}, +
{"member":"test_admin_role","role":"dist_role_3","grantor":"postgres","admin_option":true}]
[{"member":"dist_role_4","role":"dist_role_3","grantor":"postgres","admin_option":false}, +
[{"member":"dist_role_4","role":"dist_role_3","grantor":"test_admin_role","admin_option":false}, +
{"member":"test_admin_role","role":"dist_role_3","grantor":"postgres","admin_option":true}]
[{"member":"dist_role_4","role":"dist_role_3","grantor":"postgres","admin_option":false}, +
{"member":"test_admin_role","role":"dist_role_3","grantor":"postgres","admin_option":true}]
@ -280,6 +280,7 @@ SELECT objid::regrole FROM pg_catalog.pg_dist_object WHERE classid='pg_authid'::
(5 rows)
REVOKE dist_role_3 from non_dist_role_3 granted by test_admin_role;
revoke dist_role_3 from test_admin_role cascade;
drop role test_admin_role;
\c - - - :worker_1_port
SELECT roleid::regrole::text AS role, member::regrole::text, grantor::regrole::text, admin_option FROM pg_auth_members WHERE roleid::regrole::text LIKE '%dist\_%' ORDER BY 1, 2;

View File

@ -131,6 +131,8 @@ SELECT roleid::regrole::text AS role, member::regrole::text, (grantor::regrole::
SELECT objid::regrole FROM pg_catalog.pg_dist_object WHERE classid='pg_authid'::regclass::oid AND objid::regrole::text LIKE '%dist\_%' ORDER BY 1;
REVOKE dist_role_3 from non_dist_role_3 granted by test_admin_role;
revoke dist_role_3 from test_admin_role cascade;
drop role test_admin_role;
\c - - - :worker_1_port