Assert !reversed in updateBlock and improve test

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

Branch: refs/heads/10903
Commit: e7c6e14fd2662c35310d1b27017aed75640ce002
Parents: bc887ac
Author: Sylvain Lebresne <sylv...@datastax.com>
Authored: Wed Dec 23 12:13:54 2015 +0100
Committer: Sylvain Lebresne <sylv...@datastax.com>
Committed: Wed Dec 23 12:18:38 2015 +0100

----------------------------------------------------------------------
 .../cassandra/db/columniterator/AbstractSSTableIterator.java     | 4 ++++
 .../org/apache/cassandra/cql3/QueryWithIndexedSSTableTest.java   | 4 ++++
 2 files changed, 8 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/e7c6e14f/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java 
b/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
index f103ee2..8ac3dcb 100644
--- 
a/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
+++ 
b/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java
@@ -443,8 +443,12 @@ abstract class AbstractSSTableIterator implements 
SliceableUnfilteredRowIterator
         }
 
         // Update the block idx based on the current reader position if we're 
past the current block.
+        // This only makes sense for forward iteration (for reverse ones, when 
we reach the end of a block we
+        // should seek to the previous one, not update the index state and 
continue).
         public void updateBlock() throws IOException
         {
+            assert !reversed;
+
             // If we get here with currentBlockIdx < 0, it means setToBlock() 
has never been called, so it means
             // we're about to read from the beginning of the partition, but 
haven't "prepared" the IndexState yet.
             // Do so by setting us on the first block.

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e7c6e14f/test/unit/org/apache/cassandra/cql3/QueryWithIndexedSSTableTest.java
----------------------------------------------------------------------
diff --git 
a/test/unit/org/apache/cassandra/cql3/QueryWithIndexedSSTableTest.java 
b/test/unit/org/apache/cassandra/cql3/QueryWithIndexedSSTableTest.java
index 00f0ca2..4838392 100644
--- a/test/unit/org/apache/cassandra/cql3/QueryWithIndexedSSTableTest.java
+++ b/test/unit/org/apache/cassandra/cql3/QueryWithIndexedSSTableTest.java
@@ -65,6 +65,10 @@ public class QueryWithIndexedSSTableTest extends CQLTester
         assert hasIndexed;
 
         assertRowCount(execute("SELECT s FROM %s WHERE k = ?", 0), ROWS);
+        assertRowCount(execute("SELECT s FROM %s WHERE k = ? ORDER BY t DESC", 
0), ROWS);
+
+        assertRowCount(execute("SELECT DISTINCT s FROM %s WHERE k = ?", 0), 1);
+        assertRowCount(execute("SELECT DISTINCT s FROM %s WHERE k = ? ORDER BY 
t DESC", 0), 1);
     }
 
     // Creates a random string 

Reply via email to