public abstract class DataLimits
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static class |
DataLimits.Counter |
static class |
DataLimits.Kind |
static class |
DataLimits.Serializer |
Modifier and Type | Field and Description |
---|---|
static DataLimits |
DISTINCT_NONE |
static int |
NO_LIMIT |
static DataLimits |
NONE |
static DataLimits.Serializer |
serializer |
Constructor and Description |
---|
DataLimits() |
Modifier and Type | Method and Description |
---|---|
abstract int |
count()
The max number of results this limits enforces.
|
static DataLimits |
cqlLimits(int cqlRowLimit) |
static DataLimits |
cqlLimits(int cqlRowLimit,
int perPartitionLimit) |
static DataLimits |
distinctLimits(int cqlRowLimit) |
abstract float |
estimateTotalResults(ColumnFamilyStore cfs)
Estimate the number of results (the definition of "results" will be rows for CQL queries
and partitions for thrift ones) that a full scan of the provided cfs would yield.
|
PartitionIterator |
filter(PartitionIterator iter,
int nowInSec,
boolean countPartitionsWithOnlyStaticData,
boolean enforceStrictLiveness) |
UnfilteredPartitionIterator |
filter(UnfilteredPartitionIterator iter,
int nowInSec,
boolean countPartitionsWithOnlyStaticData) |
UnfilteredRowIterator |
filter(UnfilteredRowIterator iter,
int nowInSec,
boolean countPartitionsWithOnlyStaticData) |
DataLimits |
forGroupByInternalPaging(GroupingState state)
Creates a
DataLimits instance to be used for paginating internally GROUP BY queries. |
abstract DataLimits |
forPaging(int pageSize) |
abstract DataLimits |
forPaging(int pageSize,
java.nio.ByteBuffer lastReturnedKey,
int lastReturnedKeyRemaining) |
abstract DataLimits |
forShortReadRetry(int toFetch) |
static DataLimits |
groupByLimits(int groupLimit,
int groupPerPartitionLimit,
int rowLimit,
AggregationSpecification groupBySpec) |
abstract boolean |
hasEnoughLiveData(CachedPartition cached,
int nowInSec,
boolean countPartitionsWithOnlyStaticData,
boolean enforceStrictLiveness) |
abstract boolean |
isDistinct() |
boolean |
isExhausted(DataLimits.Counter counter) |
boolean |
isGroupByLimit() |
abstract boolean |
isUnlimited() |
abstract DataLimits.Kind |
kind() |
abstract DataLimits.Counter |
newCounter(int nowInSec,
boolean assumeLiveData,
boolean countPartitionsWithOnlyStaticData,
boolean enforceStrictLiveness)
Returns a new
Counter for this limits. |
abstract int |
perPartitionCount() |
static DataLimits |
superColumnCountingLimits(int partitionLimit,
int cellPerPartitionLimit) |
static DataLimits |
thriftLimits(int partitionLimit,
int cellPerPartitionLimit) |
abstract DataLimits |
withoutState()
Returns equivalent limits but where any internal state kept to track where we are of paging and/or grouping is
discarded.
|
public static final DataLimits.Serializer serializer
public static final int NO_LIMIT
public static final DataLimits NONE
public static final DataLimits DISTINCT_NONE
public static DataLimits cqlLimits(int cqlRowLimit)
public static DataLimits cqlLimits(int cqlRowLimit, int perPartitionLimit)
public static DataLimits groupByLimits(int groupLimit, int groupPerPartitionLimit, int rowLimit, AggregationSpecification groupBySpec)
public static DataLimits distinctLimits(int cqlRowLimit)
public static DataLimits thriftLimits(int partitionLimit, int cellPerPartitionLimit)
public static DataLimits superColumnCountingLimits(int partitionLimit, int cellPerPartitionLimit)
public abstract DataLimits.Kind kind()
public abstract boolean isUnlimited()
public abstract boolean isDistinct()
public boolean isGroupByLimit()
public boolean isExhausted(DataLimits.Counter counter)
public abstract DataLimits forPaging(int pageSize)
public abstract DataLimits forPaging(int pageSize, java.nio.ByteBuffer lastReturnedKey, int lastReturnedKeyRemaining)
public abstract DataLimits forShortReadRetry(int toFetch)
public DataLimits forGroupByInternalPaging(GroupingState state)
DataLimits
instance to be used for paginating internally GROUP BY queries.state
- the GroupMaker
stateDataLimits
instance to be used for paginating internally GROUP BY queriespublic abstract boolean hasEnoughLiveData(CachedPartition cached, int nowInSec, boolean countPartitionsWithOnlyStaticData, boolean enforceStrictLiveness)
public abstract DataLimits.Counter newCounter(int nowInSec, boolean assumeLiveData, boolean countPartitionsWithOnlyStaticData, boolean enforceStrictLiveness)
Counter
for this limits.nowInSec
- the current time in second (to decide what is expired or not).assumeLiveData
- if true, the counter will assume that every row passed is live and won't
thus check for liveness, otherwise it will. This should be true
when used on a
RowIterator
(since it only returns live rows), false otherwise.countPartitionsWithOnlyStaticData
- if true
the partitions with only static data should be counted
as 1 valid row.enforceStrictLiveness
- whether the row should be purged if there is no PK liveness info,
normally retrieved from CFMetaData.enforceStrictLiveness()
Counter
for this limits.public abstract int count()
Note that the actual definition of "results" depends a bit: for CQL, it's always rows, but for thrift, it means cells.
public abstract int perPartitionCount()
public abstract DataLimits withoutState()
public UnfilteredPartitionIterator filter(UnfilteredPartitionIterator iter, int nowInSec, boolean countPartitionsWithOnlyStaticData)
public UnfilteredRowIterator filter(UnfilteredRowIterator iter, int nowInSec, boolean countPartitionsWithOnlyStaticData)
public PartitionIterator filter(PartitionIterator iter, int nowInSec, boolean countPartitionsWithOnlyStaticData, boolean enforceStrictLiveness)
public abstract float estimateTotalResults(ColumnFamilyStore cfs)
Copyright © 2019 The Apache Software Foundation