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
This commit is contained in:
parent
1c634f6647
commit
8a2523ff35
@ -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
|
||||
|
@ -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. */
|
||||
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user