From 9d26049872a5dab8238ea686c810c32ea713e73e Mon Sep 17 00:00:00 2001 From: Alexander Korotkov Date: Sun, 19 Nov 2023 01:57:07 +0200 Subject: [PATCH 2/2] Make regression tests pass with REALLOCATE_BITMAPSETS enabled Make a copy of bitmapset's which are going to be modified in future. --- src/backend/optimizer/path/equivclass.c | 4 ++-- src/backend/optimizer/plan/initsplan.c | 6 +++--- src/backend/optimizer/util/restrictinfo.c | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/backend/optimizer/path/equivclass.c b/src/backend/optimizer/path/equivclass.c index 7fa502d6e25..5fd60c095b0 100644 --- a/src/backend/optimizer/path/equivclass.c +++ b/src/backend/optimizer/path/equivclass.c @@ -151,8 +151,8 @@ process_equivalence(PlannerInfo *root, collation = ((OpExpr *) clause)->inputcollid; item1 = (Expr *) get_leftop(clause); item2 = (Expr *) get_rightop(clause); - item1_relids = restrictinfo->left_relids; - item2_relids = restrictinfo->right_relids; + item1_relids = bms_copy(restrictinfo->left_relids); + item2_relids = bms_copy(restrictinfo->right_relids); /* * Ensure both input expressions expose the desired collation (their types diff --git a/src/backend/optimizer/plan/initsplan.c b/src/backend/optimizer/plan/initsplan.c index b31d8921211..228aa3edb8c 100644 --- a/src/backend/optimizer/plan/initsplan.c +++ b/src/backend/optimizer/plan/initsplan.c @@ -1409,8 +1409,8 @@ make_outerjoininfo(PlannerInfo *root, LCS_asString(rc->strength)))); } - sjinfo->syn_lefthand = left_rels; - sjinfo->syn_righthand = right_rels; + sjinfo->syn_lefthand = bms_copy(left_rels); + sjinfo->syn_righthand = bms_copy(right_rels); sjinfo->jointype = jointype; sjinfo->ojrelid = ojrelid; /* these fields may get added to later: */ @@ -2385,7 +2385,7 @@ distribute_qual_to_rels(PlannerInfo *root, Node *clause, * nonnullable-side rows failing the qual. */ Assert(ojscope); - relids = ojscope; + relids = bms_copy(ojscope); Assert(!pseudoconstant); } else diff --git a/src/backend/optimizer/util/restrictinfo.c b/src/backend/optimizer/util/restrictinfo.c index d6d26a2b515..57473f9c001 100644 --- a/src/backend/optimizer/util/restrictinfo.c +++ b/src/backend/optimizer/util/restrictinfo.c @@ -133,7 +133,7 @@ make_restrictinfo_internal(PlannerInfo *root, restrictinfo->can_join = false; /* may get set below */ restrictinfo->security_level = security_level; restrictinfo->incompatible_relids = incompatible_relids; - restrictinfo->outer_relids = outer_relids; + restrictinfo->outer_relids = bms_copy(outer_relids); /* * If it's potentially delayable by lower-level security quals, figure out -- 2.39.3 (Apple Git-145)