diff options
author | Tom Lane | 2023-07-22 14:32:52 +0000 |
---|---|---|
committer | Tom Lane | 2023-07-22 14:32:52 +0000 |
commit | bda97e47afaeaab6236f37993ce45bb369add3e5 (patch) | |
tree | 005a38797f1062720082aa0a55fa1541bacd2051 | |
parent | 702d003269297042903c978176c0dd1ca77d5e60 (diff) |
Avoid compiler warning in non-assert builds.
After 3c90dcd03, try_partitionwise_join's child_joinrelids
variable is read only in an Assert, provoking a compiler
warning in non-assert builds. Rearrange code to avoid the
warning and eliminate unnecessary work in the non-assert case.
Per CI testing (via Jeff Davis and Bharath Rupireddy)
Discussion: https://postgr.es/m/[email protected]
-rw-r--r-- | src/backend/optimizer/path/joinrels.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/backend/optimizer/path/joinrels.c b/src/backend/optimizer/path/joinrels.c index a3f94be1d64..015a0b3cbe0 100644 --- a/src/backend/optimizer/path/joinrels.c +++ b/src/backend/optimizer/path/joinrels.c @@ -1543,7 +1543,6 @@ try_partitionwise_join(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2, SpecialJoinInfo *child_sjinfo; List *child_restrictlist; RelOptInfo *child_joinrel; - Relids child_joinrelids; AppendRelInfo **appinfos; int nappinfos; @@ -1646,10 +1645,6 @@ try_partitionwise_join(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2, child_rel2->relids), &nappinfos); - /* Build correct join relids for child join */ - child_joinrelids = adjust_child_relids(joinrel->relids, - nappinfos, appinfos); - /* * Construct restrictions applicable to the child join from those * applicable to the parent join. @@ -1658,8 +1653,8 @@ try_partitionwise_join(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2, (List *) adjust_appendrel_attrs(root, (Node *) parent_restrictlist, nappinfos, appinfos); - pfree(appinfos); + /* Find or construct the child join's RelOptInfo */ child_joinrel = joinrel->part_rels[cnt_parts]; if (!child_joinrel) { @@ -1672,11 +1667,17 @@ try_partitionwise_join(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2, child_joinrel->relids); } - Assert(bms_equal(child_joinrel->relids, child_joinrelids)); + /* Assert we got the right one */ + Assert(bms_equal(child_joinrel->relids, + adjust_child_relids(joinrel->relids, + nappinfos, appinfos))); + /* And make paths for the child join */ populate_joinrel_with_paths(root, child_rel1, child_rel2, child_joinrel, child_sjinfo, child_restrictlist); + + pfree(appinfos); } } |