Refactors Object Type check code

grant_database_2pc_onur_1
gurkanindibay 2024-01-23 16:07:15 +03:00
parent 20caccb408
commit f7dce78534
1 changed files with 21 additions and 12 deletions

View File

@ -154,6 +154,7 @@ static void RunPreprocessMainDBCommand(Node *parsetree, const char *queryString)
static void RunPostprocessMainDBCommand(Node *parsetree);
static bool IsStatementSupportedIn2PC(Node *parsetree);
static bool DoesStatementRequireMarkDistributedFor2PC(Node *parsetree);
static bool IsObjectTypeSupported(Node *parsetree, TwoPcStatementInfo twoPcSupportedStatement);
/*
* ProcessUtilityParseTree is a convenience method to create a PlannedStmt out of
@ -1700,24 +1701,32 @@ IsStatementSupportedIn2PC(Node *parsetree)
else
{
if (type == T_GrantStmt)
{
return IsObjectTypeSupported(parsetree, twoPcSupportedStatements[i]);
}
}
}
}
return false;
}
bool IsObjectTypeSupported(Node *parsetree, TwoPcStatementInfo twoPcSupportedStatement)
{
NodeTag type = nodeTag(parsetree);
if (type == T_GrantStmt)
{
GrantStmt *stmt = castNode(GrantStmt, parsetree);
/* check if stmt->objtype is in supportedObjectTypes */
for (int j = 0; j <
twoPcSupportedStatements[i].supportedObjectTypesSize; j++)
for (int j = 0; j < twoPcSupportedStatement.supportedObjectTypesSize; j++)
{
if (stmt->objtype ==
twoPcSupportedStatements[i].supportedObjectTypes[j])
if (stmt->objtype == twoPcSupportedStatement.supportedObjectTypes[j])
{
return true;
}
}
return false;
}
}
}
}
return false;
}