@API(value=EXPERIMENTAL) public class RecordTypesProperty extends Object implements PlannerProperty<Set<String>>
RelationalPlannerExpression
could produce. This property is used in determining whether type filters are necessary, among other things.Modifier and Type | Method and Description |
---|---|
static Set<String> |
evaluate(PlanContext context,
ExpressionRef<? extends PlannerExpression> ref) |
static Set<String> |
evaluate(PlanContext context,
PlannerExpression ref) |
Set<String> |
evaluateAtExpression(PlannerExpression expression,
List<Set<String>> childResults)
Evaluate the property at the given expression, using the results of evaluating the property at its children.
|
Set<String> |
evaluateAtRef(ExpressionRef<? extends PlannerExpression> ref,
List<Set<String>> memberResults)
Evaluate the property at the given reference, using the results of evaluating the property at its members.
|
boolean |
shouldVisit(ExpressionRef<? extends PlannerExpression> ref)
Return whether the property should visit the subtree rooted at the given expression.
|
boolean |
shouldVisit(PlannerExpression expression)
Return whether the property should visit the subtree rooted at the given expression.
|
public boolean shouldVisit(@Nonnull PlannerExpression expression)
PlannerProperty
shouldVisit()
is called on that node.
If shouldVisit()
returns false
, then PlannerProperty.evaluateAtExpression(PlannerExpression, List)
will
not be called on the given expression.shouldVisit
in interface PlannerProperty<Set<String>>
expression
- the planner expression to visittrue
if the children of expression
should be visited and false
if they should not be visitedpublic boolean shouldVisit(@Nonnull ExpressionRef<? extends PlannerExpression> ref)
PlannerProperty
shouldVisit()
is called on that node.
If shouldVisit()
returns false
, then PlannerProperty.evaluateAtRef(ExpressionRef, List)
will
not be called on the given expression.shouldVisit
in interface PlannerProperty<Set<String>>
ref
- the expression reference to visittrue
if the members of ref
should be visited and false
if they should not be visited@Nonnull public Set<String> evaluateAtExpression(@Nonnull PlannerExpression expression, @Nonnull List<Set<String>> childResults)
PlannerProperty
evaluateAtExpression()
is called on that node.evaluateAtExpression
in interface PlannerProperty<Set<String>>
expression
- the cursor to visitchildResults
- the results of the property evaluated at the children of expression
@Nonnull public Set<String> evaluateAtRef(@Nonnull ExpressionRef<? extends PlannerExpression> ref, @Nonnull List<Set<String>> memberResults)
PlannerProperty
evaluateAtRef()
is called on that node.evaluateAtRef
in interface PlannerProperty<Set<String>>
ref
- the expression reference to visitmemberResults
- the results of the property evaluated at the members of ref
@Nonnull public static Set<String> evaluate(@Nonnull PlanContext context, ExpressionRef<? extends PlannerExpression> ref)
@Nonnull public static Set<String> evaluate(@Nonnull PlanContext context, @Nonnull PlannerExpression ref)