diff options
author | David Rowley <drowley@postgresql.org> | 2025-10-04 12:19:31 +1300 |
---|---|---|
committer | David Rowley <drowley@postgresql.org> | 2025-10-04 12:19:31 +1300 |
commit | 5092aae431e3e1a20324ea3a42a181c63f703d0d (patch) | |
tree | e29c57ec7ced1c97b03554c25783243c6d189250 /src/backend/optimizer/prep/prepunion.c | |
parent | f8f4afe751fc75e1d3093fa634934018f440c29c (diff) |
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
Diffstat (limited to 'src/backend/optimizer/prep/prepunion.c')
-rw-r--r-- | src/backend/optimizer/prep/prepunion.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/backend/optimizer/prep/prepunion.c b/src/backend/optimizer/prep/prepunion.c index 6bd0f4a5dc3..6c0e2383af9 100644 --- a/src/backend/optimizer/prep/prepunion.c +++ b/src/backend/optimizer/prep/prepunion.c @@ -802,7 +802,7 @@ generate_union_paths(SetOperationStmt *op, PlannerInfo *root, linitial(rel->partial_pathlist)); } - relids = bms_union(relids, rel->relids); + relids = bms_add_members(relids, rel->relids); } /* Build result relation. */ |