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.0 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()