Fixes review issues

pull/7404/head
gurkanindibay 2024-02-01 17:14:17 +03:00
parent 91b1e8ab5e
commit 6bff0ad924
3 changed files with 17 additions and 16 deletions

View File

@ -100,8 +100,8 @@
* supported from non-main databases and whether it should be marked as
* distributed explicitly (*).
*
* We always have to mark such the objects created "as distributed" but while for
* some object types we can delegate this to main database, for some others we have
* (*) We always have to mark such objects as "distributed" but while for some
* object types we can delegate this to main database, for some others we have
* to explicitly send a command to all nodes in this code-path to achieve this.
*/
typedef struct NonMainDbDistributedStatementInfo
@ -157,8 +157,8 @@ static void RunPreprocessMainDBCommand(Node *parsetree, const char *queryString)
static void RunPostprocessMainDBCommand(Node *parsetree);
static bool IsStatementSupportedInNonMainDb(Node *parsetree);
static bool StatementRequiresMarkDistributedFromNonMainDb(Node *parsetree);
static ObjectInfo GetObjectInfo(Node *parsetree);
static void MarkObjectDistributedInNonMainDb(Node *parsetree);
static ObjectInfo GetObjectInfo(Node *parsetree);
/*
* ProcessUtilityParseTree is a convenience method to create a PlannedStmt out of
@ -1673,23 +1673,26 @@ RunPostprocessMainDBCommand(Node *parsetree)
/*
* GetObjectInfo returns the name and oid of the object in the given parsetree.
* GetObjectInfo returns ObjectInfo for the target object of given parsetree.
*/
static ObjectInfo
GetObjectInfo(Node *parsetree)
{
ObjectInfo info;
if (IsA(parsetree, CreateRoleStmt))
{
CreateRoleStmt *stmt = castNode(CreateRoleStmt, parsetree);
info.name = stmt->role;
info.id = get_role_oid(stmt->role, false);
ObjectInfo info = {
.name = stmt->role,
.id = get_role_oid(stmt->role, false)
};
return info;
}
/* Add else if branches for other statement types */
return info;
elog(ERROR, "unsupported statement type");
}
@ -1713,7 +1716,7 @@ MarkObjectDistributedInNonMainDb(Node *parsetree)
/*
* IsStatementSupportedIn2Pc returns true if the statement is supported from a
* IsStatementSupportedInNonMainDb returns true if the statement is supported from a
* non-main database.
*/
static bool
@ -1735,7 +1738,7 @@ IsStatementSupportedInNonMainDb(Node *parsetree)
/*
* DoesStatementRequireMarkDistributedFor2PC returns true if the statement should be marked
* StatementRequiresMarkDistributedFromNonMainDb returns true if the statement should be marked
* as distributed when executed from a non-main database.
*/
static bool

View File

@ -127,12 +127,12 @@ $$);
[{"member":"grant_role2pc_user2","role":"grant_role2pc_user1","grantor":"postgres","admin_option":true},{"member":"grant_role2pc_user3","role":"grant_role2pc_user2","grantor":"postgres","admin_option":true},{"member":"grant_role2pc_user5","role":"grant_role2pc_user2","grantor":"grant_role2pc_user3","admin_option":false},{"member":"grant_role2pc_user6","role":"grant_role2pc_user2","grantor":"grant_role2pc_user3","admin_option":false},{"member":"grant_role2pc_user7","role":"grant_role2pc_user2","grantor":"grant_role2pc_user3","admin_option":false}]
(3 rows)
\c - - - :worker_1_port
\c grant_role2pc_db - - :worker_1_port
BEGIN;
grant grant_role2pc_user1 to grant_role2pc_user5 WITH ADMIN OPTION;
grant grant_role2pc_user1 to grant_role2pc_user6;
COMMIT;
\c - - - :master_port
\c regression - - :master_port
select result FROM run_command_on_all_nodes($$
SELECT array_to_json(array_agg(row_to_json(t)))
FROM (

View File

@ -1,5 +1,3 @@
CREATE SCHEMA grant_role2pc;
SET search_path TO grant_role2pc;
set citus.enable_create_database_propagation to on;
@ -119,13 +117,13 @@ FROM (
) t
$$);
\c - - - :worker_1_port
\c grant_role2pc_db - - :worker_1_port
BEGIN;
grant grant_role2pc_user1 to grant_role2pc_user5 WITH ADMIN OPTION;
grant grant_role2pc_user1 to grant_role2pc_user6;
COMMIT;
\c - - - :master_port
\c regression - - :master_port
select result FROM run_command_on_all_nodes($$
SELECT array_to_json(array_agg(row_to_json(t)))