You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2013/12/17 17:53:14 UTC
[6/6] git commit: Rename Column to Cell
Rename Column to Cell
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/e50d6af1
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/e50d6af1
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/e50d6af1
Branch: refs/heads/trunk
Commit: e50d6af12fabac98e3cb4bd589e2b92212b041f4
Parents: 362cc05
Author: Sylvain Lebresne <sy...@datastax.com>
Authored: Tue Dec 17 17:51:55 2013 +0100
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Tue Dec 17 17:52:20 2013 +0100
----------------------------------------------------------------------
examples/hadoop_word_count/src/WordCount.java | 16 +-
.../src/WordCountCounters.java | 14 +-
.../cassandra/triggers/InvertedIndex.java | 4 +-
.../org/apache/cassandra/config/CFMetaData.java | 8 +-
.../apache/cassandra/cql/QueryProcessor.java | 14 +-
.../org/apache/cassandra/cql3/Attributes.java | 6 +-
src/java/org/apache/cassandra/cql3/CQL3Row.java | 8 +-
src/java/org/apache/cassandra/cql3/Lists.java | 10 +-
.../apache/cassandra/cql3/QueryProcessor.java | 4 +-
.../apache/cassandra/cql3/UpdateParameters.java | 12 +-
.../cql3/statements/AlterTableStatement.java | 4 +-
.../cql3/statements/SelectStatement.java | 14 +-
.../cassandra/cql3/statements/Selection.java | 16 +-
.../cassandra/db/ArrayBackedSortedColumns.java | 160 ++++----
.../cassandra/db/AtomicSortedColumns.java | 70 ++--
.../apache/cassandra/db/BatchlogManager.java | 6 +-
.../org/apache/cassandra/db/CFRowAdder.java | 6 +-
src/java/org/apache/cassandra/db/Cell.java | 310 ++++++++++++++++
.../cassandra/db/CollationController.java | 4 +-
src/java/org/apache/cassandra/db/Column.java | 310 ----------------
.../org/apache/cassandra/db/ColumnFamily.java | 126 +++----
.../cassandra/db/ColumnFamilySerializer.java | 8 +-
.../apache/cassandra/db/ColumnFamilyStore.java | 8 +-
.../org/apache/cassandra/db/ColumnIndex.java | 2 +-
.../apache/cassandra/db/ColumnSerializer.java | 46 +--
.../org/apache/cassandra/db/CounterCell.java | 372 +++++++++++++++++++
.../org/apache/cassandra/db/CounterColumn.java | 372 -------------------
.../apache/cassandra/db/CounterMutation.java | 6 +-
.../apache/cassandra/db/CounterUpdateCell.java | 99 +++++
.../cassandra/db/CounterUpdateColumn.java | 99 -----
.../org/apache/cassandra/db/DefsTables.java | 2 +-
.../org/apache/cassandra/db/DeletedCell.java | 127 +++++++
.../org/apache/cassandra/db/DeletedColumn.java | 127 -------
.../org/apache/cassandra/db/DeletionInfo.java | 14 +-
.../org/apache/cassandra/db/EmptyColumns.java | 16 +-
.../org/apache/cassandra/db/ExpiringCell.java | 202 ++++++++++
.../org/apache/cassandra/db/ExpiringColumn.java | 202 ----------
.../cassandra/db/HintedHandOffManager.java | 2 +-
src/java/org/apache/cassandra/db/Keyspace.java | 6 +-
src/java/org/apache/cassandra/db/Memtable.java | 5 +-
.../org/apache/cassandra/db/OnDiskAtom.java | 8 +-
.../org/apache/cassandra/db/RangeTombstone.java | 12 +-
.../org/apache/cassandra/db/SuperColumns.java | 46 +--
.../org/apache/cassandra/db/SystemKeyspace.java | 6 +-
.../db/TreeMapBackedSortedColumns.java | 54 +--
.../apache/cassandra/db/UnsortedColumns.java | 46 +--
.../db/columniterator/SSTableNamesIterator.java | 2 +-
.../db/columniterator/SSTableSliceIterator.java | 2 +-
.../db/commitlog/CommitLogReplayer.java | 2 +-
.../db/compaction/CompactionManager.java | 10 +-
.../db/compaction/LazilyCompactedRow.java | 16 +-
.../db/composites/AbstractCellNameType.java | 42 +--
.../cassandra/db/composites/CellNameType.java | 6 +-
.../cassandra/db/composites/CellNames.java | 8 +-
.../cassandra/db/filter/ColumnCounter.java | 18 +-
.../apache/cassandra/db/filter/ColumnSlice.java | 10 +-
.../cassandra/db/filter/ExtendedFilter.java | 12 +-
.../cassandra/db/filter/IDiskAtomFilter.java | 4 +-
.../cassandra/db/filter/NamesQueryFilter.java | 14 +-
.../apache/cassandra/db/filter/QueryFilter.java | 36 +-
.../cassandra/db/filter/SliceQueryFilter.java | 22 +-
.../AbstractSimplePerColumnSecondaryIndex.java | 28 +-
.../db/index/PerColumnSecondaryIndex.java | 12 +-
.../db/index/PerRowSecondaryIndex.java | 4 +-
.../cassandra/db/index/SecondaryIndex.java | 4 +-
.../db/index/SecondaryIndexManager.java | 64 ++--
.../db/index/composites/CompositesIndex.java | 6 +-
.../CompositesIndexOnClusteringKey.java | 6 +-
.../CompositesIndexOnCollectionKey.java | 10 +-
.../CompositesIndexOnCollectionValue.java | 12 +-
.../CompositesIndexOnPartitionKey.java | 4 +-
.../composites/CompositesIndexOnRegular.java | 12 +-
.../db/index/composites/CompositesSearcher.java | 36 +-
.../cassandra/db/index/keys/KeysIndex.java | 14 +-
.../cassandra/db/index/keys/KeysSearcher.java | 30 +-
.../db/marshal/AbstractCommutativeType.java | 5 +-
.../cassandra/db/marshal/CollectionType.java | 15 +-
.../cassandra/db/marshal/CounterColumnType.java | 4 +-
.../apache/cassandra/db/marshal/ListType.java | 13 +-
.../apache/cassandra/db/marshal/MapType.java | 12 +-
.../apache/cassandra/db/marshal/SetType.java | 13 +-
.../hadoop/ColumnFamilyInputFormat.java | 8 +-
.../hadoop/ColumnFamilyRecordReader.java | 92 ++---
.../hadoop/pig/AbstractCassandraStorage.java | 5 +-
.../cassandra/hadoop/pig/CassandraStorage.java | 24 +-
.../apache/cassandra/hadoop/pig/CqlStorage.java | 8 +-
.../io/sstable/AbstractSSTableSimpleWriter.java | 14 +-
.../cassandra/io/sstable/SSTableWriter.java | 4 +-
.../cassandra/service/RowDataResolver.java | 2 +-
.../apache/cassandra/service/StorageProxy.java | 4 +-
.../service/pager/AbstractQueryPager.java | 8 +-
.../apache/cassandra/service/paxos/Commit.java | 6 +-
.../cassandra/thrift/CassandraServer.java | 84 ++---
.../cassandra/thrift/ThriftValidation.java | 14 +-
.../apache/cassandra/tools/SSTableExport.java | 34 +-
.../apache/cassandra/tools/SSTableImport.java | 6 +-
.../cassandra/tools/SSTableMetadataViewer.java | 2 +-
.../org/apache/cassandra/tracing/Tracing.java | 4 +-
.../cassandra/utils/BloomCalculations.java | 2 +-
.../org/apache/cassandra/utils/CounterId.java | 4 +-
.../apache/cassandra/db/MeteredFlusherTest.java | 2 +-
.../db/compaction/LongCompactionsTest.java | 2 +-
test/unit/org/apache/cassandra/Util.java | 14 +-
.../org/apache/cassandra/config/DefsTest.java | 7 +-
.../db/ArrayBackedSortedColumnsTest.java | 24 +-
.../cassandra/db/ColumnFamilyStoreTest.java | 108 +++---
.../apache/cassandra/db/CounterCellTest.java | 323 ++++++++++++++++
.../apache/cassandra/db/CounterColumnTest.java | 323 ----------------
.../cassandra/db/CounterMutationTest.java | 14 +-
.../org/apache/cassandra/db/KeyspaceTest.java | 41 +-
.../org/apache/cassandra/db/NameSortTest.java | 10 +-
.../apache/cassandra/db/RangeTombstoneTest.java | 34 +-
.../apache/cassandra/db/ReadMessageTest.java | 2 +-
.../cassandra/db/RecoveryManagerTest.java | 7 +-
.../db/RecoveryManagerTruncateTest.java | 3 +-
.../org/apache/cassandra/db/RemoveCellTest.java | 86 +++++
.../apache/cassandra/db/RemoveColumnTest.java | 86 -----
.../apache/cassandra/db/RemoveSubCellTest.java | 100 +++++
.../cassandra/db/RemoveSubColumnTest.java | 100 -----
.../org/apache/cassandra/db/RowCacheTest.java | 24 +-
test/unit/org/apache/cassandra/db/RowTest.java | 2 +-
.../unit/org/apache/cassandra/db/ScrubTest.java | 2 +-
.../db/SecondaryIndexCellSizeTest.java | 230 ++++++++++++
.../db/SecondaryIndexColumnSizeTest.java | 230 ------------
.../apache/cassandra/db/SerializationsTest.java | 31 +-
.../org/apache/cassandra/db/TimeSortTest.java | 24 +-
.../db/compaction/CompactionsPurgeTest.java | 6 +-
.../db/index/PerRowSecondaryIndexTest.java | 8 +-
.../cassandra/db/marshal/CompositeTypeTest.java | 2 +-
.../db/marshal/DynamicCompositeTypeTest.java | 2 +-
.../io/sstable/IndexSummaryManagerTest.java | 7 +-
.../io/sstable/SSTableSimpleWriterTest.java | 4 +-
.../cassandra/io/sstable/SSTableUtils.java | 10 +-
.../cassandra/service/QueryPagerTest.java | 4 +-
.../streaming/StreamingTransferTest.java | 8 +-
.../cassandra/tools/SSTableExportTest.java | 6 +-
.../cassandra/tools/SSTableImportTest.java | 43 ++-
tools/stress/README.txt | 4 +-
.../org/apache/cassandra/stress/Session.java | 6 +-
.../stress/operations/CqlInserter.java | 2 +-
140 files changed, 2880 insertions(+), 2903 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/examples/hadoop_word_count/src/WordCount.java
----------------------------------------------------------------------
diff --git a/examples/hadoop_word_count/src/WordCount.java b/examples/hadoop_word_count/src/WordCount.java
index 398a7cb..ce9565d 100644
--- a/examples/hadoop_word_count/src/WordCount.java
+++ b/examples/hadoop_word_count/src/WordCount.java
@@ -18,14 +18,12 @@
import java.io.IOException;
import java.nio.ByteBuffer;
-import java.util.*;
-import org.apache.cassandra.thrift.*;
+import org.apache.cassandra.db.Cell;
import org.apache.cassandra.hadoop.ColumnFamilyOutputFormat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.cassandra.db.Column;
import org.apache.cassandra.hadoop.ColumnFamilyInputFormat;
import org.apache.cassandra.hadoop.ConfigHelper;
import org.apache.cassandra.utils.ByteBufferUtil;
@@ -70,7 +68,7 @@ public class WordCount extends Configured implements Tool
System.exit(0);
}
- public static class TokenizerMapper extends Mapper<ByteBuffer, SortedMap<ByteBuffer, Column>, Text, IntWritable>
+ public static class TokenizerMapper extends Mapper<ByteBuffer, SortedMap<ByteBuffer, Cell>, Text, IntWritable>
{
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
@@ -81,17 +79,17 @@ public class WordCount extends Configured implements Tool
{
}
- public void map(ByteBuffer key, SortedMap<ByteBuffer, Column> columns, Context context) throws IOException, InterruptedException
+ public void map(ByteBuffer key, SortedMap<ByteBuffer, Cell> columns, Context context) throws IOException, InterruptedException
{
- for (Column column : columns.values())
+ for (Cell cell : columns.values())
{
- String name = ByteBufferUtil.string(column.name());
+ String name = ByteBufferUtil.string(cell.name());
String value = null;
if (name.contains("int"))
- value = String.valueOf(ByteBufferUtil.toInt(column.value()));
+ value = String.valueOf(ByteBufferUtil.toInt(cell.value()));
else
- value = ByteBufferUtil.string(column.value());
+ value = ByteBufferUtil.string(cell.value());
logger.debug("read {}:{}={} from {}",
new Object[] {ByteBufferUtil.string(key), name, value, context.getInputSplit()});
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/examples/hadoop_word_count/src/WordCountCounters.java
----------------------------------------------------------------------
diff --git a/examples/hadoop_word_count/src/WordCountCounters.java b/examples/hadoop_word_count/src/WordCountCounters.java
index 55d0889..4ea063b 100644
--- a/examples/hadoop_word_count/src/WordCountCounters.java
+++ b/examples/hadoop_word_count/src/WordCountCounters.java
@@ -18,8 +18,8 @@
import java.io.IOException;
import java.nio.ByteBuffer;
-import java.util.*;
+import org.apache.cassandra.db.Cell;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -34,10 +34,8 @@ import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
-import org.apache.cassandra.db.Column;
import org.apache.cassandra.hadoop.ColumnFamilyInputFormat;
import org.apache.cassandra.hadoop.ConfigHelper;
-import org.apache.cassandra.thrift.*;
import org.apache.cassandra.utils.ByteBufferUtil;
/**
@@ -60,15 +58,15 @@ public class WordCountCounters extends Configured implements Tool
System.exit(0);
}
- public static class SumMapper extends Mapper<ByteBuffer, SortedMap<ByteBuffer, Column>, Text, LongWritable>
+ public static class SumMapper extends Mapper<ByteBuffer, SortedMap<ByteBuffer, Cell>, Text, LongWritable>
{
- public void map(ByteBuffer key, SortedMap<ByteBuffer, Column> columns, Context context) throws IOException, InterruptedException
+ public void map(ByteBuffer key, SortedMap<ByteBuffer, Cell> columns, Context context) throws IOException, InterruptedException
{
long sum = 0;
- for (Column column : columns.values())
+ for (Cell cell : columns.values())
{
- logger.debug("read " + key + ":" + column.name() + " from " + context.getInputSplit());
- sum += ByteBufferUtil.toLong(column.value());
+ logger.debug("read " + key + ":" + cell.name() + " from " + context.getInputSplit());
+ sum += ByteBufferUtil.toLong(cell.value());
}
context.write(new Text(ByteBufferUtil.string(key)), new LongWritable(sum));
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/examples/triggers/src/org/apache/cassandra/triggers/InvertedIndex.java
----------------------------------------------------------------------
diff --git a/examples/triggers/src/org/apache/cassandra/triggers/InvertedIndex.java b/examples/triggers/src/org/apache/cassandra/triggers/InvertedIndex.java
index a2d7644..2e1d4cc 100644
--- a/examples/triggers/src/org/apache/cassandra/triggers/InvertedIndex.java
+++ b/examples/triggers/src/org/apache/cassandra/triggers/InvertedIndex.java
@@ -24,10 +24,10 @@ import java.util.Collection;
import java.util.List;
import java.util.Properties;
+import org.apache.cassandra.db.Cell;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.cassandra.db.Column;
import org.apache.cassandra.db.ColumnFamily;
import org.apache.cassandra.db.RowMutation;
import org.apache.cassandra.io.util.FileUtils;
@@ -40,7 +40,7 @@ public class InvertedIndex implements ITrigger
public Collection<RowMutation> augment(ByteBuffer key, ColumnFamily update)
{
List<RowMutation> mutations = new ArrayList<>();
- for (Column cell : update)
+ for (Cell cell : update)
{
RowMutation mutation = new RowMutation(properties.getProperty("keyspace"), cell.value());
mutation.add(properties.getProperty("columnfamily"), cell.name(), key, System.currentTimeMillis());
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/src/java/org/apache/cassandra/config/CFMetaData.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/CFMetaData.java b/src/java/org/apache/cassandra/config/CFMetaData.java
index e56c1dd..097f150 100644
--- a/src/java/org/apache/cassandra/config/CFMetaData.java
+++ b/src/java/org/apache/cassandra/config/CFMetaData.java
@@ -1347,7 +1347,7 @@ public final class CFMetaData
{
if (version.hasSuperColumns && cfType == ColumnFamilyType.Super)
return SuperColumns.onDiskIterator(in, count, flag, expireBefore, comparator);
- return Column.onDiskIterator(in, count, flag, expireBefore, version, comparator);
+ return Cell.onDiskIterator(in, count, flag, expireBefore, version, comparator);
}
public AtomDeserializer getOnDiskDeserializer(DataInput in, Descriptor.Version version)
@@ -2101,10 +2101,10 @@ public final class CFMetaData
return true;
}
- public void validateColumns(Iterable<Column> columns)
+ public void validateColumns(Iterable<Cell> columns)
{
- for (Column column : columns)
- column.validateFields(this);
+ for (Cell cell : columns)
+ cell.validateFields(this);
}
@Override
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/src/java/org/apache/cassandra/cql/QueryProcessor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql/QueryProcessor.java b/src/java/org/apache/cassandra/cql/QueryProcessor.java
index 12a0c22..3d5c3f1 100644
--- a/src/java/org/apache/cassandra/cql/QueryProcessor.java
+++ b/src/java/org/apache/cassandra/cql/QueryProcessor.java
@@ -33,7 +33,7 @@ import org.apache.cassandra.cql.hooks.ExecutionContext;
import org.apache.cassandra.cql.hooks.PostPreparationHook;
import org.apache.cassandra.cql.hooks.PreExecutionHook;
import org.apache.cassandra.cql.hooks.PreparationContext;
-import org.apache.cassandra.db.CounterColumn;
+import org.apache.cassandra.db.CounterCell;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.composites.CellName;
import org.apache.cassandra.db.composites.CellNameType;
@@ -310,10 +310,10 @@ public class QueryProcessor
{
for (CellName name : columns)
{
- if (name.dataSize() > org.apache.cassandra.db.Column.MAX_NAME_LENGTH)
+ if (name.dataSize() > org.apache.cassandra.db.Cell.MAX_NAME_LENGTH)
throw new InvalidRequestException(String.format("column name is too long (%s > %s)",
name.dataSize(),
- org.apache.cassandra.db.Column.MAX_NAME_LENGTH));
+ org.apache.cassandra.db.Cell.MAX_NAME_LENGTH));
if (name.isEmpty())
throw new InvalidRequestException("zero-length column name");
}
@@ -467,7 +467,7 @@ public class QueryProcessor
// preserve comparator order
if (row.cf != null)
{
- for (org.apache.cassandra.db.Column c : row.cf.getSortedColumns())
+ for (org.apache.cassandra.db.Cell c : row.cf.getSortedColumns())
{
if (c.isMarkedForDelete(now))
continue;
@@ -514,7 +514,7 @@ public class QueryProcessor
ColumnDefinition cd = metadata.getColumnDefinition(name);
if (cd != null)
result.schema.value_types.put(nameBytes, TypeParser.getShortName(cd.type));
- org.apache.cassandra.db.Column c = row.cf.getColumn(name);
+ org.apache.cassandra.db.Cell c = row.cf.getColumn(name);
if (c == null || c.isMarkedForDelete(System.currentTimeMillis()))
thriftColumns.add(new Column().setName(nameBytes));
else
@@ -854,9 +854,9 @@ public class QueryProcessor
return cql.hashCode();
}
- private static Column thriftify(org.apache.cassandra.db.Column c)
+ private static Column thriftify(org.apache.cassandra.db.Cell c)
{
- ByteBuffer value = (c instanceof CounterColumn)
+ ByteBuffer value = (c instanceof CounterCell)
? ByteBufferUtil.bytes(CounterContext.instance().total(c.value()))
: c.value();
return new Column(c.name().toByteBuffer()).setValue(value).setTimestamp(c.timestamp());
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/src/java/org/apache/cassandra/cql3/Attributes.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/Attributes.java b/src/java/org/apache/cassandra/cql3/Attributes.java
index a92cc80..97ce31a 100644
--- a/src/java/org/apache/cassandra/cql3/Attributes.java
+++ b/src/java/org/apache/cassandra/cql3/Attributes.java
@@ -20,7 +20,7 @@ package org.apache.cassandra.cql3;
import java.nio.ByteBuffer;
import java.util.List;
-import org.apache.cassandra.db.ExpiringColumn;
+import org.apache.cassandra.db.ExpiringCell;
import org.apache.cassandra.db.marshal.Int32Type;
import org.apache.cassandra.db.marshal.LongType;
import org.apache.cassandra.exceptions.InvalidRequestException;
@@ -99,8 +99,8 @@ public class Attributes
if (ttl < 0)
throw new InvalidRequestException("A TTL must be greater or equal to 0");
- if (ttl > ExpiringColumn.MAX_TTL)
- throw new InvalidRequestException(String.format("ttl is too large. requested (%d) maximum (%d)", ttl, ExpiringColumn.MAX_TTL));
+ if (ttl > ExpiringCell.MAX_TTL)
+ throw new InvalidRequestException(String.format("ttl is too large. requested (%d) maximum (%d)", ttl, ExpiringCell.MAX_TTL));
return ttl;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/src/java/org/apache/cassandra/cql3/CQL3Row.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/CQL3Row.java b/src/java/org/apache/cassandra/cql3/CQL3Row.java
index bc6bb2c..afeb095 100644
--- a/src/java/org/apache/cassandra/cql3/CQL3Row.java
+++ b/src/java/org/apache/cassandra/cql3/CQL3Row.java
@@ -21,16 +21,16 @@ import java.nio.ByteBuffer;
import java.util.Iterator;
import java.util.List;
-import org.apache.cassandra.db.Column;
+import org.apache.cassandra.db.Cell;
public interface CQL3Row
{
public ByteBuffer getClusteringColumn(int i);
- public Column getColumn(ColumnIdentifier name);
- public List<Column> getCollection(ColumnIdentifier name);
+ public Cell getColumn(ColumnIdentifier name);
+ public List<Cell> getCollection(ColumnIdentifier name);
public interface Builder
{
- Iterator<CQL3Row> group(Iterator<Column> cells);
+ Iterator<CQL3Row> group(Iterator<Cell> cells);
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/src/java/org/apache/cassandra/cql3/Lists.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/Lists.java b/src/java/org/apache/cassandra/cql3/Lists.java
index 6bcdfcd..ab21a64 100644
--- a/src/java/org/apache/cassandra/cql3/Lists.java
+++ b/src/java/org/apache/cassandra/cql3/Lists.java
@@ -24,8 +24,8 @@ import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
import org.apache.cassandra.config.ColumnDefinition;
+import org.apache.cassandra.db.Cell;
import org.apache.cassandra.db.ColumnFamily;
-import org.apache.cassandra.db.Column;
import org.apache.cassandra.db.composites.CellName;
import org.apache.cassandra.db.composites.Composite;
import org.apache.cassandra.db.marshal.CollectionType;
@@ -305,7 +305,7 @@ public abstract class Lists
if (index == null)
throw new InvalidRequestException("Invalid null value for list index");
- List<Column> existingList = params.getPrefetchedList(rowKey, column.name);
+ List<Cell> existingList = params.getPrefetchedList(rowKey, column.name);
int idx = ByteBufferUtil.toInt(index);
if (idx < 0 || idx >= existingList.size())
throw new InvalidRequestException(String.format("List index %d out of bound, list has size %d", idx, existingList.size()));
@@ -399,7 +399,7 @@ public abstract class Lists
public void execute(ByteBuffer rowKey, ColumnFamily cf, Composite prefix, UpdateParameters params) throws InvalidRequestException
{
- List<Column> existingList = params.getPrefetchedList(rowKey, column.name);
+ List<Cell> existingList = params.getPrefetchedList(rowKey, column.name);
if (existingList.isEmpty())
return;
@@ -414,7 +414,7 @@ public abstract class Lists
// the read-before-write this operation requires limits its usefulness on big lists, so in practice
// toDiscard will be small and keeping a list will be more efficient.
List<ByteBuffer> toDiscard = ((Lists.Value)value).elements;
- for (Column cell : existingList)
+ for (Cell cell : existingList)
{
if (toDiscard.contains(cell.value()))
cf.addColumn(params.makeTombstone(cell.name()));
@@ -443,7 +443,7 @@ public abstract class Lists
assert index instanceof Constants.Value;
- List<Column> existingList = params.getPrefetchedList(rowKey, column.name);
+ List<Cell> existingList = params.getPrefetchedList(rowKey, column.name);
int idx = ByteBufferUtil.toInt(((Constants.Value)index).bytes);
if (idx < 0 || idx >= existingList.size())
throw new InvalidRequestException(String.format("List index %d out of bound, list has size %d", idx, existingList.size()));
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/src/java/org/apache/cassandra/cql3/QueryProcessor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/QueryProcessor.java b/src/java/org/apache/cassandra/cql3/QueryProcessor.java
index 772c103..77542cd 100644
--- a/src/java/org/apache/cassandra/cql3/QueryProcessor.java
+++ b/src/java/org/apache/cassandra/cql3/QueryProcessor.java
@@ -174,10 +174,10 @@ public class QueryProcessor
public static void validateComposite(Composite name) throws InvalidRequestException
{
- if (name.dataSize() > Column.MAX_NAME_LENGTH)
+ if (name.dataSize() > Cell.MAX_NAME_LENGTH)
throw new InvalidRequestException(String.format("The sum of all clustering columns is too long (%s > %s)",
name.dataSize(),
- Column.MAX_NAME_LENGTH));
+ Cell.MAX_NAME_LENGTH));
}
private static ResultMessage processStatement(CQLStatement statement,
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/src/java/org/apache/cassandra/cql3/UpdateParameters.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/UpdateParameters.java b/src/java/org/apache/cassandra/cql3/UpdateParameters.java
index cc3fe4d..a3553f4 100644
--- a/src/java/org/apache/cassandra/cql3/UpdateParameters.java
+++ b/src/java/org/apache/cassandra/cql3/UpdateParameters.java
@@ -52,16 +52,16 @@ public class UpdateParameters
this.prefetchedLists = prefetchedLists;
}
- public Column makeColumn(CellName name, ByteBuffer value) throws InvalidRequestException
+ public Cell makeColumn(CellName name, ByteBuffer value) throws InvalidRequestException
{
QueryProcessor.validateCellName(name);
- return Column.create(name, value, timestamp, ttl, metadata);
+ return Cell.create(name, value, timestamp, ttl, metadata);
}
- public Column makeTombstone(CellName name) throws InvalidRequestException
+ public Cell makeTombstone(CellName name) throws InvalidRequestException
{
QueryProcessor.validateCellName(name);
- return new DeletedColumn(name, localDeletionTime, timestamp);
+ return new DeletedCell(name, localDeletionTime, timestamp);
}
public RangeTombstone makeRangeTombstone(ColumnSlice slice) throws InvalidRequestException
@@ -78,12 +78,12 @@ public class UpdateParameters
return new RangeTombstone(slice.start, slice.finish, timestamp - 1, localDeletionTime);
}
- public List<Column> getPrefetchedList(ByteBuffer rowKey, ColumnIdentifier cql3ColumnName)
+ public List<Cell> getPrefetchedList(ByteBuffer rowKey, ColumnIdentifier cql3ColumnName)
{
if (prefetchedLists == null)
return Collections.emptyList();
CQL3Row row = prefetchedLists.get(rowKey);
- return row == null ? Collections.<Column>emptyList() : row.getCollection(cql3ColumnName);
+ return row == null ? Collections.<Cell>emptyList() : row.getCollection(cql3ColumnName);
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java b/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java
index d1452d2..eb52a13 100644
--- a/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java
@@ -106,7 +106,7 @@ public class AlterTableStatement extends SchemaAlteringStatement
case ALTER:
if (def == null)
- throw new InvalidRequestException(String.format("Column %s was not found in table %s", columnName, columnFamily()));
+ throw new InvalidRequestException(String.format("Cell %s was not found in table %s", columnName, columnFamily()));
switch (def.kind)
{
@@ -181,7 +181,7 @@ public class AlterTableStatement extends SchemaAlteringStatement
if (!cfm.isCQL3Table())
throw new InvalidRequestException("Cannot drop columns from a non-CQL3 CF");
if (def == null)
- throw new InvalidRequestException(String.format("Column %s was not found in table %s", columnName, columnFamily()));
+ throw new InvalidRequestException(String.format("Cell %s was not found in table %s", columnName, columnFamily()));
switch (def.kind)
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
index d9b4e04..b29a044 100644
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
@@ -808,7 +808,7 @@ public class SelectStatement implements CQLStatement, MeasurableForPreparedCache
return value;
}
- private Iterator<Column> applySliceRestriction(final Iterator<Column> cells, final List<ByteBuffer> variables) throws InvalidRequestException
+ private Iterator<Cell> applySliceRestriction(final Iterator<Cell> cells, final List<ByteBuffer> variables) throws InvalidRequestException
{
assert sliceRestriction != null;
@@ -816,14 +816,14 @@ public class SelectStatement implements CQLStatement, MeasurableForPreparedCache
final CellName excludedStart = sliceRestriction.isInclusive(Bound.START) ? null : type.makeCellName(sliceRestriction.bound(Bound.START, variables));
final CellName excludedEnd = sliceRestriction.isInclusive(Bound.END) ? null : type.makeCellName(sliceRestriction.bound(Bound.END, variables));
- return new AbstractIterator<Column>()
+ return new AbstractIterator<Cell>()
{
- protected Column computeNext()
+ protected Cell computeNext()
{
if (!cells.hasNext())
return endOfData();
- Column c = cells.next();
+ Cell c = cells.next();
// For dynamic CF, the column could be out of the requested bounds (because we don't support strict bounds internally (unless
// the comparator is composite that is)), filter here
@@ -876,7 +876,7 @@ public class SelectStatement implements CQLStatement, MeasurableForPreparedCache
keyComponents = new ByteBuffer[]{ key };
}
- Iterator<Column> cells = cf.getSortedColumns().iterator();
+ Iterator<Cell> cells = cf.getSortedColumns().iterator();
if (sliceRestriction != null)
cells = applySliceRestriction(cells, variables);
@@ -903,7 +903,7 @@ public class SelectStatement implements CQLStatement, MeasurableForPreparedCache
case REGULAR:
if (def.type.isCollection())
{
- List<Column> collection = cql3Row.getCollection(def.name);
+ List<Cell> collection = cql3Row.getCollection(def.name);
ByteBuffer value = collection == null
? null
: ((CollectionType)def.type).serialize(collection);
@@ -1325,7 +1325,7 @@ public class SelectStatement implements CQLStatement, MeasurableForPreparedCache
Boolean isReversed = null;
for (Boolean b : reversedMap)
{
- // Column on which order is specified can be in any order
+ // Cell on which order is specified can be in any order
if (b == null)
continue;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/src/java/org/apache/cassandra/cql3/statements/Selection.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/Selection.java b/src/java/org/apache/cassandra/cql3/statements/Selection.java
index 6a8cfe6..f8b3f52 100644
--- a/src/java/org/apache/cassandra/cql3/statements/Selection.java
+++ b/src/java/org/apache/cassandra/cql3/statements/Selection.java
@@ -28,9 +28,9 @@ import org.apache.cassandra.cql3.functions.Function;
import org.apache.cassandra.cql3.functions.Functions;
import org.apache.cassandra.config.CFMetaData;
import org.apache.cassandra.config.ColumnDefinition;
-import org.apache.cassandra.db.CounterColumn;
-import org.apache.cassandra.db.ExpiringColumn;
-import org.apache.cassandra.db.Column;
+import org.apache.cassandra.db.Cell;
+import org.apache.cassandra.db.CounterCell;
+import org.apache.cassandra.db.ExpiringCell;
import org.apache.cassandra.db.context.CounterContext;
import org.apache.cassandra.db.marshal.AbstractType;
import org.apache.cassandra.db.marshal.Int32Type;
@@ -247,9 +247,9 @@ public abstract class Selection
return new ResultSetBuilder(now);
}
- private static ByteBuffer value(Column c)
+ private static ByteBuffer value(Cell c)
{
- return (c instanceof CounterColumn)
+ return (c instanceof CounterCell)
? ByteBufferUtil.bytes(CounterContext.instance().total(c.value()))
: c.value();
}
@@ -284,7 +284,7 @@ public abstract class Selection
current.add(v);
}
- public void add(Column c)
+ public void add(Cell c)
{
current.add(isDead(c) ? null : value(c));
if (timestamps != null)
@@ -294,13 +294,13 @@ public abstract class Selection
if (ttls != null)
{
int ttl = -1;
- if (!isDead(c) && c instanceof ExpiringColumn)
+ if (!isDead(c) && c instanceof ExpiringCell)
ttl = c.getLocalDeletionTime() - (int) (now / 1000);
ttls[current.size() - 1] = ttl;
}
}
- private boolean isDead(Column c)
+ private boolean isDead(Cell c)
{
return c == null || c.isMarkedForDelete(now);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/src/java/org/apache/cassandra/db/ArrayBackedSortedColumns.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ArrayBackedSortedColumns.java b/src/java/org/apache/cassandra/db/ArrayBackedSortedColumns.java
index 432b47e..5d5178c 100644
--- a/src/java/org/apache/cassandra/db/ArrayBackedSortedColumns.java
+++ b/src/java/org/apache/cassandra/db/ArrayBackedSortedColumns.java
@@ -35,13 +35,13 @@ import org.apache.cassandra.utils.Allocator;
* A ColumnFamily backed by an ArrayList.
* This implementation is not synchronized and should only be used when
* thread-safety is not required. This implementation makes sense when the
- * main operations performed are iterating over the map and adding columns
+ * main operations performed are iterating over the map and adding cells
* (especially if insertion is in sorted order).
*/
public class ArrayBackedSortedColumns extends AbstractThreadUnsafeSortedColumns
{
private final boolean reversed;
- private final ArrayList<Column> columns;
+ private final ArrayList<Cell> cells;
public static final ColumnFamily.Factory<ArrayBackedSortedColumns> factory = new Factory<ArrayBackedSortedColumns>()
{
@@ -55,14 +55,14 @@ public class ArrayBackedSortedColumns extends AbstractThreadUnsafeSortedColumns
{
super(metadata);
this.reversed = reversed;
- this.columns = new ArrayList<Column>();
+ this.cells = new ArrayList<Cell>();
}
- private ArrayBackedSortedColumns(Collection<Column> columns, CFMetaData metadata, boolean reversed)
+ private ArrayBackedSortedColumns(Collection<Cell> cells, CFMetaData metadata, boolean reversed)
{
super(metadata);
this.reversed = reversed;
- this.columns = new ArrayList<Column>(columns);
+ this.cells = new ArrayList<Cell>(cells);
}
public ColumnFamily.Factory getFactory()
@@ -72,7 +72,7 @@ public class ArrayBackedSortedColumns extends AbstractThreadUnsafeSortedColumns
public ColumnFamily cloneMe()
{
- return new ArrayBackedSortedColumns(columns, metadata, reversed);
+ return new ArrayBackedSortedColumns(cells, metadata, reversed);
}
public boolean isInsertReversed()
@@ -85,15 +85,15 @@ public class ArrayBackedSortedColumns extends AbstractThreadUnsafeSortedColumns
return reversed ? getComparator().reverseComparator() : getComparator();
}
- public Column getColumn(CellName name)
+ public Cell getColumn(CellName name)
{
int pos = binarySearch(name);
- return pos >= 0 ? columns.get(pos) : null;
+ return pos >= 0 ? cells.get(pos) : null;
}
/**
- * AddColumn throws an exception if the column added does not sort after
- * the last column in the map.
+ * AddColumn throws an exception if the cell added does not sort after
+ * the last cell in the map.
* The reasoning is that this implementation can get slower if too much
* insertions are done in unsorted order and right now we only use it when
* *all* insertion (with this method) are done in sorted order. The
@@ -101,37 +101,37 @@ public class ArrayBackedSortedColumns extends AbstractThreadUnsafeSortedColumns
* without knowing about (we can revisit that decision later if we have
* use cases where most insert are in sorted order but a few are not).
*/
- public void addColumn(Column column, Allocator allocator)
+ public void addColumn(Cell cell, Allocator allocator)
{
- if (columns.isEmpty())
+ if (cells.isEmpty())
{
- columns.add(column);
+ cells.add(cell);
return;
}
// Fast path if inserting at the tail
- int c = internalComparator().compare(columns.get(getColumnCount() - 1).name(), column.name());
+ int c = internalComparator().compare(cells.get(getColumnCount() - 1).name(), cell.name());
// note that we want an assertion here (see addColumn javadoc), but we also want that if
// assertion are disabled, addColumn works correctly with unsorted input
- assert c <= 0 : "Added column does not sort as the " + (reversed ? "first" : "last") + " column";
+ assert c <= 0 : "Added cell does not sort as the " + (reversed ? "first" : "last") + " cell";
if (c < 0)
{
// Insert as last
- columns.add(column);
+ cells.add(cell);
}
else if (c == 0)
{
// Resolve against last
- resolveAgainst(getColumnCount() - 1, column, allocator);
+ resolveAgainst(getColumnCount() - 1, cell, allocator);
}
else
{
- int pos = binarySearch(column.name());
+ int pos = binarySearch(cell.name());
if (pos >= 0)
- resolveAgainst(pos, column, allocator);
+ resolveAgainst(pos, cell, allocator);
else
- columns.add(-pos-1, column);
+ cells.add(-pos-1, cell);
}
}
@@ -139,36 +139,36 @@ public class ArrayBackedSortedColumns extends AbstractThreadUnsafeSortedColumns
* Resolve against element at position i.
* Assume that i is a valid position.
*/
- private void resolveAgainst(int i, Column column, Allocator allocator)
+ private void resolveAgainst(int i, Cell cell, Allocator allocator)
{
- Column oldColumn = columns.get(i);
+ Cell oldCell = cells.get(i);
// calculate reconciled col from old (existing) col and new col
- Column reconciledColumn = column.reconcile(oldColumn, allocator);
- columns.set(i, reconciledColumn);
+ Cell reconciledCell = cell.reconcile(oldCell, allocator);
+ cells.set(i, reconciledCell);
}
private int binarySearch(CellName name)
{
- return binarySearch(columns, internalComparator(), name, 0);
+ return binarySearch(cells, internalComparator(), name, 0);
}
/**
* Simple binary search for a given column name.
* The return value has the exact same meaning that the one of Collections.binarySearch().
* (We don't use Collections.binarySearch() directly because it would require us to create
- * a fake Column (as well as an Column comparator) to do the search, which is ugly.
+ * a fake Cell (as well as an Cell comparator) to do the search, which is ugly.
*/
- private static int binarySearch(List<Column> columns, Comparator<Composite> comparator, Composite name, int start)
+ private static int binarySearch(List<Cell> cells, Comparator<Composite> comparator, Composite name, int start)
{
int low = start;
- int mid = columns.size();
+ int mid = cells.size();
int high = mid - 1;
int result = -1;
while (low <= high)
{
mid = (low + high) >> 1;
- if ((result = comparator.compare(name, columns.get(mid).name())) > 0)
+ if ((result = comparator.compare(name, cells.get(mid).name())) > 0)
{
low = mid + 1;
}
@@ -184,71 +184,71 @@ public class ArrayBackedSortedColumns extends AbstractThreadUnsafeSortedColumns
return -mid - (result < 0 ? 1 : 2);
}
- public void addAll(ColumnFamily cm, Allocator allocator, Function<Column, Column> transformation)
+ public void addAll(ColumnFamily cm, Allocator allocator, Function<Cell, Cell> transformation)
{
delete(cm.deletionInfo());
if (cm.getColumnCount() == 0)
return;
- Column[] copy = columns.toArray(new Column[getColumnCount()]);
+ Cell[] copy = cells.toArray(new Cell[getColumnCount()]);
int idx = 0;
- Iterator<Column> other = reversed ? cm.reverseIterator(ColumnSlice.ALL_COLUMNS_ARRAY) : cm.iterator();
- Column otherColumn = other.next();
+ Iterator<Cell> other = reversed ? cm.reverseIterator(ColumnSlice.ALL_COLUMNS_ARRAY) : cm.iterator();
+ Cell otherCell = other.next();
- columns.clear();
+ cells.clear();
- while (idx < copy.length && otherColumn != null)
+ while (idx < copy.length && otherCell != null)
{
- int c = internalComparator().compare(copy[idx].name(), otherColumn.name());
+ int c = internalComparator().compare(copy[idx].name(), otherCell.name());
if (c < 0)
{
- columns.add(copy[idx]);
+ cells.add(copy[idx]);
idx++;
}
else if (c > 0)
{
- columns.add(transformation.apply(otherColumn));
- otherColumn = other.hasNext() ? other.next() : null;
+ cells.add(transformation.apply(otherCell));
+ otherCell = other.hasNext() ? other.next() : null;
}
else // c == 0
{
- columns.add(copy[idx]);
- resolveAgainst(getColumnCount() - 1, transformation.apply(otherColumn), allocator);
+ cells.add(copy[idx]);
+ resolveAgainst(getColumnCount() - 1, transformation.apply(otherCell), allocator);
idx++;
- otherColumn = other.hasNext() ? other.next() : null;
+ otherCell = other.hasNext() ? other.next() : null;
}
}
while (idx < copy.length)
{
- columns.add(copy[idx++]);
+ cells.add(copy[idx++]);
}
- while (otherColumn != null)
+ while (otherCell != null)
{
- columns.add(transformation.apply(otherColumn));
- otherColumn = other.hasNext() ? other.next() : null;
+ cells.add(transformation.apply(otherCell));
+ otherCell = other.hasNext() ? other.next() : null;
}
}
- public boolean replace(Column oldColumn, Column newColumn)
+ public boolean replace(Cell oldCell, Cell newCell)
{
- if (!oldColumn.name().equals(newColumn.name()))
+ if (!oldCell.name().equals(newCell.name()))
throw new IllegalArgumentException();
- int pos = binarySearch(oldColumn.name());
+ int pos = binarySearch(oldCell.name());
if (pos >= 0)
{
- columns.set(pos, newColumn);
+ cells.set(pos, newCell);
}
return pos >= 0;
}
- public Collection<Column> getSortedColumns()
+ public Collection<Cell> getSortedColumns()
{
- return reversed ? new ReverseSortedCollection() : columns;
+ return reversed ? new ReverseSortedCollection() : cells;
}
- public Collection<Column> getReverseSortedColumns()
+ public Collection<Cell> getReverseSortedColumns()
{
// If reversed, the element are sorted reversely, so we could expect
// to return *this*, but *this* redefine the iterator to be in sorted
@@ -258,59 +258,59 @@ public class ArrayBackedSortedColumns extends AbstractThreadUnsafeSortedColumns
public int getColumnCount()
{
- return columns.size();
+ return cells.size();
}
public void clear()
{
setDeletionInfo(DeletionInfo.live());
- columns.clear();
+ cells.clear();
}
public Iterable<CellName> getColumnNames()
{
- return Iterables.transform(columns, new Function<Column, CellName>()
+ return Iterables.transform(cells, new Function<Cell, CellName>()
{
- public CellName apply(Column column)
+ public CellName apply(Cell cell)
{
- return column.name;
+ return cell.name;
}
});
}
- public Iterator<Column> iterator()
+ public Iterator<Cell> iterator()
{
- return reversed ? Lists.reverse(columns).iterator() : columns.iterator();
+ return reversed ? Lists.reverse(cells).iterator() : cells.iterator();
}
- public Iterator<Column> iterator(ColumnSlice[] slices)
+ public Iterator<Cell> iterator(ColumnSlice[] slices)
{
- return new SlicesIterator(columns, getComparator(), slices, reversed);
+ return new SlicesIterator(cells, getComparator(), slices, reversed);
}
- public Iterator<Column> reverseIterator(ColumnSlice[] slices)
+ public Iterator<Cell> reverseIterator(ColumnSlice[] slices)
{
- return new SlicesIterator(columns, getComparator(), slices, !reversed);
+ return new SlicesIterator(cells, getComparator(), slices, !reversed);
}
- private static class SlicesIterator extends AbstractIterator<Column>
+ private static class SlicesIterator extends AbstractIterator<Cell>
{
- private final List<Column> list;
+ private final List<Cell> list;
private final ColumnSlice[] slices;
private final Comparator<Composite> comparator;
private int idx = 0;
private int previousSliceEnd = 0;
- private Iterator<Column> currentSlice;
+ private Iterator<Cell> currentSlice;
- public SlicesIterator(List<Column> list, CellNameType comparator, ColumnSlice[] slices, boolean reversed)
+ public SlicesIterator(List<Cell> list, CellNameType comparator, ColumnSlice[] slices, boolean reversed)
{
this.list = reversed ? Lists.reverse(list) : list;
this.slices = slices;
this.comparator = reversed ? comparator.reverseComparator() : comparator;
}
- protected Column computeNext()
+ protected Cell computeNext()
{
if (currentSlice == null)
{
@@ -346,16 +346,16 @@ public class ArrayBackedSortedColumns extends AbstractThreadUnsafeSortedColumns
}
}
- private class ReverseSortedCollection extends AbstractCollection<Column>
+ private class ReverseSortedCollection extends AbstractCollection<Cell>
{
public int size()
{
- return columns.size();
+ return cells.size();
}
- public Iterator<Column> iterator()
+ public Iterator<Cell> iterator()
{
- return new Iterator<Column>()
+ return new Iterator<Cell>()
{
int idx = size() - 1;
@@ -364,29 +364,29 @@ public class ArrayBackedSortedColumns extends AbstractThreadUnsafeSortedColumns
return idx >= 0;
}
- public Column next()
+ public Cell next()
{
- return columns.get(idx--);
+ return cells.get(idx--);
}
public void remove()
{
- columns.remove(idx--);
+ cells.remove(idx--);
}
};
}
}
- private class ForwardSortedCollection extends AbstractCollection<Column>
+ private class ForwardSortedCollection extends AbstractCollection<Cell>
{
public int size()
{
- return columns.size();
+ return cells.size();
}
- public Iterator<Column> iterator()
+ public Iterator<Cell> iterator()
{
- return columns.iterator();
+ return cells.iterator();
}
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/src/java/org/apache/cassandra/db/AtomicSortedColumns.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/AtomicSortedColumns.java b/src/java/org/apache/cassandra/db/AtomicSortedColumns.java
index 5056c26..6e4fd01 100644
--- a/src/java/org/apache/cassandra/db/AtomicSortedColumns.java
+++ b/src/java/org/apache/cassandra/db/AtomicSortedColumns.java
@@ -135,19 +135,19 @@ public class AtomicSortedColumns extends ColumnFamily
}
}
- public void addColumn(Column column, Allocator allocator)
+ public void addColumn(Cell cell, Allocator allocator)
{
Holder current, modified;
do
{
current = ref.get();
modified = current.cloneMe();
- modified.addColumn(column, allocator, SecondaryIndexManager.nullUpdater);
+ modified.addColumn(cell, allocator, SecondaryIndexManager.nullUpdater);
}
while (!ref.compareAndSet(current, modified));
}
- public void addAll(ColumnFamily cm, Allocator allocator, Function<Column, Column> transformation)
+ public void addAll(ColumnFamily cm, Allocator allocator, Function<Cell, Cell> transformation)
{
addAllWithSizeDelta(cm, allocator, transformation, SecondaryIndexManager.nullUpdater);
}
@@ -157,7 +157,7 @@ public class AtomicSortedColumns extends ColumnFamily
*
* @return the difference in size seen after merging the given columns
*/
- public long addAllWithSizeDelta(ColumnFamily cm, Allocator allocator, Function<Column, Column> transformation, SecondaryIndexManager.Updater indexer)
+ public long addAllWithSizeDelta(ColumnFamily cm, Allocator allocator, Function<Cell, Cell> transformation, SecondaryIndexManager.Updater indexer)
{
/*
* This operation needs to atomicity and isolation. To that end, we
@@ -183,16 +183,16 @@ public class AtomicSortedColumns extends ColumnFamily
if (cm.deletionInfo().hasRanges())
{
- for (Column currentColumn : Iterables.concat(current.map.values(), cm))
+ for (Cell currentCell : Iterables.concat(current.map.values(), cm))
{
- if (cm.deletionInfo().isDeleted(currentColumn))
- indexer.remove(currentColumn);
+ if (cm.deletionInfo().isDeleted(currentCell))
+ indexer.remove(currentCell);
}
}
- for (Column column : cm)
+ for (Cell cell : cm)
{
- sizeDelta += modified.addColumn(transformation.apply(column), allocator, indexer);
+ sizeDelta += modified.addColumn(transformation.apply(cell), allocator, indexer);
// bail early if we know we've been beaten
if (ref.get() != current)
continue main_loop;
@@ -205,9 +205,9 @@ public class AtomicSortedColumns extends ColumnFamily
return sizeDelta;
}
- public boolean replace(Column oldColumn, Column newColumn)
+ public boolean replace(Cell oldCell, Cell newCell)
{
- if (!oldColumn.name().equals(newColumn.name()))
+ if (!oldCell.name().equals(newCell.name()))
throw new IllegalArgumentException();
Holder current, modified;
@@ -216,7 +216,7 @@ public class AtomicSortedColumns extends ColumnFamily
{
current = ref.get();
modified = current.cloneMe();
- replaced = modified.map.replace(oldColumn.name(), oldColumn, newColumn);
+ replaced = modified.map.replace(oldCell.name(), oldCell, newCell);
}
while (!ref.compareAndSet(current, modified));
return replaced;
@@ -233,7 +233,7 @@ public class AtomicSortedColumns extends ColumnFamily
while (!ref.compareAndSet(current, modified));
}
- public Column getColumn(CellName name)
+ public Cell getColumn(CellName name)
{
return ref.get().map.get(name);
}
@@ -243,12 +243,12 @@ public class AtomicSortedColumns extends ColumnFamily
return ref.get().map.keySet();
}
- public Collection<Column> getSortedColumns()
+ public Collection<Cell> getSortedColumns()
{
return ref.get().map.values();
}
- public Collection<Column> getReverseSortedColumns()
+ public Collection<Cell> getReverseSortedColumns()
{
return ref.get().map.descendingMap().values();
}
@@ -258,12 +258,12 @@ public class AtomicSortedColumns extends ColumnFamily
return ref.get().map.size();
}
- public Iterator<Column> iterator(ColumnSlice[] slices)
+ public Iterator<Cell> iterator(ColumnSlice[] slices)
{
return new ColumnSlice.NavigableMapIterator(ref.get().map, slices);
}
- public Iterator<Column> reverseIterator(ColumnSlice[] slices)
+ public Iterator<Cell> reverseIterator(ColumnSlice[] slices)
{
return new ColumnSlice.NavigableMapIterator(ref.get().map.descendingMap(), slices);
}
@@ -279,15 +279,15 @@ public class AtomicSortedColumns extends ColumnFamily
// so we can safely alias one DeletionInfo.live() reference and avoid some allocations.
private static final DeletionInfo LIVE = DeletionInfo.live();
- final SnapTreeMap<CellName, Column> map;
+ final SnapTreeMap<CellName, Cell> map;
final DeletionInfo deletionInfo;
Holder(CellNameType comparator)
{
- this(new SnapTreeMap<CellName, Column>(comparator), LIVE);
+ this(new SnapTreeMap<CellName, Cell>(comparator), LIVE);
}
- Holder(SnapTreeMap<CellName, Column> map, DeletionInfo deletionInfo)
+ Holder(SnapTreeMap<CellName, Cell> map, DeletionInfo deletionInfo)
{
this.map = map;
this.deletionInfo = deletionInfo;
@@ -303,7 +303,7 @@ public class AtomicSortedColumns extends ColumnFamily
return new Holder(map, info);
}
- Holder with(SnapTreeMap<CellName, Column> newMap)
+ Holder with(SnapTreeMap<CellName, Cell> newMap)
{
return new Holder(newMap, deletionInfo);
}
@@ -312,33 +312,33 @@ public class AtomicSortedColumns extends ColumnFamily
// afterwards.
Holder clear()
{
- return new Holder(new SnapTreeMap<CellName, Column>(map.comparator()), LIVE);
+ return new Holder(new SnapTreeMap<CellName, Cell>(map.comparator()), LIVE);
}
- long addColumn(Column column, Allocator allocator, SecondaryIndexManager.Updater indexer)
+ long addColumn(Cell cell, Allocator allocator, SecondaryIndexManager.Updater indexer)
{
- CellName name = column.name();
+ CellName name = cell.name();
while (true)
{
- Column oldColumn = map.putIfAbsent(name, column);
- if (oldColumn == null)
+ Cell oldCell = map.putIfAbsent(name, cell);
+ if (oldCell == null)
{
- indexer.insert(column);
- return column.dataSize();
+ indexer.insert(cell);
+ return cell.dataSize();
}
- Column reconciledColumn = column.reconcile(oldColumn, allocator);
- if (map.replace(name, oldColumn, reconciledColumn))
+ Cell reconciledCell = cell.reconcile(oldCell, allocator);
+ if (map.replace(name, oldCell, reconciledCell))
{
// for memtable updates we only care about oldcolumn, reconciledcolumn, but when compacting
// we need to make sure we update indexes no matter the order we merge
- if (reconciledColumn == column)
- indexer.update(oldColumn, reconciledColumn);
+ if (reconciledCell == cell)
+ indexer.update(oldCell, reconciledCell);
else
- indexer.update(column, reconciledColumn);
- return reconciledColumn.dataSize() - oldColumn.dataSize();
+ indexer.update(cell, reconciledCell);
+ return reconciledCell.dataSize() - oldCell.dataSize();
}
- // We failed to replace column due to a concurrent update or a concurrent removal. Keep trying.
+ // We failed to replace cell due to a concurrent update or a concurrent removal. Keep trying.
// (Currently, concurrent removal should not happen (only updates), but let us support that anyway.)
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/src/java/org/apache/cassandra/db/BatchlogManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/BatchlogManager.java b/src/java/org/apache/cassandra/db/BatchlogManager.java
index 9bc857b..24fb0c5 100644
--- a/src/java/org/apache/cassandra/db/BatchlogManager.java
+++ b/src/java/org/apache/cassandra/db/BatchlogManager.java
@@ -128,9 +128,9 @@ public class BatchlogManager implements BatchlogManagerMBean
ByteBuffer data = serializeRowMutations(mutations);
ColumnFamily cf = ArrayBackedSortedColumns.factory.create(CFMetaData.BatchlogCf);
- cf.addColumn(new Column(cellName(""), ByteBufferUtil.EMPTY_BYTE_BUFFER, timestamp));
- cf.addColumn(new Column(cellName("data"), data, timestamp));
- cf.addColumn(new Column(cellName("written_at"), writtenAt, timestamp));
+ cf.addColumn(new Cell(cellName(""), ByteBufferUtil.EMPTY_BYTE_BUFFER, timestamp));
+ cf.addColumn(new Cell(cellName("data"), data, timestamp));
+ cf.addColumn(new Cell(cellName("written_at"), writtenAt, timestamp));
return new RowMutation(Keyspace.SYSTEM_KS, UUIDType.instance.decompose(uuid), cf);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/src/java/org/apache/cassandra/db/CFRowAdder.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/CFRowAdder.java b/src/java/org/apache/cassandra/db/CFRowAdder.java
index 7c70cf6..4247822 100644
--- a/src/java/org/apache/cassandra/db/CFRowAdder.java
+++ b/src/java/org/apache/cassandra/db/CFRowAdder.java
@@ -47,7 +47,7 @@ public class CFRowAdder
// If a CQL3 table, add the row marker
if (cf.metadata().isCQL3Table())
- cf.addColumn(new Column(cf.getComparator().rowMarker(prefix), ByteBufferUtil.EMPTY_BYTE_BUFFER, timestamp));
+ cf.addColumn(new Cell(cf.getComparator().rowMarker(prefix), ByteBufferUtil.EMPTY_BYTE_BUFFER, timestamp));
}
public CFRowAdder add(String cql3ColumnName, Object value)
@@ -73,9 +73,9 @@ public class CFRowAdder
private CFRowAdder add(CellName name, ColumnDefinition def, Object value)
{
if (value == null)
- cf.addColumn(new DeletedColumn(name, ldt, timestamp));
+ cf.addColumn(new DeletedCell(name, ldt, timestamp));
else
- cf.addColumn(new Column(name, ((AbstractType)def.type).decompose(value), timestamp));
+ cf.addColumn(new Cell(name, ((AbstractType)def.type).decompose(value), timestamp));
return this;
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/src/java/org/apache/cassandra/db/Cell.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/Cell.java b/src/java/org/apache/cassandra/db/Cell.java
new file mode 100644
index 0000000..537a744
--- /dev/null
+++ b/src/java/org/apache/cassandra/db/Cell.java
@@ -0,0 +1,310 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cassandra.db;
+
+import java.io.DataInput;
+import java.io.IOError;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.security.MessageDigest;
+import java.util.Iterator;
+
+import com.google.common.collect.AbstractIterator;
+
+import org.apache.cassandra.config.CFMetaData;
+import org.apache.cassandra.db.composites.CellName;
+import org.apache.cassandra.db.composites.CellNameType;
+import org.apache.cassandra.db.marshal.*;
+import org.apache.cassandra.io.sstable.Descriptor;
+import org.apache.cassandra.io.util.DataOutputBuffer;
+import org.apache.cassandra.serializers.MarshalException;
+import org.apache.cassandra.utils.Allocator;
+import org.apache.cassandra.utils.ByteBufferUtil;
+import org.apache.cassandra.utils.FBUtilities;
+import org.apache.cassandra.utils.HeapAllocator;
+
+/**
+ * Cell is immutable, which prevents all kinds of confusion in a multithreaded environment.
+ */
+public class Cell implements OnDiskAtom
+{
+ public static final int MAX_NAME_LENGTH = FBUtilities.MAX_UNSIGNED_SHORT;
+
+ /**
+ * For 2.0-formatted sstables (where column count is not stored), @param count should be Integer.MAX_VALUE,
+ * and we will look for the end-of-row column name marker instead of relying on that.
+ */
+ public static Iterator<OnDiskAtom> onDiskIterator(final DataInput in,
+ final int count,
+ final ColumnSerializer.Flag flag,
+ final int expireBefore,
+ final Descriptor.Version version,
+ final CellNameType type)
+ {
+ return new AbstractIterator<OnDiskAtom>()
+ {
+ int i = 0;
+
+ protected OnDiskAtom computeNext()
+ {
+ if (i++ >= count)
+ return endOfData();
+
+ OnDiskAtom atom;
+ try
+ {
+ atom = type.onDiskAtomSerializer().deserializeFromSSTable(in, flag, expireBefore, version);
+ }
+ catch (IOException e)
+ {
+ throw new IOError(e);
+ }
+ if (atom == null)
+ return endOfData();
+
+ return atom;
+ }
+ };
+ }
+
+ protected final CellName name;
+ protected final ByteBuffer value;
+ protected final long timestamp;
+
+ Cell(CellName name)
+ {
+ this(name, ByteBufferUtil.EMPTY_BYTE_BUFFER);
+ }
+
+ public Cell(CellName name, ByteBuffer value)
+ {
+ this(name, value, 0);
+ }
+
+ public Cell(CellName name, ByteBuffer value, long timestamp)
+ {
+ assert name != null;
+ assert value != null;
+ this.name = name;
+ this.value = value;
+ this.timestamp = timestamp;
+ }
+
+ public Cell withUpdatedName(CellName newName)
+ {
+ return new Cell(newName, value, timestamp);
+ }
+
+ public Cell withUpdatedTimestamp(long newTimestamp)
+ {
+ return new Cell(name, value, newTimestamp);
+ }
+
+ public CellName name()
+ {
+ return name;
+ }
+
+ public ByteBuffer value()
+ {
+ return value;
+ }
+
+ public long timestamp()
+ {
+ return timestamp;
+ }
+
+ public long minTimestamp()
+ {
+ return timestamp;
+ }
+
+ public long maxTimestamp()
+ {
+ return timestamp;
+ }
+
+ public boolean isMarkedForDelete(long now)
+ {
+ return false;
+ }
+
+ public boolean isLive(long now)
+ {
+ return !isMarkedForDelete(now);
+ }
+
+ // Don't call unless the column is actually marked for delete.
+ public long getMarkedForDeleteAt()
+ {
+ return Long.MAX_VALUE;
+ }
+
+ public int dataSize()
+ {
+ return name().dataSize() + value.remaining() + TypeSizes.NATIVE.sizeof(timestamp);
+ }
+
+ public int serializedSize(CellNameType type, TypeSizes typeSizes)
+ {
+ /*
+ * Size of a column is =
+ * size of a name (short + length of the string)
+ * + 1 byte to indicate if the column has been deleted
+ * + 8 bytes for timestamp
+ * + 4 bytes which basically indicates the size of the byte array
+ * + entire byte array.
+ */
+ int valueSize = value.remaining();
+ return ((int)type.cellSerializer().serializedSize(name, typeSizes)) + 1 + typeSizes.sizeof(timestamp) + typeSizes.sizeof(valueSize) + valueSize;
+ }
+
+ public int serializationFlags()
+ {
+ return 0;
+ }
+
+ public Cell diff(Cell cell)
+ {
+ if (timestamp() < cell.timestamp())
+ return cell;
+ return null;
+ }
+
+ public void updateDigest(MessageDigest digest)
+ {
+ digest.update(name.toByteBuffer().duplicate());
+ digest.update(value.duplicate());
+
+ DataOutputBuffer buffer = new DataOutputBuffer();
+ try
+ {
+ buffer.writeLong(timestamp);
+ buffer.writeByte(serializationFlags());
+ }
+ catch (IOException e)
+ {
+ throw new RuntimeException(e);
+ }
+ digest.update(buffer.getData(), 0, buffer.getLength());
+ }
+
+ public int getLocalDeletionTime()
+ {
+ return Integer.MAX_VALUE;
+ }
+
+ public Cell reconcile(Cell cell)
+ {
+ return reconcile(cell, HeapAllocator.instance);
+ }
+
+ public Cell reconcile(Cell cell, Allocator allocator)
+ {
+ // tombstones take precedence. (if both are tombstones, then it doesn't matter which one we use.)
+ if (isMarkedForDelete(System.currentTimeMillis()))
+ return timestamp() < cell.timestamp() ? cell : this;
+ if (cell.isMarkedForDelete(System.currentTimeMillis()))
+ return timestamp() > cell.timestamp() ? this : cell;
+ // break ties by comparing values.
+ if (timestamp() == cell.timestamp())
+ return value().compareTo(cell.value()) < 0 ? cell : this;
+ // neither is tombstoned and timestamps are different
+ return timestamp() < cell.timestamp() ? cell : this;
+ }
+
+ @Override
+ public boolean equals(Object o)
+ {
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ Cell cell = (Cell)o;
+
+ if (timestamp != cell.timestamp)
+ return false;
+ if (!name.equals(cell.name))
+ return false;
+
+ return value.equals(cell.value);
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int result = name != null ? name.hashCode() : 0;
+ result = 31 * result + (value != null ? value.hashCode() : 0);
+ result = 31 * result + (int)(timestamp ^ (timestamp >>> 32));
+ return result;
+ }
+
+ public Cell localCopy(ColumnFamilyStore cfs)
+ {
+ return localCopy(cfs, HeapAllocator.instance);
+ }
+
+ public Cell localCopy(ColumnFamilyStore cfs, Allocator allocator)
+ {
+ return new Cell(name.copy(allocator), allocator.clone(value), timestamp);
+ }
+
+ public String getString(CellNameType comparator)
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.append(comparator.getString(name));
+ sb.append(":");
+ sb.append(isMarkedForDelete(System.currentTimeMillis()));
+ sb.append(":");
+ sb.append(value.remaining());
+ sb.append("@");
+ sb.append(timestamp());
+ return sb.toString();
+ }
+
+ protected void validateName(CFMetaData metadata) throws MarshalException
+ {
+ metadata.comparator.validate(name());
+ }
+
+ public void validateFields(CFMetaData metadata) throws MarshalException
+ {
+ validateName(metadata);
+
+ AbstractType<?> valueValidator = metadata.getValueValidator(name());
+ if (valueValidator != null)
+ valueValidator.validate(value());
+ }
+
+ public boolean hasIrrelevantData(int gcBefore)
+ {
+ return getLocalDeletionTime() < gcBefore;
+ }
+
+ public static Cell create(CellName name, ByteBuffer value, long timestamp, int ttl, CFMetaData metadata)
+ {
+ if (ttl <= 0)
+ ttl = metadata.getDefaultTimeToLive();
+
+ return ttl > 0
+ ? new ExpiringCell(name, value, timestamp, ttl)
+ : new Cell(name, value, timestamp);
+ }
+}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/src/java/org/apache/cassandra/db/CollationController.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/CollationController.java b/src/java/org/apache/cassandra/db/CollationController.java
index 12f53db..c7c09bf 100644
--- a/src/java/org/apache/cassandra/db/CollationController.java
+++ b/src/java/org/apache/cassandra/db/CollationController.java
@@ -176,8 +176,8 @@ public class CollationController
for (Iterator<CellName> iterator = ((NamesQueryFilter) filter.filter).columns.iterator(); iterator.hasNext(); )
{
CellName filterColumn = iterator.next();
- Column column = container.getColumn(filterColumn);
- if (column != null && column.timestamp() > sstableTimestamp)
+ Cell cell = container.getColumn(filterColumn);
+ if (cell != null && cell.timestamp() > sstableTimestamp)
iterator.remove();
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e50d6af1/src/java/org/apache/cassandra/db/Column.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/Column.java b/src/java/org/apache/cassandra/db/Column.java
deleted file mode 100644
index 4be1eeb..0000000
--- a/src/java/org/apache/cassandra/db/Column.java
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.cassandra.db;
-
-import java.io.DataInput;
-import java.io.IOError;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.security.MessageDigest;
-import java.util.Iterator;
-
-import com.google.common.collect.AbstractIterator;
-
-import org.apache.cassandra.config.CFMetaData;
-import org.apache.cassandra.db.composites.CellName;
-import org.apache.cassandra.db.composites.CellNameType;
-import org.apache.cassandra.db.marshal.*;
-import org.apache.cassandra.io.sstable.Descriptor;
-import org.apache.cassandra.io.util.DataOutputBuffer;
-import org.apache.cassandra.serializers.MarshalException;
-import org.apache.cassandra.utils.Allocator;
-import org.apache.cassandra.utils.ByteBufferUtil;
-import org.apache.cassandra.utils.FBUtilities;
-import org.apache.cassandra.utils.HeapAllocator;
-
-/**
- * Column is immutable, which prevents all kinds of confusion in a multithreaded environment.
- */
-public class Column implements OnDiskAtom
-{
- public static final int MAX_NAME_LENGTH = FBUtilities.MAX_UNSIGNED_SHORT;
-
- /**
- * For 2.0-formatted sstables (where column count is not stored), @param count should be Integer.MAX_VALUE,
- * and we will look for the end-of-row column name marker instead of relying on that.
- */
- public static Iterator<OnDiskAtom> onDiskIterator(final DataInput in,
- final int count,
- final ColumnSerializer.Flag flag,
- final int expireBefore,
- final Descriptor.Version version,
- final CellNameType type)
- {
- return new AbstractIterator<OnDiskAtom>()
- {
- int i = 0;
-
- protected OnDiskAtom computeNext()
- {
- if (i++ >= count)
- return endOfData();
-
- OnDiskAtom atom;
- try
- {
- atom = type.onDiskAtomSerializer().deserializeFromSSTable(in, flag, expireBefore, version);
- }
- catch (IOException e)
- {
- throw new IOError(e);
- }
- if (atom == null)
- return endOfData();
-
- return atom;
- }
- };
- }
-
- protected final CellName name;
- protected final ByteBuffer value;
- protected final long timestamp;
-
- Column(CellName name)
- {
- this(name, ByteBufferUtil.EMPTY_BYTE_BUFFER);
- }
-
- public Column(CellName name, ByteBuffer value)
- {
- this(name, value, 0);
- }
-
- public Column(CellName name, ByteBuffer value, long timestamp)
- {
- assert name != null;
- assert value != null;
- this.name = name;
- this.value = value;
- this.timestamp = timestamp;
- }
-
- public Column withUpdatedName(CellName newName)
- {
- return new Column(newName, value, timestamp);
- }
-
- public Column withUpdatedTimestamp(long newTimestamp)
- {
- return new Column(name, value, newTimestamp);
- }
-
- public CellName name()
- {
- return name;
- }
-
- public ByteBuffer value()
- {
- return value;
- }
-
- public long timestamp()
- {
- return timestamp;
- }
-
- public long minTimestamp()
- {
- return timestamp;
- }
-
- public long maxTimestamp()
- {
- return timestamp;
- }
-
- public boolean isMarkedForDelete(long now)
- {
- return false;
- }
-
- public boolean isLive(long now)
- {
- return !isMarkedForDelete(now);
- }
-
- // Don't call unless the column is actually marked for delete.
- public long getMarkedForDeleteAt()
- {
- return Long.MAX_VALUE;
- }
-
- public int dataSize()
- {
- return name().dataSize() + value.remaining() + TypeSizes.NATIVE.sizeof(timestamp);
- }
-
- public int serializedSize(CellNameType type, TypeSizes typeSizes)
- {
- /*
- * Size of a column is =
- * size of a name (short + length of the string)
- * + 1 byte to indicate if the column has been deleted
- * + 8 bytes for timestamp
- * + 4 bytes which basically indicates the size of the byte array
- * + entire byte array.
- */
- int valueSize = value.remaining();
- return ((int)type.cellSerializer().serializedSize(name, typeSizes)) + 1 + typeSizes.sizeof(timestamp) + typeSizes.sizeof(valueSize) + valueSize;
- }
-
- public int serializationFlags()
- {
- return 0;
- }
-
- public Column diff(Column column)
- {
- if (timestamp() < column.timestamp())
- return column;
- return null;
- }
-
- public void updateDigest(MessageDigest digest)
- {
- digest.update(name.toByteBuffer().duplicate());
- digest.update(value.duplicate());
-
- DataOutputBuffer buffer = new DataOutputBuffer();
- try
- {
- buffer.writeLong(timestamp);
- buffer.writeByte(serializationFlags());
- }
- catch (IOException e)
- {
- throw new RuntimeException(e);
- }
- digest.update(buffer.getData(), 0, buffer.getLength());
- }
-
- public int getLocalDeletionTime()
- {
- return Integer.MAX_VALUE;
- }
-
- public Column reconcile(Column column)
- {
- return reconcile(column, HeapAllocator.instance);
- }
-
- public Column reconcile(Column column, Allocator allocator)
- {
- // tombstones take precedence. (if both are tombstones, then it doesn't matter which one we use.)
- if (isMarkedForDelete(System.currentTimeMillis()))
- return timestamp() < column.timestamp() ? column : this;
- if (column.isMarkedForDelete(System.currentTimeMillis()))
- return timestamp() > column.timestamp() ? this : column;
- // break ties by comparing values.
- if (timestamp() == column.timestamp())
- return value().compareTo(column.value()) < 0 ? column : this;
- // neither is tombstoned and timestamps are different
- return timestamp() < column.timestamp() ? column : this;
- }
-
- @Override
- public boolean equals(Object o)
- {
- if (this == o)
- return true;
- if (o == null || getClass() != o.getClass())
- return false;
-
- Column column = (Column)o;
-
- if (timestamp != column.timestamp)
- return false;
- if (!name.equals(column.name))
- return false;
-
- return value.equals(column.value);
- }
-
- @Override
- public int hashCode()
- {
- int result = name != null ? name.hashCode() : 0;
- result = 31 * result + (value != null ? value.hashCode() : 0);
- result = 31 * result + (int)(timestamp ^ (timestamp >>> 32));
- return result;
- }
-
- public Column localCopy(ColumnFamilyStore cfs)
- {
- return localCopy(cfs, HeapAllocator.instance);
- }
-
- public Column localCopy(ColumnFamilyStore cfs, Allocator allocator)
- {
- return new Column(name.copy(allocator), allocator.clone(value), timestamp);
- }
-
- public String getString(CellNameType comparator)
- {
- StringBuilder sb = new StringBuilder();
- sb.append(comparator.getString(name));
- sb.append(":");
- sb.append(isMarkedForDelete(System.currentTimeMillis()));
- sb.append(":");
- sb.append(value.remaining());
- sb.append("@");
- sb.append(timestamp());
- return sb.toString();
- }
-
- protected void validateName(CFMetaData metadata) throws MarshalException
- {
- metadata.comparator.validate(name());
- }
-
- public void validateFields(CFMetaData metadata) throws MarshalException
- {
- validateName(metadata);
-
- AbstractType<?> valueValidator = metadata.getValueValidator(name());
- if (valueValidator != null)
- valueValidator.validate(value());
- }
-
- public boolean hasIrrelevantData(int gcBefore)
- {
- return getLocalDeletionTime() < gcBefore;
- }
-
- public static Column create(CellName name, ByteBuffer value, long timestamp, int ttl, CFMetaData metadata)
- {
- if (ttl <= 0)
- ttl = metadata.getDefaultTimeToLive();
-
- return ttl > 0
- ? new ExpiringColumn(name, value, timestamp, ttl)
- : new Column(name, value, timestamp);
- }
-}