Class Cells
- java.lang.Object
-
- org.apache.cassandra.db.rows.Cells
-
public abstract class Cells extends java.lang.Object
Static methods to work on cells.
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static void
addNonShadowed(Cell<?> existing, Cell<?> update, DeletionTime deletion, Row.Builder builder)
Adds to the builder a representation of the given existing cell that, when merged/reconciled with the given update cell, produces the same result as merging the original with the update.static void
addNonShadowedComplex(ColumnMetadata column, java.util.Iterator<Cell<?>> existing, java.util.Iterator<Cell<?>> update, DeletionTime deletion, Row.Builder builder)
Adds to the builder a representation of the given existing cell that, when merged/reconciled with the given update cell, produces the same result as merging the original with the update.static void
collectStats(Cell<?> cell, PartitionStatisticsCollector collector)
Collect statistics ont a given cell.static <T,V>
TcomposeValue(Cell<V> cell, AbstractType<T> type)
static Cell<?>
reconcile(Cell<?> c1, Cell<?> c2)
Reconciles/merge two cells.static long
reconcile(Cell<?> existing, Cell<?> update, DeletionTime deletion, Row.Builder builder)
Reconciles/merges two cells, one being an update to an existing cell, yielding index updates if appropriate.static long
reconcileComplex(ColumnMetadata column, java.util.Iterator<Cell<?>> existing, java.util.Iterator<Cell<?>> update, DeletionTime deletion, Row.Builder builder)
Computes the reconciliation of a complex column given its pre-existing cells and the ones it is updated with, and generating index update if appropriate.static <L,R>
booleanvalueEqual(Cell<L> left, Cell<R> right)
static <V> java.lang.String
valueString(Cell<V> cell)
static <V> java.lang.String
valueString(Cell<V> cell, AbstractType<?> type)
-
-
-
Method Detail
-
collectStats
public static void collectStats(Cell<?> cell, PartitionStatisticsCollector collector)
Collect statistics ont a given cell.- Parameters:
cell
- the cell for which to collect stats.collector
- the stats collector.
-
reconcile
public static long reconcile(Cell<?> existing, Cell<?> update, DeletionTime deletion, Row.Builder builder)
Reconciles/merges two cells, one being an update to an existing cell, yielding index updates if appropriate.Note that this method assumes that the provided cells can meaningfully be reconciled together, that is that those cells are for the same row and same column (and same cell path if the column is complex).
Also note that which cell is provided as
existing
and which is provided asupdate
matters for index updates.- Parameters:
existing
- the pre-existing cell, the one that is updated. This can benull
if this reconciliation correspond to an insertion.update
- the newly added cell, the update. This can benull
out of convenience, in which case this function simply copyexisting
towriter
.deletion
- the deletion time that applies to the cells being considered. This deletion time may delete bothexisting
orupdate
.builder
- the row builder to which the result of the reconciliation is written.- Returns:
- the timestamp delta between existing and update, or
Long.MAX_VALUE
if one of them isnull
or deleted bydeletion
).
-
reconcile
public static Cell<?> reconcile(Cell<?> c1, Cell<?> c2)
Reconciles/merge two cells.Note that this method assumes that the provided cells can meaningfully be reconciled together, that is that cell are for the same row and same column (and same cell path if the column is complex).
This method is commutative over it's cells arguments:
reconcile(a, b, n) == reconcile(b, a, n)
.- Parameters:
c1
- the first cell participating in the reconciliation.c2
- the second cell participating in the reconciliation.- Returns:
- a cell corresponding to the reconciliation of
c1
andc2
. For non-counter cells, this will always be eitherc1
orc2
, but for counter cells this can be a newly allocated cell.
-
reconcileComplex
public static long reconcileComplex(ColumnMetadata column, java.util.Iterator<Cell<?>> existing, java.util.Iterator<Cell<?>> update, DeletionTime deletion, Row.Builder builder)
Computes the reconciliation of a complex column given its pre-existing cells and the ones it is updated with, and generating index update if appropriate.Note that this method assumes that the provided cells can meaningfully be reconciled together, that is that the cells are for the same row and same complex column.
Also note that which cells is provided as
existing
and which are provided asupdate
matters for index updates.- Parameters:
column
- the complex column the cells are for.existing
- the pre-existing cells, the ones that are updated. This can benull
if this reconciliation correspond to an insertion.update
- the newly added cells, the update. This can benull
out of convenience, in which case this function simply copy the cells fromexisting
towriter
.deletion
- the deletion time that applies to the cells being considered. This deletion time may delete cells in bothexisting
andupdate
.builder
- the row build to which the result of the reconciliation is written.- Returns:
- the smallest timestamp delta between corresponding cells from existing and update. A
timestamp delta being computed as the difference between a cell from
update
and the cell inexisting
having the same cell path (if such cell exists). If the intersection of cells fromexisting
andupdate
having the same cell path is empty, this returnsLong.MAX_VALUE
.
-
addNonShadowed
public static void addNonShadowed(Cell<?> existing, Cell<?> update, DeletionTime deletion, Row.Builder builder)
Adds to the builder a representation of the given existing cell that, when merged/reconciled with the given update cell, produces the same result as merging the original with the update.For simple cells that is either the original cell (if still live), or nothing (if shadowed).
- Parameters:
existing
- the pre-existing cell, the one that is updated.update
- the newly added cell, the update. This can benull
out of convenience, in which case this function simply copyexisting
towriter
.deletion
- the deletion time that applies to the cells being considered. This deletion time may delete bothexisting
orupdate
.builder
- the row builder to which the result of the filtering is written.
-
addNonShadowedComplex
public static void addNonShadowedComplex(ColumnMetadata column, java.util.Iterator<Cell<?>> existing, java.util.Iterator<Cell<?>> update, DeletionTime deletion, Row.Builder builder)
Adds to the builder a representation of the given existing cell that, when merged/reconciled with the given update cell, produces the same result as merging the original with the update.For simple cells that is either the original cell (if still live), or nothing (if shadowed).
- Parameters:
column
- the complex column the cells are for.existing
- the pre-existing cells, the ones that are updated.update
- the newly added cells, the update. This can benull
out of convenience, in which case this function simply copy the cells fromexisting
towriter
.deletion
- the deletion time that applies to the cells being considered. This deletion time may delete bothexisting
orupdate
.builder
- the row builder to which the result of the filtering is written.
-
composeValue
public static <T,V> T composeValue(Cell<V> cell, AbstractType<T> type)
-
valueString
public static <V> java.lang.String valueString(Cell<V> cell, AbstractType<?> type)
-
valueString
public static <V> java.lang.String valueString(Cell<V> cell)
-
-