Class TypeFilterCountProperty

  • All Implemented Interfaces:
    PlannerProperty<Integer>

    public class TypeFilterCountProperty
    extends Object
    implements PlannerProperty<Integer>
    A property that determines the sum, over all elements of a PlannerExpression tree, of the number of record types that are passed by type filters in the tree. Records that are filtered for more than one type filter are not de-duplicated. For example, if there are two TypeFilterExpressions, one that filters for records of types Type1 or Type2 and one that filters for records of type Type1, 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 Detail

      • TypeFilterCountProperty

        public TypeFilterCountProperty()
    • 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 interface PlannerProperty<Integer>
        Parameters:
        expression - the cursor to visit
        childResults - the results of the property evaluated at the children of expression
        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 interface PlannerProperty<Integer>
        Parameters:
        ref - the expression reference to visit
        memberResults - the results of the property evaluated at the members of ref
        Returns:
        the value of property at the given reference