From a2c8dc65ce98f7353b25c38e6773182bc6b0a4ab Mon Sep 17 00:00:00 2001 From: onderkalaci Date: Fri, 5 May 2023 12:27:28 +0300 Subject: [PATCH] Again, related to outer join checks --- .../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 ac36842de..5cf3f4949 100644 --- a/src/backend/distributed/planner/relation_restriction_equivalence.c +++ b/src/backend/distributed/planner/relation_restriction_equivalence.c @@ -1267,6 +1267,21 @@ AddRteSubqueryToAttributeEquivalenceClass(AttributeEquivalenceClass PlannerInfo *root, Var *varToBeAdded) { + + + 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; + } + + RelOptInfo *baseRelOptInfo = find_base_rel(root, varToBeAdded->varno); Query *targetSubquery = GetTargetSubquery(root, rangeTableEntry, varToBeAdded); @@ -1357,6 +1372,18 @@ GetTargetSubquery(PlannerInfo *root, RangeTblEntry *rangeTableEntry, Var *varToB */ if (!rangeTableEntry->inh) { + 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; + } + RelOptInfo *baseRelOptInfo = find_base_rel(root, varToBeAdded->varno); /* If the targetSubquery was not planned, we have to punt */