Package org.apache.calcite.plan
Class MaterializedViewSubstitutionVisitor.FilterToFilterUnifyRule1
- java.lang.Object
-
- org.apache.calcite.plan.SubstitutionVisitor.UnifyRule
-
- org.apache.calcite.plan.SubstitutionVisitor.AbstractUnifyRule
-
- org.apache.calcite.plan.MaterializedViewSubstitutionVisitor.FilterToFilterUnifyRule1
-
- Enclosing class:
- MaterializedViewSubstitutionVisitor
private static class MaterializedViewSubstitutionVisitor.FilterToFilterUnifyRule1 extends SubstitutionVisitor.AbstractUnifyRule
Implementation ofSubstitutionVisitor.UnifyRule
that matches aMutableFilter
to aMutableFilter
where the condition of the target relation is weaker.Example: target has a weaker condition
- query: Filter(condition: >($1, 20)) Scan(table: [hr, emps])
- target: Filter(condition: >($1, 10)) Scan(table: [hr, emps])
-
-
Field Summary
Fields Modifier and Type Field Description static MaterializedViewSubstitutionVisitor.FilterToFilterUnifyRule1
INSTANCE
-
Fields inherited from class org.apache.calcite.plan.SubstitutionVisitor.UnifyRule
queryOperand, slotCount, targetOperand
-
-
Constructor Summary
Constructors Modifier Constructor Description private
FilterToFilterUnifyRule1()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description SubstitutionVisitor.UnifyResult
apply(SubstitutionVisitor.UnifyRuleCall call)
Applies this rule to a particular node in a query.protected SubstitutionVisitor.UnifyRuleCall
match(SubstitutionVisitor visitor, MutableRel query, MutableRel target)
-
Methods inherited from class org.apache.calcite.plan.SubstitutionVisitor.AbstractUnifyRule
any, isValid, operand, query, target
-
Methods inherited from class org.apache.calcite.plan.SubstitutionVisitor.UnifyRule
copy
-
-
-
-
Field Detail
-
INSTANCE
public static final MaterializedViewSubstitutionVisitor.FilterToFilterUnifyRule1 INSTANCE
-
-
Method Detail
-
apply
public SubstitutionVisitor.UnifyResult apply(SubstitutionVisitor.UnifyRuleCall call)
Description copied from class:SubstitutionVisitor.UnifyRule
Applies this rule to a particular node in a query. The goal is to convert
query
intotarget
. Before the rule is invoked, Calcite has made sure that query's children are equivalent to target's children.There are 3 possible outcomes:
query
already exactly matchestarget
; returnstarget
query
is sufficiently close to a match fortarget
; returnstarget
query
cannot be made to matchtarget
; returns null
REVIEW: Is possible that we match query PLUS one or more of its ancestors?
- Specified by:
apply
in classSubstitutionVisitor.UnifyRule
- Parameters:
call
- Input parameters
-
match
protected SubstitutionVisitor.UnifyRuleCall match(SubstitutionVisitor visitor, MutableRel query, MutableRel target)
- Overrides:
match
in classSubstitutionVisitor.UnifyRule
-
-