Package org.teiid.query.sql.visitor
Class EvaluatableVisitor
- java.lang.Object
-
- org.teiid.query.sql.LanguageVisitor
-
- org.teiid.query.sql.visitor.EvaluatableVisitor
-
public class EvaluatableVisitor extends LanguageVisitor
This visitor class will traverse a language object tree, and determine if the current expression can be evaluated
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
EvaluatableVisitor.EvaluationLevel
-
Constructor Summary
Constructors Constructor Description EvaluatableVisitor()
EvaluatableVisitor(Object modelId, QueryMetadataInterface metadata, CapabilitiesFinder capFinder)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
evaluationNotPossible(EvaluatableVisitor.EvaluationLevel newLevel)
FunctionMethod.Determinism
getDeterminismLevel()
boolean
hasCorrelatedReferences()
static boolean
isEvaluatable(LanguageObject obj, EvaluatableVisitor.EvaluationLevel target)
static boolean
isFullyEvaluatable(LanguageObject obj, boolean duringPlanning)
Should be called to check if the object can fully evaluatedstatic EvaluatableVisitor
needsEvaluationVisitor(Object modelID, QueryMetadataInterface metadata, CapabilitiesFinder capFinder)
static boolean
needsProcessingEvaluation(LanguageObject obj)
boolean
requiresEvaluation(EvaluatableVisitor.EvaluationLevel evaluationLevel)
void
reset()
void
setDeterminismLevel(FunctionMethod.Determinism value)
void
visit(DependentSetCriteria obj)
void
visit(ExistsCriteria obj)
void
visit(IsDistinctCriteria isDistinctCriteria)
void
visit(StoredProcedure proc)
void
visit(SubqueryCompareCriteria obj)
void
visit(SubquerySetCriteria obj)
void
visit(AggregateSymbol obj)
void
visit(AliasSymbol obj)
void
visit(Constant obj)
void
visit(ElementSymbol obj)
void
visit(ExpressionSymbol obj)
void
visit(Function obj)
void
visit(Reference obj)
We assume the non-push down for correlation variables, then make specific checks when correlated variables are allowed.void
visit(ScalarSubquery obj)
static boolean
willBecomeConstant(LanguageObject obj)
Will return true if the expression can be deterministically evaluated at runtime, but it may not be evaluatable during planningstatic boolean
willBecomeConstant(LanguageObject obj, boolean pushdown)
-
Methods inherited from class org.teiid.query.sql.LanguageVisitor
setAbort, shouldAbort, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit
-
-
-
-
Constructor Detail
-
EvaluatableVisitor
public EvaluatableVisitor()
-
EvaluatableVisitor
public EvaluatableVisitor(Object modelId, QueryMetadataInterface metadata, CapabilitiesFinder capFinder)
-
-
Method Detail
-
visit
public void visit(Function obj)
- Overrides:
visit
in classLanguageVisitor
-
visit
public void visit(Constant obj)
- Overrides:
visit
in classLanguageVisitor
-
setDeterminismLevel
public void setDeterminismLevel(FunctionMethod.Determinism value)
-
evaluationNotPossible
public void evaluationNotPossible(EvaluatableVisitor.EvaluationLevel newLevel)
-
visit
public void visit(ElementSymbol obj)
- Overrides:
visit
in classLanguageVisitor
-
visit
public void visit(ExpressionSymbol obj)
- Overrides:
visit
in classLanguageVisitor
-
visit
public void visit(AliasSymbol obj)
- Overrides:
visit
in classLanguageVisitor
-
visit
public void visit(AggregateSymbol obj)
- Overrides:
visit
in classLanguageVisitor
-
visit
public void visit(Reference obj)
We assume the non-push down for correlation variables, then make specific checks when correlated variables are allowed.- Overrides:
visit
in classLanguageVisitor
-
visit
public void visit(StoredProcedure proc)
- Overrides:
visit
in classLanguageVisitor
-
visit
public void visit(ScalarSubquery obj)
- Overrides:
visit
in classLanguageVisitor
-
visit
public void visit(DependentSetCriteria obj)
- Overrides:
visit
in classLanguageVisitor
-
visit
public void visit(ExistsCriteria obj)
- Overrides:
visit
in classLanguageVisitor
-
visit
public void visit(SubquerySetCriteria obj)
- Overrides:
visit
in classLanguageVisitor
-
visit
public void visit(SubqueryCompareCriteria obj)
- Overrides:
visit
in classLanguageVisitor
-
visit
public void visit(IsDistinctCriteria isDistinctCriteria)
- Overrides:
visit
in classLanguageVisitor
-
willBecomeConstant
public static final boolean willBecomeConstant(LanguageObject obj)
Will return true if the expression can be deterministically evaluated at runtime, but it may not be evaluatable during planning
-
isFullyEvaluatable
public static final boolean isFullyEvaluatable(LanguageObject obj, boolean duringPlanning)
Should be called to check if the object can fully evaluated
-
isEvaluatable
public static final boolean isEvaluatable(LanguageObject obj, EvaluatableVisitor.EvaluationLevel target)
-
willBecomeConstant
public static final boolean willBecomeConstant(LanguageObject obj, boolean pushdown)
-
needsProcessingEvaluation
public static final boolean needsProcessingEvaluation(LanguageObject obj)
-
requiresEvaluation
public boolean requiresEvaluation(EvaluatableVisitor.EvaluationLevel evaluationLevel)
-
getDeterminismLevel
public FunctionMethod.Determinism getDeterminismLevel()
-
hasCorrelatedReferences
public boolean hasCorrelatedReferences()
-
needsEvaluationVisitor
public static final EvaluatableVisitor needsEvaluationVisitor(Object modelID, QueryMetadataInterface metadata, CapabilitiesFinder capFinder)
-
reset
public void reset()
-
-