mirror of https://github.com/citusdata/citus.git
Refactors Object Type check code
parent
20caccb408
commit
f7dce78534
|
@ -154,6 +154,7 @@ static void RunPreprocessMainDBCommand(Node *parsetree, const char *queryString)
|
||||||
static void RunPostprocessMainDBCommand(Node *parsetree);
|
static void RunPostprocessMainDBCommand(Node *parsetree);
|
||||||
static bool IsStatementSupportedIn2PC(Node *parsetree);
|
static bool IsStatementSupportedIn2PC(Node *parsetree);
|
||||||
static bool DoesStatementRequireMarkDistributedFor2PC(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
|
* ProcessUtilityParseTree is a convenience method to create a PlannedStmt out of
|
||||||
|
@ -1701,18 +1702,7 @@ IsStatementSupportedIn2PC(Node *parsetree)
|
||||||
{
|
{
|
||||||
if (type == T_GrantStmt)
|
if (type == T_GrantStmt)
|
||||||
{
|
{
|
||||||
GrantStmt *stmt = castNode(GrantStmt, parsetree);
|
return IsObjectTypeSupported(parsetree, twoPcSupportedStatements[i]);
|
||||||
/* check if stmt->objtype is in supportedObjectTypes */
|
|
||||||
for (int j = 0; j <
|
|
||||||
twoPcSupportedStatements[i].supportedObjectTypesSize; j++)
|
|
||||||
{
|
|
||||||
if (stmt->objtype ==
|
|
||||||
twoPcSupportedStatements[i].supportedObjectTypes[j])
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1721,6 +1711,25 @@ IsStatementSupportedIn2PC(Node *parsetree)
|
||||||
return false;
|
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 < twoPcSupportedStatement.supportedObjectTypesSize; j++)
|
||||||
|
{
|
||||||
|
if (stmt->objtype == twoPcSupportedStatement.supportedObjectTypes[j])
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* DoesStatementRequireMarkDistributedFor2PC returns true if the statement should be marked
|
* DoesStatementRequireMarkDistributedFor2PC returns true if the statement should be marked
|
||||||
|
|
Loading…
Reference in New Issue