Class StatementRestrictions
java.lang.Object
org.apache.cassandra.cql3.restrictions.StatementRestrictions
The restrictions corresponding to the relations specified on the where-clause of CQL query.
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionStatementRestrictions(ClientState state, StatementType type, TableMetadata table, WhereClause whereClause, VariableSpecifications boundNames, List<Ordering> orderings, boolean selectsOnlyStaticColumns, boolean allowFiltering, boolean forView) StatementRestrictions(ClientState state, StatementType type, TableMetadata table, WhereClause whereClause, VariableSpecifications boundNames, List<Ordering> orderings, boolean selectsOnlyStaticColumns, boolean allowUseOfSecondaryIndices, boolean allowFiltering, boolean forView) -
Method Summary
Modifier and TypeMethodDescriptionvoidaddFunctionsTo(List<Function> functions) booleanChecks if restrictions on the clustering key have IN restrictions.static StatementRestrictionsempty(StatementType type, TableMetadata table) Creates a new emptyStatementRestrictions.getClusteringColumns(QueryOptions options, ClientState state) Returns the requested clustering columns.getClusteringColumnsBounds(Bound b, QueryOptions options) Returns the bounds (start or end) of the clustering columns.getPartitionKeyBounds(QueryOptions options) Returns the partition key bounds.getPartitionKeys(QueryOptions options, ClientState state) Returns the partition keys for which the data is requested.getRowFilter(IndexRegistry indexRegistry, QueryOptions options) booleanChecks that all the primary key columns (partition key and clustering columns) are restricted by an equality relation ('=' or 'IN').booleanChecks if the query has some restrictions on the clustering columns.booleanChecks if the restrictions contain any non-primary key restrictionsbooleanbooleanChecks if one of the restrictions applies to a regular column.booleanChecks if the query returns a range of columns.booleanisColumnRestrictedByEq(ColumnMetadata columnDef) Checks if the specified column is restricted by an EQ restriction.booleanisEqualityRestricted(ColumnMetadata column) This method determines whether a specified column is restricted on equality or something equivalent, like IN.booleanChecks if the query request a range of partition keys.booleanChecks if the restrictions on the partition key are token restrictions.booleanisRestricted(ColumnMetadata column) booleanisTopK()booleanChecks if the restrictions on the partition key has IN restrictions.booleanneedFiltering(TableMetadata table) Checks if the query need to use filtering.nonPKRestrictedColumns(boolean includeNotNullRestrictions) Returns the non-PK column that are restricted.booleanbooleanDetermines 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.)toString()booleanChecks if the secondary index need to be queried.
-
Field Details
-
REQUIRES_ALLOW_FILTERING_MESSAGE
- See Also:
-
CANNOT_USE_ALLOW_FILTERING_MESSAGE
- See Also:
-
ANN_REQUIRES_INDEX_MESSAGE
- See Also:
-
VECTOR_INDEXES_ANN_ONLY_MESSAGE
- See Also:
-
ANN_ONLY_SUPPORTED_ON_VECTOR_MESSAGE
- See Also:
-
ANN_REQUIRES_INDEXED_FILTERING_MESSAGE
- See Also:
-
table
The Column Family meta data
-
-
Constructor Details
-
StatementRestrictions
public StatementRestrictions(ClientState state, StatementType type, TableMetadata table, WhereClause whereClause, VariableSpecifications boundNames, List<Ordering> orderings, boolean selectsOnlyStaticColumns, boolean allowFiltering, boolean forView) -
StatementRestrictions
public StatementRestrictions(ClientState state, StatementType type, TableMetadata table, WhereClause whereClause, VariableSpecifications boundNames, List<Ordering> orderings, boolean selectsOnlyStaticColumns, boolean allowUseOfSecondaryIndices, boolean allowFiltering, boolean forView)
-
-
Method Details
-
empty
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
-
getIndexRestrictions
-
nonPKRestrictedColumns
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
- Returns:
- the set of columns that have an IS NOT NULL restriction on them
-
isRestricted
- 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:
truethe restrictions on the partition key has an IN restriction,falseotherwise.
-
isKeyRange
public boolean isKeyRange()Checks if the query request a range of partition keys.- Returns:
trueif the query request a range of partition keys,falseotherwise.
-
isColumnRestrictedByEq
Checks if the specified column is restricted by an EQ restriction.- Parameters:
columnDef- the column definition- Returns:
trueif the specified column is restricted by an EQ restiction,falseotherwise.
-
isEqualityRestricted
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:
trueif 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:
trueif the secondary index need to be queried,falseotherwise.
-
hasPartitionKeyRestrictions
public boolean hasPartitionKeyRestrictions() -
hasNonPrimaryKeyRestrictions
public boolean hasNonPrimaryKeyRestrictions()Checks if the restrictions contain any non-primary key restrictions- Returns:
trueif the restrictions contain any non-primary key restrictions,falseotherwise.
-
isPartitionKeyRestrictionsOnToken
public boolean isPartitionKeyRestrictionsOnToken()Checks if the restrictions on the partition key are token restrictions.- Returns:
trueif the restrictions on the partition key are token restrictions,falseotherwise.
-
clusteringKeyRestrictionsHasIN
public boolean clusteringKeyRestrictionsHasIN()Checks if restrictions on the clustering key have IN restrictions.- Returns:
trueif the restrictions on the clustering key have IN restrictions,falseotherwise.
-
getRowFilter
-
getPartitionKeys
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
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:
trueif the query has some restrictions on the clustering columns,falseotherwise.
-
getClusteringColumns
Returns the requested clustering columns.- Parameters:
options- the query optionsstate- the client state- Returns:
- the requested clustering columns
-
getClusteringColumnsBounds
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:
trueif the query returns a range of columns,falseotherwise.
-
needFiltering
Checks if the query need to use filtering.- Returns:
trueif the query need to use filtering,falseotherwise.
-
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:
trueif 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:
trueif one of the restrictions applies to a regular column,falseotherwise.
-
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:
trueif the query should return the static content when a partition without rows is returned,falseotherwise.
-
toString
-