diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c index 8d5f7c5e8d..04ea04b5b6 100644 --- a/src/backend/optimizer/util/relnode.c +++ b/src/backend/optimizer/util/relnode.c @@ -1346,8 +1346,7 @@ subbuild_joinrel_restrictlist(PlannerInfo *root, Assert(!RINFO_IS_PUSHED_DOWN(rinfo, joinrel->relids)); if (!bms_is_subset(rinfo->required_relids, both_input_relids)) continue; - if (!clause_is_computable_at(root, rinfo->clause_relids, - both_input_relids)) + if (!clause_is_computable_at(root, rinfo, both_input_relids)) continue; } else @@ -1358,13 +1357,13 @@ subbuild_joinrel_restrictlist(PlannerInfo *root, */ #ifdef USE_ASSERT_CHECKING if (RINFO_IS_PUSHED_DOWN(rinfo, joinrel->relids)) - Assert(clause_is_computable_at(root, rinfo->clause_relids, + Assert(clause_is_computable_at(root, rinfo, joinrel->relids)); else { Assert(bms_is_subset(rinfo->required_relids, both_input_relids)); - Assert(clause_is_computable_at(root, rinfo->clause_relids, + Assert(clause_is_computable_at(root, rinfo, both_input_relids)); } #endif diff --git a/src/backend/optimizer/util/restrictinfo.c b/src/backend/optimizer/util/restrictinfo.c index c44bd2f815..d2bc096e1c 100644 --- a/src/backend/optimizer/util/restrictinfo.c +++ b/src/backend/optimizer/util/restrictinfo.c @@ -541,9 +541,10 @@ extract_actual_join_clauses(List *restrictinfo_list, */ bool clause_is_computable_at(PlannerInfo *root, - Relids clause_relids, + RestrictInfo *rinfo, Relids eval_relids) { + Relids clause_relids = rinfo->clause_relids; ListCell *lc; /* Nothing to do if no outer joins have been performed yet. */ diff --git a/src/include/optimizer/restrictinfo.h b/src/include/optimizer/restrictinfo.h index c9e30776c5..57e7a7999d 100644 --- a/src/include/optimizer/restrictinfo.h +++ b/src/include/optimizer/restrictinfo.h @@ -40,7 +40,7 @@ extern void extract_actual_join_clauses(List *restrictinfo_list, List **joinquals, List **otherquals); extern bool clause_is_computable_at(PlannerInfo *root, - Relids clause_relids, + RestrictInfo *rinfo, Relids eval_relids); extern bool join_clause_is_movable_to(RestrictInfo *rinfo, RelOptInfo *baserel); extern bool join_clause_is_movable_into(RestrictInfo *rinfo,