Package org.apache.cassandra.index
Interface Index.Group
-
- All Known Implementing Classes:
SASIIndexGroup
,SingletonIndexGroup
,StorageAttachedIndexGroup
- Enclosing interface:
- Index
public static interface Index.Group
Class providing grouped operations for indexes that communicate with each other. Index implementations should provide aGroup
implementation calling toSecondaryIndexManager.registerIndex(Index, Index.Group.Key, Supplier)
during index registering atIndex.register(IndexRegistry)
method.
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static class
Index.Group.Key
Group key is used to uniquely identify aIndex.Group
within a table
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default void
addIndex(Index index)
Adds the specifiedIndex
as a member of this group.boolean
containsIndex(Index index)
Returns if this group contains the specifiedIndex
.java.util.Set<Component>
getComponents()
Returns the SSTable-attachedComponent
s created by this index group.SSTableFlushObserver
getFlushObserver(Descriptor descriptor, LifecycleNewTracker tracker, TableMetadata tableMetadata)
Get flush observer to observe partition/cell events generated by flushing SSTable (memtable flush or compaction).java.util.Set<Index>
getIndexes()
Returns the indexes that are members of this group.default boolean
handles(IndexTransaction.Type type)
Index.Indexer
indexerFor(java.util.function.Predicate<Index> indexSelector, DecoratedKey key, RegularAndStaticColumns columns, long nowInSec, WriteContext ctx, IndexTransaction.Type transactionType, Memtable memtable)
Creates an newIndexer
object for updates to a given partition.default void
invalidate()
Called when the table associated with this group has been invalidated or all indexes in the group are removed.default boolean
isSingleton()
Returns whether this group can only ever contain a single index.Index.QueryPlan
queryPlanFor(RowFilter rowFilter)
Returns a newIndex.QueryPlan
for the specifiedRowFilter
, ornull
if none of the indexes in this group supports the expression in the row filter.default void
removeIndex(Index index)
Removes the specifiedIndex
from the members of this group.default boolean
validateSSTableAttachedIndexes(java.util.Collection<SSTableReader> sstables, boolean throwOnIncomplete, boolean validateChecksum)
Validates all indexes in the group against the specified SSTables.
-
-
-
Method Detail
-
getIndexes
java.util.Set<Index> getIndexes()
Returns the indexes that are members of this group.- Returns:
- the indexes that are members of this group
-
addIndex
default void addIndex(Index index)
Adds the specifiedIndex
as a member of this group.- Parameters:
index
- the index to be added
-
removeIndex
default void removeIndex(Index index)
Removes the specifiedIndex
from the members of this group.- Parameters:
index
- the index to be removed
-
containsIndex
boolean containsIndex(Index index)
Returns if this group contains the specifiedIndex
.- Parameters:
index
- the index to be removed- Returns:
true
if this group containsindex
,false
otherwise
-
isSingleton
default boolean isSingleton()
Returns whether this group can only ever contain a single index.- Returns:
true
if this group only contains a single index,false
otherwise
-
indexerFor
Index.Indexer indexerFor(java.util.function.Predicate<Index> indexSelector, DecoratedKey key, RegularAndStaticColumns columns, long nowInSec, WriteContext ctx, IndexTransaction.Type transactionType, Memtable memtable)
Creates an newIndexer
object for updates to a given partition.- Parameters:
indexSelector
- a predicate selecting the targeted memberskey
- key of the partition being modifiedcolumns
- the regular and static columns the created indexer will have to deal with. This can be empty as an update might only contain partition, range and row deletions, but the indexer is guaranteed to not get any cells for a column that is not part ofcolumns
.nowInSec
- current time of the update operationctx
- WriteContext spanning the update operationtransactionType
- indicates what kind of update is being performed on the base data i.e. a write time insert/update/delete or the result of compactionmemtable
- theMemtable
to which the updates are being applied ornull
if the source of the updates is an existingSSTable
- Returns:
- the newly created indexer or
null
if the index is not interested by the update (this could be because the index doesn't care about that particular partition, doesn't care about that type of transaction, ...).
-
queryPlanFor
@Nullable Index.QueryPlan queryPlanFor(RowFilter rowFilter)
Returns a newIndex.QueryPlan
for the specifiedRowFilter
, ornull
if none of the indexes in this group supports the expression in the row filter.- Parameters:
rowFilter
- a row filter- Returns:
- a new query plan for the specified
RowFilter
if it's supported,null
otherwise
-
getFlushObserver
SSTableFlushObserver getFlushObserver(Descriptor descriptor, LifecycleNewTracker tracker, TableMetadata tableMetadata)
Get flush observer to observe partition/cell events generated by flushing SSTable (memtable flush or compaction).- Parameters:
descriptor
- The descriptor of the sstable observer is requested for.tracker
- TheLifecycleNewTracker
associated with the SSTable being writtentableMetadata
- The immutable metadata of the table at the moment the SSTable is flushed- Returns:
- SSTable flush observer.
-
handles
default boolean handles(IndexTransaction.Type type)
- Parameters:
type
- index transaction type- Returns:
- true if index will be able to handle given index transaction type
-
invalidate
default void invalidate()
Called when the table associated with this group has been invalidated or all indexes in the group are removed. Implementations should dispose of any resources tied to the lifecycle of theIndex.Group
.
-
getComponents
java.util.Set<Component> getComponents()
Returns the SSTable-attachedComponent
s created by this index group.- Returns:
- the SSTable components created by this group
-
validateSSTableAttachedIndexes
default boolean validateSSTableAttachedIndexes(java.util.Collection<SSTableReader> sstables, boolean throwOnIncomplete, boolean validateChecksum)
Validates all indexes in the group against the specified SSTables.- Parameters:
sstables
- SSTables for which indexes in the group should be builtthrowOnIncomplete
- whether to throw an error if any index in the group is incompletevalidateChecksum
- whether checksum will be tested as part of the validation- Returns:
- true if all indexes in the group are complete and valid
false if any index is incomplete and
throwOnIncomplete
is false - Throws:
java.lang.IllegalStateException
- ifthrowOnIncomplete
is true and any index in the group is incompletejava.io.UncheckedIOException
- if there is a problem validating any on-disk component of an index in the group
-
-