public class SinglePartitionReadCommand extends ReadCommand
Modifier and Type | Class and Description |
---|---|
static class |
SinglePartitionReadCommand.Group
Groups multiple single partition read commands.
|
ReadCommand.CheckForAbort, ReadCommand.Kind, ReadCommand.SelectionDeserializer
Modifier and Type | Field and Description |
---|---|
protected static ReadCommand.SelectionDeserializer |
selectionDeserializer |
legacyPagedRangeCommandSerializer, legacyRangeSliceCommandSerializer, legacyReadCommandSerializer, logger, pagedRangeSerializer, rangeSliceSerializer, readSerializer, serializer
Modifier and Type | Method and Description |
---|---|
protected void |
appendCQLWhereClause(java.lang.StringBuilder sb) |
ClusteringIndexFilter |
clusteringIndexFilter() |
ClusteringIndexFilter |
clusteringIndexFilter(DecoratedKey key)
The clustering index filter this command to use for the provided key.
|
SinglePartitionReadCommand |
copy()
Returns a copy of this command.
|
SinglePartitionReadCommand |
copyAsDigestQuery()
Returns a copy of this command with isDigestQuery set to true.
|
static SinglePartitionReadCommand |
create(boolean isForThrift,
CFMetaData metadata,
int nowInSec,
ColumnFilter columnFilter,
RowFilter rowFilter,
DataLimits limits,
DecoratedKey partitionKey,
ClusteringIndexFilter clusteringIndexFilter)
Creates a new read command on a single partition.
|
static SinglePartitionReadCommand |
create(boolean isForThrift,
CFMetaData metadata,
int nowInSec,
ColumnFilter columnFilter,
RowFilter rowFilter,
DataLimits limits,
DecoratedKey partitionKey,
ClusteringIndexFilter clusteringIndexFilter,
IndexMetadata indexMetadata)
Creates a new read command on a single partition.
|
static SinglePartitionReadCommand |
create(CFMetaData metadata,
int nowInSec,
java.nio.ByteBuffer key,
Slices slices)
Creates a new single partition slice command for the provided slices.
|
static SinglePartitionReadCommand |
create(CFMetaData metadata,
int nowInSec,
ColumnFilter columnFilter,
RowFilter rowFilter,
DataLimits limits,
DecoratedKey partitionKey,
ClusteringIndexFilter clusteringIndexFilter)
Creates a new read command on a single partition.
|
static SinglePartitionReadCommand |
create(CFMetaData metadata,
int nowInSec,
DecoratedKey key,
Clustering name)
Creates a new single partition name command for the provided row.
|
static SinglePartitionReadCommand |
create(CFMetaData metadata,
int nowInSec,
DecoratedKey key,
ColumnFilter columnFilter,
ClusteringIndexFilter filter)
Creates a new read command on a single partition.
|
static SinglePartitionReadCommand |
create(CFMetaData metadata,
int nowInSec,
DecoratedKey key,
java.util.NavigableSet<Clustering> names)
Creates a new single partition name command for the provided rows.
|
static SinglePartitionReadCommand |
create(CFMetaData metadata,
int nowInSec,
DecoratedKey key,
Slice slice)
Creates a new single partition slice command for the provided single slice.
|
static SinglePartitionReadCommand |
create(CFMetaData metadata,
int nowInSec,
DecoratedKey key,
Slices slices)
Creates a new single partition slice command for the provided slices.
|
MessageOut<ReadCommand> |
createMessage(int version)
Creates a message for this command.
|
PartitionIterator |
execute(ConsistencyLevel consistency,
ClientState clientState,
long queryStartNanoTime)
Executes the query at the provided consistency level.
|
SinglePartitionReadCommand |
forPaging(Clustering lastReturned,
DataLimits limits)
Returns a new command suitable to paging from the last returned row.
|
static SinglePartitionReadCommand |
fullPartitionRead(CFMetaData metadata,
int nowInSec,
java.nio.ByteBuffer key)
Creates a new read command that queries a single partition in its entirety.
|
static SinglePartitionReadCommand |
fullPartitionRead(CFMetaData metadata,
int nowInSec,
DecoratedKey key)
Creates a new read command that queries a single partition in its entirety.
|
SinglePartitionPager |
getPager(PagingState pagingState,
ProtocolVersion protocolVersion)
Returns a pager for the query.
|
long |
getTimeout()
The configured timeout for this command.
|
boolean |
isLimitedToOnePartition() |
protected int |
oldestUnrepairedTombstone() |
DecoratedKey |
partitionKey() |
UnfilteredRowIterator |
queryMemtableAndDisk(ColumnFamilyStore cfs,
ReadExecutionController executionController)
Queries both memtable and sstables to fetch the result of this query.
|
protected UnfilteredPartitionIterator |
queryStorage(ColumnFamilyStore cfs,
ReadExecutionController executionController) |
protected void |
recordLatency(TableMetrics metric,
long latencyNanos) |
protected long |
selectionSerializedSize(int version) |
boolean |
selectsClustering(DecoratedKey key,
Clustering clustering) |
boolean |
selectsFullPartition()
Checks if this
ReadQuery selects full partitions, that is it has no filtering on clustering or regular columns. |
boolean |
selectsKey(DecoratedKey key) |
protected void |
serializeSelection(DataOutputPlus out,
int version) |
java.lang.String |
toString() |
SinglePartitionReadCommand |
withUpdatedClusteringIndexFilter(ClusteringIndexFilter filter) |
SinglePartitionReadCommand |
withUpdatedLimit(DataLimits newLimits)
Creates a new
ReadCommand instance with new limits. |
columnFilter, createResponse, digestVersion, executeInternal, executeLocally, executionController, getIndex, indexMetadata, isDigestQuery, isForThrift, limits, maybeValidateIndex, metadata, name, nowInSec, rowFilter, setDigestVersion, toCQLString, withoutPurgeableTombstones, withStateTracking
abort, complete, constructionTime, isAborted, isCompleted, isCrossNode, isInProgress, isSlow, setMonitoringTime, slowTimeout, timeout
protected static final ReadCommand.SelectionDeserializer selectionDeserializer
public static SinglePartitionReadCommand create(boolean isForThrift, CFMetaData metadata, int nowInSec, ColumnFilter columnFilter, RowFilter rowFilter, DataLimits limits, DecoratedKey partitionKey, ClusteringIndexFilter clusteringIndexFilter, IndexMetadata indexMetadata)
isForThrift
- whether the query is for thrift or not.metadata
- the table to query.nowInSec
- the time in seconds to use are "now" for this query.columnFilter
- the column filter to use for the query.rowFilter
- the row filter to use for the query.limits
- the limits to use for the query.partitionKey
- the partition key for the partition to query.clusteringIndexFilter
- the clustering index filter to use for the query.indexMetadata
- explicitly specified index to use for the querypublic static SinglePartitionReadCommand create(CFMetaData metadata, int nowInSec, ColumnFilter columnFilter, RowFilter rowFilter, DataLimits limits, DecoratedKey partitionKey, ClusteringIndexFilter clusteringIndexFilter)
metadata
- the table to query.nowInSec
- the time in seconds to use are "now" for this query.columnFilter
- the column filter to use for the query.rowFilter
- the row filter to use for the query.limits
- the limits to use for the query.partitionKey
- the partition key for the partition to query.clusteringIndexFilter
- the clustering index filter to use for the query.public static SinglePartitionReadCommand create(boolean isForThrift, CFMetaData metadata, int nowInSec, ColumnFilter columnFilter, RowFilter rowFilter, DataLimits limits, DecoratedKey partitionKey, ClusteringIndexFilter clusteringIndexFilter)
isForThrift
- whether the query is for thrift or not.metadata
- the table to query.nowInSec
- the time in seconds to use are "now" for this query.columnFilter
- the column filter to use for the query.rowFilter
- the row filter to use for the query.limits
- the limits to use for the query.partitionKey
- the partition key for the partition to query.clusteringIndexFilter
- the clustering index filter to use for the query.public static SinglePartitionReadCommand create(CFMetaData metadata, int nowInSec, DecoratedKey key, ColumnFilter columnFilter, ClusteringIndexFilter filter)
metadata
- the table to query.nowInSec
- the time in seconds to use are "now" for this query.key
- the partition key for the partition to query.columnFilter
- the column filter to use for the query.filter
- the clustering index filter to use for the query.public static SinglePartitionReadCommand fullPartitionRead(CFMetaData metadata, int nowInSec, DecoratedKey key)
metadata
- the table to query.nowInSec
- the time in seconds to use are "now" for this query.key
- the partition key for the partition to query.key
.public static SinglePartitionReadCommand fullPartitionRead(CFMetaData metadata, int nowInSec, java.nio.ByteBuffer key)
metadata
- the table to query.nowInSec
- the time in seconds to use are "now" for this query.key
- the partition key for the partition to query.key
.public static SinglePartitionReadCommand create(CFMetaData metadata, int nowInSec, DecoratedKey key, Slice slice)
metadata
- the table to query.nowInSec
- the time in seconds to use are "now" for this query.key
- the partition key for the partition to query.slice
- the slice of rows to query.slice
in key
. The returned query will
query every columns for the table (without limit or row filtering) and be in forward order.public static SinglePartitionReadCommand create(CFMetaData metadata, int nowInSec, DecoratedKey key, Slices slices)
metadata
- the table to query.nowInSec
- the time in seconds to use are "now" for this query.key
- the partition key for the partition to query.slices
- the slices of rows to query.slices
in key
. The returned query will
query every columns for the table (without limit or row filtering) and be in forward order.public static SinglePartitionReadCommand create(CFMetaData metadata, int nowInSec, java.nio.ByteBuffer key, Slices slices)
metadata
- the table to query.nowInSec
- the time in seconds to use are "now" for this query.key
- the partition key for the partition to query.slices
- the slices of rows to query.slices
in key
. The returned query will
query every columns for the table (without limit or row filtering) and be in forward order.public static SinglePartitionReadCommand create(CFMetaData metadata, int nowInSec, DecoratedKey key, java.util.NavigableSet<Clustering> names)
metadata
- the table to query.nowInSec
- the time in seconds to use are "now" for this query.key
- the partition key for the partition to query.names
- the clustering for the rows to query.names
in key
. The returned query will
query every columns (without limit or row filtering) and be in forward order.public static SinglePartitionReadCommand create(CFMetaData metadata, int nowInSec, DecoratedKey key, Clustering name)
metadata
- the table to query.nowInSec
- the time in seconds to use are "now" for this query.key
- the partition key for the partition to query.name
- the clustering for the row to query.name
in key
. The returned query will
query every columns (without limit or row filtering).public SinglePartitionReadCommand copy()
ReadCommand
copy
in class ReadCommand
public SinglePartitionReadCommand copyAsDigestQuery()
ReadCommand
copyAsDigestQuery
in class ReadCommand
public SinglePartitionReadCommand withUpdatedLimit(DataLimits newLimits)
ReadCommand
ReadCommand
instance with new limits.withUpdatedLimit
in class ReadCommand
newLimits
- the new limitsReadCommand
with the updated limitspublic SinglePartitionReadCommand withUpdatedClusteringIndexFilter(ClusteringIndexFilter filter)
public DecoratedKey partitionKey()
public ClusteringIndexFilter clusteringIndexFilter()
public ClusteringIndexFilter clusteringIndexFilter(DecoratedKey key)
ReadCommand
Note that that method should only be called on a key actually queried by this command and in practice, this will almost always return the same filter, but for the sake of paging, the filter on the first key of a range command might be slightly different.
clusteringIndexFilter
in class ReadCommand
key
- a partition key queried by this command.ClusteringIndexFilter
to use for the partition of key key
.public long getTimeout()
ReadCommand
getTimeout
in class ReadCommand
public boolean selectsKey(DecoratedKey key)
public boolean selectsClustering(DecoratedKey key, Clustering clustering)
public SinglePartitionReadCommand forPaging(Clustering lastReturned, DataLimits limits)
lastReturned
- the last row returned by the previous page. The newly created command
will only query row that comes after this (in query order). This can be null
if this
is the first page.limits
- the limits to use for the page to query.public PartitionIterator execute(ConsistencyLevel consistency, ClientState clientState, long queryStartNanoTime) throws RequestExecutionException
ReadQuery
consistency
- the consistency level to achieve for the query.clientState
- the ClientState
for the query. In practice, this can be null unless
consistency
is a serial consistency.RequestExecutionException
public SinglePartitionPager getPager(PagingState pagingState, ProtocolVersion protocolVersion)
ReadQuery
pagingState
- the PagingState
to start from if this is a paging continuation. This can be
null
if this is the start of paging.protocolVersion
- the protocol version to use for the paging state of that pager.protected void recordLatency(TableMetrics metric, long latencyNanos)
recordLatency
in class ReadCommand
protected UnfilteredPartitionIterator queryStorage(ColumnFamilyStore cfs, ReadExecutionController executionController)
queryStorage
in class ReadCommand
public UnfilteredRowIterator queryMemtableAndDisk(ColumnFamilyStore cfs, ReadExecutionController executionController)
Please note that this method:
1) does not check the row cache.
2) does not apply the query limit, nor the row filter (and so ignore 2ndary indexes).
Those are applied in ReadCommand.executeLocally(org.apache.cassandra.db.ReadExecutionController)
.
3) does not record some of the read metrics (latency, scanned cells histograms) nor
throws TombstoneOverwhelmingException.
It is publicly exposed because there is a few places where that is exactly what we want,
but it should be used only where you know you don't need thoses things.
Also note that one must have created a ReadExecutionController
on the queried table and we require it as
a parameter to enforce that fact, even though it's not explicitlly used by the method.
protected int oldestUnrepairedTombstone()
oldestUnrepairedTombstone
in class ReadCommand
public boolean selectsFullPartition()
ReadQuery
ReadQuery
selects full partitions, that is it has no filtering on clustering or regular columns.true
if this ReadQuery
selects full partitions, false
otherwise.public java.lang.String toString()
toString
in class java.lang.Object
public MessageOut<ReadCommand> createMessage(int version)
ReadCommand
createMessage
in class ReadCommand
protected void appendCQLWhereClause(java.lang.StringBuilder sb)
appendCQLWhereClause
in class ReadCommand
protected void serializeSelection(DataOutputPlus out, int version) throws java.io.IOException
serializeSelection
in class ReadCommand
java.io.IOException
protected long selectionSerializedSize(int version)
selectionSerializedSize
in class ReadCommand
public boolean isLimitedToOnePartition()
isLimitedToOnePartition
in class ReadCommand
Copyright © 2019 The Apache Software Foundation