org.apache.cassandra.db.index

## Class AbstractSimplePerColumnSecondaryIndex

- java.lang.Object
- - org.apache.cassandra.db.index.SecondaryIndex
  - - org.apache.cassandra.db.index.PerColumnSecondaryIndex
    - - org.apache.cassandra.db.index.AbstractSimplePerColumnSecondaryIndex

- Direct Known Subclasses:
    CompositesIndex, KeysIndex

      public abstract class AbstractSimplePerColumnSecondaryIndex
      extends PerColumnSecondaryIndex

  Implements a secondary index for a column family using a second column family in which the row keys are indexed values, and column names are base row keys.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected ColumnDefinition` | `columnDef`
    `protected ColumnFamilyStore` | `indexCfs`

    - ### Fields inherited from class org.apache.cassandra.db.index.SecondaryIndex

      `baseCfs, columnDefs, CUSTOM_INDEX_OPTION_NAME, INDEX_ENTRIES_OPTION_NAME, INDEX_KEYS_OPTION_NAME, INDEX_VALUES_OPTION_NAME, keyComparator, logger`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractSimplePerColumnSecondaryIndex()`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `delete(java.nio.ByteBuffer rowKey, Cell cell, OpOrder.Group opGroup)` Called when a column has been tombstoned or replaced.
    `void` | `deleteForCleanup(java.nio.ByteBuffer rowKey, Cell cell, OpOrder.Group opGroup)` Called when a column has been removed due to a cleanup operation.
    `long` | `estimateResultRows()`
    `java.lang.String` | `expressionString(IndexExpression expr)`
    `void` | `forceBlockingFlush()` Forces this indexes' in memory data to disk
    `protected abstract AbstractType` | `getExpressionComparator()`
    `ColumnFamilyStore` | `getIndexCfs()` Allow access to the underlying column family store if there is one
    `protected abstract java.nio.ByteBuffer` | `getIndexedValue(java.nio.ByteBuffer rowKey, Cell cell)`
    `protected AbstractType<?>` | `getIndexKeyComparator()`
    `java.lang.String` | `getIndexName()`
    `void` | `init()` Perform any initialization work
    `void` | `insert(java.nio.ByteBuffer rowKey, Cell cell, OpOrder.Group opGroup)` insert a column to the index
    `void` | `invalidate()` Remove the index and unregisters this index's mbean if one exists
    `protected abstract CellName` | `makeIndexColumnName(java.nio.ByteBuffer rowKey, Cell cell)`
    `void` | `reload()` Reload an existing index following a change to its configuration, or that of the indexed column(s).
    `void` | `removeIndex(java.nio.ByteBuffer columnName)` Delete all files and references to this index
    `void` | `truncateBlocking(long truncatedAt)` Truncate all the data from the current index
    `void` | `update(java.nio.ByteBuffer rowKey, Cell oldCol, Cell col, OpOrder.Group opGroup)` update a column from the index
    `boolean` | `validate(java.nio.ByteBuffer rowKey, Cell cell)`

    - ### Methods inherited from class org.apache.cassandra.db.index.PerColumnSecondaryIndex

      `getNameForSystemKeyspace, validate`

    - ### Methods inherited from class org.apache.cassandra.db.index.SecondaryIndex

      `buildIndexAsync, buildIndexBlocking, createInstance, createSecondaryIndexSearcher, getBaseCfs, getColumnDefs, getIndexComparator, getIndexKeyFor, indexes, indexes, isIndexBuilt, isQueryable, setIndexBuilt, setIndexRemoved, supportsOperator, toString, validateOptions`

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

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

