org.eigenbase.rel.rules
Class PushFilterPastJoinRule
java.lang.Object
org.eigenbase.relopt.RelOptRule
org.eigenbase.rel.rules.PushFilterPastJoinRule
public class PushFilterPastJoinRule
- extends RelOptRule
PushFilterPastJoinRule implements the rule for pushing filters above and
within a join node into the join node and/or its children nodes.
- Version:
- $Id: //open/dev/farrago/src/org/eigenbase/rel/rules/PushFilterPastJoinRule.java#14 $
- 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 PushFilterPastJoinRule instance
PushFilterPastJoinRule
private PushFilterPastJoinRule()
- Creates a PushFilterPastJoinRule.
PushFilterPastJoinRule
public PushFilterPastJoinRule(RelOptRuleOperand operand,
String id)
- Creates a PushFilterPastJoinRule with an explicit root operand.
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)
createFilterOnRel
private RelNode createFilterOnRel(RexBuilder rexBuilder,
RelNode rel,
List<RexNode> filters)
- If the filter list passed in is non-empty, creates a FilterRel on top of
the existing RelNode; otherwise, just returns the RelNode
- Parameters:
rexBuilder
- rex builderrel
- the RelNode that the filter will be put on top offilters
- list of filters
- Returns:
- new RelNode or existing one if no filters