Class IndexAggregateGroupKeys
- java.lang.Object
-
- com.apple.foundationdb.record.provider.foundationdb.IndexAggregateGroupKeys
-
- Direct Known Subclasses:
IndexAggregateGroupKeys.Conditions
,IndexAggregateGroupKeys.IndexScan
@API(EXPERIMENTAL) public abstract class IndexAggregateGroupKeys extends Object
Helper class for extracting grouping keys from anIndexAggregateFunction
given query conditions. To implement an aggregate functionXXX(value BY group)
using an index, the group needs to be fixed, which will be true when the query has afilter
ongroup
(equivalent to SQLWHERE group = ?
).
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
IndexAggregateGroupKeys.Conditions
protected static class
IndexAggregateGroupKeys.IndexScan
-
Constructor Summary
Constructors Constructor Description IndexAggregateGroupKeys()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static Optional<IndexAggregateGroupKeys>
conditionsToGroupKeys(KeyExpression operand, QueryComponent conditions)
static Optional<IndexAggregateGroupKeys>
conditionsToGroupKeys(IndexAggregateFunction function, QueryComponent conditions)
abstract int
getColumnSize()
Get the size of the prefix of the index aggregate that is returned.abstract Key.Evaluated
getGroupKeys(FDBRecordStoreBase<?> store, EvaluationContext context)
Get the grouping key (GROUP BY) for the index aggregate from the given context.static IndexAggregateGroupKeys
indexScanToGroupKeys(String recordKey, int prefixSize)
-
-
-
Method Detail
-
getGroupKeys
@Nonnull public abstract Key.Evaluated getGroupKeys(@Nullable FDBRecordStoreBase<?> store, @Nullable EvaluationContext context)
Get the grouping key (GROUP BY) for the index aggregate from the given context.- Parameters:
store
- the record store for the querycontext
- context in which to evaluate keys- Returns:
- the grouping key
-
getColumnSize
public abstract int getColumnSize()
Get the size of the prefix of the index aggregate that is returned. That is, the size of {#link #getGroupKeys}.- Returns:
- number of items in the grouping key
-
conditionsToGroupKeys
public static Optional<IndexAggregateGroupKeys> conditionsToGroupKeys(@Nonnull IndexAggregateFunction function, @Nullable QueryComponent conditions)
-
conditionsToGroupKeys
public static Optional<IndexAggregateGroupKeys> conditionsToGroupKeys(@Nonnull KeyExpression operand, @Nullable QueryComponent conditions)
-
indexScanToGroupKeys
public static IndexAggregateGroupKeys indexScanToGroupKeys(@Nonnull String recordKey, int prefixSize)
-
-