cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From tylerho...@apache.org
Subject [2/3] cassandra git commit: Merge branch 'cassandra-2.0' into cassandra-2.1
Date Thu, 19 Feb 2015 19:24:11 GMT
Merge branch 'cassandra-2.0' into cassandra-2.1

Conflicts:
	CHANGES.txt
	src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
	test/unit/org/apache/cassandra/cql3/SelectWithTokenFunctionTest.java


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

Branch: refs/heads/trunk
Commit: e4980b3b8df0d15aef0f9f24159064c7be86d111
Parents: 6065f2c ee160a9
Author: Tyler Hobbs <tyler@datastax.com>
Authored: Thu Feb 19 13:21:02 2015 -0600
Committer: Tyler Hobbs <tyler@datastax.com>
Committed: Thu Feb 19 13:21:02 2015 -0600

----------------------------------------------------------------------
 CHANGES.txt                                              |  2 ++
 src/java/org/apache/cassandra/cql3/Relation.java         |  5 +++++
 .../org/apache/cassandra/cql3/SingleColumnRelation.java  |  5 +++++
 .../cassandra/cql3/statements/SelectStatement.java       |  6 +++++-
 .../cassandra/cql3/SelectWithTokenFunctionTest.java      | 11 +++++++++++
 5 files changed, 28 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/e4980b3b/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 9458627,f2b4469..3b6ce5d
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,19 -1,6 +1,21 @@@
 -2.0.13:
 +2.1.4
 + * Fix CommitLog.forceRecycleAllSegments() memory access error (CASSANDRA-8812)
 + * Improve assertions in Memory (CASSANDRA-8792)
 + * Fix SSTableRewriter cleanup (CASSANDRA-8802)
 + * Introduce SafeMemory for CompressionMetadata.Writer (CASSANDRA-8758)
 + * 'nodetool info' prints exception against older node (CASSANDRA-8796)
 + * Ensure SSTableReader.last corresponds exactly with the file end (CASSANDRA-8750)
 + * Make SSTableWriter.openEarly more robust and obvious (CASSANDRA-8747)
 + * Enforce SSTableReader.first/last (CASSANDRA-8744)
 + * Cleanup SegmentedFile API (CASSANDRA-8749)
 + * Avoid overlap with early compaction replacement (CASSANDRA-8683)
 + * Safer Resource Management++ (CASSANDRA-8707)
 + * Write partition size estimates into a system table (CASSANDRA-7688)
 + * cqlsh: Fix keys() and full() collection indexes in DESCRIBE output
 +   (CASSANDRA-8154)
 +Merged from 2.0:
