Class StatementRestrictions
- java.lang.Object
-
- org.apache.cassandra.cql3.restrictions.StatementRestrictions
-
public final class StatementRestrictions extends java.lang.Object
The restrictions corresponding to the relations specified on the where-clause of CQL query.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
CANNOT_USE_ALLOW_FILTERING_MESSAGE
static java.lang.String
REQUIRES_ALLOW_FILTERING_MESSAGE
TableMetadata
table
The Column Family meta data
-
Constructor Summary
Constructors Constructor Description StatementRestrictions(ClientState state, StatementType type, TableMetadata table, WhereClause whereClause, VariableSpecifications boundNames, boolean selectsOnlyStaticColumns, boolean allowFiltering, boolean forView)
StatementRestrictions(ClientState state, StatementType type, TableMetadata table, WhereClause whereClause, VariableSpecifications boundNames, boolean selectsOnlyStaticColumns, boolean allowUseOfSecondaryIndices, boolean allowFiltering, boolean forView)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addFunctionsTo(java.util.List<Function> functions)
boolean
clusteringKeyRestrictionsHasIN()
Checks if restrictions on the clustering key have IN restrictions.static StatementRestrictions
empty(StatementType type, TableMetadata table)
Creates a new emptyStatementRestrictions
.java.util.NavigableSet<Clustering<?>>
getClusteringColumns(QueryOptions options, ClientState state)
Returns the requested clustering columns.java.util.NavigableSet<ClusteringBound<?>>
getClusteringColumnsBounds(Bound b, QueryOptions options)
Returns the bounds (start or end) of the clustering columns.IndexRestrictions
getIndexRestrictions()
AbstractBounds<PartitionPosition>
getPartitionKeyBounds(QueryOptions options)
Returns the partition key bounds.java.util.List<java.nio.ByteBuffer>
getPartitionKeys(QueryOptions options, ClientState state)
Returns the partition keys for which the data is requested.RowFilter
getRowFilter(IndexRegistry indexRegistry, QueryOptions options)
boolean
hasAllPKColumnsRestrictedByEqualities()
Checks that all the primary key columns (partition key and clustering columns) are restricted by an equality relation ('=' or 'IN').boolean
hasClusteringColumnsRestrictions()
Checks if the query has some restrictions on the clustering columns.boolean
hasNonPrimaryKeyRestrictions()
Checks if the restrictions contain any non-primary key restrictionsboolean
hasPartitionKeyRestrictions()
boolean
hasRegularColumnsRestrictions()
Checks if one of the restrictions applies to a regular column.boolean
isColumnRange()
Checks if the query returns a range of columns.boolean
isColumnRestrictedByEq(ColumnMetadata columnDef)
Checks if the specified column is restricted by an EQ restriction.boolean
isEqualityRestricted(ColumnMetadata column)
This method determines whether a specified column is restricted on equality or something equivalent, like IN.boolean
isKeyRange()
Checks if the query request a range of partition keys.boolean
isPartitionKeyRestrictionsOnToken()
Checks if the restrictions on the partition key are token restrictions.boolean
isRestricted(ColumnMetadata column)
boolean
keyIsInRelation()
Checks if the restrictions on the partition key has IN restrictions.boolean
needFiltering(TableMetadata table)
Checks if the query need to use filtering.java.util.Set<ColumnMetadata>
nonPKRestrictedColumns(boolean includeNotNullRestrictions)
Returns the non-PK column that are restricted.java.util.Set<ColumnMetadata>
notNullColumns()
boolean
requiresAllowFilteringIfNotSpecified()
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.)java.lang.String
toString()
boolean
usesSecondaryIndexing()
Checks if the secondary index need to be queried.
-
-
-
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
-
-
Constructor Detail
-
StatementRestrictions
public StatementRestrictions(ClientState state, StatementType type, TableMetadata table, WhereClause whereClause, VariableSpecifications boundNames, boolean selectsOnlyStaticColumns, boolean allowFiltering, boolean forView)
-
StatementRestrictions
public StatementRestrictions(ClientState state, StatementType type, TableMetadata table, WhereClause whereClause, VariableSpecifications boundNames, boolean selectsOnlyStaticColumns, boolean allowUseOfSecondaryIndices, boolean allowFiltering, boolean forView)
-
-
Method Detail
-
empty
public static StatementRestrictions empty(StatementType type, TableMetadata table)
Creates a new emptyStatementRestrictions
.- Parameters:
type
- the type of statementtable
- the column family meta data- Returns:
- a new empty
StatementRestrictions
.
-
requiresAllowFilteringIfNotSpecified
public boolean requiresAllowFilteringIfNotSpecified()
-
addFunctionsTo
public void addFunctionsTo(java.util.List<Function> functions)
-
getIndexRestrictions
public IndexRestrictions getIndexRestrictions()
-
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.
-
getRowFilter
public RowFilter getRowFilter(IndexRegistry indexRegistry, QueryOptions options)
-
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 optionsstate
- 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 optionsstate
- 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 typeoptions
- 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 classjava.lang.Object
-
-