Merge branch 'cassandra-1.2' into cassandra-2.0 Conflicts: src/java/org/apache/cassandra/db/columniterator/IndexedSliceReader.java
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/4106f569 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/4106f569 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/4106f569 Branch: refs/heads/cassandra-2.0 Commit: 4106f56945a8bc82762338ff1737d387abe0060a Parents: 4bd8626 20a8050 Author: Sylvain Lebresne <sylv...@datastax.com> Authored: Thu Oct 3 11:10:35 2013 +0200 Committer: Sylvain Lebresne <sylv...@datastax.com> Committed: Thu Oct 3 11:10:35 2013 +0200 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../db/columniterator/IndexedSliceReader.java | 13 +- .../cassandra/db/ColumnFamilyStoreTest.java | 198 +++++++++++++++++++ 3 files changed, 209 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/4106f569/CHANGES.txt ---------------------------------------------------------------------- diff --cc CHANGES.txt index c1023f6,c1d1991..994e8c3 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -27,46 -10,12 +27,47 @@@ Merged from 1.2 * Do not open non-ssl storage port if encryption option is all (CASSANDRA-3916) * Move batchlog replay to its own executor (CASSANDRA-6079) * Add tombstone debug threshold and histogram (CASSANDRA-6042, 6057) + * Enable tcp keepalive on incoming connections (CASSANDRA-4053) * Fix fat client schema pull NPE (CASSANDRA-6089) * Fix memtable flushing for indexed tables (CASSANDRA-6112) + * Fix skipping columns with multiple slices (CASSANDRA-6119) -1.2.10 +2.0.1 + * Fix bug that could allow reading deleted data temporarily (CASSANDRA-6025) + * Improve memory use defaults (CASSANDRA-5069) + * Make ThriftServer more easlly extensible (CASSANDRA-6058) + * Remove Hadoop dependency from ITransportFactory (CASSANDRA-6062) + * add file_cache_size_in_mb setting (CASSANDRA-5661) + * Improve error message when yaml contains invalid properties (CASSANDRA-5958) + * Improve leveled compaction's ability to find non-overlapping L0 compactions + to work on concurrently (CASSANDRA-5921) + * Notify indexer of columns shadowed by range tombstones (CASSANDRA-5614) + * Log Merkle tree stats (CASSANDRA-2698) + * Switch from crc32 to adler32 for compressed sstable checksums (CASSANDRA-5862) + * Improve offheap memcpy performance (CASSANDRA-5884) + * Use a range aware scanner for cleanup (CASSANDRA-2524) + * Cleanup doesn't need to inspect sstables that contain only local data + (CASSANDRA-5722) + * Add ability for CQL3 to list partition keys (CASSANDRA-4536) + * Improve native protocol serialization (CASSANDRA-5664) + * Upgrade Thrift to 0.9.1 (CASSANDRA-5923) + * Require superuser status for adding triggers (CASSANDRA-5963) + * Make standalone scrubber handle old and new style leveled manifest + (CASSANDRA-6005) + * Fix paxos bugs (CASSANDRA-6012, 6013, 6023) + * Fix paged ranges with multiple replicas (CASSANDRA-6004) + * Fix potential AssertionError during tracing (CASSANDRA-6041) + * Fix NPE in sstablesplit (CASSANDRA-6027) + * Migrate pre-2.0 key/value/column aliases to system.schema_columns + (CASSANDRA-6009) + * Paging filter empty rows too agressively (CASSANDRA-6040) + * Support variadic parameters for IN clauses (CASSANDRA-4210) + * cqlsh: return the result of CAS writes (CASSANDRA-5796) + * Fix validation of IN clauses with 2ndary indexes (CASSANDRA-6050) + * Support named bind variables in CQL (CASSANDRA-6033) +Merged from 1.2: + * Allow cache-keys-to-save to be set at runtime (CASSANDRA-5980) * Avoid second-guessing out-of-space state (CASSANDRA-5605) * Tuning knobs for dealing with large blobs and many CFs (CASSANDRA-5982) * (Hadoop) Fix CQLRW for thrift tables (CASSANDRA-6002) http://git-wip-us.apache.org/repos/asf/cassandra/blob/4106f569/src/java/org/apache/cassandra/db/columniterator/IndexedSliceReader.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/db/columniterator/IndexedSliceReader.java index 27d307a,df916b2..036d0cf --- a/src/java/org/apache/cassandra/db/columniterator/IndexedSliceReader.java +++ b/src/java/org/apache/cassandra/db/columniterator/IndexedSliceReader.java @@@ -445,11 -464,19 +445,14 @@@ class IndexedSliceReader extends Abstra // We remenber when we are whithin a slice to avoid some comparison boolean inSlice = false; - OnDiskAtom.Serializer atomSerializer = emptyColumnFamily.getOnDiskSerializer(); - int columns = file.readInt(); - + int columnCount = sstable.descriptor.version.hasRowSizeAndColumnCount ? file.readInt() : Integer.MAX_VALUE; + Iterator<OnDiskAtom> atomIterator = emptyColumnFamily.metadata().getOnDiskIterator(file, columnCount, sstable.descriptor.version); - while (atomIterator.hasNext()) + OnDiskAtom column = null; - int i = 0; - while (i < columns || column != null) ++ while (atomIterator.hasNext() || column != null) { - OnDiskAtom column = atomIterator.next(); + // Only fetch a new column if we haven't dealt with the previous one. + if (column == null) - { - column = atomSerializer.deserializeFromSSTable(file, sstable.descriptor.version); - i++; - } ++ column = atomIterator.next(); // col is before slice // (If in slice, don't bother checking that until we change slice) http://git-wip-us.apache.org/repos/asf/cassandra/blob/4106f569/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java ----------------------------------------------------------------------