+  * Fix combining token() function with multi-column relations on
+    clustering columns (CASSANDRA-8797)
   * Make CFS.markReferenced() resistant to bad refcounting (CASSANDRA-8829)
   * Fix StreamTransferTask abort/complete bad refcounting (CASSANDRA-8815)
   * Fix AssertionError when querying a DESC clustering ordered

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e4980b3b/src/java/org/apache/cassandra/cql3/Relation.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e4980b3b/src/java/org/apache/cassandra/cql3/SingleColumnRelation.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e4980b3b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
index 08777c7,59ed6e1..9099ba7
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
@@@ -1933,18 -1898,22 +1933,22 @@@ public class SelectStatement implement
          /**
           * Checks that the column identifiers used as argument for the token function have
been specified in the
           * partition key order.
 -         * @param cfDef the Column Family Definition
 +         * @param cfm the Column Family MetaData
           * @throws InvalidRequestException if the arguments have not been provided in the
proper order.
           */
 -        private void checkTokenFunctionArgumentsOrder(CFDefinition cfDef) throws InvalidRequestException
 +        private void checkTokenFunctionArgumentsOrder(CFMetaData cfm) throws InvalidRequestException
          {
 -            Iterator<Name> iter = Iterators.cycle(cfDef.partitionKeys());
 +            Iterator<ColumnDefinition> iter = Iterators.cycle(cfm.partitionKeyColumns());
              for (Relation relation : whereClause)
              {
+                 if (!relation.isOnToken())
+                     continue;
+ 
+                 assert !relation.isMultiColumn() : "Unexpectedly got multi-column token
relation";
                  SingleColumnRelation singleColumnRelation = (SingleColumnRelation) relation;
-                 if (singleColumnRelation.onToken && !cfm.getColumnDefinition(singleColumnRelation.getEntity().prepare(cfm)).equals(iter.next()))
 -                if (!cfDef.get(singleColumnRelation.getEntity().prepare(cfDef.cfm)).equals(iter.next()))
++                if (!cfm.getColumnDefinition(singleColumnRelation.getEntity().prepare(cfm)).equals(iter.next()))
                      throw new InvalidRequestException(String.format("The token function
arguments must be in the partition key order: %s",
 -                                                                    Joiner.on(',').join(cfDef.partitionKeys())));
 +                                                                    Joiner.on(',').join(cfm.partitionKeyColumns())));
              }
          }
  

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e4980b3b/test/unit/org/apache/cassandra/cql3/SelectWithTokenFunctionTest.java
----------------------------------------------------------------------
diff --cc test/unit/org/apache/cassandra/cql3/SelectWithTokenFunctionTest.java
index 6f9f5e2,c222f35..b2a972b
--- a/test/unit/org/apache/cassandra/cql3/SelectWithTokenFunctionTest.java
+++ b/test/unit/org/apache/cassandra/cql3/SelectWithTokenFunctionTest.java
@@@ -44,23 -138,45 +44,34 @@@ public class SelectWithTokenFunctionTes
      }
  
      @Test
 -    public void testTokenFunctionWithCompoundPartition() throws Throwable
 -    {
 -        execute("INSERT INTO %s.compound_partition (a, b) VALUES (0, 'a')");
 -        execute("INSERT INTO %s.compound_partition (a, b) VALUES (0, 'b')");
 -        execute("INSERT INTO %s.compound_partition (a, b) VALUES (0, 'c')");
 -
 -        try
 -        {
 -            UntypedResultSet results = execute("SELECT * FROM %s.compound_partition WHERE
token(a, b) > token(0, 'a')");
 -            assertEquals(2, results.size());
 -            results = execute("SELECT * FROM %s.compound_partition WHERE token(a, b) >
token(0, 'a') "
 -                    + "and token(a, b) < token(0, 'd')");
 -            assertEquals(2, results.size());
 -        }
 -        finally
 -        {
 -            execute("DELETE FROM %s.compound_partition WHERE a = 0 and b in ('a', 'b', 'c')");
 -        }
 -    }
 -
 -    @Test(expected = InvalidRequestException.class)
 -    public void testTokenFunctionWithCompoundPartitionKeyAndColumnIdentifierInWrongOrder()
throws Throwable
 -    {
 -        execute("SELECT * FROM %s.compound_partition WHERE token(b, a) > token(0, 'c')");
 -    }
 -
 -    @Test(expected = InvalidRequestException.class)
 -    public void testTokenFunctionOnEachPartitionKeyColumns() throws Throwable
 +    public void testTokenFunctionWithMultiColumnPartitionKey() throws Throwable
      {
 -        execute("SELECT * FROM %s.compound_partition WHERE token(a) > token(0) and token(b)
> token('c')");
 +        createTable("CREATE TABLE IF NOT EXISTS %s (a int, b text, PRIMARY KEY ((a, b)))");
 +        execute("INSERT INTO %s (a, b) VALUES (0, 'a')");
 +        execute("INSERT INTO %s (a, b) VALUES (0, 'b')");
 +        execute("INSERT INTO %s (a, b) VALUES (0, 'c')");
 +
 +        assertRows(execute("SELECT * FROM %s WHERE token(a, b) > token(?, ?)", 0, "a"),
 +                   row(0, "b"),
 +                   row(0, "c"));
 +        assertRows(execute("SELECT * FROM %s WHERE token(a, b) > token(?, ?) and token(a,
b) < token(?, ?)",
 +                           0, "a",
 +                           0, "d"),
 +                   row(0, "b"),
 +                   row(0, "c"));
 +        assertInvalid("SELECT * FROM %s WHERE token(a) > token(?) and token(b) > token(?)",
0, "a");
 +        assertInvalid("SELECT * FROM %s WHERE token(a) > token(?, ?) and token(a) <
token(?, ?) and token(b) > token(?, ?) ", 0, "a", 0, "d", 0, "a");
 +        assertInvalid("SELECT * FROM %s WHERE token(b, a) > token(0, 'c')");
      }
+ 
+     @Test
+     public void testTokenFunctionWithCompoundPartitionAndClusteringCols() throws Throwable
+     {
++        createTable("CREATE TABLE IF NOT EXISTS %s (a int, b int, c int, d int, PRIMARY
KEY ((a, b), c, d))");
+         // just test that the queries don't error
 -        execute("SELECT * FROM %s.compound_with_clustering WHERE token(a, b) > token(0,
0) AND c > 10 ALLOW FILTERING;");
 -        execute("SELECT * FROM %s.compound_with_clustering WHERE c > 10 AND token(a,
b) > token(0, 0) ALLOW FILTERING;");
 -        execute("SELECT * FROM %s.compound_with_clustering WHERE token(a, b) > token(0,
0) AND (c, d) > (0, 0) ALLOW FILTERING;");
 -        execute("SELECT * FROM %s.compound_with_clustering WHERE (c, d) > (0, 0) AND
token(a, b) > token(0, 0) ALLOW FILTERING;");
++        execute("SELECT * FROM %s WHERE token(a, b) > token(0, 0) AND c > 10 ALLOW
FILTERING;");
++        execute("SELECT * FROM %s WHERE c > 10 AND token(a, b) > token(0, 0) ALLOW
FILTERING;");
++        execute("SELECT * FROM %s WHERE token(a, b) > token(0, 0) AND (c, d) > (0,
0) ALLOW FILTERING;");
++        execute("SELECT * FROM %s WHERE (c, d) > (0, 0) AND token(a, b) > token(0,
0) ALLOW FILTERING;");
+     }
  }


Mime
View raw message