From 5092aae431e3e1a20324ea3a42a181c63f703d0d Mon Sep 17 00:00:00 2001 From: David Rowley Date: Sat, 4 Oct 2025 12:19:31 +1300 Subject: 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 Reviewed-by: Greg Burd Reviewed-by: Tom Lane Discussion: https://postgr.es/m/CAApHDvoCcoS-p5tZNJLTxFOKTYNjqVh7Dwf+5ikDUBwnvWftRw@mail.gmail.com --- src/backend/optimizer/prep/prepunion.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/backend/optimizer/prep/prepunion.c') 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. */ -- cgit v1.2.3