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 */