Updated Branches:
  refs/heads/trunk ad191c55d -> 9bb3441fe

Slightly simplify/optimize columns collation


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9bb3441f
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9bb3441f
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9bb3441f

Branch: refs/heads/trunk
Commit: 9bb3441fe23ddff2ccf12469860e37492e1092d6
Parents: ad191c5
Author: Sylvain Lebresne <sylv...@datastax.com>
Authored: Thu May 16 11:03:22 2013 +0200
Committer: Sylvain Lebresne <sylv...@datastax.com>
Committed: Thu May 16 11:03:22 2013 +0200

----------------------------------------------------------------------
 .../apache/cassandra/db/filter/QueryFilter.java    |   17 ++++++++------
 1 files changed, 10 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/9bb3441f/src/java/org/apache/cassandra/db/filter/QueryFilter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/filter/QueryFilter.java 
b/src/java/org/apache/cassandra/db/filter/QueryFilter.java
index e65e85a..8187294 100644
--- a/src/java/org/apache/cassandra/db/filter/QueryFilter.java
+++ b/src/java/org/apache/cassandra/db/filter/QueryFilter.java
@@ -25,6 +25,7 @@ import 
org.apache.cassandra.db.columniterator.OnDiskAtomIterator;
 import org.apache.cassandra.db.columniterator.IdentityQueryFilter;
 import org.apache.cassandra.io.sstable.SSTableReader;
 import org.apache.cassandra.io.util.FileDataInput;
+import org.apache.cassandra.utils.HeapAllocator;
 import org.apache.cassandra.utils.MergeIterator;
 
 public class QueryFilter
@@ -83,23 +84,25 @@ public class QueryFilter
 
     public void collateColumns(final ColumnFamily returnCF, List<? extends 
Iterator<Column>> toCollate, final int gcBefore)
     {
-        Comparator<Column> fcomp = 
filter.getColumnComparator(returnCF.getComparator());
+        final Comparator<Column> fcomp = 
filter.getColumnComparator(returnCF.getComparator());
         // define a 'reduced' iterator that merges columns w/ the same name, 
which
         // greatly simplifies computing liveColumns in the presence of 
tombstones.
         MergeIterator.Reducer<Column, Column> reducer = new 
MergeIterator.Reducer<Column, Column>()
         {
-            ColumnFamily curCF = returnCF.cloneMeShallow();
+            Column current;
 
-            public void reduce(Column current)
+            public void reduce(Column next)
             {
-                curCF.addColumn(current);
+                assert current == null || fcomp.compare(current, next) == 0;
+                current = current == null ? next : current.reconcile(next, 
HeapAllocator.instance);
             }
 
             protected Column getReduced()
             {
-                Column c = curCF.iterator().next();
-                curCF.clear();
-                return c;
+                assert current != null;
+                Column toReturn = current;
+                current = null;
+                return toReturn;
             }
         };
         Iterator<Column> reduced = MergeIterator.get(toCollate, fcomp, 
reducer);

Reply via email to