aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2016-11-21 11:09:24 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2016-11-21 11:09:24 -0500
commitf24cf960d7ae3503e21fcb59dca652575619d9d4 (patch)
treef04730f22491994144b8c8c9e94298ae27388fd3 /src
parentc5f365f3ab21a345b7a109bc0411895536e9fa69 (diff)
downloadpostgresql-f24cf960d7ae3503e21fcb59dca652575619d9d4.tar.gz
postgresql-f24cf960d7ae3503e21fcb59dca652575619d9d4.zip
Fix test for subplans in force-parallel mode.
We mustn't force parallel mode if the query has any subplans, since ExecSerializePlan doesn't transmit them to workers. Testing top_plan->initPlan is inadequate because (1) there might be initPlans attached to lower plan nodes, and (2) non-initPlan subplans don't work either. There's certainly room for improvement in those restrictions, but for the moment that's what we've got. Amit Kapila, per report from Andreas Seltenreich Discussion: <8737im6pmh.fsf@credativ.de>
Diffstat (limited to 'src')
-rw-r--r--src/backend/optimizer/plan/planner.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
index d8c5dd34d6a..a8847defba3 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -342,11 +342,11 @@ standard_planner(Query *parse, int cursorOptions, ParamListInfo boundParams)
* actually a safe thing to do. (Note: we assume adding a Material node
* above did not change the parallel safety of the plan, so we can still
* rely on best_path->parallel_safe. However, that flag doesn't account
- * for initPlans, which render the plan parallel-unsafe.)
+ * for subplans, which we are unable to transmit to workers presently.)
*/
if (force_parallel_mode != FORCE_PARALLEL_OFF &&
best_path->parallel_safe &&
- top_plan->initPlan == NIL)
+ glob->subplans == NIL)
{
Gather *gather = makeNode(Gather);