mirror of https://github.com/citusdata/citus.git
Citus Revise tree-walk APIs to include context (#6975)
Without revising there are Warnings in PG16 build
Relevant PG commit
1c27d16e6e
1c27d16e6e5c1f463bbe1e9ece88dda811235165
pull/6971/head
parent
f6a516dab5
commit
c2f117c559
|
@ -43,7 +43,7 @@ static bool contain_dml_walker(Node *node, void *context);
|
|||
/* the following utility functions are related to Citus' logic */
|
||||
static bool RecursivelyInlineCteWalker(Node *node, void *context);
|
||||
static void InlineCTEsInQueryTree(Query *query);
|
||||
static bool QueryTreeContainsInlinableCteWalker(Node *node);
|
||||
static bool QueryTreeContainsInlinableCteWalker(Node *node, void *context);
|
||||
|
||||
|
||||
/*
|
||||
|
@ -135,7 +135,7 @@ InlineCTEsInQueryTree(Query *query)
|
|||
bool
|
||||
QueryTreeContainsInlinableCTE(Query *queryTree)
|
||||
{
|
||||
return QueryTreeContainsInlinableCteWalker((Node *) queryTree);
|
||||
return QueryTreeContainsInlinableCteWalker((Node *) queryTree, NULL);
|
||||
}
|
||||
|
||||
|
||||
|
@ -144,7 +144,7 @@ QueryTreeContainsInlinableCTE(Query *queryTree)
|
|||
* the (sub)queries in the node contains at least one CTE.
|
||||
*/
|
||||
static bool
|
||||
QueryTreeContainsInlinableCteWalker(Node *node)
|
||||
QueryTreeContainsInlinableCteWalker(Node *node, void *context)
|
||||
{
|
||||
if (node == NULL)
|
||||
{
|
||||
|
|
|
@ -234,8 +234,8 @@ static List * FetchEqualityAttrNumsForRTEBoolExpr(BoolExpr *boolExpr);
|
|||
static List * FetchEqualityAttrNumsForList(List *nodeList);
|
||||
static int PartitionColumnIndex(Var *targetVar, List *targetList);
|
||||
static List * GetColumnOriginalIndexes(Oid relationId);
|
||||
static bool QueryTreeHasImproperForDeparseNodes(Node *inputNode);
|
||||
static Node * AdjustImproperForDeparseNodes(Node *inputNode);
|
||||
static bool QueryTreeHasImproperForDeparseNodes(Node *inputNode, void *context);
|
||||
static Node * AdjustImproperForDeparseNodes(Node *inputNode, void *context);
|
||||
static bool IsImproperForDeparseRelabelTypeNode(Node *inputNode);
|
||||
static bool IsImproperForDeparseCoerceViaIONode(Node *inputNode);
|
||||
static CollateExpr * RelabelTypeToCollateExpr(RelabelType *relabelType);
|
||||
|
@ -2698,9 +2698,9 @@ SqlTaskList(Job *job)
|
|||
* the query sublinks, and we don't want to do that unless necessary, as it
|
||||
* would be inefficient.
|
||||
*/
|
||||
if (QueryTreeHasImproperForDeparseNodes((Node *) jobQuery))
|
||||
if (QueryTreeHasImproperForDeparseNodes((Node *) jobQuery, NULL))
|
||||
{
|
||||
jobQuery = (Query *) AdjustImproperForDeparseNodes((Node *) jobQuery);
|
||||
jobQuery = (Query *) AdjustImproperForDeparseNodes((Node *) jobQuery, NULL);
|
||||
}
|
||||
|
||||
ListCell *fragmentCombinationCell = NULL;
|
||||
|
@ -5621,7 +5621,7 @@ TaskListHighestTaskId(List *taskList)
|
|||
* CoerceViaIONodes which are improper for deparse
|
||||
*/
|
||||
static bool
|
||||
QueryTreeHasImproperForDeparseNodes(Node *inputNode)
|
||||
QueryTreeHasImproperForDeparseNodes(Node *inputNode, void *context)
|
||||
{
|
||||
if (inputNode == NULL)
|
||||
{
|
||||
|
@ -5653,7 +5653,7 @@ QueryTreeHasImproperForDeparseNodes(Node *inputNode)
|
|||
* Details will be written in comments in the corresponding if conditions.
|
||||
*/
|
||||
static Node *
|
||||
AdjustImproperForDeparseNodes(Node *inputNode)
|
||||
AdjustImproperForDeparseNodes(Node *inputNode, void *context)
|
||||
{
|
||||
if (inputNode == NULL)
|
||||
{
|
||||
|
|
|
@ -154,7 +154,7 @@ static DeferredErrorMessage * DeferErrorIfUnsupportedRouterPlannableSelectQuery(
|
|||
static DeferredErrorMessage * ErrorIfQueryHasUnroutableModifyingCTE(Query *queryTree);
|
||||
#if PG_VERSION_NUM >= PG_VERSION_14
|
||||
static DeferredErrorMessage * ErrorIfQueryHasCTEWithSearchClause(Query *queryTree);
|
||||
static bool ContainsSearchClauseWalker(Node *node);
|
||||
static bool ContainsSearchClauseWalker(Node *node, void *context);
|
||||
#endif
|
||||
static bool SelectsFromDistributedTable(List *rangeTableList, Query *query);
|
||||
static ShardPlacement * CreateDummyPlacement(bool hasLocalRelation);
|
||||
|
@ -3929,7 +3929,7 @@ ErrorIfQueryHasUnroutableModifyingCTE(Query *queryTree)
|
|||
static DeferredErrorMessage *
|
||||
ErrorIfQueryHasCTEWithSearchClause(Query *queryTree)
|
||||
{
|
||||
if (ContainsSearchClauseWalker((Node *) queryTree))
|
||||
if (ContainsSearchClauseWalker((Node *) queryTree, NULL))
|
||||
{
|
||||
return DeferredError(ERRCODE_FEATURE_NOT_SUPPORTED,
|
||||
"CTEs with search clauses are not supported",
|
||||
|
@ -3944,7 +3944,7 @@ ErrorIfQueryHasCTEWithSearchClause(Query *queryTree)
|
|||
* CommonTableExprs with search clause
|
||||
*/
|
||||
static bool
|
||||
ContainsSearchClauseWalker(Node *node)
|
||||
ContainsSearchClauseWalker(Node *node, void *context)
|
||||
{
|
||||
if (node == NULL)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue