diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2016-08-19 14:03:07 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2016-08-19 14:03:13 -0400 |
commit | da1c91631e3577ea5818f855ebb5bd206d559006 (patch) | |
tree | 90bdd7e1f5929851e2cb948cd08db891c0a24479 /src/backend/optimizer/util/relnode.c | |
parent | 6f79ae7fe549bed8bbd1f54ddd9b98f8f9a315f5 (diff) | |
download | postgresql-da1c91631e3577ea5818f855ebb5bd206d559006.tar.gz postgresql-da1c91631e3577ea5818f855ebb5bd206d559006.zip |
Speed up planner's scanning for parallel-query hazards.
We need to scan the whole parse tree for parallel-unsafe functions.
If there are none, we'll later need to determine whether particular
subtrees contain any parallel-restricted functions. The previous coding
retained no knowledge from the first scan, even though this is very
wasteful in the common case where the query contains only parallel-safe
functions. We can bypass all of the later scans by remembering that fact.
This provides a small but measurable speed improvement when the case
applies, and shouldn't cost anything when it doesn't.
Patch by me, reviewed by Robert Haas
Discussion: <3740.1471538387@sss.pgh.pa.us>
Diffstat (limited to 'src/backend/optimizer/util/relnode.c')
-rw-r--r-- | src/backend/optimizer/util/relnode.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c index 806600ed107..deef5605b7d 100644 --- a/src/backend/optimizer/util/relnode.c +++ b/src/backend/optimizer/util/relnode.c @@ -513,8 +513,8 @@ build_join_rel(PlannerInfo *root, * here. */ if (inner_rel->consider_parallel && outer_rel->consider_parallel && - !has_parallel_hazard((Node *) restrictlist, false) && - !has_parallel_hazard((Node *) joinrel->reltarget->exprs, false)) + is_parallel_safe(root, (Node *) restrictlist) && + is_parallel_safe(root, (Node *) joinrel->reltarget->exprs)) joinrel->consider_parallel = true; /* |