From 5944672940821fecfd5348494e746f1e503fdf41 Mon Sep 17 00:00:00 2001 From: Jelte Fennema-Nio Date: Mon, 18 Mar 2024 16:47:29 +0100 Subject: [PATCH] Use designated initialization --- .../non_main_db_distribute_object_ops.c | 119 ++++++++---------- 1 file changed, 54 insertions(+), 65 deletions(-) diff --git a/src/backend/distributed/commands/non_main_db_distribute_object_ops.c b/src/backend/distributed/commands/non_main_db_distribute_object_ops.c index 3c21c7b4e..bc0032469 100644 --- a/src/backend/distributed/commands/non_main_db_distribute_object_ops.c +++ b/src/backend/distributed/commands/non_main_db_distribute_object_ops.c @@ -129,47 +129,48 @@ static List * DropRoleStmtGetUnmarkDistributedParams(Node *parsetree); * for CreateRoleStmt as Any_CreateRole, we name the struct that implements * SecLabelStmt for role objects as Role_SecLabel. */ -static const NonMainDbDistributeObjectOps Any_CreateRole = { - .getMarkDistributedParams = CreateRoleStmtGetMarkDistributedParams, - .getUnmarkDistributedParams = NULL, - .cannotBeExecutedInTransaction = false +static const NonMainDbDistributeObjectOps *operationArray[] = { + [T_CreateRoleStmt] = &(NonMainDbDistributeObjectOps) { + .getMarkDistributedParams = CreateRoleStmtGetMarkDistributedParams, + .getUnmarkDistributedParams = NULL, + .cannotBeExecutedInTransaction = false + }, + [T_DropRoleStmt] = &(NonMainDbDistributeObjectOps) { + .getMarkDistributedParams = NULL, + .getUnmarkDistributedParams = DropRoleStmtGetUnmarkDistributedParams, + .cannotBeExecutedInTransaction = false + }, + [T_AlterRoleStmt] = &(NonMainDbDistributeObjectOps) { + .getMarkDistributedParams = NULL, + .getUnmarkDistributedParams = NULL, + .cannotBeExecutedInTransaction = false + }, + [T_GrantRoleStmt] = &(NonMainDbDistributeObjectOps) { + .getMarkDistributedParams = NULL, + .getUnmarkDistributedParams = NULL, + .cannotBeExecutedInTransaction = false + }, + [T_CreatedbStmt] = &(NonMainDbDistributeObjectOps) { + .getMarkDistributedParams = NULL, + .getUnmarkDistributedParams = NULL, + .cannotBeExecutedInTransaction = true + }, + [T_DropdbStmt] = &(NonMainDbDistributeObjectOps) { + .getMarkDistributedParams = NULL, + .getUnmarkDistributedParams = NULL, + .cannotBeExecutedInTransaction = true + }, + [T_GrantStmt] = &(NonMainDbDistributeObjectOps) { + .getMarkDistributedParams = NULL, + .getUnmarkDistributedParams = NULL, + .cannotBeExecutedInTransaction = false + }, + [T_SecLabelStmt] = &(NonMainDbDistributeObjectOps) { + .getMarkDistributedParams = NULL, + .getUnmarkDistributedParams = NULL, + .cannotBeExecutedInTransaction = false + }, }; -static const NonMainDbDistributeObjectOps Any_DropRole = { - .getMarkDistributedParams = NULL, - .getUnmarkDistributedParams = DropRoleStmtGetUnmarkDistributedParams, - .cannotBeExecutedInTransaction = false -}; -static const NonMainDbDistributeObjectOps Any_AlterRole = { - .getMarkDistributedParams = NULL, - .getUnmarkDistributedParams = NULL, - .cannotBeExecutedInTransaction = false -}; -static const NonMainDbDistributeObjectOps Any_GrantRole = { - .getMarkDistributedParams = NULL, - .getUnmarkDistributedParams = NULL, - .cannotBeExecutedInTransaction = false -}; -static const NonMainDbDistributeObjectOps Any_CreateDatabase = { - .getMarkDistributedParams = NULL, - .getUnmarkDistributedParams = NULL, - .cannotBeExecutedInTransaction = true -}; -static const NonMainDbDistributeObjectOps Any_DropDatabase = { - .getMarkDistributedParams = NULL, - .getUnmarkDistributedParams = NULL, - .cannotBeExecutedInTransaction = true -}; -static const NonMainDbDistributeObjectOps Database_Grant = { - .getMarkDistributedParams = NULL, - .getUnmarkDistributedParams = NULL, - .cannotBeExecutedInTransaction = false -}; -static const NonMainDbDistributeObjectOps Role_SecLabel = { - .getMarkDistributedParams = NULL, - .getUnmarkDistributedParams = NULL, - .cannotBeExecutedInTransaction = false -}; - /* other static function declarations */ const NonMainDbDistributeObjectOps * GetNonMainDbDistributeObjectOps(Node *parsetree); @@ -273,28 +274,16 @@ RunPostprocessNonMainDBCommand(Node *parsetree) const NonMainDbDistributeObjectOps * GetNonMainDbDistributeObjectOps(Node *parsetree) { + NodeTag tag = nodeTag(parsetree); + if (tag >= lengthof(operationArray)) + { + return NULL; + } + + const NonMainDbDistributeObjectOps *ops = operationArray[tag]; + switch (nodeTag(parsetree)) { - case T_CreateRoleStmt: - { - return &Any_CreateRole; - } - - case T_DropRoleStmt: - { - return &Any_DropRole; - } - - case T_AlterRoleStmt: - { - return &Any_AlterRole; - } - - case T_GrantRoleStmt: - { - return &Any_GrantRole; - } - case T_CreatedbStmt: { CreatedbStmt *stmt = castNode(CreatedbStmt, parsetree); @@ -306,7 +295,7 @@ GetNonMainDbDistributeObjectOps(Node *parsetree) */ if (strcmp(stmt->dbname, MainDb) != 0) { - return &Any_CreateDatabase; + return ops; } return NULL; @@ -323,7 +312,7 @@ GetNonMainDbDistributeObjectOps(Node *parsetree) */ if (strcmp(stmt->dbname, MainDb) != 0) { - return &Any_DropDatabase; + return ops; } return NULL; @@ -337,7 +326,7 @@ GetNonMainDbDistributeObjectOps(Node *parsetree) { case OBJECT_DATABASE: { - return &Database_Grant; + return ops; } default: @@ -353,7 +342,7 @@ GetNonMainDbDistributeObjectOps(Node *parsetree) { case OBJECT_ROLE: { - return &Role_SecLabel; + return ops; } default: @@ -362,7 +351,7 @@ GetNonMainDbDistributeObjectOps(Node *parsetree) } default: - return NULL; + return ops; } }