mirror of https://github.com/citusdata/citus.git
Return early in CreateDistributedPlan for fast path router
parent
164d73ad8c
commit
ae2251c03f
|
@ -75,6 +75,7 @@ static uint64 NextPlanId = 1;
|
||||||
int PlannerLevel = 0;
|
int PlannerLevel = 0;
|
||||||
|
|
||||||
static bool ListContainsDistributedTableRTE(List *rangeTableList);
|
static bool ListContainsDistributedTableRTE(List *rangeTableList);
|
||||||
|
static bool IsFastPathRouterQuery(PlannerRestrictionContext *plannerRestrictionContext);
|
||||||
static bool IsUpdateOrDelete(Query *query);
|
static bool IsUpdateOrDelete(Query *query);
|
||||||
static PlannedStmt * CreateDistributedPlannedStmt(
|
static PlannedStmt * CreateDistributedPlannedStmt(
|
||||||
DistributedPlanningContext *planContext);
|
DistributedPlanningContext *planContext);
|
||||||
|
@ -125,7 +126,6 @@ static PlannedStmt * PlanDistributedStmt(DistributedPlanningContext *planContext
|
||||||
int rteIdCounter);
|
int rteIdCounter);
|
||||||
static RTEListProperties * GetRTEListProperties(List *rangeTableList);
|
static RTEListProperties * GetRTEListProperties(List *rangeTableList);
|
||||||
|
|
||||||
|
|
||||||
/* Distributed planner hook */
|
/* Distributed planner hook */
|
||||||
PlannedStmt *
|
PlannedStmt *
|
||||||
distributed_planner(Query *parse,
|
distributed_planner(Query *parse,
|
||||||
|
@ -959,6 +959,13 @@ CreateDistributedPlan(uint64 planId, Query *originalQuery, Query *query, ParamLi
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (distributedPlan->planningError && IsFastPathRouterQuery(
|
||||||
|
plannerRestrictionContext))
|
||||||
|
{
|
||||||
|
/* we don't need to continue with fast path router query */
|
||||||
|
RaiseDeferredErrorInternal(distributedPlan->planningError, ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
/* force evaluation of bound params */
|
/* force evaluation of bound params */
|
||||||
boundParams = copyParamList(boundParams);
|
boundParams = copyParamList(boundParams);
|
||||||
|
|
||||||
|
@ -1075,6 +1082,22 @@ CreateDistributedPlan(uint64 planId, Query *originalQuery, Query *query, ParamLi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* IsFastPathRouterQuery returns true if we are processing a fast path router query.
|
||||||
|
*/
|
||||||
|
static bool
|
||||||
|
IsFastPathRouterQuery(PlannerRestrictionContext *plannerRestrictionContext)
|
||||||
|
{
|
||||||
|
if (plannerRestrictionContext &&
|
||||||
|
plannerRestrictionContext->fastPathRestrictionContext &&
|
||||||
|
plannerRestrictionContext->fastPathRestrictionContext->fastPathRouterQuery)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* EnsurePartitionTableNotReplicated errors out if the infput relation is
|
* EnsurePartitionTableNotReplicated errors out if the infput relation is
|
||||||
* a partition table and the table has a replication factor greater than
|
* a partition table and the table has a replication factor greater than
|
||||||
|
|
Loading…
Reference in New Issue