public class EvaluatableVisitor extends LanguageVisitor
This visitor class will traverse a language object tree, and determine if the current expression can be evaluated
Modifier and Type | Class and Description |
---|---|
static class |
EvaluatableVisitor.EvaluationLevel |
Constructor and Description |
---|
EvaluatableVisitor() |
EvaluatableVisitor(Object modelId,
QueryMetadataInterface metadata,
CapabilitiesFinder capFinder) |
Modifier and Type | Method and 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 evaluated
|
static 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(AggregateSymbol obj) |
void |
visit(AliasSymbol obj) |
void |
visit(Constant obj) |
void |
visit(DependentSetCriteria obj) |
void |
visit(ElementSymbol obj) |
void |
visit(ExistsCriteria obj) |
void |
visit(ExpressionSymbol obj) |
void |
visit(Function obj) |
void |
visit(IsDistinctCriteria isDistinctCriteria) |
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) |
void |
visit(StoredProcedure proc) |
void |
visit(SubqueryCompareCriteria obj) |
void |
visit(SubquerySetCriteria 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 planning
|
static boolean |
willBecomeConstant(LanguageObject obj,
boolean pushdown) |
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
public EvaluatableVisitor()
public EvaluatableVisitor(Object modelId, QueryMetadataInterface metadata, CapabilitiesFinder capFinder)
public void visit(Function obj)
visit
in class LanguageVisitor
public void visit(Constant obj)
visit
in class LanguageVisitor
public void setDeterminismLevel(FunctionMethod.Determinism value)
public void evaluationNotPossible(EvaluatableVisitor.EvaluationLevel newLevel)
public void visit(ElementSymbol obj)
visit
in class LanguageVisitor
public void visit(ExpressionSymbol obj)
visit
in class LanguageVisitor
public void visit(AliasSymbol obj)
visit
in class LanguageVisitor
public void visit(AggregateSymbol obj)
visit
in class LanguageVisitor
public void visit(Reference obj)
visit
in class LanguageVisitor
public void visit(StoredProcedure proc)
visit
in class LanguageVisitor
public void visit(ScalarSubquery obj)
visit
in class LanguageVisitor
public void visit(DependentSetCriteria obj)
visit
in class LanguageVisitor
public void visit(ExistsCriteria obj)
visit
in class LanguageVisitor
public void visit(SubquerySetCriteria obj)
visit
in class LanguageVisitor
public void visit(SubqueryCompareCriteria obj)
visit
in class LanguageVisitor
public void visit(IsDistinctCriteria isDistinctCriteria)
visit
in class LanguageVisitor
public static final boolean willBecomeConstant(LanguageObject obj)
public static final boolean isFullyEvaluatable(LanguageObject obj, boolean duringPlanning)
public static final boolean isEvaluatable(LanguageObject obj, EvaluatableVisitor.EvaluationLevel target)
public static final boolean willBecomeConstant(LanguageObject obj, boolean pushdown)
public static final boolean needsProcessingEvaluation(LanguageObject obj)
public boolean requiresEvaluation(EvaluatableVisitor.EvaluationLevel evaluationLevel)
public FunctionMethod.Determinism getDeterminismLevel()
public boolean hasCorrelatedReferences()
public static final EvaluatableVisitor needsEvaluationVisitor(Object modelID, QueryMetadataInterface metadata, CapabilitiesFinder capFinder)
public void reset()
Copyright © 2019. All rights reserved.