summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavan Deolasee2019-06-24 05:20:51 +0000
committerPavan Deolasee2019-06-24 05:20:51 +0000
commitcf7c31a29a3338306a1ca62ee5914e82cf79e29d (patch)
tree714080c7444e47080ce20624b7aca4cad478b2d6
parent68c378f25e78f882b7bf8a4285f1764cd8473a9e (diff)
Make pgxc_planner a hook invokation.
This allows us to support extensions that implement planner hooks without giving up fast query execution.
-rw-r--r--src/backend/optimizer/plan/planner.c11
-rw-r--r--src/backend/pgxc/plan/planner.c11
2 files changed, 8 insertions, 14 deletions
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
index ad5eb2888f..d57c6c2a3a 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -69,7 +69,7 @@ double cursor_tuple_fraction = DEFAULT_CURSOR_TUPLE_FRACTION;
int force_parallel_mode = FORCE_PARALLEL_OFF;
/* Hook for plugins to get control in planner() */
-planner_hook_type planner_hook = NULL;
+planner_hook_type planner_hook = pgxc_planner;
/* Hook for plugins to get control when grouping_planner() plans upper rels */
create_upper_paths_hook_type create_upper_paths_hook = NULL;
@@ -222,15 +222,6 @@ planner(Query *parse, int cursorOptions, ParamListInfo boundParams)
if (planner_hook)
result = (*planner_hook) (parse, cursorOptions, boundParams);
else
-#ifdef PGXC
- /*
- * A Coordinator receiving a query from another Coordinator
- * is not allowed to go into PGXC planner.
- */
- if (IS_PGXC_LOCAL_COORDINATOR)
- result = pgxc_planner(parse, cursorOptions, boundParams);
- else
-#endif
result = standard_planner(parse, cursorOptions, boundParams);
return result;
}
diff --git a/src/backend/pgxc/plan/planner.c b/src/backend/pgxc/plan/planner.c
index d1b739269c..37fcf68efb 100644
--- a/src/backend/pgxc/plan/planner.c
+++ b/src/backend/pgxc/plan/planner.c
@@ -238,10 +238,13 @@ pgxc_planner(Query *query, int cursorOptions, ParamListInfo boundParams)
{
PlannedStmt *result;
- /* see if can ship the query completely */
- result = pgxc_FQS_planner(query, cursorOptions, boundParams);
- if (result)
- return result;
+ if (IS_PGXC_LOCAL_COORDINATOR)
+ {
+ /* see if can ship the query completely */
+ result = pgxc_FQS_planner(query, cursorOptions, boundParams);
+ if (result)
+ return result;
+ }
/* we need Coordinator for evaluation, invoke standard planner */
result = standard_planner(query, cursorOptions, boundParams);