Class RecordQueryPlannerConfiguration

    • Method Detail

      • getIndexScanPreference

        @Nonnull
        public QueryPlanner.IndexScanPreference getIndexScanPreference()
        Get whether RecordQueryIndexPlan is preferred over RecordQueryScanPlan even when it does not satisfy any additional conditions. Scanning without an index is more efficient, but will have to skip over unrelated record types. For that reason, it is safer to use an index, except when there is only one record type. If the meta-data has more than one record type but the record store does not, this can be overridden.
        Returns:
        the index scan preference
      • shouldAttemptFailedInJoinAsOr

        public boolean shouldAttemptFailedInJoinAsOr()
        Get whether the query planner should attempt to transform IN predicates that can't be implemented using a RecordQueryInJoinPlan into an equivalent OR of equality predicates, which might be plannable as a union.
        Returns:
        whether the planner will transform IN predicates into ORs when they can't be planned as in-joins
      • getComplexityThreshold

        public int getComplexityThreshold()
        A limit on the complexity of the plans generated by the planner. If the planner generates a query plan that exceeds this complexity, an exception will be thrown.
        Returns:
        the complexity limit See QueryPlan.getComplexity() for a description of plan complexity.
      • shouldCheckForDuplicateConditions

        public boolean shouldCheckForDuplicateConditions()
        Get whether normalization of query conditions should check for redundant conditions. This check is not free, so it is appropriate only to enable this when the queries come from a source known to include disjuncted conditions that imply one another.
        Returns:
        whether normalization should check for redundant conditions
        See Also:
        BooleanNormalizer.isCheckForDuplicateConditions()
      • shouldDeferFetchAfterUnionAndIntersection

        public boolean shouldDeferFetchAfterUnionAndIntersection()
        Get whether the query planner should attempt to delay the fetch of the whole record until after union, intersection, and primary key distinct operators, as implemented in the various RecordQueryPlannerSubstitutionVisitors.
        Returns:
        whether the planner should delay the fetch of the whole record until after union, intersection, and primary key distinct operators
      • shouldOptimizeForIndexFilters

        public boolean shouldOptimizeForIndexFilters()
        Get whether the query planner should attempt to consider the applicability of filters that could then be evaluated on index entries into the planning process.
        Returns:
        whether the planner should optimize for index filters