From bd169080a8fb64d450ac552cd429c3288b92eea1 Mon Sep 17 00:00:00 2001 From: onderkalaci Date: Fri, 5 May 2023 12:27:28 +0300 Subject: [PATCH] FIX THIS related to outer join checks, root->simple_rel_array (cherry picked from commit a2c8dc65ce98f7353b25c38e6773182bc6b0a4ab) --- .../relation_restriction_equivalence.c | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/backend/distributed/planner/relation_restriction_equivalence.c b/src/backend/distributed/planner/relation_restriction_equivalence.c index b57e37735..52269e4f6 100644 --- a/src/backend/distributed/planner/relation_restriction_equivalence.c +++ b/src/backend/distributed/planner/relation_restriction_equivalence.c @@ -1267,6 +1267,20 @@ AddRteSubqueryToAttributeEquivalenceClass(AttributeEquivalenceClass PlannerInfo *root, Var *varToBeAdded) { +#if PG_VERSION_NUM >= PG_VERSION_16 + if (root->simple_rel_array_size <= varToBeAdded->varno) + { + return; + } + + RelOptInfo *rel = root->simple_rel_array[varToBeAdded->varno]; + if (rel == NULL) + { + /* must be an outer join*/ + return; + } +#endif + RelOptInfo *baseRelOptInfo = find_base_rel(root, varToBeAdded->varno); Query *targetSubquery = GetTargetSubquery(root, rangeTableEntry, varToBeAdded); @@ -1357,6 +1371,19 @@ GetTargetSubquery(PlannerInfo *root, RangeTblEntry *rangeTableEntry, Var *varToB */ if (!rangeTableEntry->inh) { +#if PG_VERSION_NUM >= PG_VERSION_16 + if (root->simple_rel_array_size <= varToBeAdded->varno) + { + return NULL; + } + + RelOptInfo *rel = root->simple_rel_array[varToBeAdded->varno]; + if (rel == NULL) + { + /* must be an outer join*/ + return NULL; + } +#endif RelOptInfo *baseRelOptInfo = find_base_rel(root, varToBeAdded->varno); /* If the targetSubquery was not planned, we have to punt */