|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.eigenbase.relopt.RelOptRule com.lucidera.opt.LoptModifyRemovableSelfJoinRule
public class LoptModifyRemovableSelfJoinRule
LoptModifyRemovableSelfJoinRule implements a rule that modifies the inputs
into a removable self-join so that they are in a standard format that will be
recognized by LoptRemoveSelfJoinRule
.
Each input into the join is already a simple LcsRowScanRel
. There
needs to be a FilterRel
and ProjectRel
on top of each of the
row scans. So, this rule adds the missing ProjectRel
and/or FilterRel
. The FilterRel
contains a dummy IS TRUE expression while
the ProjectRel
simply projects each column. Both will be removed
later by LoptRemoveSelfJoinRule
.
Fields inherited from class org.eigenbase.relopt.RelOptRule |
---|
ANY, description, operands |
Constructor Summary | |
---|---|
LoptModifyRemovableSelfJoinRule(RelOptRuleOperand operand,
String id)
Creates a LoptModifyRemovableSelfJoinRule. |
Method Summary | |
---|---|
private ProjectRel |
addFilter(ProjectRel projRel)
Inserts a FilterRel with a TRUE condition in between a ProjectRel and its input. |
private ProjectRel |
addProject(RelNode filterRel)
Inserts a ProjectRel on top of a filter node. |
private ProjectRel |
addProjectAndFilter(RelNode rowScan)
Inserts a ProjectRel and FilterRel on top of a row scan. |
void |
onMatch(RelOptRuleCall call)
Receives notification about a rule match. |
Methods inherited from class org.eigenbase.relopt.RelOptRule |
---|
convert, equals, equals, getOperand, getOperands, getOutConvention, getOutTrait, hashCode, matches, mergeTraitsAndConvert, mergeTraitsAndConvert, toString |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final LoptModifyRemovableSelfJoinRule instanceRowScanOnLeft
public static final LoptModifyRemovableSelfJoinRule instanceRowScanOnRight
public static final LoptModifyRemovableSelfJoinRule instanceFilterOnLeft
public static final LoptModifyRemovableSelfJoinRule instanceProjectOnLeft
public static final LoptModifyRemovableSelfJoinRule instanceFilterOnRight
public static final LoptModifyRemovableSelfJoinRule instanceProjectOnRight
Constructor Detail |
---|
public LoptModifyRemovableSelfJoinRule(RelOptRuleOperand operand, String id)
operand
- Root operand, must not be nullid
- Description of ruleMethod Detail |
---|
public void onMatch(RelOptRuleCall call)
RelOptRule
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.
onMatch
in class RelOptRule
call
- Rule callRelOptRule.matches(RelOptRuleCall)
private ProjectRel addProjectAndFilter(RelNode rowScan)
ProjectRel
and FilterRel
on top of a row scan.
rowScan
- the row scan
private ProjectRel addProject(RelNode filterRel)
ProjectRel
on top of a filter node.
filterRel
- the filter node
ProjectRel
treeprivate ProjectRel addFilter(ProjectRel projRel)
FilterRel
with a TRUE condition in between a ProjectRel
and its input.
projRel
- the ProjectRel
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |