diff --git a/src/backend/distributed/executor/multi_utility.c b/src/backend/distributed/executor/multi_utility.c index 05182dbba..c0326786c 100644 --- a/src/backend/distributed/executor/multi_utility.c +++ b/src/backend/distributed/executor/multi_utility.c @@ -181,6 +181,23 @@ multi_ProcessUtility(Node *parsetree, return; } + if (IsA(parsetree, ExplainStmt)) + { + ExplainStmt *explainStmt = (ExplainStmt *) parsetree; + + if (IsA(explainStmt->query, Query)) + { + Query *query = (Query *) explainStmt->query; + + if (query->commandType == CMD_UTILITY && + IsA(query->utilityStmt, ExecuteStmt)) + { + /* Due to a postgres limitation these cause crashes. Skip them for now */ + ereport(ERROR, (errmsg("Citus does not support EXPLAIN EXECUTE"))); + } + } + } + if (IsA(parsetree, CopyStmt)) { parsetree = ProcessCopyStmt((CopyStmt *) parsetree, completionTag,