Return-Path: X-Original-To: apmail-cassandra-commits-archive@www.apache.org Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5D7A918256 for ; Mon, 17 Aug 2015 09:15:32 +0000 (UTC) Received: (qmail 19392 invoked by uid 500); 17 Aug 2015 09:15:32 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 19276 invoked by uid 500); 17 Aug 2015 09:15:32 -0000 Mailing-List: contact commits-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list commits@cassandra.apache.org Received: (qmail 19236 invoked by uid 99); 17 Aug 2015 09:15:32 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 17 Aug 2015 09:15:32 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id A6EF9DFCCE; Mon, 17 Aug 2015 09:15:31 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: blerer@apache.org To: commits@cassandra.apache.org Date: Mon, 17 Aug 2015 09:15:31 -0000 Message-Id: <5026ff074f274d5fbb662151e7dacd21@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [1/3] cassandra git commit: Fix ordering with IN restriction on partition key Repository: cassandra Updated Branches: refs/heads/trunk 85bbbb379 -> 5e9835ba7 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/trunk Commit: ee186b6b05569537eb979027176ccee57354c4da Parents: 31db093 Author: blerer Authored: Mon Aug 17 10:58:37 2015 +0200 Committer: blerer 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++)