Returns true if expr
can be evaluated using only the output of plan
.
Returns true if expr
can be evaluated using only the output of plan
. This method
can be used to determine when it is acceptable to move expression evaluation within a query
plan.
For example consider a join between two relations R(a, b) and S(c, d).
- canEvaluate(EqualTo(a,b), R)
returns true
- canEvaluate(EqualTo(a,c), R)
returns false
- canEvaluate(Literal(1), R)
returns true
as literals CAN be evaluated on any plan
Returns true iff expr
could be evaluated as a condition within join.
Returns true iff expr
could be evaluated as a condition within join.
Join a list of plans together and push down the conditions into them.
Join a list of plans together and push down the conditions into them.
The joined plan are picked from left to right, prefer those has at least one join condition.
a list of LogicalPlans to inner join and the type of inner join.
a list of condition for join.
Name for this rule, automatically inferred based on class name.
Name for this rule, automatically inferred based on class name.
Returns true iff output of both plans are semantically the same, ie.:
Returns true iff output of both plans are semantically the same, ie.:
Attribute
s;
Reorder the joins and push all the conditions into join, so that the bottom ones have at least one condition.
The order of joins will not be changed if all of them already have at least one condition.