org.apache.cassandra.cql3

## Class QueryOptions

- java.lang.Object
- - org.apache.cassandra.cql3.QueryOptions

    public abstract class QueryOptions
    extends java.lang.Object

Options for a query.

### Field Summary

Fields
`static CBCodec<QueryOptions>` `codec`
`static QueryOptions` `DEFAULT`

### Constructor Summary

Constructors
Constructor and Description
`QueryOptions()`

### Method Summary

All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
`static QueryOptions` `addColumnSpecifications(QueryOptions options, java.util.List<ColumnSpecification> columnSpecs)`
`static QueryOptions` `create(ConsistencyLevel consistency, java.util.List<java.nio.ByteBuffer> values, boolean skipMetadata, int pageSize, PagingState pagingState, ConsistencyLevel serialConsistency)`
`static QueryOptions` `forInternalCalls(ConsistencyLevel consistency, java.util.List<java.nio.ByteBuffer> values)`
`static QueryOptions` `forInternalCalls(java.util.List<java.nio.ByteBuffer> values)`
`static QueryOptions` `forProtocolVersion(int protocolVersion)`
`static QueryOptions` `fromPreV3Batch(ConsistencyLevel consistency)`
`static QueryOptions` `fromProtocolV1(ConsistencyLevel consistency, java.util.List<java.nio.ByteBuffer> values)`
`static QueryOptions` `fromProtocolV2(ConsistencyLevel consistency, java.util.List<java.nio.ByteBuffer> values)`
`com.google.common.collect.ImmutableList<ColumnSpecification>` `getColumnSpecifications()` Returns the column specifications for the bound variables (optional operation).
`abstract ConsistencyLevel` `getConsistency()`
`Term` `getJsonColumnValue(int bindIndex, ColumnIdentifier columnName, java.util.Collection<ColumnDefinition> expectedReceivers)` Returns the term corresponding to column `columnName` in the JSON value of bind index `bindIndex`.
`int` `getPageSize()` The pageSize for this query.
`PagingState` `getPagingState()` The paging state for this query, or null if not relevant.
`abstract int` `getProtocolVersion()` The protocol version for the query.
`ConsistencyLevel` `getSerialConsistency()` Serial consistency for conditional updates.
`long` `getTimestamp(QueryState state)`
`abstract java.util.List<java.nio.ByteBuffer>` `getValues()`
`boolean` `hasColumnSpecifications()` Tells whether or not this `QueryOptions` contains the column specifications for the bound variables.
`QueryOptions` `prepare(java.util.List<ColumnSpecification> specs)`
`abstract boolean` `skipMetadata()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### DEFAULT

    public static final QueryOptions DEFAULT

#### codec

    public static final CBCodec<QueryOptions> codec

### Constructor Detail

#### QueryOptions

    public QueryOptions()

### Method Detail

#### fromProtocolV1

    public static QueryOptions fromProtocolV1(ConsistencyLevel consistency,
                                              java.util.List<java.nio.ByteBuffer> values)

#### fromProtocolV2

    public static QueryOptions fromProtocolV2(ConsistencyLevel consistency,
                                              java.util.List<java.nio.ByteBuffer> values)

#### forInternalCalls

    public static QueryOptions forInternalCalls(ConsistencyLevel consistency,
                                                java.util.List<java.nio.ByteBuffer> values)

#### forInternalCalls

    public static QueryOptions forInternalCalls(java.util.List<java.nio.ByteBuffer> values)

#### fromPreV3Batch

    public static QueryOptions fromPreV3Batch(ConsistencyLevel consistency)

#### forProtocolVersion

    public static QueryOptions forProtocolVersion(int protocolVersion)

#### create

    public static QueryOptions create(ConsistencyLevel consistency,
                                      java.util.List<java.nio.ByteBuffer> values,
                                      boolean skipMetadata,
                                      int pageSize,
                                      PagingState pagingState,
                                      ConsistencyLevel serialConsistency)

#### addColumnSpecifications

    public static QueryOptions addColumnSpecifications(QueryOptions options,
                                                       java.util.List<ColumnSpecification> columnSpecs)

#### getConsistency

    public abstract ConsistencyLevel getConsistency()

#### getValues

    public abstract java.util.List<java.nio.ByteBuffer> getValues()

#### skipMetadata

    public abstract boolean skipMetadata()

#### getJsonColumnValue

    public Term getJsonColumnValue(int bindIndex,
                                   ColumnIdentifier columnName,
                                   java.util.Collection<ColumnDefinition> expectedReceivers)
                            throws InvalidRequestException

Returns the term corresponding to column `columnName` in the JSON value of bind index `bindIndex`. This is functionally equivalent to: `Json.parseJson(UTF8Type.instance.getSerializer().deserialize(getValues().get(bindIndex)), expectedReceivers).get(columnName)` but this cache the result of parsing the JSON so that while this might be called for multiple columns on the same `bindIndex` value, the underlying JSON value is only parsed/processed once. Note: this is a bit more involved in CQL specifics than this class generally is but we as we need to cache this per-query and in an object that is available when we bind values, this is the easier place to have this.

Parameters:
  `bindIndex` - the index of the bind value that should be interpreted as a JSON value.
  `columnName` - the name of the column we want the value of.
  `expectedReceivers` - the columns expected in the JSON value at index `bindIndex`. This is only used when parsing the json initially and no check is done afterwards. So in practice, any call of this method on the same QueryOptions object and with the same `bindIndx` values should use the same value for this parameter, but this isn't validated in any way.
Returns:
  the value correspong to column `columnName` in the (JSON) bind value at index `bindIndex`. This may return null if the JSON value has no value for this column.
Throws:
  `InvalidRequestException`

#### hasColumnSpecifications

    public boolean hasColumnSpecifications()

Tells whether or not this `QueryOptions` contains the column specifications for the bound variables.

The column specifications will be present only for prepared statements.

Returns:
  `true` this `QueryOptions` contains the column specifications for the bound variables, `false` otherwise.

#### getColumnSpecifications

    public com.google.common.collect.ImmutableList<ColumnSpecification> getColumnSpecifications()

Returns the column specifications for the bound variables (optional operation).

The column specifications will be present only for prepared statements.

Invoke the `hasColumnSpecifications` method before invoking this method in order to ensure that this `QueryOptions` contains the column specifications.

Returns:
  the option names
Throws:
  `java.lang.UnsupportedOperationException` - If this `QueryOptions` does not contains the column specifications.

#### getPageSize

    public int getPageSize()

The pageSize for this query. Will be <= 0 if not relevant for the query.

#### getPagingState

    public PagingState getPagingState()

The paging state for this query, or null if not relevant.

#### getSerialConsistency

    public ConsistencyLevel getSerialConsistency()

Serial consistency for conditional updates.

#### getTimestamp

    public long getTimestamp(QueryState state)

#### getProtocolVersion

    public abstract int getProtocolVersion()

The protocol version for the query. Will be 3 if the object don't come from a native protocol request (i.e. it's been allocated locally or by CQL-over-thrift).

#### prepare

    public QueryOptions prepare(java.util.List<ColumnSpecification> specs)