mirror of https://github.com/citusdata/citus.git
Fixes null grantor issue
parent
e9717984d2
commit
752979dc4a
|
@ -1241,12 +1241,6 @@ PreprocessGrantRoleStmt(Node *node, const char *queryString,
|
||||||
return NIL;
|
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;
|
stmt->grantee_roles = distributedGranteeRoles;
|
||||||
char *sql = DeparseTreeNode((Node *) stmt);
|
char *sql = DeparseTreeNode((Node *) stmt);
|
||||||
stmt->grantee_roles = allGranteeRoles;
|
stmt->grantee_roles = allGranteeRoles;
|
||||||
|
|
|
@ -170,6 +170,12 @@ citus_ProcessUtility(PlannedStmt *pstmt,
|
||||||
|
|
||||||
Node *parsetree = pstmt->utilityStmt;
|
Node *parsetree = pstmt->utilityStmt;
|
||||||
|
|
||||||
|
if (IsA(parsetree, GrantRoleStmt))
|
||||||
|
{
|
||||||
|
GrantRoleStmt *grantRoleStmt = (GrantRoleStmt *) parsetree;
|
||||||
|
elog(LOG, "GrantRoleStmt: ");
|
||||||
|
}
|
||||||
|
|
||||||
if (IsA(parsetree, TransactionStmt))
|
if (IsA(parsetree, TransactionStmt))
|
||||||
{
|
{
|
||||||
TransactionStmt *transactionStmt = (TransactionStmt *) parsetree;
|
TransactionStmt *transactionStmt = (TransactionStmt *) parsetree;
|
||||||
|
|
|
@ -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":"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":"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":"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":"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":"postgres","admin_option":false}, +
|
||||||
{"member":"test_admin_role","role":"dist_role_3","grantor":"postgres","admin_option":true}]
|
{"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)
|
(5 rows)
|
||||||
|
|
||||||
REVOKE dist_role_3 from non_dist_role_3 granted by test_admin_role;
|
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;
|
drop role test_admin_role;
|
||||||
\c - - - :worker_1_port
|
\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;
|
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;
|
||||||
|
|
|
@ -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;
|
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 non_dist_role_3 granted by test_admin_role;
|
||||||
|
|
||||||
|
revoke dist_role_3 from test_admin_role cascade;
|
||||||
drop role test_admin_role;
|
drop role test_admin_role;
|
||||||
|
|
||||||
\c - - - :worker_1_port
|
\c - - - :worker_1_port
|
||||||
|
|
Loading…
Reference in New Issue