summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2023-10-10 17:08:29 +0000
committerTom Lane2023-10-10 17:08:29 +0000
commit14661ba1a7a6b0f82b8451cbb51a5c2a11676635 (patch)
tree7910fdc78223de7f4a5b4c608c0d0395b3a33190
parent98e89740e5a816f9ef2b71b1a1b62a9aff23d194 (diff)
Replace has_multiple_baserels() with a bitmap test on all_baserels.
Since we added the PlannerInfo.all_baserels set, it's not really necessary to grovel over the rangetable to count baserels in the current query. So let's drop has_multiple_baserels() in favor of a bms_membership() test. This might be microscopically faster, but the main point is to remove some unnecessary code. Richard Guo Discussion: https://postgr.es/m/CAMbWs4_8RcSbbfs1ASZLrMuL0c0EQgXWcoLTQD8swBRY_pQQiA@mail.gmail.com
-rw-r--r--src/backend/optimizer/path/allpaths.c24
1 files changed, 1 insertions, 23 deletions
diff --git a/src/backend/optimizer/path/allpaths.c b/src/backend/optimizer/path/allpaths.c
index eea49cca7b..3cda88e333 100644
--- a/src/backend/optimizer/path/allpaths.c
+++ b/src/backend/optimizer/path/allpaths.c
@@ -2190,28 +2190,6 @@ set_dummy_rel_pathlist(RelOptInfo *rel)
set_cheapest(rel);
}
-/* quick-and-dirty test to see if any joining is needed */
-static bool
-has_multiple_baserels(PlannerInfo *root)
-{
- int num_base_rels = 0;
- Index rti;
-
- for (rti = 1; rti < root->simple_rel_array_size; rti++)
- {
- RelOptInfo *brel = root->simple_rel_array[rti];
-
- if (brel == NULL)
- continue;
-
- /* ignore RTEs that are "other rels" */
- if (brel->reloptkind == RELOPT_BASEREL)
- if (++num_base_rels > 1)
- return true;
- }
- return false;
-}
-
/*
* find_window_run_conditions
* Determine if 'wfunc' is really a WindowFunc and call its prosupport
@@ -2661,7 +2639,7 @@ set_subquery_pathlist(PlannerInfo *root, RelOptInfo *rel,
root->hasHavingQual ||
parse->distinctClause ||
parse->sortClause ||
- has_multiple_baserels(root))
+ bms_membership(root->all_baserels) == BMS_MULTIPLE)
tuple_fraction = 0.0; /* default case */
else
tuple_fraction = root->tuple_fraction;