From: Robert Haas Date: Wed, 6 Dec 2017 13:42:50 +0000 (-0500) Subject: Fix Parallel Append crash. X-Git-Tag: REL_11_BETA1~1103 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9c64ddd414855fb10e0355e887745270a4464c50;p=thirdparty%2Fpostgresql.git Fix Parallel Append crash. Reported by Tom Lane and the buildfarm. Amul Sul and Amit Khandekar Discussion: http://postgr.es/m/17868.1512519318@sss.pgh.pa.us Discussion: http://postgr.es/m/CAJ3gD9cJQ4d-XhmZ6BqM9rMM2KDBfpkdgOAb4+psz56uBuMQ_A@mail.gmail.com --- 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. */