- - ### Field Detail

    - #### indexCfs

          protected ColumnFamilyStore indexCfs

    - #### columnDef

          protected ColumnDefinition columnDef

  - ### Constructor Detail

    - #### AbstractSimplePerColumnSecondaryIndex

          public AbstractSimplePerColumnSecondaryIndex()

  - ### Method Detail

    - #### init

          public void init()

      Description copied from class: `SecondaryIndex`
      Perform any initialization work
      Specified by:
        `init` in class `SecondaryIndex`

    - #### getIndexKeyComparator

          protected AbstractType<?> getIndexKeyComparator()

    - #### makeIndexColumnName

          protected abstract CellName makeIndexColumnName(java.nio.ByteBuffer rowKey,
                                                          Cell cell)

    - #### getIndexedValue

          protected abstract java.nio.ByteBuffer getIndexedValue(java.nio.ByteBuffer rowKey,
                                                                 Cell cell)

    - #### getExpressionComparator

          protected abstract AbstractType getExpressionComparator()

    - #### expressionString

          public java.lang.String expressionString(IndexExpression expr)

    - #### delete

          public void delete(java.nio.ByteBuffer rowKey,
                             Cell cell,
                             OpOrder.Group opGroup)

      Description copied from class: `PerColumnSecondaryIndex`
      Called when a column has been tombstoned or replaced.
      Specified by:
        `delete` in class `PerColumnSecondaryIndex`
      Parameters:
        `rowKey` - the underlying row key which is indexed
        `cell` - all the column info

    - #### deleteForCleanup

          public void deleteForCleanup(java.nio.ByteBuffer rowKey,
                                       Cell cell,
                                       OpOrder.Group opGroup)

      Description copied from class: `PerColumnSecondaryIndex`
      Called when a column has been removed due to a cleanup operation.
      Specified by:
        `deleteForCleanup` in class `PerColumnSecondaryIndex`

    - #### insert

          public void insert(java.nio.ByteBuffer rowKey,
                             Cell cell,
                             OpOrder.Group opGroup)

      Description copied from class: `PerColumnSecondaryIndex`
      insert a column to the index
      Specified by:
        `insert` in class `PerColumnSecondaryIndex`
      Parameters:
        `rowKey` - the underlying row key which is indexed
        `cell` - all the column info

    - #### update

          public void update(java.nio.ByteBuffer rowKey,
                             Cell oldCol,
                             Cell col,
                             OpOrder.Group opGroup)

      Description copied from class: `PerColumnSecondaryIndex`
      update a column from the index
      Specified by:
        `update` in class `PerColumnSecondaryIndex`
      Parameters:
        `rowKey` - the underlying row key which is indexed
        `oldCol` - the previous column info
        `col` - all the column info

    - #### removeIndex

          public void removeIndex(java.nio.ByteBuffer columnName)

      Description copied from class: `SecondaryIndex`
      Delete all files and references to this index
      Specified by:
        `removeIndex` in class `SecondaryIndex`
      Parameters:
        `columnName` - the indexed column to remove

    - #### forceBlockingFlush

          public void forceBlockingFlush()

      Description copied from class: `SecondaryIndex`
      Forces this indexes' in memory data to disk
      Specified by:
        `forceBlockingFlush` in class `SecondaryIndex`

    - #### invalidate

          public void invalidate()

      Description copied from class: `SecondaryIndex`
      Remove the index and unregisters this index's mbean if one exists
      Specified by:
        `invalidate` in class `SecondaryIndex`

    - #### truncateBlocking

          public void truncateBlocking(long truncatedAt)

      Description copied from class: `SecondaryIndex`
      Truncate all the data from the current index
      Specified by:
        `truncateBlocking` in class `SecondaryIndex`
      Parameters:
        `truncatedAt` - The truncation timestamp, all data before that timestamp should be rejected.

    - #### getIndexCfs

          public ColumnFamilyStore getIndexCfs()

      Description copied from class: `SecondaryIndex`
      Allow access to the underlying column family store if there is one
      Specified by:
        `getIndexCfs` in class `SecondaryIndex`
      Returns:
        the underlying column family store or null

    - #### getIndexName

          public java.lang.String getIndexName()

      Specified by:
        `getIndexName` in class `SecondaryIndex`
      Returns:
        The name of the index

    - #### reload

          public void reload()

      Description copied from class: `SecondaryIndex`
      Reload an existing index following a change to its configuration, or that of the indexed column(s). Differs from init() in that we expect expect new resources (such as CFS for a KEYS index) to be created by init() but not here
      Specified by:
        `reload` in class `SecondaryIndex`

    - #### estimateResultRows

          public long estimateResultRows()

      Specified by:
        `estimateResultRows` in class `SecondaryIndex`

    - #### validate

          public boolean validate(java.nio.ByteBuffer rowKey,
                                  Cell cell)

      Overrides:
        `validate` in class `PerColumnSecondaryIndex`

Copyright © 2018 The Apache Software Foundation