Class Cell<V>

  • All Implemented Interfaces:
    IMeasurableMemory
    Direct Known Subclasses:
    AbstractCell

    public abstract class Cell<V>
    extends ColumnData
    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).

    • Field Detail

      • 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:
        Constant Field Values
      • comparator

        public static final java.util.Comparator<Cell<?>> comparator
      • serializer

        public static final org.apache.cassandra.db.rows.Cell.Serializer serializer
    • Method Detail

      • 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

        public abstract V value()
      • valueSize

        public int valueSize()
      • buffer

        public java.nio.ByteBuffer 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_TTL if 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_TIME if 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

        public abstract CellPath 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 null for other cells.
      • withUpdatedColumn

        public abstract Cell<?> withUpdatedColumn​(ColumnMetadata newColumn)
      • withUpdatedValue

        public abstract Cell<?> withUpdatedValue​(java.nio.ByteBuffer newValue)
      • withUpdatedTimestampAndLocalDeletionTime

        public abstract Cell<?> withUpdatedTimestampAndLocalDeletionTime​(long newTimestamp,
                                                                         long newLocalDeletionTime)
      • withSkippedValue

        public abstract Cell<?> withSkippedValue()
        Used to apply the same optimization as in Cell.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
      • localDeletionTimeAsUnsignedInt

        protected abstract int localDeletionTimeAsUnsignedInt()
      • decodeLocalDeletionTime

        public static long decodeLocalDeletionTime​(long localDeletionTime,
                                                   int ttl,
                                                   DeserializationHelper helper)
        Handle unsigned encoding and potentially invalid localDeletionTime.