Merge branch 'cassandra-2.2' into cassandra-3.0

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

Branch: refs/heads/cassandra-3.3
Commit: a60a80b83872051ae9bf10d3f91eeed94a0c9355
Parents: 13314aa deafdbe
Author: Sylvain Lebresne <sylv...@datastax.com>
Authored: Fri Jan 22 15:51:09 2016 +0100
Committer: Sylvain Lebresne <sylv...@datastax.com>
Committed: Fri Jan 22 15:51:09 2016 +0100

----------------------------------------------------------------------
 CHANGES.txt                                     |  2 +
 .../cql3/statements/SelectStatement.java        | 22 ++++++----
 .../operations/SelectOrderByTest.java           | 43 ++++++++++++++++++++
 3 files changed, 60 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a60a80b8/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index e93a04a,1a92fd6..f49e8d4
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,27 -1,6 +1,29 @@@
 +3.0.3
 + * Update CQL documentation (CASSANDRA-10899)
 + * Check the column name, not cell name, for dropped columns when reading
 +   legacy sstables (CASSANDRA-11018)
 + * Don't attempt to index clustering values of static rows (CASSANDRA-11021)
 + * Remove checksum files after replaying hints (CASSANDRA-10947)
 + * Support passing base table metadata to custom 2i validation 
(CASSANDRA-10924)
 + * Ensure stale index entries are purged during reads (CASSANDRA-11013)
 + * Fix AssertionError when removing from list using UPDATE (CASSANDRA-10954)
 + * Fix UnsupportedOperationException when reading old sstable with range
 +   tombstone (CASSANDRA-10743)
 + * MV should use the maximum timestamp of the primary key (CASSANDRA-10910)
 + * Fix potential assertion error during compaction (CASSANDRA-10944)
 + * Fix counting of received sstables in streaming (CASSANDRA-10949)
 + * Implement hints compression (CASSANDRA-9428)
 + * Fix potential assertion error when reading static columns (CASSANDRA-10903)
 + * Avoid NoSuchElementException when executing empty batch (CASSANDRA-10711)
 + * Avoid building PartitionUpdate in toString (CASSANDRA-10897)
 + * Reduce heap spent when receiving many SSTables (CASSANDRA-10797)
 + * Add back support for 3rd party auth providers to bulk loader 
(CASSANDRA-10873)
 + * Eliminate the dependency on jgrapht for UDT resolution (CASSANDRA-10653)
 + * (Hadoop) Close Clusters and Sessions in Hadoop Input/Output classes 
(CASSANDRA-10837)
 + * Fix sstableloader not working with upper case keyspace name 
(CASSANDRA-10806)
 +Merged from 2.2:
+ 2.2.5
+  * Fix potential NPE on ORDER BY queries with IN (CASSANDRA-10955)
 - * Avoid over-fetching during the page of range queries (CASSANDRA-8521)
   * Start L0 STCS-compactions even if there is a L0 -> L1 compaction
     going (CASSANDRA-10979)
   * Make UUID LSB unique per process (CASSANDRA-7925)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a60a80b8/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a60a80b8/test/unit/org/apache/cassandra/cql3/validation/operations/SelectOrderByTest.java
