Subject: Re: Don't use bms_membership in places where it's not needed

From: Richard Guo <[email-masked]>
Date: Fri, 24 Nov 2023 14:53:50 +0800

On Fri, Nov 24, 2023 at 12:06 PM David Rowley <[email-masked]> wrote:

> In the attached, I've adjusted the code to use the latter of the two
> above methods in 3 places.  In examine_variable() this reduces the
> complexity of the logic quite a bit and saves calling bms_is_member()
> in addition to bms_singleton_member().

+1 to the idea.

I think you have a typo in distribute_restrictinfo_to_rels.  We should
remove the call of bms_singleton_member and use relid instead.

--- a/src/backend/optimizer/plan/initsplan.c
+++ b/src/backend/optimizer/plan/initsplan.c
@@ -2644,7 +2644,7 @@ distribute_restrictinfo_to_rels(PlannerInfo *root,
             * There is only one relation participating in the clause, so it
             * is a restriction clause for that relation.
             */
-           rel = find_base_rel(root, bms_singleton_member(relids));
+           rel = find_base_rel(root, relid);

Thanks
Richard

---

From: David Rowley <[email-masked]>
Date: Tue, 28 Nov 2023 10:43:00 +1300

> remove the call of bms_singleton_member and use relid instead.

Thanks for reviewing.  I've now pushed this.

David