Class StatementRestrictions


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

      • REQUIRES_ALLOW_FILTERING_MESSAGE

        public static final java.lang.String REQUIRES_ALLOW_FILTERING_MESSAGE
        See Also:
        Constant Field Values
      • CANNOT_USE_ALLOW_FILTERING_MESSAGE

        public static final java.lang.String CANNOT_USE_ALLOW_FILTERING_MESSAGE
        See Also:
        Constant Field Values
      • table

        public final TableMetadata table
        The Column Family meta data
    • Method Detail

      • 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​(java.util.List<Function> functions)
      • nonPKRestrictedColumns

        public java.util.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 java.util.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
      • 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.
      • getPartitionKeys

        public java.util.List<java.nio.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 java.util.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 java.util.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 java.lang.String toString()
        Overrides:
        toString in class java.lang.Object