org.apache.cassandra.db

## Interface ReadQuery

All Known Implementing Classes:
  PartitionRangeReadCommand, ReadCommand, SinglePartitionReadCommand, SinglePartitionReadCommand.Group

    public interface ReadQuery

Generic abstraction for read queries.

The main implementation of this is `ReadCommand` but we have this interface because `SinglePartitionReadCommand.Group` is also consider as a "read query" but is not a `ReadCommand`.

### Field Summary

Fields
`static ReadQuery` `EMPTY`

### Method Summary

All Methods Instance Methods Abstract Methods
`PartitionIterator` `execute(ConsistencyLevel consistency, ClientState clientState, long queryStartNanoTime)` Executes the query at the provided consistency level.
`PartitionIterator` `executeInternal(ReadExecutionController controller)` Execute the query for internal queries (that is, it basically executes the query locally).
`UnfilteredPartitionIterator` `executeLocally(ReadExecutionController executionController)` Execute the query locally.
`ReadExecutionController` `executionController()` Starts a new read operation.
`QueryPager` `getPager(PagingState pagingState, ProtocolVersion protocolVersion)` Returns a pager for the query.
`DataLimits` `limits()` The limits for the query.
`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)`

### Field Detail

#### EMPTY

    static final ReadQuery EMPTY

### Method Detail

#### executionController

    ReadExecutionController executionController()

Starts a new read operation.

This must be called before `executeInternal` 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.

Returns:
  a newly started execution controller for this `ReadQuery`.

#### execute

    PartitionIterator execute(ConsistencyLevel consistency,
                              ClientState clientState,
                              long queryStartNanoTime)
                       throws RequestExecutionException

Executes the query at the provided consistency level.

Parameters:
  `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.
Returns:
  the result of the query.
Throws:
  `RequestExecutionException`

#### executeInternal

    PartitionIterator executeInternal(ReadExecutionController controller)

Execute the query for internal queries (that is, it basically executes the query locally).

Parameters:
  `controller` - the `ReadExecutionController` protecting the read.
Returns:
  the result of the query.

#### executeLocally

    UnfilteredPartitionIterator executeLocally(ReadExecutionController executionController)

Execute the query locally. This is similar to `executeInternal(ReadExecutionController)` but it returns an unfiltered partition iterator that can be merged later on.

Parameters:
  `controller` - the `ReadExecutionController` protecting the read.
Returns:
  the result of the read query.

#### getPager

    QueryPager getPager(PagingState pagingState,
                        ProtocolVersion protocolVersion)

Returns a pager for the query.

Parameters:
  `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.
Returns:
  a pager for the query.

#### limits

    DataLimits limits()

The limits for the query.

Returns:
  The limits for the query.

#### selectsKey

    boolean selectsKey(DecoratedKey key)

Returns:
  true if the read query would select the given key, including checks against the row filter, if checkRowFilter is true

#### selectsClustering

    boolean selectsClustering(DecoratedKey key,
                              Clustering clustering)

Returns:
  true if the read query would select the given clustering, including checks against the row filter, if checkRowFilter is true

#### selectsFullPartition

    boolean selectsFullPartition()

Checks if this `ReadQuery` selects full partitions, that is it has no filtering on clustering or regular columns.

Returns:
  `true` if this `ReadQuery` selects full partitions, `false` otherwise.