From db7fdb18540cec165a6f867b3cdafbb295d3c73a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20Dub=C3=A9?= Date: Wed, 26 Jun 2019 10:29:59 +0200 Subject: [PATCH] Router planner: bail on volatile functions in CTEs --- .../distributed/planner/multi_router_planner.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/backend/distributed/planner/multi_router_planner.c b/src/backend/distributed/planner/multi_router_planner.c index d399045cd..e4bd09cd8 100644 --- a/src/backend/distributed/planner/multi_router_planner.c +++ b/src/backend/distributed/planner/multi_router_planner.c @@ -615,7 +615,16 @@ ModifyQuerySupported(Query *queryTree, Query *originalQuery, bool multiShardQuer if (cteQuery->hasForUpdate) { return DeferredError(ERRCODE_FEATURE_NOT_SUPPORTED, - "Router planner doesn't support SELECT FOR UPDATE in common table expressions.", + "Router planner doesn't support SELECT FOR UPDATE" + " in common table expressions.", + NULL, NULL); + } + + if (FindNodeCheck((Node *) cteQuery, CitusIsVolatileFunction)) + { + return DeferredError(ERRCODE_FEATURE_NOT_SUPPORTED, + "Router planner doesn't support VOLATILE functions" + " in common table expressions.", NULL, NULL); }