Package org.apache.cassandra.db
Class ClusteringComparator
java.lang.Object
org.apache.cassandra.db.ClusteringComparator
- All Implemented Interfaces:
Comparator<Clusterable>
A comparator of clustering prefixes (or more generally of
Clusterable}.
This is essentially just a composite comparator that the clustering values of the provided clustering prefixes in lexicographical order, with each component being compared based on the type of the clustering column this is a value of.
-
Constructor Summary
ConstructorsConstructorDescriptionClusteringComparator(Iterable<AbstractType<?>> clusteringTypes) ClusteringComparator(AbstractType<?>... clusteringTypes) -
Method Summary
Modifier and TypeMethodDescription<V> ByteComparableasByteComparable(ClusteringPrefix<V> clustering) Produce a prefix-free byte-comparable representation of the given value, i.e.<V> ClusteringBoundary<V>boundaryFromByteComparable(ValueAccessor<V> accessor, ByteComparable comparable) Produces a clustering boundary from the given byte-comparable value.<V> ClusteringBound<V>boundFromByteComparable(ValueAccessor<V> accessor, ByteComparable comparable, boolean isEnd) Produces a clustering bound from the given byte-comparable value.<V> Clustering<V>clusteringFromByteComparable(ValueAccessor<V> accessor, ByteComparable comparable) Produces a clustering from the given byte-comparable value.intcompare(Clusterable c1, Clusterable c2) <V1,V2> int compare(Clustering<V1> c1, Clustering<V2> c2) <V1,V2> int compare(Clustering<V1> c1, Clustering<V2> c2, int size) Compares the specified part of the specified clusterings.<V1,V2> int compare(ClusteringPrefix<V1> c1, ClusteringPrefix<V2> c2) <V1,V2> int compareComponent(int i, ClusteringPrefix<V1> v1, ClusteringPrefix<V2> v2) <V1,V2> int compareComponent(int i, V1 v1, ValueAccessor<V1> accessor1, V2 v2, ValueAccessor<V2> accessor2) booleaninthashCode()indexComparator(boolean reversed) booleanisCompatibleWith(ClusteringComparator previous) Returns whether this clustering comparator is compatible with the provided one, that is if the provided one can be safely replaced by this new one.Clustering<?>Creates a row clustering based on the clustering values.reversed()A comparator for rows.intsize()The number of clustering columns for the table this is the comparator of.AbstractType<?>subtype(int i) Returns the type of the ith clustering column of the table.List<AbstractType<?>>subtypes()The "subtypes" of this clustering comparator, that is the types of the clustering columns for the table this is a comparator of.toString()<T> voidvalidate(ClusteringPrefix<T> clustering) Validates the provided prefix for corrupted data.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.Comparator
thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
-
Constructor Details
-
ClusteringComparator
-
ClusteringComparator
-
-
Method Details
-
size
public int size()The number of clustering columns for the table this is the comparator of. -
subtypes
The "subtypes" of this clustering comparator, that is the types of the clustering columns for the table this is a comparator of. -
subtype
Returns the type of the ith clustering column of the table. -
make
Creates a row clustering based on the clustering values.Every argument can either be a
ByteBuffer, in which case it is used as-is, or a object corresponding to the type of the corresponding clustering column, in which case it will be converted to a byte buffer using the column type.- Parameters:
values- the values to use for the created clustering. There should be exactlysize()values which must be either byte buffers or of the type the column expect.- Returns:
- the newly created clustering.
-
compare
- Specified by:
comparein interfaceComparator<Clusterable>
-
compare
-
compare
-
compare
Compares the specified part of the specified clusterings.- Parameters:
c1- the first clusteringc2- the second clusteringsize- the number of components to compare- Returns:
- a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.
-
compareComponent
public <V1,V2> int compareComponent(int i, V1 v1, ValueAccessor<V1> accessor1, V2 v2, ValueAccessor<V2> accessor2) -
compareComponent
-
isCompatibleWith
Returns whether this clustering comparator is compatible with the provided one, that is if the provided one can be safely replaced by this new one.- Parameters:
previous- the previous comparator that we want to replace and test compatibility with.- Returns:
- whether
previouscan be safely replaced by this comparator.
-
validate
Validates the provided prefix for corrupted data.- Parameters:
clustering- the clustering prefix to validate.- Throws:
MarshalException- ifclusteringcontains some invalid data.
-
asByteComparable
Produce a prefix-free byte-comparable representation of the given value, i.e. such a sequence of bytes that any pair x, y of valid values of this type compare(x, y) == compareLexicographicallyUnsigned(asByteComparable(x), asByteComparable(y)) and asByteComparable(x) is not a prefix of asByteComparable(y) -
clusteringFromByteComparable
public <V> Clustering<V> clusteringFromByteComparable(ValueAccessor<V> accessor, ByteComparable comparable) Produces a clustering from the given byte-comparable value. The method will throw an exception if the value does not correctly encode a clustering of this type, including if it encodes a position before or after a clustering (i.e. a bound/boundary).- Parameters:
accessor- Accessor to use to construct components.comparable- The clustering encoded as a byte-comparable sequence.
-
boundFromByteComparable
public <V> ClusteringBound<V> boundFromByteComparable(ValueAccessor<V> accessor, ByteComparable comparable, boolean isEnd) Produces a clustering bound from the given byte-comparable value. The method will throw an exception if the value does not correctly encode a bound position of this type, including if it encodes an exact clustering. Note that the encoded clustering position cannot specify the type of bound (i.e. start/end/boundary) because to correctly compare clustering positions the encoding must be the same for the different types (e.g. the position for a exclusive end and an inclusive start is the same, before the exact clustering). The type must be supplied separately (in the bound... vs boundary... call and isEnd argument).- Parameters:
accessor- Accessor to use to construct components.comparable- The clustering position encoded as a byte-comparable sequence.isEnd- true if the bound marks the end of a range, false is it marks the start.
-
boundaryFromByteComparable
public <V> ClusteringBoundary<V> boundaryFromByteComparable(ValueAccessor<V> accessor, ByteComparable comparable) Produces a clustering boundary from the given byte-comparable value. The method will throw an exception if the value does not correctly encode a bound position of this type, including if it encodes an exact clustering. Note that the encoded clustering position cannot specify the type of bound (i.e. start/end/boundary) because to correctly compare clustering positions the encoding must be the same for the different types (e.g. the position for a exclusive end and an inclusive start is the same, before the exact clustering). The type must be supplied separately (in the bound... vs boundary... call and isEnd argument).- Parameters:
accessor- Accessor to use to construct components.comparable- The clustering position encoded as a byte-comparable sequence.
-
rowComparator
A comparator for rows. ARowis aClusterablesoClusteringComparatorcan be used to compare rows directly, but when we know we deal with rows (and notClusterablein general), this is a little faster because by knowing we compareClusteringobjects, we know that 1) they all have the same size and 2) they all have the same kind. -
indexComparator
-
reversed
- Specified by:
reversedin interfaceComparator<Clusterable>
-
toString
-
equals
- Specified by:
equalsin interfaceComparator<Clusterable>- Overrides:
equalsin classObject
-
hashCode
public int hashCode()
-