summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavan Deolasee2016-07-12 09:07:22 +0000
committerPavan Deolasee2016-10-18 10:07:22 +0000
commite1da9bbbdf8fd8d610e289b26d061a5259986189 (patch)
treed7f1f8766c060578e2beaa12f006759dd6c0f97d
parent31dc44e39f4c1f48a7e83b1ea4221188b92300aa (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.c2
-rw-r--r--src/backend/pgxc/plan/planner.c9
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.