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
      • getMaxTaskQueueSize

        public int getMaxTaskQueueSize()
        Return the size limit of the cascades planner task queue.
        Returns:
        the maximum size of the queue. 0 means "unbound" (the default). Trying to add a task beyond the maximum size will fail the planning.
      • getMaxTotalTaskCount

        public int getMaxTotalTaskCount()
        Return the limit on the number of tasks that can be executed as part of the cascades planner planning.
        Returns:
        the maximum number of tasks. 0 means "unbound" (the default). Trying to execute a task after the maximum number was exceeded will fail the planning.
      • shouldUseFullKeyForValueIndex

        public boolean shouldUseFullKeyForValueIndex()
        Get whether the planner uses the entire key, including the primary key, for value indexes.
        Returns:
        whether to include primary key in planning