diff options
author | Pavan Deolasee | 2016-07-12 09:07:22 +0000 |
---|---|---|
committer | Pavan Deolasee | 2016-10-18 10:07:22 +0000 |
commit | e1da9bbbdf8fd8d610e289b26d061a5259986189 (patch) | |
tree | d7f1f8766c060578e2beaa12f006759dd6c0f97d | |
parent | 31dc44e39f4c1f48a7e83b1ea4221188b92300aa (diff) |
Do not FQS EXECUTE DIRECT statements.
Executor is not prepared to handle that and its not necessary since EXECUTE
DIRECT implies direct execution on the target node anyways
-rw-r--r-- | src/backend/optimizer/plan/planner.c | 2 | ||||
-rw-r--r-- | src/backend/pgxc/plan/planner.c | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index 194a4aa057..0260e9226f 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -172,7 +172,7 @@ planner(Query *parse, int cursorOptions, ParamListInfo boundParams) * A Coordinator receiving a query from another Coordinator * is not allowed to go into PGXC planner. */ - if (IS_PGXC_COORDINATOR && !IsConnFromCoord()) + if (IS_PGXC_LOCAL_COORDINATOR) result = pgxc_planner(parse, cursorOptions, boundParams); else #endif diff --git a/src/backend/pgxc/plan/planner.c b/src/backend/pgxc/plan/planner.c index ff8b774ef2..0212c87736 100644 --- a/src/backend/pgxc/plan/planner.c +++ b/src/backend/pgxc/plan/planner.c @@ -278,6 +278,15 @@ pgxc_FQS_planner(Query *query, ParamListInfo boundParams) if (query->utilityStmt && IsA(query->utilityStmt, DeclareCursorStmt)) return NULL; + + /* Do not FQS EXEC DIRECT statements */ + if (query->utilityStmt && IsA(query->utilityStmt, RemoteQuery)) + { + RemoteQuery *stmt = (RemoteQuery *) query->utilityStmt; + if (stmt->exec_direct_type != EXEC_DIRECT_NONE) + return NULL; + } + /* * If the query can not be or need not be shipped to the Datanodes, don't * create any plan here. standard_planner() will take care of it. |