Use bms_add_members() instead of bms_union() when possible
authorDavid Rowley <drowley@postgresql.org>
Fri, 3 Oct 2025 23:19:31 +0000 (12:19 +1300)
committerDavid Rowley <drowley@postgresql.org>
Fri, 3 Oct 2025 23:19:31 +0000 (12:19 +1300)
commit5092aae431e3e1a20324ea3a42a181c63f703d0d
treee29c57ec7ced1c97b03554c25783243c6d189250
parentf8f4afe751fc75e1d3093fa634934018f440c29c
Use bms_add_members() instead of bms_union() when possible

bms_union() causes a new set to be allocated.  What this caller needs is
members added to an existing set.  bms_add_members() is the tool for
that job.

This is just a matter of fixing an inefficiency due to surplus memory
allocations.  No bugs being fixed.

The only other place I found that might be valid to apply this change is
in markNullableIfNeeded(), but I opted not to do that due to the risk to
reward ratio not looking favorable.  The risk being that there *could* be
another pointer pointing to the Bitmapset.

Author: David Rowley <dgrowleyml@gmail.com>
Reviewed-by: Greg Burd <greg@burd.me>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/CAApHDvoCcoS-p5tZNJLTxFOKTYNjqVh7Dwf+5ikDUBwnvWftRw@mail.gmail.com
src/backend/optimizer/prep/prepunion.c