Class PartitionRangeQueryPager
- java.lang.Object
-
- org.apache.cassandra.service.pager.PartitionRangeQueryPager
-
- All Implemented Interfaces:
QueryPager
public class PartitionRangeQueryPager extends java.lang.Object
Pages a PartitionRangeReadQuery.
-
-
Field Summary
Fields Modifier and Type Field Description protected DataLimits
limits
protected ProtocolVersion
protocolVersion
protected T
query
-
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 ReadExecutionController
executionController()
Starts a new read operation.PartitionIterator
fetchPage(int pageSize, ConsistencyLevel consistency, ClientState clientState, Dispatcher.RequestTime requestTime)
Fetches the next page.PartitionIterator
fetchPageInternal(int pageSize, ReadExecutionController executionController)
Fetches the next page internally (in other, this does a local query).UnfilteredPartitionIterator
fetchPageUnfiltered(TableMetadata metadata, int pageSize, ReadExecutionController executionController)
boolean
isExhausted()
Whether or not this pager is exhausted, i.e.protected boolean
isPreviouslyReturnedPartition(DecoratedKey key)
boolean
isTopK()
int
maxRemaining()
The maximum number of cells/CQL3 row that we may still have to return.protected PartitionRangeReadQuery
nextPageReadQuery(int pageSize)
protected void
recordLast(DecoratedKey key, Row last)
protected int
remainingInPartition()
protected void
restoreState(DecoratedKey lastKey, int remaining, int remainingInPartition)
PagingState
state()
Get the current state of the pager.PartitionRangeQueryPager
withUpdatedLimit(DataLimits newLimits)
Creates a newQueryPager
that 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:QueryPager
Creates a newQueryPager
that use the new limits.- Parameters:
newLimits
- the new limits- Returns:
- a new
QueryPager
that use the new limits
-
state
public PagingState state()
Description copied from interface:QueryPager
Get 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)
-
isTopK
public boolean isTopK()
- Returns:
- true given read query is a top-k request
-
executionController
public ReadExecutionController executionController()
Description copied from interface:QueryPager
Starts 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:
executionController
in 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:QueryPager
Fetches the next page.- Specified by:
fetchPage
in interfaceQueryPager
- Parameters:
pageSize
- the maximum number of elements to return in the next page.consistency
- the consistency level to achieve for the query.clientState
- theClientState
for the query. In practice, this can be null unlessconsistency
is a serial consistency.- Returns:
- the page of result.
-
fetchPageInternal
public PartitionIterator fetchPageInternal(int pageSize, ReadExecutionController executionController)
Description copied from interface:QueryPager
Fetches the next page internally (in other, this does a local query).- Specified by:
fetchPageInternal
in interfaceQueryPager
- Parameters:
pageSize
- the maximum number of elements to return in the next page.executionController
- theReadExecutionController
protecting 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:QueryPager
Whether or not this pager is exhausted, i.e. whether or not a call to fetchPage may return more result.- Specified by:
isExhausted
in interfaceQueryPager
- Returns:
- whether the pager is exhausted.
-
maxRemaining
public int maxRemaining()
Description copied from interface:QueryPager
The 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:
maxRemaining
in interfaceQueryPager
-
remainingInPartition
protected int remainingInPartition()
-
-