Package org.apache.cassandra.db.rows
Class Cell<V>
java.lang.Object
org.apache.cassandra.db.rows.ColumnData
org.apache.cassandra.db.rows.Cell<V>
- All Implemented Interfaces:
IMeasurableMemory
- Direct Known Subclasses:
AbstractCell,CellWithSource
A cell is our atomic unit for a single value of a single column.
A cell always holds at least a timestamp that gives us how the cell reconcile. We then have 3 main types of cells: 1) live regular cells: those will also have a value and, if for a complex column, a path. 2) expiring cells: on top of regular cells, those have a ttl and a local deletion time (when they are expired). 3) tombstone cells: those won't have value, but they have a local deletion time (when the tombstone was created).
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class org.apache.cassandra.db.rows.ColumnData
ColumnData.PostReconciliationFunction, ColumnData.Reconciler -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Comparator<Cell<?>>static final longstatic final longstatic final intstatic final intstatic final longstatic final intstatic final intstatic final org.apache.cassandra.db.rows.Cell.SerializerFields inherited from class org.apache.cassandra.db.rows.ColumnData
column, noOp -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract ValueAccessor<V>accessor()buffer()abstract Cell<?>clone(ByteBufferCloner cloner) final Cell<?>static longdecodeLocalDeletionTime(long localDeletionTime, int ttl, DeserializationHelper helper) Handle unsigned encoding and potentially invalid localDeletionTime.static intdeletionTimeLongToUnsignedInteger(long deletionTime) static longdeletionTimeUnsignedIntegerToLong(int deletionTimeUnsignedInteger) static longabstract booleanWhether the cell is a counter cell or not.CassandraUIntabstract booleanWhether the cell is an expiring one or not.abstract booleanisLive(long nowInSec) Whether the cell is live or not given the current time.abstract booleanWhether the cell is a tombstone or not.longThe cell local deletion time.protected abstract intabstract Cell<?>abstract CellPathpath()For cells belonging to complex types (non-frozen collection and UDT), the path to the cell.abstract Cell<?>purge(DeletionPurger purger, long nowInSec) abstract Cell<?>purgeDataOlderThan(long timestamp) abstract longThe cell timestamp.abstract intttl()The cell ttl.abstract Vvalue()intabstract Cell<?>Used to apply the same optimization as inCell.Serializer.deserialize(org.apache.cassandra.io.util.DataInputPlus, org.apache.cassandra.db.LivenessInfo, org.apache.cassandra.schema.ColumnMetadata, org.apache.cassandra.db.SerializationHeader, org.apache.cassandra.db.rows.DeserializationHelper, org.apache.cassandra.db.marshal.ValueAccessor<V>)when the column is not queried but eventhough it's used for digest calculation.abstract Cell<?>withUpdatedColumn(ColumnMetadata newColumn) abstract Cell<?>withUpdatedTimestampAndLocalDeletionTime(long newTimestamp, long newLocalDeletionTime) abstract Cell<?>withUpdatedValue(ByteBuffer newValue) Methods inherited from class org.apache.cassandra.db.rows.ColumnData
column, dataSize, digest, digest, hasInvalidDeletions, maxTimestamp, reconciler, unsharedHeapSize, unsharedHeapSizeExcludingData, updateAllTimestamp, validate
-
Field Details
-
NO_TTL
public static final int NO_TTL- See Also:
-
NO_DELETION_TIME
public static final long NO_DELETION_TIME- See Also:
-
NO_DELETION_TIME_UNSIGNED_INTEGER
public static final int NO_DELETION_TIME_UNSIGNED_INTEGER -
MAX_DELETION_TIME
public static final long MAX_DELETION_TIME -
MAX_DELETION_TIME_UNSIGNED_INTEGER
public static final int MAX_DELETION_TIME_UNSIGNED_INTEGER -
INVALID_DELETION_TIME
public static final long INVALID_DELETION_TIME -
MAX_DELETION_TIME_2038_LEGACY_CAP
public static final int MAX_DELETION_TIME_2038_LEGACY_CAP- See Also:
-
comparator
-
serializer
public static final org.apache.cassandra.db.rows.Cell.Serializer serializer
-
-
Constructor Details
-
Cell
-
-
Method Details
-
deletionTimeLongToUnsignedInteger
public static int deletionTimeLongToUnsignedInteger(long deletionTime) -
deletionTimeUnsignedIntegerToLong
public static long deletionTimeUnsignedIntegerToLong(int deletionTimeUnsignedInteger) -
getVersionedMaxDeletiontionTime
public static long getVersionedMaxDeletiontionTime() -
isCounterCell
public abstract boolean isCounterCell()Whether the cell is a counter cell or not.CassandraUInt- Returns:
- whether the cell is a counter cell or not.
-
value
-
accessor
-
valueSize
public int valueSize() -
buffer
-
timestamp
public abstract long timestamp()The cell timestamp.- Returns:
- the cell timestamp.
-
ttl
public abstract int ttl()The cell ttl.- Returns:
- the cell ttl, or
NO_TTLif the cell isn't an expiring one.
-
localDeletionTime
public long localDeletionTime()The cell local deletion time.- Returns:
- the cell local deletion time, or
NO_DELETION_TIMEif the cell is neither a tombstone nor an expiring one.
-
isTombstone
public abstract boolean isTombstone()Whether the cell is a tombstone or not.- Returns:
- whether the cell is a tombstone or not.
-
isExpiring
public abstract boolean isExpiring()Whether the cell is an expiring one or not.Note that this only correspond to whether the cell liveness info have a TTL or not, but doesn't tells whether the cell is already expired or not. You should use
isLive(long)for that latter information.- Returns:
- whether the cell is an expiring one or not.
-
isLive
public abstract boolean isLive(long nowInSec) Whether the cell is live or not given the current time.- Parameters:
nowInSec- the current time in seconds. This is used to decide if an expiring cell is expired or live.- Returns:
- whether the cell is live or not at
nowInSec.
-
path
For cells belonging to complex types (non-frozen collection and UDT), the path to the cell.- Returns:
- the cell path for cells of complex column, and
nullfor other cells.
-
withUpdatedColumn
-
withUpdatedValue
-
withUpdatedTimestampAndLocalDeletionTime
public abstract Cell<?> withUpdatedTimestampAndLocalDeletionTime(long newTimestamp, long newLocalDeletionTime) -
withSkippedValue
Used to apply the same optimization as inCell.Serializer.deserialize(org.apache.cassandra.io.util.DataInputPlus, org.apache.cassandra.db.LivenessInfo, org.apache.cassandra.schema.ColumnMetadata, org.apache.cassandra.db.SerializationHeader, org.apache.cassandra.db.rows.DeserializationHelper, org.apache.cassandra.db.marshal.ValueAccessor<V>)when the column is not queried but eventhough it's used for digest calculation.- Returns:
- a cell with an empty buffer as value
-
clone
- Specified by:
clonein classColumnData
-
clone
-
markCounterLocalToBeCleared
- Specified by:
markCounterLocalToBeClearedin classColumnData
-
purge
- Specified by:
purgein classColumnData
-
purgeDataOlderThan
- Specified by:
purgeDataOlderThanin classColumnData
-
localDeletionTimeAsUnsignedInt
protected abstract int localDeletionTimeAsUnsignedInt() -
decodeLocalDeletionTime
public static long decodeLocalDeletionTime(long localDeletionTime, int ttl, DeserializationHelper helper) Handle unsigned encoding and potentially invalid localDeletionTime.
-