Class ClusteringIndexNamesFilter

java.lang.Object
org.apache.cassandra.db.filter.AbstractClusteringIndexFilter
org.apache.cassandra.db.filter.ClusteringIndexNamesFilter
All Implemented Interfaces:
ClusteringIndexFilter

public class ClusteringIndexNamesFilter extends AbstractClusteringIndexFilter
A filter selecting rows given their clustering value.
  • Constructor Details

    • ClusteringIndexNamesFilter

      public ClusteringIndexNamesFilter(NavigableSet<Clustering<?>> clusterings, boolean reversed)
  • Method Details

    • requestedRows

      public NavigableSet<Clustering<?>> requestedRows()
      The set of requested rows. Please note that this can be empty if only the static row is requested.
      Returns:
      the set of requested clustering in clustering order (note that this is always in clustering order even if the query is reversed).
    • selectsAllPartition

      public boolean selectsAllPartition()
      Description copied from interface: ClusteringIndexFilter
      Whether this filter selects all the row of a partition (it's an "identity" filter).
      Returns:
      whether this filter selects all the row of a partition (it's an "identity" filter).
    • selects

      public boolean selects(Clustering<?> clustering)
      Description copied from interface: ClusteringIndexFilter
      Whether a given row is selected by this filter.
      Parameters:
      clustering - the clustering of the row to test the selection of.
      Returns:
      whether the row with clustering clustering is selected by this filter.
    • forPaging

      public ClusteringIndexNamesFilter forPaging(ClusteringComparator comparator, Clustering<?> lastReturned, boolean inclusive)
      Description copied from interface: ClusteringIndexFilter
      Returns a filter for continuing the paging of this filter given the last returned clustering prefix.
      Parameters:
      comparator - the comparator for the table this is a filter for.
      lastReturned - the last clustering that was returned for the query we are paging for. The resulting filter will be such that results coming after lastReturned are returned (where coming after means "greater than" if the filter is not reversed, "lesser than" otherwise; futher, whether the comparison is strict or not depends on inclusive).
      inclusive - whether or not we want to include the lastReturned in the newly returned page of results.
      Returns:
      a new filter that selects results coming after lastReturned.
    • isFullyCoveredBy

      public boolean isFullyCoveredBy(CachedPartition partition)
      Description copied from interface: ClusteringIndexFilter
      Returns whether we can guarantee that a given cached partition contains all the data selected by this filter.
      Parameters:
      partition - the cached partition. This method assumed that the rows of this partition contains all the table columns.
      Returns:
      whether we can guarantee that all data selected by this filter are in partition.
    • isHeadFilter

      public boolean isHeadFilter()
      Description copied from interface: ClusteringIndexFilter
      Whether this filter selects the head of a partition (i.e. it isn't reversed and selects all rows up to a certain point).
      Returns:
      whether this filter selects the head of a partition.
    • filterNotIndexed

      public UnfilteredRowIterator filterNotIndexed(ColumnFilter columnFilter, UnfilteredRowIterator iterator)
      Description copied from interface: ClusteringIndexFilter
      Returns an iterator that only returns the rows of the provided iterator that this filter selects.

      This method is the "dumb" counterpart to ClusteringIndexFilter.getSlices(TableMetadata) in that it has no way to quickly get to what is actually selected, so it simply iterate over it all and filters out what shouldn't be returned. This should be avoided in general. Another difference with ClusteringIndexFilter.getSlices(TableMetadata) is that this method also filter the queried columns in the returned result, while the former assumes that the provided iterator has already done it.

      Parameters:
      columnFilter - the columns to include in the rows of the result iterator.
      iterator - the iterator for which we should filter rows.
      Returns:
      an iterator that only returns the rows (or rather Unfilted) from iterator that are selected by this filter.
    • getSlices

      public Slices getSlices(TableMetadata metadata)
    • getUnfilteredRowIterator

      public UnfilteredRowIterator getUnfilteredRowIterator(ColumnFilter columnFilter, Partition partition)
      Description copied from interface: ClusteringIndexFilter
      Given a partition, returns a row iterator for the rows of this partition that are selected by this filter.
      Parameters:
      columnFilter - the columns to include in the rows of the result iterator.
      partition - the partition containing the rows to filter.
      Returns:
      a unfiltered row iterator returning those rows (or rather Unfiltered) from partition that are selected by this filter.
    • intersects

      public boolean intersects(ClusteringComparator comparator, Slice slice)
      Description copied from interface: ClusteringIndexFilter
      Whether the data selected by this filter intersects with the provided slice.
      Parameters:
      comparator - the comparator of the table this if a filter on.
      slice - the slice to check intersection with,
      Returns:
      whether the data selected by this filter intersects with slice.
    • toString

      public String toString(TableMetadata metadata)
    • toCQLString

      public String toCQLString(TableMetadata metadata, RowFilter rowFilter)
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • kind

    • serializeInternal

      protected void serializeInternal(DataOutputPlus out, int version) throws IOException
      Specified by:
      serializeInternal in class AbstractClusteringIndexFilter
      Throws:
      IOException
    • serializedSizeInternal

      protected long serializedSizeInternal(int version)
      Specified by:
      serializedSizeInternal in class AbstractClusteringIndexFilter