diff --git a/src/backend/distributed/planner/multi_explain.c b/src/backend/distributed/planner/multi_explain.c index 502c47b7a..cbfde29c9 100644 --- a/src/backend/distributed/planner/multi_explain.c +++ b/src/backend/distributed/planner/multi_explain.c @@ -201,6 +201,13 @@ CitusExplainScan(CustomScanState *node, List *ancestors, struct ExplainState *es ExplainOpenGroup("Distributed Query", "Distributed Query", true, es); + /* + * ExplainOnePlan function of postgres might be called in this codepath. + * It requires an ActiveSnapshot being set. Make sure to make ActiveSnapshot available before calling into + * Citus Explain functions. + */ + PushActiveSnapshot(executorState->es_snapshot); + if (distributedPlan->subPlanList != NIL) { ExplainSubPlans(distributedPlan, es); @@ -208,6 +215,8 @@ CitusExplainScan(CustomScanState *node, List *ancestors, struct ExplainState *es ExplainJob(scanState, distributedPlan->workerJob, es, params); + PopActiveSnapshot(); + ExplainCloseGroup("Distributed Query", "Distributed Query", true, es); }