Class TypeFilterCountProperty
- java.lang.Object
-
- com.apple.foundationdb.record.query.plan.temp.properties.TypeFilterCountProperty
-
- All Implemented Interfaces:
PlannerProperty<Integer>
public class TypeFilterCountProperty extends Object implements PlannerProperty<Integer>
A property that determines the sum, over all elements of aPlannerExpression
tree, of the number of record types that are passed by type filters in the tree. Records that are filtered for on more than one type filter are not de-duplicated. For example, if there are twoTypeFilterExpression
s, one that filters for records of typesType1
orType2
and one that filters for records of typeType1
, then this property would evaluate to 3.This property provides some heuristic sense of how much work is being done by type filters, since unnecessary ones are aggressively pruned by the planner.
-
-
Constructor Summary
Constructors Constructor Description TypeFilterCountProperty()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static int
evaluate(RelationalExpression expression)
Integer
evaluateAtExpression(RelationalExpression expression, List<Integer> childResults)
Evaluate the property at the given expression, using the results of evaluating the property at its children.Integer
evaluateAtRef(ExpressionRef<? extends RelationalExpression> ref, List<Integer> memberResults)
Evaluate the property at the given reference, using the results of evaluating the property at its members.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.apple.foundationdb.record.query.plan.temp.PlannerProperty
evaluateAtQuantifier, shouldVisit, shouldVisit, shouldVisit
-
-
-
-
Method Detail
-
evaluateAtExpression
@Nonnull public Integer evaluateAtExpression(@Nonnull RelationalExpression expression, @Nonnull List<Integer> childResults)
Description copied from interface:PlannerProperty
Evaluate the property at the given expression, using the results of evaluating the property at its children. Called on nodes in the graph in visit post-order of the depth-first traversal of the graph. That is, as each expression is visited (after all of its children have been visited, if applicable),evaluateAtExpression()
is called on that expression.- Specified by:
evaluateAtExpression
in interfacePlannerProperty<Integer>
- Parameters:
expression
- the cursor to visitchildResults
- the results of the property evaluated at the children ofexpression
- Returns:
- the value of property at the given expression
-
evaluateAtRef
@Nonnull public Integer evaluateAtRef(@Nonnull ExpressionRef<? extends RelationalExpression> ref, @Nonnull List<Integer> memberResults)
Description copied from interface:PlannerProperty
Evaluate the property at the given reference, using the results of evaluating the property at its members. Called on nodes in the graph in visit post-order of the depth-first traversal of the graph. That is, as each reference is visited (after all of its members have been visited, if applicable),evaluateAtRef()
is called on that reference.- Specified by:
evaluateAtRef
in interfacePlannerProperty<Integer>
- Parameters:
ref
- the expression reference to visitmemberResults
- the results of the property evaluated at the members ofref
- Returns:
- the value of property at the given reference
-
evaluate
public static int evaluate(@Nonnull RelationalExpression expression)
-
-