summaryrefslogtreecommitdiff
path: root/src/backend/optimizer
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/optimizer')
-rw-r--r--src/backend/optimizer/path/equivclass.c3
-rw-r--r--src/backend/optimizer/plan/analyzejoins.c7
-rw-r--r--src/backend/optimizer/util/placeholder.c4
3 files changed, 7 insertions, 7 deletions
diff --git a/src/backend/optimizer/path/equivclass.c b/src/backend/optimizer/path/equivclass.c
index e5dd58efe3..9919d27374 100644
--- a/src/backend/optimizer/path/equivclass.c
+++ b/src/backend/optimizer/path/equivclass.c
@@ -867,9 +867,8 @@ generate_base_implied_equalities_no_const(PlannerInfo *root,
int relid;
Assert(!cur_em->em_is_child); /* no children yet */
- if (bms_membership(cur_em->em_relids) != BMS_SINGLETON)
+ if (!bms_get_singleton_member(cur_em->em_relids, &relid))
continue;
- relid = bms_singleton_member(cur_em->em_relids);
Assert(relid < root->simple_rel_array_size);
if (prev_ems[relid] != NULL)
diff --git a/src/backend/optimizer/plan/analyzejoins.c b/src/backend/optimizer/plan/analyzejoins.c
index 773f8a458e..e99d416e85 100644
--- a/src/backend/optimizer/plan/analyzejoins.c
+++ b/src/backend/optimizer/plan/analyzejoins.c
@@ -162,11 +162,12 @@ join_is_removable(PlannerInfo *root, SpecialJoinInfo *sjinfo)
* going to be able to do anything with it.
*/
if (sjinfo->jointype != JOIN_LEFT ||
- sjinfo->delay_upper_joins ||
- bms_membership(sjinfo->min_righthand) != BMS_SINGLETON)
+ sjinfo->delay_upper_joins)
+ return false;
+
+ if (!bms_get_singleton_member(sjinfo->min_righthand, &innerrelid))
return false;
- innerrelid = bms_singleton_member(sjinfo->min_righthand);
innerrel = find_base_rel(root, innerrelid);
if (innerrel->reloptkind != RELOPT_BASEREL)
diff --git a/src/backend/optimizer/util/placeholder.c b/src/backend/optimizer/util/placeholder.c
index 8d7c4feca4..36d19b84e8 100644
--- a/src/backend/optimizer/util/placeholder.c
+++ b/src/backend/optimizer/util/placeholder.c
@@ -383,10 +383,10 @@ add_placeholders_to_base_rels(PlannerInfo *root)
{
PlaceHolderInfo *phinfo = (PlaceHolderInfo *) lfirst(lc);
Relids eval_at = phinfo->ph_eval_at;
+ int varno;
- if (bms_membership(eval_at) == BMS_SINGLETON)
+ if (bms_get_singleton_member(eval_at, &varno))
{
- int varno = bms_singleton_member(eval_at);
RelOptInfo *rel = find_base_rel(root, varno);
/* add it to reltargetlist if needed above the rel scan level */