You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sa...@apache.org on 2016/01/19 10:08:45 UTC

[1/6] cassandra git commit: Don't try to index clustering values of static rows

Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 851763566 -> c7cbde218
  refs/heads/cassandra-3.3 289ad7713 -> 456581e54
  refs/heads/trunk 0e9819733 -> e13ea8db6


Don't try to index clustering values of static rows

Patch Stefan Podkowinski; reviewed by Sam Tunnicliffe for
CASSANDRA-11021


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

Branch: refs/heads/cassandra-3.0
Commit: c7cbde218de62aa47d9e942957ee4444bd9c7568
Parents: 8517635
Author: Stefan Podkowinski <st...@1und1.de>
Authored: Mon Jan 18 18:04:00 2016 +0000
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Tue Jan 19 08:53:19 2016 +0000

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../index/internal/CassandraIndex.java          |  7 ++++++
 .../validation/entities/SecondaryIndexTest.java | 24 ++++++++++++++++++++
 3 files changed, 32 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/c7cbde21/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 165e5d1..9c0ab85 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.3
+ * 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)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c7cbde21/src/java/org/apache/cassandra/index/internal/CassandraIndex.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/index/internal/CassandraIndex.java b/src/java/org/apache/cassandra/index/internal/CassandraIndex.java
index 6223d8a..158b127 100644
--- a/src/java/org/apache/cassandra/index/internal/CassandraIndex.java
+++ b/src/java/org/apache/cassandra/index/internal/CassandraIndex.java
@@ -342,6 +342,9 @@ public abstract class CassandraIndex implements Index
 
             public void insertRow(Row row)
             {
+                if (row.isStatic() != indexedColumn.isStatic())
+                    return;
+
                 if (isPrimaryKeyIndex())
                 {
                     indexPrimaryKey(row.clustering(),
@@ -370,6 +373,10 @@ public abstract class CassandraIndex implements Index
 
             public void updateRow(Row oldRow, Row newRow)
             {
+                assert oldRow.isStatic() == newRow.isStatic();
+                if (newRow.isStatic() != indexedColumn.isStatic())
+                    return;
+
                 if (isPrimaryKeyIndex())
                     indexPrimaryKey(newRow.clustering(),
                                     newRow.primaryKeyLivenessInfo(),

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c7cbde21/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java b/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java
index 38402d9..06f1987 100644
--- a/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java
+++ b/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java
@@ -960,6 +960,30 @@ public class SecondaryIndexTest extends CQLTester
         assertNull(QueryProcessor.instance.getPreparedForThrift(thriftId));
     }
 
+    // See CASSANDRA-11021
+    @Test
+    public void testIndexesOnNonStaticColumnsWhereSchemaIncludesStaticColumns() throws Throwable
+    {
+        createTable("CREATE TABLE %s (a int, b int, c int static, d int, PRIMARY KEY (a, b))");
+        createIndex("CREATE INDEX b_idx on %s(b)");
+        createIndex("CREATE INDEX d_idx on %s(d)");
+
+        execute("INSERT INTO %s (a, b, c ,d) VALUES (0, 0, 0, 0)");
+        execute("INSERT INTO %s (a, b, c, d) VALUES (1, 1, 1, 1)");
+        assertRows(execute("SELECT * FROM %s WHERE b = 0"), row(0, 0, 0, 0));
+        assertRows(execute("SELECT * FROM %s WHERE d = 1"), row(1, 1, 1, 1));
+
+        execute("UPDATE %s SET c = 2 WHERE a = 0");
+        execute("UPDATE %s SET c = 3, d = 4 WHERE a = 1 AND b = 1");
+        assertRows(execute("SELECT * FROM %s WHERE b = 0"), row(0, 0, 2, 0));
+        assertRows(execute("SELECT * FROM %s WHERE d = 4"), row(1, 1, 3, 4));
+
+        execute("DELETE FROM %s WHERE a = 0");
+        execute("DELETE FROM %s WHERE a = 1 AND b = 1");
+        assertEmpty(execute("SELECT * FROM %s WHERE b = 0"));
+        assertEmpty(execute("SELECT * FROM %s WHERE d = 3"));
+    }
+
     private ResultMessage.Prepared prepareStatement(String cql, boolean forThrift)
     {
         return QueryProcessor.prepare(String.format(cql, KEYSPACE, currentTable()),


[6/6] cassandra git commit: Merge branch 'cassandra-3.3' into trunk

Posted by sa...@apache.org.
Merge branch 'cassandra-3.3' into trunk


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

Branch: refs/heads/trunk
Commit: e13ea8db6e0fca9001c2524716176a46b5894412
Parents: 0e98197 456581e
Author: Sam Tunnicliffe <sa...@beobal.com>
Authored: Tue Jan 19 09:02:21 2016 +0000
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Tue Jan 19 09:02:21 2016 +0000

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../index/internal/CassandraIndex.java          |  7 ++++++
 .../validation/entities/SecondaryIndexTest.java | 24 ++++++++++++++++++++
 3 files changed, 32 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/e13ea8db/CHANGES.txt
----------------------------------------------------------------------


[3/6] cassandra git commit: Don't try to index clustering values of static rows

Posted by sa...@apache.org.
Don't try to index clustering values of static rows

Patch Stefan Podkowinski; reviewed by Sam Tunnicliffe for
CASSANDRA-11021


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

Branch: refs/heads/trunk
Commit: c7cbde218de62aa47d9e942957ee4444bd9c7568
Parents: 8517635
Author: Stefan Podkowinski <st...@1und1.de>
Authored: Mon Jan 18 18:04:00 2016 +0000
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Tue Jan 19 08:53:19 2016 +0000

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../index/internal/CassandraIndex.java          |  7 ++++++
 .../validation/entities/SecondaryIndexTest.java | 24 ++++++++++++++++++++
 3 files changed, 32 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/c7cbde21/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 165e5d1..9c0ab85 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.3
+ * 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)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c7cbde21/src/java/org/apache/cassandra/index/internal/CassandraIndex.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/index/internal/CassandraIndex.java b/src/java/org/apache/cassandra/index/internal/CassandraIndex.java
index 6223d8a..158b127 100644
--- a/src/java/org/apache/cassandra/index/internal/CassandraIndex.java
+++ b/src/java/org/apache/cassandra/index/internal/CassandraIndex.java
@@ -342,6 +342,9 @@ public abstract class CassandraIndex implements Index
 
             public void insertRow(Row row)
             {
+                if (row.isStatic() != indexedColumn.isStatic())
+                    return;
+
                 if (isPrimaryKeyIndex())
                 {
                     indexPrimaryKey(row.clustering(),
@@ -370,6 +373,10 @@ public abstract class CassandraIndex implements Index
 
             public void updateRow(Row oldRow, Row newRow)
             {
+                assert oldRow.isStatic() == newRow.isStatic();
+                if (newRow.isStatic() != indexedColumn.isStatic())
+                    return;
+
                 if (isPrimaryKeyIndex())
                     indexPrimaryKey(newRow.clustering(),
                                     newRow.primaryKeyLivenessInfo(),

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c7cbde21/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java b/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java
index 38402d9..06f1987 100644
--- a/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java
+++ b/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java
@@ -960,6 +960,30 @@ public class SecondaryIndexTest extends CQLTester
         assertNull(QueryProcessor.instance.getPreparedForThrift(thriftId));
     }
 
+    // See CASSANDRA-11021
+    @Test
+    public void testIndexesOnNonStaticColumnsWhereSchemaIncludesStaticColumns() throws Throwable
+    {
+        createTable("CREATE TABLE %s (a int, b int, c int static, d int, PRIMARY KEY (a, b))");
+        createIndex("CREATE INDEX b_idx on %s(b)");
+        createIndex("CREATE INDEX d_idx on %s(d)");
+
+        execute("INSERT INTO %s (a, b, c ,d) VALUES (0, 0, 0, 0)");
+        execute("INSERT INTO %s (a, b, c, d) VALUES (1, 1, 1, 1)");
+        assertRows(execute("SELECT * FROM %s WHERE b = 0"), row(0, 0, 0, 0));
+        assertRows(execute("SELECT * FROM %s WHERE d = 1"), row(1, 1, 1, 1));
+
+        execute("UPDATE %s SET c = 2 WHERE a = 0");
+        execute("UPDATE %s SET c = 3, d = 4 WHERE a = 1 AND b = 1");
+        assertRows(execute("SELECT * FROM %s WHERE b = 0"), row(0, 0, 2, 0));
+        assertRows(execute("SELECT * FROM %s WHERE d = 4"), row(1, 1, 3, 4));
+
+        execute("DELETE FROM %s WHERE a = 0");
+        execute("DELETE FROM %s WHERE a = 1 AND b = 1");
+        assertEmpty(execute("SELECT * FROM %s WHERE b = 0"));
+        assertEmpty(execute("SELECT * FROM %s WHERE d = 3"));
+    }
+
     private ResultMessage.Prepared prepareStatement(String cql, boolean forThrift)
     {
         return QueryProcessor.prepare(String.format(cql, KEYSPACE, currentTable()),


[4/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.3

Posted by sa...@apache.org.
Merge branch 'cassandra-3.0' into cassandra-3.3


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

Branch: refs/heads/trunk
Commit: 456581e54b4211216db16ddd203a325f8a309aeb
Parents: 289ad77 c7cbde2
Author: Sam Tunnicliffe <sa...@beobal.com>
Authored: Tue Jan 19 08:58:21 2016 +0000
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Tue Jan 19 08:58:21 2016 +0000

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../index/internal/CassandraIndex.java          |  7 ++++++
 .../validation/entities/SecondaryIndexTest.java | 24 ++++++++++++++++++++
 3 files changed, 32 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/456581e5/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 2c19a1b,9c0ab85..4965920
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,6 -1,5 +1,7 @@@
 -3.0.3
 +3.3
 + * Avoid bootstrap hanging when existing nodes have no data to stream (CASSANDRA-11010)
 +Merged from 3.0:
+  * 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)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/456581e5/src/java/org/apache/cassandra/index/internal/CassandraIndex.java
----------------------------------------------------------------------


[2/6] cassandra git commit: Don't try to index clustering values of static rows

Posted by sa...@apache.org.
Don't try to index clustering values of static rows

Patch Stefan Podkowinski; reviewed by Sam Tunnicliffe for
CASSANDRA-11021


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

Branch: refs/heads/cassandra-3.3
Commit: c7cbde218de62aa47d9e942957ee4444bd9c7568
Parents: 8517635
Author: Stefan Podkowinski <st...@1und1.de>
Authored: Mon Jan 18 18:04:00 2016 +0000
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Tue Jan 19 08:53:19 2016 +0000

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../index/internal/CassandraIndex.java          |  7 ++++++
 .../validation/entities/SecondaryIndexTest.java | 24 ++++++++++++++++++++
 3 files changed, 32 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/c7cbde21/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 165e5d1..9c0ab85 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.3
+ * 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)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c7cbde21/src/java/org/apache/cassandra/index/internal/CassandraIndex.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/index/internal/CassandraIndex.java b/src/java/org/apache/cassandra/index/internal/CassandraIndex.java
index 6223d8a..158b127 100644
--- a/src/java/org/apache/cassandra/index/internal/CassandraIndex.java
+++ b/src/java/org/apache/cassandra/index/internal/CassandraIndex.java
@@ -342,6 +342,9 @@ public abstract class CassandraIndex implements Index
 
             public void insertRow(Row row)
             {
+                if (row.isStatic() != indexedColumn.isStatic())
+                    return;
+
                 if (isPrimaryKeyIndex())
                 {
                     indexPrimaryKey(row.clustering(),
@@ -370,6 +373,10 @@ public abstract class CassandraIndex implements Index
 
             public void updateRow(Row oldRow, Row newRow)
             {
+                assert oldRow.isStatic() == newRow.isStatic();
+                if (newRow.isStatic() != indexedColumn.isStatic())
+                    return;
+
                 if (isPrimaryKeyIndex())
                     indexPrimaryKey(newRow.clustering(),
                                     newRow.primaryKeyLivenessInfo(),

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c7cbde21/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java b/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java
index 38402d9..06f1987 100644
--- a/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java
+++ b/test/unit/org/apache/cassandra/cql3/validation/entities/SecondaryIndexTest.java
@@ -960,6 +960,30 @@ public class SecondaryIndexTest extends CQLTester
         assertNull(QueryProcessor.instance.getPreparedForThrift(thriftId));
     }
 
+    // See CASSANDRA-11021
+    @Test
+    public void testIndexesOnNonStaticColumnsWhereSchemaIncludesStaticColumns() throws Throwable
+    {
+        createTable("CREATE TABLE %s (a int, b int, c int static, d int, PRIMARY KEY (a, b))");
+        createIndex("CREATE INDEX b_idx on %s(b)");
+        createIndex("CREATE INDEX d_idx on %s(d)");
+
+        execute("INSERT INTO %s (a, b, c ,d) VALUES (0, 0, 0, 0)");
+        execute("INSERT INTO %s (a, b, c, d) VALUES (1, 1, 1, 1)");
+        assertRows(execute("SELECT * FROM %s WHERE b = 0"), row(0, 0, 0, 0));
+        assertRows(execute("SELECT * FROM %s WHERE d = 1"), row(1, 1, 1, 1));
+
+        execute("UPDATE %s SET c = 2 WHERE a = 0");
+        execute("UPDATE %s SET c = 3, d = 4 WHERE a = 1 AND b = 1");
+        assertRows(execute("SELECT * FROM %s WHERE b = 0"), row(0, 0, 2, 0));
+        assertRows(execute("SELECT * FROM %s WHERE d = 4"), row(1, 1, 3, 4));
+
+        execute("DELETE FROM %s WHERE a = 0");
+        execute("DELETE FROM %s WHERE a = 1 AND b = 1");
+        assertEmpty(execute("SELECT * FROM %s WHERE b = 0"));
+        assertEmpty(execute("SELECT * FROM %s WHERE d = 3"));
+    }
+
     private ResultMessage.Prepared prepareStatement(String cql, boolean forThrift)
     {
         return QueryProcessor.prepare(String.format(cql, KEYSPACE, currentTable()),


[5/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.3

Posted by sa...@apache.org.
Merge branch 'cassandra-3.0' into cassandra-3.3


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

Branch: refs/heads/cassandra-3.3
Commit: 456581e54b4211216db16ddd203a325f8a309aeb
Parents: 289ad77 c7cbde2
Author: Sam Tunnicliffe <sa...@beobal.com>
Authored: Tue Jan 19 08:58:21 2016 +0000
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Tue Jan 19 08:58:21 2016 +0000

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../index/internal/CassandraIndex.java          |  7 ++++++
 .../validation/entities/SecondaryIndexTest.java | 24 ++++++++++++++++++++
 3 files changed, 32 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/456581e5/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 2c19a1b,9c0ab85..4965920
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,6 -1,5 +1,7 @@@
 -3.0.3
 +3.3
 + * Avoid bootstrap hanging when existing nodes have no data to stream (CASSANDRA-11010)
 +Merged from 3.0:
+  * 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)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/456581e5/src/java/org/apache/cassandra/index/internal/CassandraIndex.java
----------------------------------------------------------------------