Class 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 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 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​(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 relation
        inValues - 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 relation
        inMarker - a single IN marker
        Returns:
        a new MultiColumnRelation instance
      • 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 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 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
      • 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 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
      • 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 java.lang.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 java.lang.Object
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object