diff --git a/src/backend/optimizer/path/allpaths.c b/src/backend/optimizer/path/allpaths.c index 873a764..585a8db 100644 --- a/src/backend/optimizer/path/allpaths.c +++ b/src/backend/optimizer/path/allpaths.c @@ -598,14 +598,15 @@ set_rel_consider_parallel(PlannerInfo *root, RelOptInfo *rel, } /* - * If there's anything in baserestrictinfo that's parallel-restricted, - * we give up on parallelizing access to this relation. We could consider - * instead postponing application of the restricted quals until we're - * above all the parallelism in the plan tree, but it's not clear that - * this would be a win in very many cases, and it might be tricky to make - * outer join clauses work correctly. + * If there's anything in baserestrictinfo or reltarget that's + * parallel-restricted, we give up on parallelizing access to this + * relation. We could consider instead postponing application of the + * restricted clauses until we're above all the parallelism in the plan + * tree, but it's not clear that this would be a win in very many cases. + * It might be tricky to make outer join clauses work correctly. */ - if (has_parallel_hazard((Node *) rel->baserestrictinfo, false)) + if (has_parallel_hazard((Node *) rel->baserestrictinfo, false) || + has_parallel_hazard((Node *) rel->reltarget->exprs, false)) return; /* We have a winner. */