v1-0001-Fix-bogus-Asserts-in-calc_non_nestloop_required_outer.patch
application/octet-stream
Filename: v1-0001-Fix-bogus-Asserts-in-calc_non_nestloop_required_outer.patch
Type: application/octet-stream
Part: 0
Patch
Format: format-patch
Series: patch v1-0001
Subject: Fix bogus Asserts in calc_non_nestloop_required_outer
| File | + | − |
|---|---|---|
| src/backend/optimizer/util/pathnode.c | 8 | 2 |
From 6c1ecb88fcd482b1fe0c805bd888f140967164d4 Mon Sep 17 00:00:00 2001 From: Richard Guo <guofenglinux@gmail.com> Date: Thu, 3 Aug 2023 10:18:53 +0800 Subject: [PATCH v1] Fix bogus Asserts in calc_non_nestloop_required_outer --- src/backend/optimizer/util/pathnode.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c index f123fcb41e..062928288d 100644 --- a/src/backend/optimizer/util/pathnode.c +++ b/src/backend/optimizer/util/pathnode.c @@ -2391,8 +2391,14 @@ calc_non_nestloop_required_outer(Path *outer_path, Path *inner_path) Relids required_outer; /* neither path can require rels from the other */ - Assert(!bms_overlap(outer_paramrels, inner_path->parent->relids)); - Assert(!bms_overlap(inner_paramrels, outer_path->parent->relids)); + Assert(!bms_overlap(outer_paramrels, + inner_path->parent->top_parent_relids ? + inner_path->parent->top_parent_relids : + inner_path->parent->relids)); + Assert(!bms_overlap(inner_paramrels, + outer_path->parent->top_parent_relids ? + outer_path->parent->top_parent_relids : + outer_path->parent->relids)); /* form the union ... */ required_outer = bms_union(outer_paramrels, inner_paramrels); /* we do not need an explicit test for empty; bms_union gets it right */ -- 2.31.0