diff options
author | Pavan Deolasee | 2019-06-24 05:20:51 +0000 |
---|---|---|
committer | Pavan Deolasee | 2019-06-24 05:20:51 +0000 |
commit | cf7c31a29a3338306a1ca62ee5914e82cf79e29d (patch) | |
tree | 714080c7444e47080ce20624b7aca4cad478b2d6 | |
parent | 68c378f25e78f882b7bf8a4285f1764cd8473a9e (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.c | 11 | ||||
-rw-r--r-- | src/backend/pgxc/plan/planner.c | 11 |
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); |