Package org.apache.cassandra.db.marshal
Class TupleType
- java.lang.Object
-
- org.apache.cassandra.db.marshal.AbstractType<java.nio.ByteBuffer>
-
- org.apache.cassandra.db.marshal.TupleType
-
- All Implemented Interfaces:
java.util.Comparator<java.nio.ByteBuffer>
,AssignmentTestable
- Direct Known Subclasses:
UserType
public class TupleType extends AbstractType<java.nio.ByteBuffer>
This is essentially like a CompositeType, but it's not primarily meant for comparison, just to pack multiple values together so has a more friendly encoding.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.cassandra.db.marshal.AbstractType
AbstractType.ComparisonType
-
Nested classes/interfaces inherited from interface org.apache.cassandra.cql3.AssignmentTestable
AssignmentTestable.TestResult
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.List<AbstractType<?>>
types
-
Fields inherited from class org.apache.cassandra.db.marshal.AbstractType
comparatorSet, comparisonType, isByteOrderComparable, reverseComparator
-
-
Constructor Summary
Constructors Modifier Constructor Description TupleType(java.util.List<AbstractType<?>> types)
protected
TupleType(java.util.List<AbstractType<?>> types, boolean freezeInner)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.List<AbstractType<?>>
allTypes()
CQL3Type
asCQL3Type()
static java.nio.ByteBuffer
buildValue(java.nio.ByteBuffer[] components)
static <V> V
buildValue(ValueAccessor<V> accessor, V[] components)
<VL,VR>
intcompareCustom(VL left, ValueAccessor<VL> accessorL, VR right, ValueAccessor<VR> accessorR)
Implement IFF ComparisonType is CUSTOM Compares the byte representation of two instances of this class, for types where this cannot be done by simple in-order comparison of the unsigned bytes Standard Java compare semanticsboolean
equals(java.lang.Object o)
AbstractType<?>
expandUserTypes()
Replace any instances of UserType with equivalent TupleType-s.Term
fromJSONObject(java.lang.Object parsed)
Given a parsed JSON string, return a byte representation of the object.java.nio.ByteBuffer
fromString(java.lang.String source)
get a byte representation of the given string.static TupleType
getInstance(TypeParser parser)
TypeSerializer<java.nio.ByteBuffer>
getSerializer()
<V> java.lang.String
getString(V input, ValueAccessor<V> accessor)
get a string representation of the bytes used for various identifier (NOT just for log messages)int
hashCode()
boolean
isCompatibleWith(AbstractType<?> previous)
Returns true if this comparator is compatible with the provided previous comparator, that is if previous can safely be replaced by this.boolean
isTuple()
boolean
isValueCompatibleWithInternal(AbstractType<?> otherType)
Needed to handle ReversedType in value-compatibility checks.boolean
referencesDuration()
<V> boolean
referencesUserType(V name, ValueAccessor<V> accessor)
int
size()
java.nio.ByteBuffer[]
split(java.nio.ByteBuffer value)
Split a tuple value into its component values.java.util.List<AbstractType<?>>
subTypes()
java.lang.String
toJSONString(java.nio.ByteBuffer buffer, ProtocolVersion protocolVersion)
Converts the specified value into its JSON representation.java.lang.String
toString()
This must be overriden by subclasses if necessary so that for any AbstractType, this == TypeParser.parse(toString()).AbstractType<?>
type(int i)
TupleType
withUpdatedUserType(UserType udt)
Returns an instance of this type with all references to the provided user type recursively replaced with its new definition.-
Methods inherited from class org.apache.cassandra.db.marshal.AbstractType
asCQLTypeStringList, checkComparable, compare, compare, compareCollectionMembers, compareForCQL, compose, compose, decompose, freeze, freezeNestedMulticellTypes, getComponents, getString, getString, isCollection, isCounter, isEmptyValueMeaningless, isFreezable, isFrozenCollection, isMultiCell, isReversed, isUDT, isValueCompatibleWith, parseDefaultParameters, read, readArray, readBuffer, readBuffer, referencesUserType, skipValue, testAssignment, testAssignment, toJSONString, toString, validate, validate, validateCellValue, validateCollectionMember, valueLengthIfFixed, writeValue, writeValue, writtenLength, writtenLength
-
-
-
-
Field Detail
-
types
protected final java.util.List<AbstractType<?>> types
-
-
Constructor Detail
-
TupleType
public TupleType(java.util.List<AbstractType<?>> types)
-
TupleType
protected TupleType(java.util.List<AbstractType<?>> types, boolean freezeInner)
-
-
Method Detail
-
getInstance
public static TupleType getInstance(TypeParser parser) throws ConfigurationException, SyntaxException
-
referencesUserType
public <V> boolean referencesUserType(V name, ValueAccessor<V> accessor)
- Overrides:
referencesUserType
in classAbstractType<java.nio.ByteBuffer>
-
withUpdatedUserType
public TupleType withUpdatedUserType(UserType udt)
Description copied from class:AbstractType
Returns an instance of this type with all references to the provided user type recursively replaced with its new definition.- Overrides:
withUpdatedUserType
in classAbstractType<java.nio.ByteBuffer>
-
expandUserTypes
public AbstractType<?> expandUserTypes()
Description copied from class:AbstractType
Replace any instances of UserType with equivalent TupleType-s. We need it for dropped_columns, to allow safely dropping unused user types later without retaining any references to them in system_schema.dropped_columns.- Overrides:
expandUserTypes
in classAbstractType<java.nio.ByteBuffer>
-
referencesDuration
public boolean referencesDuration()
- Overrides:
referencesDuration
in classAbstractType<java.nio.ByteBuffer>
-
type
public AbstractType<?> type(int i)
-
size
public int size()
-
subTypes
public java.util.List<AbstractType<?>> subTypes()
- Overrides:
subTypes
in classAbstractType<java.nio.ByteBuffer>
-
allTypes
public java.util.List<AbstractType<?>> allTypes()
-
isTuple
public boolean isTuple()
- Overrides:
isTuple
in classAbstractType<java.nio.ByteBuffer>
-
compareCustom
public <VL,VR> int compareCustom(VL left, ValueAccessor<VL> accessorL, VR right, ValueAccessor<VR> accessorR)
Description copied from class:AbstractType
Implement IFF ComparisonType is CUSTOM Compares the byte representation of two instances of this class, for types where this cannot be done by simple in-order comparison of the unsigned bytes Standard Java compare semantics- Overrides:
compareCustom
in classAbstractType<java.nio.ByteBuffer>
-
split
public java.nio.ByteBuffer[] split(java.nio.ByteBuffer value)
Split a tuple value into its component values.
-
buildValue
public static <V> V buildValue(ValueAccessor<V> accessor, V[] components)
-
buildValue
public static java.nio.ByteBuffer buildValue(java.nio.ByteBuffer[] components)
-
getString
public <V> java.lang.String getString(V input, ValueAccessor<V> accessor)
Description copied from class:AbstractType
get a string representation of the bytes used for various identifier (NOT just for log messages)- Overrides:
getString
in classAbstractType<java.nio.ByteBuffer>
-
fromString
public java.nio.ByteBuffer fromString(java.lang.String source)
Description copied from class:AbstractType
get a byte representation of the given string.- Specified by:
fromString
in classAbstractType<java.nio.ByteBuffer>
-
fromJSONObject
public Term fromJSONObject(java.lang.Object parsed) throws MarshalException
Description copied from class:AbstractType
Given a parsed JSON string, return a byte representation of the object.- Specified by:
fromJSONObject
in classAbstractType<java.nio.ByteBuffer>
- Parameters:
parsed
- the result of parsing a json string- Throws:
MarshalException
-
toJSONString
public java.lang.String toJSONString(java.nio.ByteBuffer buffer, ProtocolVersion protocolVersion)
Description copied from class:AbstractType
Converts the specified value into its JSON representation.The buffer position will stay the same.
- Overrides:
toJSONString
in classAbstractType<java.nio.ByteBuffer>
- Parameters:
buffer
- the value to convertprotocolVersion
- the protocol version to use for the conversion- Returns:
- a JSON string representing the specified value
-
getSerializer
public TypeSerializer<java.nio.ByteBuffer> getSerializer()
- Specified by:
getSerializer
in classAbstractType<java.nio.ByteBuffer>
-
isCompatibleWith
public boolean isCompatibleWith(AbstractType<?> previous)
Description copied from class:AbstractType
Returns true if this comparator is compatible with the provided previous comparator, that is if previous can safely be replaced by this. A comparator cn should be compatible with a previous one cp if forall columns c1 and c2, if cn.validate(c1) and cn.validate(c2) and cn.compare(c1, c2) == v, then cp.validate(c1) and cp.validate(c2) and cp.compare(c1, c2) == v. Note that a type should be compatible with at least itself and when in doubt, keep the default behavior of not being compatible with any other comparator!- Overrides:
isCompatibleWith
in classAbstractType<java.nio.ByteBuffer>
-
isValueCompatibleWithInternal
public boolean isValueCompatibleWithInternal(AbstractType<?> otherType)
Description copied from class:AbstractType
Needed to handle ReversedType in value-compatibility checks. Subclasses should implement this instead of isValueCompatibleWith().- Overrides:
isValueCompatibleWithInternal
in classAbstractType<java.nio.ByteBuffer>
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object o)
- Specified by:
equals
in interfacejava.util.Comparator<java.nio.ByteBuffer>
- Overrides:
equals
in classjava.lang.Object
-
asCQL3Type
public CQL3Type asCQL3Type()
- Overrides:
asCQL3Type
in classAbstractType<java.nio.ByteBuffer>
-
toString
public java.lang.String toString()
Description copied from class:AbstractType
This must be overriden by subclasses if necessary so that for any AbstractType, this == TypeParser.parse(toString()). Note that for backwards compatibility this includes the full classname. For CQL purposes the short name is fine.- Overrides:
toString
in classAbstractType<java.nio.ByteBuffer>
-
-