aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/executor/nodeSubplan.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/backend/executor/nodeSubplan.c b/src/backend/executor/nodeSubplan.c
index 6b6f4c3f55d..ac3382f917a 100644
--- a/src/backend/executor/nodeSubplan.c
+++ b/src/backend/executor/nodeSubplan.c
@@ -794,7 +794,15 @@ ExecInitSubPlan(SubPlan *subplan, PlanState *parent)
sstate->planstate = (PlanState *) list_nth(estate->es_subplanstates,
subplan->plan_id - 1);
- /* ... and to its parent's state */
+ /*
+ * This check can fail if the planner mistakenly puts a parallel-unsafe
+ * subplan into a parallelized subquery; see ExecSerializePlan.
+ */
+ if (sstate->planstate == NULL)
+ elog(ERROR, "subplan \"%s\" was not initialized",
+ subplan->plan_name);
+
+ /* Link to parent's state, too */
sstate->parent = parent;
/* Initialize subexpressions */