Class IndexFunctionHelper
- java.lang.Object
-
- com.apple.foundationdb.record.provider.foundationdb.IndexFunctionHelper
-
@API(INTERNAL) public class IndexFunctionHelper extends Object
Helper class for finding appropriate indexes forIndexRecordFunction
andIndexAggregateFunction
.
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static Optional<IndexAggregateFunction>
bindAggregateFunction(FDBRecordStore store, IndexAggregateFunction function, List<String> recordTypeNames)
static IndexAggregateFunction
count(KeyExpression by)
static IndexAggregateFunction
countUpdates(KeyExpression by)
static KeyExpression
getGroupedKey(KeyExpression key)
static KeyExpression
getGroupingKey(KeyExpression key)
protected static KeyExpression
getGroupingSubkey(GroupingKeyExpression grouping, int start, int end)
static Stream<Index>
indexesForRecordTypes(FDBRecordStore store, List<String> recordTypeNames)
The indexes that apply to exactly the given types, no more, no less.static Stream<Index>
indexesForRecordTypes(RecordMetaData metaData, Collection<String> recordTypeNames)
The indexes that apply to exactly the given types, no more, no less.static Optional<IndexMaintainer>
indexMaintainerForAggregateFunction(FDBRecordStore store, IndexAggregateFunction function, List<String> recordTypeNames)
static Optional<IndexMaintainer>
indexMaintainerForRecordFunction(FDBRecordStore store, IndexRecordFunction<?> function, FDBRecord<?> record)
Find an index that can evaluate the given function against the given record.static Optional<IndexMaintainer>
indexMaintainerForRecordFunction(FDBRecordStore store, IndexRecordFunction<?> function, List<String> recordTypeNames)
Find an index that can evaluate the given function against all of the given record types.static boolean
isGroupPrefix(KeyExpression functionOperand, KeyExpression indexRoot)
Is the operand for this function compatible with this index? The grouped part must match.
-
-
-
Method Detail
-
indexMaintainerForRecordFunction
public static Optional<IndexMaintainer> indexMaintainerForRecordFunction(@Nonnull FDBRecordStore store, @Nonnull IndexRecordFunction<?> function, @Nonnull FDBRecord<?> record)
Find an index that can evaluate the given function against the given record.- Parameters:
store
- the record store containing the recordfunction
- the function to evaluaterecord
- the record to evaluate against- Returns:
- an index maintainer that can evaluate the function or
Optional.empty()
-
indexMaintainerForRecordFunction
public static Optional<IndexMaintainer> indexMaintainerForRecordFunction(@Nonnull FDBRecordStore store, @Nonnull IndexRecordFunction<?> function, @Nonnull List<String> recordTypeNames)
Find an index that can evaluate the given function against all of the given record types.- Parameters:
store
- the record store containing the record typesfunction
- the function to evaluaterecordTypeNames
- the names of all the record types for which the function will be evaluated- Returns:
- an index maintainer that can evaluate the function or
Optional.empty()
-
indexMaintainerForAggregateFunction
public static Optional<IndexMaintainer> indexMaintainerForAggregateFunction(@Nonnull FDBRecordStore store, @Nonnull IndexAggregateFunction function, @Nonnull List<String> recordTypeNames)
-
indexesForRecordTypes
public static Stream<Index> indexesForRecordTypes(@Nonnull FDBRecordStore store, @Nonnull List<String> recordTypeNames)
The indexes that apply to exactly the given types, no more, no less.- Parameters:
store
- the store containing the record typesrecordTypeNames
- the names of the record types for which indexes are needed- Returns:
- a stream of indexes
-
indexesForRecordTypes
public static Stream<Index> indexesForRecordTypes(@Nonnull RecordMetaData metaData, @Nonnull Collection<String> recordTypeNames)
The indexes that apply to exactly the given types, no more, no less.- Parameters:
metaData
- the meta-data containing the record typesrecordTypeNames
- the names of the record types for which indexes are needed- Returns:
- a stream of indexes
-
isGroupPrefix
public static boolean isGroupPrefix(@Nonnull KeyExpression functionOperand, @Nonnull KeyExpression indexRoot)
Is the operand for this function compatible with this index? The grouped part must match. The grouping part must be a prefix.- Parameters:
functionOperand
- the operand to the functionindexRoot
- the index's expression- Returns:
true
if the operand is compatible with the index
-
getGroupedKey
public static KeyExpression getGroupedKey(@Nonnull KeyExpression key)
-
getGroupingKey
public static KeyExpression getGroupingKey(@Nonnull KeyExpression key)
-
getGroupingSubkey
protected static KeyExpression getGroupingSubkey(GroupingKeyExpression grouping, int start, int end)
-
count
public static IndexAggregateFunction count(@Nonnull KeyExpression by)
-
countUpdates
public static IndexAggregateFunction countUpdates(@Nonnull KeyExpression by)
-
bindAggregateFunction
public static Optional<IndexAggregateFunction> bindAggregateFunction(@Nonnull FDBRecordStore store, @Nonnull IndexAggregateFunction function, @Nonnull List<String> recordTypeNames)
-
-