----------------------------------------------------------------------
diff --cc 
test/unit/org/apache/cassandra/cql3/validation/operations/SelectOrderByTest.java
index ae6f772,f8ec13c..6e06419
--- 
a/test/unit/org/apache/cassandra/cql3/validation/operations/SelectOrderByTest.java
+++ 
b/test/unit/org/apache/cassandra/cql3/validation/operations/SelectOrderByTest.java
@@@ -405,34 -390,51 +405,77 @@@ public class SelectOrderByTest extends 
                     row("B"),
                     row("D"),
                     row("A"));
 +
 +        assertRows(execute("SELECT v as c2 FROM %s where pk1 = ? AND pk2 IN 
(?, ?) ORDER BY c1, c2 LIMIT 2; ", 1, 1, 2),
 +                   row("B"),
 +                   row("D"));
 +
 +        assertRows(execute("SELECT v as c2 FROM %s where pk1 = ? AND pk2 IN 
(?, ?) ORDER BY c1, c2 LIMIT 10; ", 1, 1, 2),
 +                   row("B"),
 +                   row("D"),
 +                   row("A"));
 +
 +        assertRows(execute("SELECT v as c2 FROM %s where pk1 = ? AND pk2 IN 
(?, ?) ORDER BY c1 DESC , c2 DESC; ", 1, 1, 2),
 +                   row("A"),
 +                   row("D"),
 +                   row("B"));
 +
 +        assertRows(execute("SELECT v as c2 FROM %s where pk1 = ? AND pk2 IN 
(?, ?) ORDER BY c1 DESC , c2 DESC LIMIT 2; ", 1, 1, 2),
 +                   row("A"),
 +                   row("D"));
 +
 +        assertRows(execute("SELECT v as c2 FROM %s where pk1 = ? AND pk2 IN 
(?, ?) ORDER BY c1 DESC , c2 DESC LIMIT 10; ", 1, 1, 2),
 +                   row("A"),
 +                   row("D"),
 +                   row("B"));
 +
 +        assertInvalidMessage("LIMIT must be strictly positive",
 +                             "SELECT v as c2 FROM %s where pk1 = ? AND pk2 IN 
(?, ?) ORDER BY c1 DESC , c2 DESC LIMIT 0; ", 1, 1, 2);
      }
  
+     @Test
+     public void testOrderByForInClauseWithNullValue() throws Throwable
+     {
+         createTable("CREATE TABLE %s (a int, b int, c int, s int static, d 
int, PRIMARY KEY (a, b, c))");
+ 
+         execute("INSERT INTO %s (a, b, c, d) VALUES (1, 1, 1, 1)");
+         execute("INSERT INTO %s (a, b, c, d) VALUES (1, 1, 2, 1)");
+         execute("INSERT INTO %s (a, b, c, d) VALUES (2, 2, 1, 1)");
+         execute("INSERT INTO %s (a, b, c, d) VALUES (2, 2, 2, 1)");
+ 
+         execute("UPDATE %s SET s = 1 WHERE a = 1");
+         execute("UPDATE %s SET s = 2 WHERE a = 2");
+         execute("UPDATE %s SET s = 3 WHERE a = 3");
+ 
+         assertRows(execute("SELECT a, b, c, d, s FROM %s WHERE a IN (1, 2, 3) 
ORDER BY b DESC"),
+                    row(2, 2, 2, 1, 2),
+                    row(2, 2, 1, 1, 2),
+                    row(1, 1, 2, 1, 1),
+                    row(1, 1, 1, 1, 1),
+                    row(3, null, null, null, 3));
+ 
+         assertRows(execute("SELECT a, b, c, d, s FROM %s WHERE a IN (1, 2, 3) 
ORDER BY b ASC"),
+                    row(3, null, null, null, 3),
+                    row(1, 1, 1, 1, 1),
+                    row(1, 1, 2, 1, 1),
+                    row(2, 2, 1, 1, 2),
+                    row(2, 2, 2, 1, 2));
+ 
+         assertRows(execute("SELECT a, b, c, d, s FROM %s WHERE a IN (1, 2, 3) 
ORDER BY b DESC , c DESC"),
+                    row(2, 2, 2, 1, 2),
+                    row(2, 2, 1, 1, 2),
+                    row(1, 1, 2, 1, 1),
+                    row(1, 1, 1, 1, 1),
+                    row(3, null, null, null, 3));
+ 
+         assertRows(execute("SELECT a, b, c, d, s FROM %s WHERE a IN (1, 2, 3) 
ORDER BY b ASC, c ASC"),
+                    row(3, null, null, null, 3),
+                    row(1, 1, 1, 1, 1),
+                    row(1, 1, 2, 1, 1),
+                    row(2, 2, 1, 1, 2),
+                    row(2, 2, 2, 1, 2));
+     }
+ 
      /**
       * Test reversed comparators
       * migrated from cql_tests.py:TestCQL.reversed_comparator_test()

Reply via email to