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, visitpublic EvaluatableVisitor()
public EvaluatableVisitor(Object modelId, QueryMetadataInterface metadata, CapabilitiesFinder capFinder)
public void visit(Function obj)
visit in class LanguageVisitorpublic void visit(Constant obj)
visit in class LanguageVisitorpublic void setDeterminismLevel(FunctionMethod.Determinism value)
public void evaluationNotPossible(EvaluatableVisitor.EvaluationLevel newLevel)
public void visit(ElementSymbol obj)
visit in class LanguageVisitorpublic void visit(ExpressionSymbol obj)
visit in class LanguageVisitorpublic void visit(AliasSymbol obj)
visit in class LanguageVisitorpublic void visit(AggregateSymbol obj)
visit in class LanguageVisitorpublic void visit(Reference obj)
visit in class LanguageVisitorpublic void visit(StoredProcedure proc)
visit in class LanguageVisitorpublic void visit(ScalarSubquery obj)
visit in class LanguageVisitorpublic void visit(DependentSetCriteria obj)
visit in class LanguageVisitorpublic void visit(ExistsCriteria obj)
visit in class LanguageVisitorpublic void visit(SubquerySetCriteria obj)
visit in class LanguageVisitorpublic void visit(SubqueryCompareCriteria obj)
visit in class LanguageVisitorpublic void visit(IsDistinctCriteria isDistinctCriteria)
visit in class LanguageVisitorpublic 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.