diff options
Diffstat (limited to 'src/backend/optimizer')
| -rw-r--r-- | src/backend/optimizer/path/equivclass.c | 3 | ||||
| -rw-r--r-- | src/backend/optimizer/plan/analyzejoins.c | 7 | ||||
| -rw-r--r-- | src/backend/optimizer/util/placeholder.c | 4 |
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 */ |
