org.eigenbase.rel.rules
Class PushSemiJoinPastProjectRule
java.lang.Object
org.eigenbase.relopt.RelOptRule
org.eigenbase.rel.rules.PushSemiJoinPastProjectRule
public class PushSemiJoinPastProjectRule
- extends RelOptRule
PushSemiJoinPastProjectRule implements the rule for pushing semijoins down in
a tree past a project in order to trigger other rules that will convert
semijoins.
SemiJoinRel(ProjectRel(X), Y) --> ProjectRel(SemiJoinRel(X, Y))
- Version:
- $Id: //open/dev/farrago/src/org/eigenbase/rel/rules/PushSemiJoinPastProjectRule.java#8 $
- Author:
- Zelaine Fong
Methods inherited from class org.eigenbase.relopt.RelOptRule |
convert, equals, equals, getOperand, getOperands, getOutConvention, getOutTrait, hashCode, matches, mergeTraitsAndConvert, mergeTraitsAndConvert, toString |
instance
public static final PushSemiJoinPastProjectRule instance
PushSemiJoinPastProjectRule
private PushSemiJoinPastProjectRule()
- Creates a PushSemiJoinPastProjectRule.
onMatch
public void onMatch(RelOptRuleCall call)
- Description copied from class:
RelOptRule
- Receives notification about a rule match. At the time that this method is
called,
call.rels
holds the set of relational
expressions which match the operands to the rule;
call.rels[0]
is the root expression.
Typically a rule would check that the nodes are valid matches, creates
a new expression, then calls back RelOptRuleCall.transformTo(org.eigenbase.rel.RelNode)
to
register the expression.
- Specified by:
onMatch
in class RelOptRule
- Parameters:
call
- Rule call- See Also:
RelOptRule.matches(RelOptRuleCall)
adjustCondition
private RexNode adjustCondition(ProjectRel project,
SemiJoinRel semiJoin)
- Pulls the project above the semijoin and returns the resulting semijoin
condition. As a result, the semijoin condition should be modified such
that references to the LHS of a semijoin should now reference the
children of the project that's on the LHS.
- Parameters:
project
- ProjectRel on the LHS of the semijoinsemiJoin
- the semijoin
- Returns:
- the modified semijoin condition