Fixes review notes

pull/7404/head
gurkanindibay 2024-02-15 13:49:16 +03:00
parent 86817ff094
commit b51183b2f6
1 changed files with 14 additions and 12 deletions

View File

@ -110,11 +110,12 @@ typedef struct NonMainDbDistributedStatementInfo
bool explicitlyMarkAsDistributed; bool explicitlyMarkAsDistributed;
} NonMainDbDistributedStatementInfo; } NonMainDbDistributedStatementInfo;
typedef struct ObjectInfo typedef struct MarkObjectDistributedParams
{ {
char *name; char *name;
Oid id; Oid id;
} ObjectInfo; uint16 catalogRelId;
} MarkObjectDistributedParams;
/* /*
* NonMainDbSupportedStatements is an array of statements that are supported * NonMainDbSupportedStatements is an array of statements that are supported
@ -158,7 +159,7 @@ static void RunPostprocessMainDBCommand(Node *parsetree);
static bool IsStatementSupportedFromNonMainDb(Node *parsetree); static bool IsStatementSupportedFromNonMainDb(Node *parsetree);
static bool StatementRequiresMarkDistributedFromNonMainDb(Node *parsetree); static bool StatementRequiresMarkDistributedFromNonMainDb(Node *parsetree);
static void MarkObjectDistributedOnNonMainDb(Node *parsetree); static void MarkObjectDistributedOnNonMainDb(Node *parsetree);
static ObjectInfo GetObjectInfo(Node *parsetree); static MarkObjectDistributedParams GetMarkObjectDistributedParams(Node *parsetree);
/* /*
* ProcessUtilityParseTree is a convenience method to create a PlannedStmt out of * ProcessUtilityParseTree is a convenience method to create a PlannedStmt out of
@ -1638,7 +1639,6 @@ DropSchemaOrDBInProgress(void)
static void static void
RunPreprocessMainDBCommand(Node *parsetree) RunPreprocessMainDBCommand(Node *parsetree)
{ {
if (!IsStatementSupportedFromNonMainDb(parsetree)) if (!IsStatementSupportedFromNonMainDb(parsetree))
{ {
return; return;
@ -1724,29 +1724,31 @@ StatementRequiresMarkDistributedFromNonMainDb(Node *parsetree)
static void static void
MarkObjectDistributedOnNonMainDb(Node *parsetree) MarkObjectDistributedOnNonMainDb(Node *parsetree)
{ {
ObjectInfo objectInfo = GetObjectInfo(parsetree); MarkObjectDistributedParams markObjectDistributedParams =
GetMarkObjectDistributedParams(parsetree);
StringInfo mainDBQuery = makeStringInfo(); StringInfo mainDBQuery = makeStringInfo();
appendStringInfo(mainDBQuery, appendStringInfo(mainDBQuery,
MARK_OBJECT_DISTRIBUTED, MARK_OBJECT_DISTRIBUTED,
AuthIdRelationId, markObjectDistributedParams.catalogRelId,
quote_literal_cstr(objectInfo.name), quote_literal_cstr(markObjectDistributedParams.name),
objectInfo.id, markObjectDistributedParams.id,
quote_literal_cstr(CurrentUserName())); quote_literal_cstr(CurrentUserName()));
RunCitusMainDBQuery(mainDBQuery->data); RunCitusMainDBQuery(mainDBQuery->data);
} }
/* /*
* GetObjectInfo returns ObjectInfo for the target object of given parsetree. * GetMarkObjectDistributedParams returns ObjectInfo for the target object of given parsetree.
*/ */
static ObjectInfo static MarkObjectDistributedParams
GetObjectInfo(Node *parsetree) GetMarkObjectDistributedParams(Node *parsetree)
{ {
if (IsA(parsetree, CreateRoleStmt)) if (IsA(parsetree, CreateRoleStmt))
{ {
CreateRoleStmt *stmt = castNode(CreateRoleStmt, parsetree); CreateRoleStmt *stmt = castNode(CreateRoleStmt, parsetree);
ObjectInfo info = { MarkObjectDistributedParams info = {
.name = stmt->role, .name = stmt->role,
.catalogRelId = AuthIdRelationId,
.id = get_role_oid(stmt->role, false) .id = get_role_oid(stmt->role, false)
}; };