Class PartitionRangeQueryPager
- java.lang.Object
-
- org.apache.cassandra.service.pager.PartitionRangeQueryPager
-
- All Implemented Interfaces:
QueryPager
public class PartitionRangeQueryPager extends java.lang.ObjectPages a PartitionRangeReadQuery.
-
-
Field Summary
Fields Modifier and Type Field Description protected DataLimitslimitsprotected ProtocolVersionprotocolVersionprotected Tquery-
Fields inherited from interface org.apache.cassandra.service.pager.QueryPager
EMPTY
-
-
Constructor Summary
Constructors Constructor Description PartitionRangeQueryPager(PartitionRangeReadQuery query, PagingState state, ProtocolVersion protocolVersion)PartitionRangeQueryPager(PartitionRangeReadQuery query, ProtocolVersion protocolVersion, DecoratedKey lastReturnedKey, PagingState.RowMark lastReturnedRow, int remaining, int remainingInPartition)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ReadExecutionControllerexecutionController()Starts a new read operation.PartitionIteratorfetchPage(int pageSize, ConsistencyLevel consistency, ClientState clientState, Dispatcher.RequestTime requestTime)Fetches the next page.PartitionIteratorfetchPageInternal(int pageSize, ReadExecutionController executionController)Fetches the next page internally (in other, this does a local query).UnfilteredPartitionIteratorfetchPageUnfiltered(TableMetadata metadata, int pageSize, ReadExecutionController executionController)booleanisExhausted()Whether or not this pager is exhausted, i.e.protected booleanisPreviouslyReturnedPartition(DecoratedKey key)intmaxRemaining()The maximum number of cells/CQL3 row that we may still have to return.protected PartitionRangeReadQuerynextPageReadQuery(int pageSize)protected voidrecordLast(DecoratedKey key, Row last)protected intremainingInPartition()protected voidrestoreState(DecoratedKey lastKey, int remaining, int remainingInPartition)PagingStatestate()Get the current state of the pager.PartitionRangeQueryPagerwithUpdatedLimit(DataLimits newLimits)Creates a newQueryPagerthat use the new limits.
-
-
-
Field Detail
-
query
protected final T extends ReadQuery query
-
limits
protected final DataLimits limits
-
protocolVersion
protected final ProtocolVersion protocolVersion
-
-
Constructor Detail
-
PartitionRangeQueryPager
public PartitionRangeQueryPager(PartitionRangeReadQuery query, PagingState state, ProtocolVersion protocolVersion)
-
PartitionRangeQueryPager
public PartitionRangeQueryPager(PartitionRangeReadQuery query, ProtocolVersion protocolVersion, DecoratedKey lastReturnedKey, PagingState.RowMark lastReturnedRow, int remaining, int remainingInPartition)
-
-
Method Detail
-
withUpdatedLimit
public PartitionRangeQueryPager withUpdatedLimit(DataLimits newLimits)
Description copied from interface:QueryPagerCreates a newQueryPagerthat use the new limits.- Parameters:
newLimits- the new limits- Returns:
- a new
QueryPagerthat use the new limits
-
state
public PagingState state()
Description copied from interface:QueryPagerGet the current state of the pager. The state can allow to restart the paging on another host from where we are at this point.- Returns:
- the current paging state. Will return null if paging is at the beginning. If the pager is exhausted, the result is undefined.
-
nextPageReadQuery
protected PartitionRangeReadQuery nextPageReadQuery(int pageSize)
-
recordLast
protected void recordLast(DecoratedKey key, Row last)
-
isPreviouslyReturnedPartition
protected boolean isPreviouslyReturnedPartition(DecoratedKey key)
-
executionController
public ReadExecutionController executionController()
Description copied from interface:QueryPagerStarts a new read operation.This must be called before
QueryPager.fetchPageInternal(int,org.apache.cassandra.db.ReadExecutionController)and passed to it to protect the read. The returned object must be closed on all path and it is thus strongly advised to use it in a try-with-ressource construction.- Specified by:
executionControllerin interfaceQueryPager- Returns:
- a newly started order group for this
QueryPager.
-
fetchPage
public PartitionIterator fetchPage(int pageSize, ConsistencyLevel consistency, ClientState clientState, Dispatcher.RequestTime requestTime)
Description copied from interface:QueryPagerFetches the next page.- Specified by:
fetchPagein interfaceQueryPager- Parameters:
pageSize- the maximum number of elements to return in the next page.consistency- the consistency level to achieve for the query.clientState- theClientStatefor the query. In practice, this can be null unlessconsistencyis a serial consistency.- Returns:
- the page of result.
-
fetchPageInternal
public PartitionIterator fetchPageInternal(int pageSize, ReadExecutionController executionController)
Description copied from interface:QueryPagerFetches the next page internally (in other, this does a local query).- Specified by:
fetchPageInternalin interfaceQueryPager- Parameters:
pageSize- the maximum number of elements to return in the next page.executionController- theReadExecutionControllerprotecting the read.- Returns:
- the page of result.
-
fetchPageUnfiltered
public UnfilteredPartitionIterator fetchPageUnfiltered(TableMetadata metadata, int pageSize, ReadExecutionController executionController)
-
restoreState
protected void restoreState(DecoratedKey lastKey, int remaining, int remainingInPartition)
-
isExhausted
public boolean isExhausted()
Description copied from interface:QueryPagerWhether or not this pager is exhausted, i.e. whether or not a call to fetchPage may return more result.- Specified by:
isExhaustedin interfaceQueryPager- Returns:
- whether the pager is exhausted.
-
maxRemaining
public int maxRemaining()
Description copied from interface:QueryPagerThe maximum number of cells/CQL3 row that we may still have to return. In other words, that's the initial user limit minus what we've already returned (note that it's not how many we *will* return, just the upper limit on it).- Specified by:
maxRemainingin interfaceQueryPager
-
remainingInPartition
protected int remainingInPartition()
-
-