org.apache.cassandra.db
Class Column

java.lang.Object
  extended by org.apache.cassandra.db.Column
All Implemented Interfaces:
IColumn
Direct Known Subclasses:
CounterColumn, CounterUpdateColumn, DeletedColumn, ExpiringColumn

public class Column
extends java.lang.Object
implements IColumn

Column is immutable, which prevents all kinds of confusion in a multithreaded environment. (TODO: look at making SuperColumn immutable too. This is trickier but is probably doable with something like PCollections -- http://code.google.com


Field Summary
protected  java.nio.ByteBuffer name
           
protected  long timestamp
           
protected  java.nio.ByteBuffer value
           
 
Fields inherited from interface org.apache.cassandra.db.IColumn
MAX_NAME_LENGTH
 
Constructor Summary
Column(java.nio.ByteBuffer name, java.nio.ByteBuffer value)
           
Column(java.nio.ByteBuffer name, java.nio.ByteBuffer value, long timestamp)
           
 
Method Summary
 void addColumn(IColumn column)
           
 void addColumn(IColumn column, Allocator allocator)
           
 IColumn diff(IColumn column)
           
 boolean equals(java.lang.Object o)
           
 int getLocalDeletionTime()
           
 long getMarkedForDeleteAt()
           
 java.lang.String getString(AbstractType comparator)
           
 Column getSubColumn(java.nio.ByteBuffer columnName)
           
 java.util.Collection<IColumn> getSubColumns()
           
 boolean hasExpiredTombstones(int gcBefore)
           
 int hashCode()
           
 boolean isLive()
          For a simple column, live == !isMarkedForDelete.
 boolean isMarkedForDelete()
           
 IColumn localCopy(ColumnFamilyStore cfs)
          clones the column for the row cache, interning column names and making copies of other underlying byte buffers
 IColumn localCopy(ColumnFamilyStore cfs, Allocator allocator)
          clones the column for the memtable, interning column names and making copies of other underlying byte buffers.
 long maxTimestamp()
          For a standard column, this is the same as timestamp().
 long minTimestamp()
          For a standard column, this is the same as timestamp().
 long mostRecentLiveChangeAt()
           
 java.nio.ByteBuffer name()
           
 IColumn reconcile(IColumn column)
           
 IColumn reconcile(IColumn column, Allocator allocator)
           
 int serializationFlags()
           
 int serializedSize()
           
static ColumnSerializer serializer()
           
 int size()
           
 long timestamp()
           
 void updateDigest(java.security.MessageDigest digest)
           
 void validateFields(CFMetaData metadata)
           
protected  void validateName(CFMetaData metadata)
           
 java.nio.ByteBuffer value()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

name

protected final java.nio.ByteBuffer name

value

protected final java.nio.ByteBuffer value

timestamp

protected final long timestamp
Constructor Detail

Column

public Column(java.nio.ByteBuffer name,
              java.nio.ByteBuffer value)

Column

public Column(java.nio.ByteBuffer name,
              java.nio.ByteBuffer value,
              long timestamp)
Method Detail

serializer

public static ColumnSerializer serializer()

name

public java.nio.ByteBuffer name()
Specified by:
name in interface IColumn

getSubColumn

public Column getSubColumn(java.nio.ByteBuffer columnName)
Specified by:
getSubColumn in interface IColumn

value

public java.nio.ByteBuffer value()
Specified by:
value in interface IColumn

getSubColumns

public java.util.Collection<IColumn> getSubColumns()
Specified by:
getSubColumns in interface IColumn

timestamp

public long timestamp()
Specified by:
timestamp in interface IColumn

maxTimestamp

public long maxTimestamp()
Description copied from interface: IColumn
For a standard column, this is the same as timestamp(). For a super column, this is the max column timestamp of the sub columns.

Specified by:
maxTimestamp in interface IColumn

minTimestamp

public long minTimestamp()
Description copied from interface: IColumn
For a standard column, this is the same as timestamp(). For a super column, this is the min column timestamp of the sub columns.

Specified by:
minTimestamp in interface IColumn

isMarkedForDelete

public boolean isMarkedForDelete()
Specified by:
isMarkedForDelete in interface IColumn

getMarkedForDeleteAt

public long getMarkedForDeleteAt()
Specified by:
getMarkedForDeleteAt in interface IColumn

mostRecentLiveChangeAt

public long mostRecentLiveChangeAt()
Specified by:
mostRecentLiveChangeAt in interface IColumn

size

public int size()
Specified by:
size in interface IColumn

serializedSize

public int serializedSize()
Specified by:
serializedSize in interface IColumn

serializationFlags

public int serializationFlags()
Specified by:
serializationFlags in interface IColumn

addColumn

public void addColumn(IColumn column)
Specified by:
addColumn in interface IColumn

addColumn

public void addColumn(IColumn column,
                      Allocator allocator)
Specified by:
addColumn in interface IColumn

diff

public IColumn diff(IColumn column)
Specified by:
diff in interface IColumn

updateDigest

public void updateDigest(java.security.MessageDigest digest)
Specified by:
updateDigest in interface IColumn

getLocalDeletionTime

public int getLocalDeletionTime()
Specified by:
getLocalDeletionTime in interface IColumn

reconcile

public IColumn reconcile(IColumn column)
Specified by:
reconcile in interface IColumn

reconcile

public IColumn reconcile(IColumn column,
                         Allocator allocator)
Specified by:
reconcile in interface IColumn

equals

public boolean equals(java.lang.Object o)
Overrides:
equals in class java.lang.Object

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

localCopy

public IColumn localCopy(ColumnFamilyStore cfs)
Description copied from interface: IColumn
clones the column for the row cache, interning column names and making copies of other underlying byte buffers

Specified by:
localCopy in interface IColumn

localCopy

public IColumn localCopy(ColumnFamilyStore cfs,
                         Allocator allocator)
Description copied from interface: IColumn
clones the column for the memtable, interning column names and making copies of other underlying byte buffers. Unlike the other localCopy, this uses Allocator to allocate values in contiguous memory regions, which helps avoid heap fragmentation.

Specified by:
localCopy in interface IColumn

getString

public java.lang.String getString(AbstractType comparator)
Specified by:
getString in interface IColumn

isLive

public boolean isLive()
Description copied from interface: IColumn
For a simple column, live == !isMarkedForDelete. For a supercolumn, live means it has at least one subcolumn whose timestamp is greater than the supercolumn deleted-at time.

Specified by:
isLive in interface IColumn

validateName

protected void validateName(CFMetaData metadata)
                     throws MarshalException
Throws:
MarshalException

validateFields

public void validateFields(CFMetaData metadata)
                    throws MarshalException
Specified by:
validateFields in interface IColumn
Throws:
MarshalException

hasExpiredTombstones

public boolean hasExpiredTombstones(int gcBefore)
Specified by:
hasExpiredTombstones in interface IColumn
Returns:
true if the column or any its subcolumns expired before @param gcBefore


Copyright © 2011 The Apache Software Foundation