Package org.apache.cassandra.cql3
Class MultiColumnRelation
- java.lang.Object
-
- org.apache.cassandra.cql3.Relation
-
- org.apache.cassandra.cql3.MultiColumnRelation
-
public class MultiColumnRelation extends Relation
A relation using the tuple notation, which typically affects multiple columns. Examples:- SELECT ... WHERE (a, b, c) > (1, 'a', 10) - SELECT ... WHERE (a, b, c) IN ((1, 2, 3), (4, 5, 6)) - SELECT ... WHERE (a, b) < ? - SELECT ... WHERE (a, b) IN ?
-
-
Field Summary
-
Fields inherited from class org.apache.cassandra.cql3.Relation
relationType
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static MultiColumnRelation
createInRelation(java.util.List<ColumnIdentifier> entities, java.util.List<? extends Term.MultiColumnRaw> inValues)
Creates a multi-column IN relation with a list of IN values or markers.static MultiColumnRelation
createNonInRelation(java.util.List<ColumnIdentifier> entities, Operator relationType, Term.MultiColumnRaw valuesOrMarker)
Creates a multi-column EQ, LT, LTE, GT, or GTE relation.static MultiColumnRelation
createSingleMarkerInRelation(java.util.List<ColumnIdentifier> entities, Tuples.INRaw inMarker)
Creates a multi-column IN relation with a marker for the IN values.boolean
equals(java.lang.Object o)
java.util.List<ColumnIdentifier>
getEntities()
java.util.List<? extends Term.Raw>
getInValues()
Returns the list of raw IN values for this relation, or null if this is not an IN relation.Term.MultiColumnRaw
getValue()
For non-IN relations, returns the Tuples.Literal or Tuples.Raw marker for a single tuple.int
hashCode()
boolean
isMultiColumn()
Checks if this relation apply to multiple columns.protected Restriction
newContainsRestriction(TableMetadata table, VariableSpecifications boundNames, boolean isKey)
Creates a new Contains restriction instance.protected Restriction
newEQRestriction(TableMetadata table, VariableSpecifications boundNames)
Creates a new EQ restriction instance.protected Restriction
newINRestriction(TableMetadata table, VariableSpecifications boundNames)
Creates a new IN restriction instance.protected Restriction
newIsNotRestriction(TableMetadata table, VariableSpecifications boundNames)
protected Restriction
newLikeRestriction(TableMetadata table, VariableSpecifications boundNames, Operator operator)
protected Restriction
newSliceRestriction(TableMetadata table, VariableSpecifications boundNames, Bound bound, boolean inclusive)
Creates a new Slice restriction instance.protected java.util.List<ColumnMetadata>
receivers(TableMetadata table)
Relation
renameIdentifier(ColumnIdentifier from, ColumnIdentifier to)
Renames an identifier in this Relation, if applicable.java.lang.String
toCQLString()
Returns a CQL representation of this relation.protected Term
toTerm(java.util.List<? extends ColumnSpecification> receivers, Term.Raw raw, java.lang.String keyspace, VariableSpecifications boundNames)
Converts the specifiedRaw
into aTerm
.-
Methods inherited from class org.apache.cassandra.cql3.Relation
isContains, isContainsKey, isEQ, isIN, isLIKE, isSlice, onToken, operator, toRestriction, toString, toTerms
-
-
-
-
Method Detail
-
createNonInRelation
public static MultiColumnRelation createNonInRelation(java.util.List<ColumnIdentifier> entities, Operator relationType, Term.MultiColumnRaw valuesOrMarker)
Creates a multi-column EQ, LT, LTE, GT, or GTE relation.For example: "SELECT ... WHERE (a, b) > (0, 1)"
- Parameters:
entities
- the columns on the LHS of the relationrelationType
- the relation operatorvaluesOrMarker
- a Tuples.Literal instance or a Tuples.Raw marker- Returns:
- a new
MultiColumnRelation
instance
-
createInRelation
public static MultiColumnRelation createInRelation(java.util.List<ColumnIdentifier> entities, java.util.List<? extends Term.MultiColumnRaw> inValues)
Creates a multi-column IN relation with a list of IN values or markers. For example: "SELECT ... WHERE (a, b) IN ((0, 1), (2, 3))"- Parameters:
entities
- the columns on the LHS of the relationinValues
- a list of Tuples.Literal instances or a Tuples.Raw markers- Returns:
- a new
MultiColumnRelation
instance
-
createSingleMarkerInRelation
public static MultiColumnRelation createSingleMarkerInRelation(java.util.List<ColumnIdentifier> entities, Tuples.INRaw inMarker)
Creates a multi-column IN relation with a marker for the IN values. For example: "SELECT ... WHERE (a, b) IN ?"- Parameters:
entities
- the columns on the LHS of the relationinMarker
- a single IN marker- Returns:
- a new
MultiColumnRelation
instance
-
getEntities
public java.util.List<ColumnIdentifier> getEntities()
-
getValue
public Term.MultiColumnRaw getValue()
For non-IN relations, returns the Tuples.Literal or Tuples.Raw marker for a single tuple.
-
getInValues
public java.util.List<? extends Term.Raw> getInValues()
Description copied from class:Relation
Returns the list of raw IN values for this relation, or null if this is not an IN relation.- Specified by:
getInValues
in classRelation
-
isMultiColumn
public boolean isMultiColumn()
Description copied from class:Relation
Checks if this relation apply to multiple columns.- Overrides:
isMultiColumn
in classRelation
- Returns:
true
if this relation apply to multiple columns,false
otherwise.
-
newEQRestriction
protected Restriction newEQRestriction(TableMetadata table, VariableSpecifications boundNames)
Description copied from class:Relation
Creates a new EQ restriction instance.- Specified by:
newEQRestriction
in classRelation
- Parameters:
table
- the table meta databoundNames
- the variables specification where to collect the bind variables- Returns:
- a new EQ restriction instance.
-
newINRestriction
protected Restriction newINRestriction(TableMetadata table, VariableSpecifications boundNames)
Description copied from class:Relation
Creates a new IN restriction instance.- Specified by:
newINRestriction
in classRelation
- Parameters:
table
- the table meta databoundNames
- the variables specification where to collect the bind variables- Returns:
- a new IN restriction instance
-
newSliceRestriction
protected Restriction newSliceRestriction(TableMetadata table, VariableSpecifications boundNames, Bound bound, boolean inclusive)
Description copied from class:Relation
Creates a new Slice restriction instance.- Specified by:
newSliceRestriction
in classRelation
- Parameters:
table
- the table meta databoundNames
- the variables specification where to collect the bind variablesbound
- the slice boundinclusive
-true
if the bound is included.- Returns:
- a new slice restriction instance
-
newContainsRestriction
protected Restriction newContainsRestriction(TableMetadata table, VariableSpecifications boundNames, boolean isKey)
Description copied from class:Relation
Creates a new Contains restriction instance.- Specified by:
newContainsRestriction
in classRelation
- Parameters:
table
- the table meta databoundNames
- the variables specification where to collect the bind variablesisKey
-true
if the restriction to create is a CONTAINS KEY- Returns:
- a new Contains
Restriction
instance
-
newIsNotRestriction
protected Restriction newIsNotRestriction(TableMetadata table, VariableSpecifications boundNames)
- Specified by:
newIsNotRestriction
in classRelation
-
newLikeRestriction
protected Restriction newLikeRestriction(TableMetadata table, VariableSpecifications boundNames, Operator operator)
- Specified by:
newLikeRestriction
in classRelation
-
toTerm
protected Term toTerm(java.util.List<? extends ColumnSpecification> receivers, Term.Raw raw, java.lang.String keyspace, VariableSpecifications boundNames) throws InvalidRequestException
Description copied from class:Relation
Converts the specifiedRaw
into aTerm
.- Specified by:
toTerm
in classRelation
- Parameters:
receivers
- the columns to which the values must be associated atraw
- the raw term to convertkeyspace
- the keyspace nameboundNames
- the variables specification where to collect the bind variables- Returns:
- the
Term
corresponding to the specifiedRaw
- Throws:
InvalidRequestException
- if theRaw
term is not valid
-
receivers
protected java.util.List<ColumnMetadata> receivers(TableMetadata table) throws InvalidRequestException
- Throws:
InvalidRequestException
-
renameIdentifier
public Relation renameIdentifier(ColumnIdentifier from, ColumnIdentifier to)
Description copied from class:Relation
Renames an identifier in this Relation, if applicable.- Specified by:
renameIdentifier
in classRelation
- Parameters:
from
- the old identifierto
- the new identifier- Returns:
- this object, if the old identifier is not in the set of entities that this relation covers; otherwise a new Relation with "from" replaced by "to" is returned.
-
toCQLString
public java.lang.String toCQLString()
Description copied from class:Relation
Returns a CQL representation of this relation.- Specified by:
toCQLString
in classRelation
- Returns:
- a CQL representation of this relation
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equals
in classjava.lang.Object
-
-