aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2023-05-18 10:39:16 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2023-05-18 10:39:16 -0400
commit8a2523ff354077180084b43a04be01f10aafdb8c (patch)
treecae619c226ee1331a4758e462b57845008a246f5 /src
parent1c634f6647c28354258d114041252475325aea32 (diff)
downloadpostgresql-8a2523ff354077180084b43a04be01f10aafdb8c.tar.gz
postgresql-8a2523ff354077180084b43a04be01f10aafdb8c.zip
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
Diffstat (limited to 'src')
-rw-r--r--src/backend/optimizer/util/relnode.c7
-rw-r--r--src/backend/optimizer/util/restrictinfo.c3
-rw-r--r--src/include/optimizer/restrictinfo.h2
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,