org.apache.cassandra.index.internal.keys

## Class KeysIndex

- java.lang.Object
- - org.apache.cassandra.index.internal.CassandraIndex
  - - org.apache.cassandra.index.internal.keys.KeysIndex

All Implemented Interfaces:
  Index

    public class KeysIndex
    extends CassandraIndex

### Nested Class Summary

### Nested classes/interfaces inherited from interface org.apache.cassandra.index.Index

`Index.CollatedViewIndexBuildingSupport, Index.IndexBuildingSupport, Index.Indexer, Index.Searcher`

### Field Summary

### Fields inherited from class org.apache.cassandra.index.internal.CassandraIndex

`baseCfs, functions, indexCfs, indexedColumn, metadata`

### Fields inherited from interface org.apache.cassandra.index.Index

`INDEX_BUILDER_SUPPORT`

### Constructor Summary

Constructors
Constructor and Description
`KeysIndex(ColumnFamilyStore baseCfs, IndexMetadata indexDef)`

### Method Summary

All Methods Instance Methods Concrete Methods
`CFMetaData.Builder` `addIndexClusteringColumns(CFMetaData.Builder builder, CFMetaData baseMetadata, ColumnDefinition cfDef)`
`protected CBuilder` `buildIndexClusteringPrefix(java.nio.ByteBuffer partitionKey, ClusteringPrefix prefix, CellPath path)` Used to construct an the clustering for an entry in the index table based on values from the base data.
`IndexEntry` `decodeEntry(DecoratedKey indexedValue, Row indexEntry)` Used at search time to convert a row in the index table into a simple struct containing the values required to retrieve the corresponding row from the base table.
`protected java.nio.ByteBuffer` `getIndexedValue(java.nio.ByteBuffer partitionKey, Clustering clustering, CellPath path, java.nio.ByteBuffer cellValue)` Extract the value to be inserted into the index from the components of the base data
`boolean` `isStale(Row row, java.nio.ByteBuffer indexValue, int nowInSec)` Check whether a value retrieved from an index is still valid by comparing it to current row from the base table.

### Methods inherited from class org.apache.cassandra.index.internal.CassandraIndex

`customExpressionValueType, deleteStaleEntry, dependsOn, getBackingTable, getBlockingFlushTask, getEstimatedResultRows, getIndexCfs, getIndexComparator, getIndexedColumn, getIndexMetadata, getInitializationTask, getInvalidateTask, getMetadataReloadTask, getPostIndexQueryFilter, getTruncateTask, indexCfsMetadata, indexerFor, newIndex, postProcessorFor, register, searcherFor, shouldBuildBlocking, supportsExpression, supportsOperator, validate, validate`

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

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

### Methods inherited from interface org.apache.cassandra.index.Index

`getBuildTaskSupport, getFlushObserver, getPreJoinTask`

### Constructor Detail

#### KeysIndex

    public KeysIndex(ColumnFamilyStore baseCfs,
                     IndexMetadata indexDef)

### Method Detail

#### addIndexClusteringColumns

    public CFMetaData.Builder addIndexClusteringColumns(CFMetaData.Builder builder,
                                                        CFMetaData baseMetadata,
                                                        ColumnDefinition cfDef)

#### buildIndexClusteringPrefix

    protected CBuilder buildIndexClusteringPrefix(java.nio.ByteBuffer partitionKey,
                                                  ClusteringPrefix prefix,
                                                  CellPath path)

Description copied from class: `CassandraIndex`
Used to construct an the clustering for an entry in the index table based on values from the base data. The clustering columns in the index table encode the values required to retrieve the correct data from the base table and varies depending on the kind of the indexed column. See indexCfsMetadata for more details Used whenever a row in the index table is written or deleted.

Specified by:
  `buildIndexClusteringPrefix` in class `CassandraIndex`
Parameters:
  `partitionKey` - from the base data being indexed
  `prefix` - from the base data being indexed
  `path` - from the base data being indexed
Returns:
  a clustering prefix to be used to insert into the index table

#### getIndexedValue

    protected java.nio.ByteBuffer getIndexedValue(java.nio.ByteBuffer partitionKey,
                                                  Clustering clustering,
                                                  CellPath path,
                                                  java.nio.ByteBuffer cellValue)

Description copied from class: `CassandraIndex`
Extract the value to be inserted into the index from the components of the base data

Specified by:
  `getIndexedValue` in class `CassandraIndex`
Parameters:
  `partitionKey` - from the primary data
  `clustering` - from the primary data
  `path` - from the primary data
  `cellValue` - from the primary data
Returns:
  a ByteBuffer containing the value to be inserted in the index. This will be used to make the partition key in the index table

#### decodeEntry

    public IndexEntry decodeEntry(DecoratedKey indexedValue,
                                  Row indexEntry)

Description copied from class: `CassandraIndex`
Used at search time to convert a row in the index table into a simple struct containing the values required to retrieve the corresponding row from the base table.

Specified by:
  `decodeEntry` in class `CassandraIndex`
Parameters:
  `indexedValue` - the partition key of the indexed table (i.e. the value that was indexed)
  `indexEntry` - a row from the index table
Returns:

#### isStale

    public boolean isStale(Row row,
                           java.nio.ByteBuffer indexValue,
                           int nowInSec)

Description copied from class: `CassandraIndex`
Check whether a value retrieved from an index is still valid by comparing it to current row from the base table. Used at read time to identify out of date index entries so that they can be excluded from search results and repaired

Specified by:
  `isStale` in class `CassandraIndex`
Parameters:
  `row` - the current row from the primary data table
  `indexValue` - the value we retrieved from the index
Returns:
  true if the index is out of date and the entry should be dropped