Class StatementRestrictions

java.lang.Object
org.apache.cassandra.cql3.restrictions.StatementRestrictions

public final class StatementRestrictions extends Object
The restrictions corresponding to the relations specified on the where-clause of CQL query.
  • Field Details

  • Constructor Details

  • Method Details

    • empty

      public static StatementRestrictions empty(StatementType type, TableMetadata table)
      Creates a new empty StatementRestrictions.
      Parameters:
      type - the type of statement
      table - the column family meta data
      Returns:
      a new empty StatementRestrictions.
    • requiresAllowFilteringIfNotSpecified

      public boolean requiresAllowFilteringIfNotSpecified()
    • addFunctionsTo

      public void addFunctionsTo(List<Function> functions)
    • getIndexRestrictions

      public IndexRestrictions getIndexRestrictions()
    • nonPKRestrictedColumns

      public Set<ColumnMetadata> nonPKRestrictedColumns(boolean includeNotNullRestrictions)
      Returns the non-PK column that are restricted. If includeNotNullRestrictions is true, columns that are restricted by an IS NOT NULL restriction will be included, otherwise they will not be included (unless another restriction applies to them).
    • notNullColumns

      public Set<ColumnMetadata> notNullColumns()
      Returns:
      the set of columns that have an IS NOT NULL restriction on them
    • isRestricted

      public boolean isRestricted(ColumnMetadata column)
      Returns:
      true if column is restricted by some restriction, false otherwise
    • keyIsInRelation

      public boolean keyIsInRelation()
      Checks if the restrictions on the partition key has IN restrictions.
      Returns:
      true the restrictions on the partition key has an IN restriction, false otherwise.
    • isKeyRange

      public boolean isKeyRange()
      Checks if the query request a range of partition keys.
      Returns:
      true if the query request a range of partition keys, false otherwise.
    • isColumnRestrictedByEq

      public boolean isColumnRestrictedByEq(ColumnMetadata columnDef)
      Checks if the specified column is restricted by an EQ restriction.
      Parameters:
      columnDef - the column definition
      Returns:
      true if the specified column is restricted by an EQ restiction, false otherwise.
    • isEqualityRestricted

      public boolean isEqualityRestricted(ColumnMetadata column)
      This method determines whether a specified column is restricted on equality or something equivalent, like IN. It can be used in conjunction with the columns selected by a query to determine which of those columns is already bound by the client (and from its perspective, not retrieved by the database).
      Parameters:
      column - a column from the same table these restrictions are against
      Returns:
      true if the given column is restricted on equality
    • isTopK

      public boolean isTopK()
    • usesSecondaryIndexing

      public boolean usesSecondaryIndexing()
      Checks if the secondary index need to be queried.
      Returns:
      true if the secondary index need to be queried, false otherwise.
    • hasPartitionKeyRestrictions

      public boolean hasPartitionKeyRestrictions()
    • hasNonPrimaryKeyRestrictions

      public boolean hasNonPrimaryKeyRestrictions()
      Checks if the restrictions contain any non-primary key restrictions
      Returns:
      true if the restrictions contain any non-primary key restrictions, false otherwise.
    • isPartitionKeyRestrictionsOnToken

      public boolean isPartitionKeyRestrictionsOnToken()
      Checks if the restrictions on the partition key are token restrictions.
      Returns:
      true if the restrictions on the partition key are token restrictions, false otherwise.
    • clusteringKeyRestrictionsHasIN

      public boolean clusteringKeyRestrictionsHasIN()
      Checks if restrictions on the clustering key have IN restrictions.
      Returns:
      true if the restrictions on the clustering key have IN restrictions, false otherwise.
    • getRowFilter

      public RowFilter getRowFilter(IndexRegistry indexRegistry, QueryOptions options)
    • getPartitionKeys

      public List<ByteBuffer> getPartitionKeys(QueryOptions options, ClientState state)
      Returns the partition keys for which the data is requested.
      Parameters:
      options - the query options
      state - the client state
      Returns:
      the partition keys for which the data is requested.
    • getPartitionKeyBounds

      public AbstractBounds<PartitionPosition> getPartitionKeyBounds(QueryOptions options)
      Returns the partition key bounds.
      Parameters:
      options - the query options
      Returns:
      the partition key bounds
    • hasClusteringColumnsRestrictions

      public boolean hasClusteringColumnsRestrictions()
      Checks if the query has some restrictions on the clustering columns.
      Returns:
      true if the query has some restrictions on the clustering columns, false otherwise.
    • getClusteringColumns

      public NavigableSet<Clustering<?>> getClusteringColumns(QueryOptions options, ClientState state)
      Returns the requested clustering columns.
      Parameters:
      options - the query options
      state - the client state
      Returns:
      the requested clustering columns
    • getClusteringColumnsBounds

      public NavigableSet<ClusteringBound<?>> getClusteringColumnsBounds(Bound b, QueryOptions options)
      Returns the bounds (start or end) of the clustering columns.
      Parameters:
      b - the bound type
      options - the query options
      Returns:
      the bounds (start or end) of the clustering columns
    • isColumnRange

      public boolean isColumnRange()
      Checks if the query returns a range of columns.
      Returns:
      true if the query returns a range of columns, false otherwise.
    • needFiltering

      public boolean needFiltering(TableMetadata table)
      Checks if the query need to use filtering.
      Returns:
      true if the query need to use filtering, false otherwise.
    • hasAllPKColumnsRestrictedByEqualities

      public boolean hasAllPKColumnsRestrictedByEqualities()
      Checks that all the primary key columns (partition key and clustering columns) are restricted by an equality relation ('=' or 'IN').
      Returns:
      true if all the primary key columns are restricted by an equality relation.
    • hasRegularColumnsRestrictions

      public boolean hasRegularColumnsRestrictions()
      Checks if one of the restrictions applies to a regular column.
      Returns:
      true if one of the restrictions applies to a regular column, false otherwise.
    • returnStaticContentOnPartitionWithNoRows

      public boolean returnStaticContentOnPartitionWithNoRows()
      Determines if the query should return the static content when a partition without rows is returned (as a result set row with null for all other regular columns.)
      Returns:
      true if the query should return the static content when a partition without rows is returned, false otherwise.
    • toString

      public String toString()
      Overrides:
      toString in class Object