From 8a2523ff354077180084b43a04be01f10aafdb8c Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 18 May 2023 10:39:16 -0400 Subject: [PATCH] Tweak API of new function clause_is_computable_at(). Pass it the RestrictInfo under consideration, not just the clause_relids. This should save some trivial amount of code at the call sites, and it gives us more flexibility about what clause_is_computable_at() does. There's no actual functional change here, though. Discussion: https://postgr.es/m/3564467.1684352557@sss.pgh.pa.us --- src/backend/optimizer/util/relnode.c | 7 +++---- src/backend/optimizer/util/restrictinfo.c | 3 ++- src/include/optimizer/restrictinfo.h | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c index 8d5f7c5e8dd..04ea04b5b64 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 c44bd2f8157..d2bc096e1cc 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 c9e30776c52..57e7a7999d2 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,