cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ble...@apache.org
Subject cassandra git commit: Fix ordering with IN restriction on partition key
Date Mon, 17 Aug 2015 09:03:34 GMT
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.2 31db093c4 -> ee186b6b0


Fix ordering with IN restriction on partition key

patch by Benjamin Lerer; reviewed by Stefania Alborghetti for CASSANDRA-9970


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

Branch: refs/heads/cassandra-2.2
Commit: ee186b6b05569537eb979027176ccee57354c4da
Parents: 31db093
Author: blerer <benjamin.lerer@datastax.com>
Authored: Mon Aug 17 10:58:37 2015 +0200
Committer: blerer <benjamin.lerer@datastax.com>
Committed: Mon Aug 17 10:58:37 2015 +0200

----------------------------------------------------------------------
 .../restrictions/PrimaryKeyRestrictionSet.java  |  2 +-
 .../operations/SelectOrderByTest.java           | 43 ++++++++++++++++++++
 2 files changed, 44 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/ee186b6b/src/java/org/apache/cassandra/cql3/restrictions/PrimaryKeyRestrictionSet.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/restrictions/PrimaryKeyRestrictionSet.java
b/src/java/org/apache/cassandra/cql3/restrictions/PrimaryKeyRestrictionSet.java
index b49d774..3a20f6a 100644
--- a/src/java/org/apache/cassandra/cql3/restrictions/PrimaryKeyRestrictionSet.java
+++ b/src/java/org/apache/cassandra/cql3/restrictions/PrimaryKeyRestrictionSet.java
@@ -98,7 +98,7 @@ final class PrimaryKeyRestrictionSet extends AbstractPrimaryKeyRestrictions
             this.slice = true;
         else if (restriction.isContains() || primaryKeyRestrictions.isContains())
             this.contains = true;
-        else if (restriction.isIN())
+        else if (restriction.isIN() || primaryKeyRestrictions.isIN())
             this.in = true;
         else
             this.eq = true;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/ee186b6b/test/unit/org/apache/cassandra/cql3/validation/operations/SelectOrderByTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/cql3/validation/operations/SelectOrderByTest.java
b/test/unit/org/apache/cassandra/cql3/validation/operations/SelectOrderByTest.java
index e788095..699ade8 100644
--- a/test/unit/org/apache/cassandra/cql3/validation/operations/SelectOrderByTest.java
+++ b/test/unit/org/apache/cassandra/cql3/validation/operations/SelectOrderByTest.java
@@ -22,6 +22,7 @@ import org.junit.Test;
 import org.apache.cassandra.cql3.CQLTester;
 
 import static org.junit.Assert.assertTrue;
+import static java.util.Arrays.asList;
 
 public class SelectOrderByTest extends CQLTester
 {
@@ -488,6 +489,48 @@ public class SelectOrderByTest extends CQLTester
         assertTrue(isFirstIntSorted(results));
     }
 
+    @Test
+    public void testInOrderByWithTwoPartitionKeyColumns() throws Throwable
+    {
+        for (String option : asList("", "WITH CLUSTERING ORDER BY (col_3 DESC)"))
+        {
+            createTable("CREATE TABLE %s (col_1 int, col_2 int, col_3 int, PRIMARY KEY ((col_1,
col_2), col_3)) " + option);
+            execute("INSERT INTO %s (col_1, col_2, col_3) VALUES(?, ?, ?)", 1, 1, 1);
+            execute("INSERT INTO %s (col_1, col_2, col_3) VALUES(?, ?, ?)", 1, 1, 2);
+            execute("INSERT INTO %s (col_1, col_2, col_3) VALUES(?, ?, ?)", 1, 1, 13);
+            execute("INSERT INTO %s (col_1, col_2, col_3) VALUES(?, ?, ?)", 1, 2, 10);
+            execute("INSERT INTO %s (col_1, col_2, col_3) VALUES(?, ?, ?)", 1, 2, 11);
+
+            assertRows(execute("select * from %s where col_1=? and col_2 IN (?, ?) order
by col_3;", 1, 1, 2),
+                       row(1, 1, 1),
+                       row(1, 1, 2),
+                       row(1, 2, 10),
+                       row(1, 2, 11),
+                       row(1, 1, 13));
+
+            assertRows(execute("select * from %s where col_1=? and col_2 IN (?, ?) order
by col_3 desc;", 1, 1, 2),
+                       row(1, 1, 13),
+                       row(1, 2, 11),
+                       row(1, 2, 10),
+                       row(1, 1, 2),
+                       row(1, 1, 1));
+
+            assertRows(execute("select * from %s where col_2 IN (?, ?) and col_1=? order
by col_3;", 1, 2, 1),
+                       row(1, 1, 1),
+                       row(1, 1, 2),
+                       row(1, 2, 10),
+                       row(1, 2, 11),
+                       row(1, 1, 13));
+
+            assertRows(execute("select * from %s where col_2 IN (?, ?) and col_1=? order
by col_3 desc;", 1, 2, 1),
+                       row(1, 1, 13),
+                       row(1, 2, 11),
+                       row(1, 2, 10),
+                       row(1, 1, 2),
+                       row(1, 1, 1));
+        }
+    }
+
     private boolean isFirstIntSorted(Object[][] rows)
     {
         for (int i = 1; i < rows.length; i++)


Mime
View raw message