Interface Index.Group

    • 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 specified Index as a member of this group.
        Parameters:
        index - the index to be added
      • removeIndex

        default void removeIndex​(Index index)
        Removes the specified Index from the members of this group.
        Parameters:
        index - the index to be removed
      • containsIndex

        boolean containsIndex​(Index index)
        Returns if this group contains the specified Index.
        Parameters:
        index - the index to be removed
        Returns:
        true if this group contains index, 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 new Indexer object for updates to a given partition.
        Parameters:
        indexSelector - a predicate selecting the targeted members
        key - key of the partition being modified
        columns - 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 of columns.
        nowInSec - current time of the update operation
        ctx - WriteContext spanning the update operation
        transactionType - indicates what kind of update is being performed on the base data i.e. a write time insert/update/delete or the result of compaction
        memtable - the Memtable to which the updates are being applied or null if the source of the updates is an existing SSTable
        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 new Index.QueryPlan for the specified RowFilter, or null 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 - The LifecycleNewTracker associated with the SSTable being written
        tableMetadata - 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 the Index.Group.
      • getComponents

        java.util.Set<Component> getComponents()
        Returns the SSTable-attached Components 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 built
        throwOnIncomplete - whether to throw an error if any index in the group is incomplete
        validateChecksum - 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 - if throwOnIncomplete is true and any index in the group is incomplete
        java.io.UncheckedIOException - if there is a problem validating any on-disk component of an index in the group