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 ?
  • Method Details

    • createNonInRelation

      public static MultiColumnRelation createNonInRelation(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 relation
      relationType - the relation operator
      valuesOrMarker - a Tuples.Literal instance or a Tuples.Raw marker
      Returns:
      a new MultiColumnRelation instance
    • createInRelation

      public static MultiColumnRelation createInRelation(List<ColumnIdentifier> entities, 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 relation
      inValues - a list of Tuples.Literal instances or a Tuples.Raw markers
      Returns:
      a new MultiColumnRelation instance
    • createSingleMarkerInRelation

      public static MultiColumnRelation createSingleMarkerInRelation(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 relation
      inMarker - a single IN marker
      Returns:
      a new MultiColumnRelation instance
    • getEntities

      public List<ColumnIdentifier> getEntities()
    • getValue

      public Term.MultiColumnRaw getValue()
      For non-IN relations, returns the Tuples.Literal or Tuples.Raw marker for a single tuple.
      Specified by:
      getValue in class Relation
      Returns:
      a Tuples.Literal for non-IN relations or Tuples.Raw marker for a single tuple.
    • getInValues

      public 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 class Relation
    • isMultiColumn

      public boolean isMultiColumn()
      Description copied from class: Relation
      Checks if this relation apply to multiple columns.
      Overrides:
      isMultiColumn in class Relation
      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 class Relation
      Parameters:
      table - the table meta data
      boundNames - 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 class Relation
      Parameters:
      table - the table meta data
      boundNames - 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 class Relation
      Parameters:
      table - the table meta data
      boundNames - the variables specification where to collect the bind variables
      bound - the slice bound
      inclusive - 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 class Relation
      Parameters:
      table - the table meta data
      boundNames - the variables specification where to collect the bind variables
      isKey - 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 class Relation
    • newLikeRestriction

      protected Restriction newLikeRestriction(TableMetadata table, VariableSpecifications boundNames, Operator operator)
      Specified by:
      newLikeRestriction in class Relation
    • toTerm

      protected Term toTerm(List<? extends ColumnSpecification> receivers, Term.Raw raw, String keyspace, VariableSpecifications boundNames) throws InvalidRequestException
      Description copied from class: Relation
      Converts the specified Raw into a Term.
      Specified by:
      toTerm in class Relation
      Parameters:
      receivers - the columns to which the values must be associated at
      raw - the raw term to convert
      keyspace - the keyspace name
      boundNames - the variables specification where to collect the bind variables
      Returns:
      the Term corresponding to the specified Raw
      Throws:
      InvalidRequestException - if the Raw term is not valid
    • receivers

      protected 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 class Relation
      Parameters:
      from - the old identifier
      to - 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 String toCQLString()
      Description copied from class: Relation
      Returns a CQL representation of this relation.
      Specified by:
      toCQLString in class Relation
      Returns:
      a CQL representation of this relation
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object