summaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeAppend.c
diff options
context:
space:
mode:
authorRobert Haas2017-12-06 13:42:50 +0000
committerRobert Haas2017-12-06 13:42:50 +0000
commit9c64ddd414855fb10e0355e887745270a4464c50 (patch)
tree0d4c5469a39e4f0c61ce99be116267f15bed3021 /src/backend/executor/nodeAppend.c
parent979a36c3894db0a4b0d6b4b20fc861a0bbe3271c (diff)
Fix Parallel Append crash.
Reported by Tom Lane and the buildfarm. Amul Sul and Amit Khandekar Discussion: http://postgr.es/m/[email protected] Discussion: http://postgr.es/m/CAJ3gD9cJQ4d-XhmZ6BqM9rMM2KDBfpkdgOAb4+psz56uBuMQ_A@mail.gmail.com
Diffstat (limited to 'src/backend/executor/nodeAppend.c')
-rw-r--r--src/backend/executor/nodeAppend.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/backend/executor/nodeAppend.c b/src/backend/executor/nodeAppend.c
index 246a0b2d852..0e9371373c1 100644
--- a/src/backend/executor/nodeAppend.c
+++ b/src/backend/executor/nodeAppend.c
@@ -506,8 +506,16 @@ choose_next_subplan_for_worker(AppendState *node)
node->as_whichplan = pstate->pa_next_plan++;
if (pstate->pa_next_plan >= node->as_nplans)
{
- Assert(append->first_partial_plan < node->as_nplans);
- pstate->pa_next_plan = append->first_partial_plan;
+ if (append->first_partial_plan < node->as_nplans)
+ pstate->pa_next_plan = append->first_partial_plan;
+ else
+ {
+ /*
+ * We have only non-partial plans, and we already chose the last
+ * one; so arrange for the other workers to immediately bail out.
+ */
+ pstate->pa_next_plan = INVALID_SUBPLAN_INDEX;
+ }
}
/* If non-partial, immediately mark as finished. */