Package org.apache.calcite.plan
Class MaterializedViewSubstitutionVisitor.ProjectToProjectUnifyRule1
- java.lang.Object
-
- org.apache.calcite.plan.SubstitutionVisitor.UnifyRule
-
- org.apache.calcite.plan.SubstitutionVisitor.AbstractUnifyRule
-
- org.apache.calcite.plan.MaterializedViewSubstitutionVisitor.ProjectToProjectUnifyRule1
-
- Enclosing class:
- MaterializedViewSubstitutionVisitor
private static class MaterializedViewSubstitutionVisitor.ProjectToProjectUnifyRule1 extends SubstitutionVisitor.AbstractUnifyRule
Implementation ofSubstitutionVisitor.UnifyRule
that matches aMutableProject
to aMutableProject
where the condition of the target relation is weaker.Example: target has a weaker condition and contains all columns selected by query
- query: Project(projects: [$2, $0]) Filter(condition: >($1, 20)) Scan(table: [hr, emps])
- target: Project(projects: [$0, $1, $2]) Filter(condition: >($1, 10)) Scan(table: [hr, emps])
-
-
Field Summary
Fields Modifier and Type Field Description static MaterializedViewSubstitutionVisitor.ProjectToProjectUnifyRule1
INSTANCE
-
Fields inherited from class org.apache.calcite.plan.SubstitutionVisitor.UnifyRule
queryOperand, slotCount, targetOperand
-
-
Constructor Summary
Constructors Modifier Constructor Description private
ProjectToProjectUnifyRule1()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected 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.ProjectToProjectUnifyRule1 INSTANCE
-
-
Method Detail
-
apply
protected 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
-
-