You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by bl...@apache.org on 2017/04/04 12:32:23 UTC
[1/6] cassandra git commit: Fix 2i page size calculation when there
are no regular columns
Repository: cassandra
Updated Branches:
refs/heads/cassandra-3.0 462b9cf63 -> 828ca7cc9
refs/heads/cassandra-3.11 6b87e49c3 -> e8053dd8b
refs/heads/trunk 0f054fee5 -> 56ea68ef7
Fix 2i page size calculation when there are no regular columns
patch by Andr�s de la Pe�a; reviewed by Benjamin Lerer for CASSANDRA-13400
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/828ca7cc
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/828ca7cc
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/828ca7cc
Branch: refs/heads/cassandra-3.0
Commit: 828ca7cc925de90c3883e935c66f7beec6fa9113
Parents: 462b9cf
Author: Andr�s de la Pe�a <a....@gmail.com>
Authored: Tue Apr 4 14:23:19 2017 +0200
Committer: Benjamin Lerer <b....@gmail.com>
Committed: Tue Apr 4 14:23:19 2017 +0200
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../cassandra/index/SecondaryIndexManager.java | 2 +-
.../index/internal/CassandraIndexTest.java | 29 ++++++++++++++++++++
3 files changed, 31 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/828ca7cc/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 4126b07..c258203 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.0.13
+ * Fix 2i page size calculation when there are no regular columns (CASSANDRA-13400)
* Fix the conversion of 2.X expired rows without regular column data (CASSANDRA-13395)
* Fix hint delivery when using ext+internal IPs with prefer_local enabled (CASSANDRA-13020)
* Fix possible NPE on upgrade to 3.0/3.X in case of IO errors (CASSANDRA-13389)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/828ca7cc/src/java/org/apache/cassandra/index/SecondaryIndexManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/index/SecondaryIndexManager.java b/src/java/org/apache/cassandra/index/SecondaryIndexManager.java
index d39b607..dd6dde4 100644
--- a/src/java/org/apache/cassandra/index/SecondaryIndexManager.java
+++ b/src/java/org/apache/cassandra/index/SecondaryIndexManager.java
@@ -623,7 +623,7 @@ public class SecondaryIndexManager implements IndexRegistry
return DEFAULT_PAGE_SIZE;
int columnsPerRow = baseCfs.metadata.partitionColumns().regulars.size();
- if (meanCellsPerPartition <= 0)
+ if (columnsPerRow <= 0)
return DEFAULT_PAGE_SIZE;
int meanRowsPerPartition = meanCellsPerPartition / columnsPerRow;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/828ca7cc/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java b/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
index 937512d..6c309ac 100644
--- a/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
+++ b/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
@@ -47,6 +47,7 @@ import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
/**
@@ -357,6 +358,34 @@ public class CassandraIndexTest extends CQLTester
}
@Test
+ public void indexOnClusteringColumnWithoutRegularColumns() throws Throwable
+ {
+ Object[] row1 = row("k0", "c0");
+ Object[] row2 = row("k0", "c1");
+ Object[] row3 = row("k1", "c0");
+ Object[] row4 = row("k1", "c1");
+ String tableName = createTable("CREATE TABLE %s (k text, c text, PRIMARY KEY(k, c))");
+ createIndex("CREATE INDEX no_regulars_idx ON %s(c)");
+
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row1);
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row2);
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row3);
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row4);
+
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c0"), row1, row3);
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c1"), row2, row4);
+ assertEmpty(execute("SELECT * FROM %s WHERE c = ?", "c3"));
+
+ dropIndex("DROP INDEX %s.no_regulars_idx");
+ createIndex("CREATE INDEX no_regulars_idx ON %s(c)");
+ assertTrue(waitForIndex(keyspace(), tableName, "no_regulars_idx"));
+
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c0"), row1, row3);
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c1"), row2, row4);
+ assertEmpty(execute("SELECT * FROM %s WHERE c = ?", "c3"));
+ }
+
+ @Test
public void createIndexesOnMultipleMapDimensions() throws Throwable
{
Object[] row1 = row(0, 0, ImmutableMap.of("a", 10, "b", 20, "c", 30));
[6/6] cassandra git commit: Merge branch 'cassandra-3.11' into trunk
Posted by bl...@apache.org.
Merge branch 'cassandra-3.11' into trunk
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/56ea68ef
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/56ea68ef
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/56ea68ef
Branch: refs/heads/trunk
Commit: 56ea68ef7240982f71b73238c7b1b0c9c3ba28ed
Parents: 0f054fe e8053dd
Author: Benjamin Lerer <b....@gmail.com>
Authored: Tue Apr 4 14:30:25 2017 +0200
Committer: Benjamin Lerer <b....@gmail.com>
Committed: Tue Apr 4 14:30:25 2017 +0200
----------------------------------------------------------------------
.../index/internal/CassandraIndexTest.java | 29 ++++++++++++++++++++
1 file changed, 29 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/56ea68ef/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
----------------------------------------------------------------------
[5/6] cassandra git commit: Merge branch cassandra-3.0 into
cassandra-3.11
Posted by bl...@apache.org.
Merge branch cassandra-3.0 into cassandra-3.11
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/e8053dd8
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/e8053dd8
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/e8053dd8
Branch: refs/heads/cassandra-3.11
Commit: e8053dd8b003839e23ca8953f42d8a660899d69e
Parents: 6b87e49 828ca7c
Author: Benjamin Lerer <b....@gmail.com>
Authored: Tue Apr 4 14:28:51 2017 +0200
Committer: Benjamin Lerer <b....@gmail.com>
Committed: Tue Apr 4 14:28:51 2017 +0200
----------------------------------------------------------------------
.../index/internal/CassandraIndexTest.java | 29 ++++++++++++++++++++
1 file changed, 29 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e8053dd8/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
----------------------------------------------------------------------
diff --cc test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
index 59d6860,6c309ac..bfe3c32
--- a/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
+++ b/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
@@@ -358,32 -358,34 +359,60 @@@ public class CassandraIndexTest extend
}
@Test
+ public void indexOnStaticColumn() throws Throwable
+ {
+ Object[] row1 = row("k0", "c0", "s0");
+ Object[] row2 = row("k0", "c1", "s0");
+ Object[] row3 = row("k1", "c0", "s1");
+ Object[] row4 = row("k1", "c1", "s1");
+
+ createTable("CREATE TABLE %s (k text, c text, s text static, PRIMARY KEY (k, c));");
+ createIndex("CREATE INDEX sc_index on %s(s)");
+
+ execute("INSERT INTO %s (k, c, s) VALUES (?, ?, ?)", row1);
+ execute("INSERT INTO %s (k, c, s) VALUES (?, ?, ?)", row2);
+ execute("INSERT INTO %s (k, c, s) VALUES (?, ?, ?)", row3);
+ execute("INSERT INTO %s (k, c, s) VALUES (?, ?, ?)", row4);
+
+ assertRows(execute("SELECT * FROM %s WHERE s = ?", "s0"), row1, row2);
+ assertRows(execute("SELECT * FROM %s WHERE s = ?", "s1"), row3, row4);
+
+ assertRows(execute("SELECT * FROM %s WHERE s = ? AND token(k) >= token(?)", "s0", "k0"), row1, row2);
+ assertRows(execute("SELECT * FROM %s WHERE s = ? AND token(k) >= token(?)", "s1", "k1"), row3, row4);
+
+ assertEmpty(execute("SELECT * FROM %s WHERE s = ? AND token(k) < token(?)", "s0", "k0"));
+ assertEmpty(execute("SELECT * FROM %s WHERE s = ? AND token(k) < token(?)", "s1", "k1"));
+ }
+
+ @Test
+ public void indexOnClusteringColumnWithoutRegularColumns() throws Throwable
+ {
+ Object[] row1 = row("k0", "c0");
+ Object[] row2 = row("k0", "c1");
+ Object[] row3 = row("k1", "c0");
+ Object[] row4 = row("k1", "c1");
+ String tableName = createTable("CREATE TABLE %s (k text, c text, PRIMARY KEY(k, c))");
+ createIndex("CREATE INDEX no_regulars_idx ON %s(c)");
+
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row1);
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row2);
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row3);
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row4);
+
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c0"), row1, row3);
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c1"), row2, row4);
+ assertEmpty(execute("SELECT * FROM %s WHERE c = ?", "c3"));
+
+ dropIndex("DROP INDEX %s.no_regulars_idx");
+ createIndex("CREATE INDEX no_regulars_idx ON %s(c)");
+ assertTrue(waitForIndex(keyspace(), tableName, "no_regulars_idx"));
+
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c0"), row1, row3);
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c1"), row2, row4);
+ assertEmpty(execute("SELECT * FROM %s WHERE c = ?", "c3"));
+ }
+
+ @Test
public void createIndexesOnMultipleMapDimensions() throws Throwable
{
Object[] row1 = row(0, 0, ImmutableMap.of("a", 10, "b", 20, "c", 30));
[2/6] cassandra git commit: Fix 2i page size calculation when there
are no regular columns
Posted by bl...@apache.org.
Fix 2i page size calculation when there are no regular columns
patch by Andr�s de la Pe�a; reviewed by Benjamin Lerer for CASSANDRA-13400
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/828ca7cc
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/828ca7cc
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/828ca7cc
Branch: refs/heads/cassandra-3.11
Commit: 828ca7cc925de90c3883e935c66f7beec6fa9113
Parents: 462b9cf
Author: Andr�s de la Pe�a <a....@gmail.com>
Authored: Tue Apr 4 14:23:19 2017 +0200
Committer: Benjamin Lerer <b....@gmail.com>
Committed: Tue Apr 4 14:23:19 2017 +0200
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../cassandra/index/SecondaryIndexManager.java | 2 +-
.../index/internal/CassandraIndexTest.java | 29 ++++++++++++++++++++
3 files changed, 31 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/828ca7cc/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 4126b07..c258203 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.0.13
+ * Fix 2i page size calculation when there are no regular columns (CASSANDRA-13400)
* Fix the conversion of 2.X expired rows without regular column data (CASSANDRA-13395)
* Fix hint delivery when using ext+internal IPs with prefer_local enabled (CASSANDRA-13020)
* Fix possible NPE on upgrade to 3.0/3.X in case of IO errors (CASSANDRA-13389)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/828ca7cc/src/java/org/apache/cassandra/index/SecondaryIndexManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/index/SecondaryIndexManager.java b/src/java/org/apache/cassandra/index/SecondaryIndexManager.java
index d39b607..dd6dde4 100644
--- a/src/java/org/apache/cassandra/index/SecondaryIndexManager.java
+++ b/src/java/org/apache/cassandra/index/SecondaryIndexManager.java
@@ -623,7 +623,7 @@ public class SecondaryIndexManager implements IndexRegistry
return DEFAULT_PAGE_SIZE;
int columnsPerRow = baseCfs.metadata.partitionColumns().regulars.size();
- if (meanCellsPerPartition <= 0)
+ if (columnsPerRow <= 0)
return DEFAULT_PAGE_SIZE;
int meanRowsPerPartition = meanCellsPerPartition / columnsPerRow;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/828ca7cc/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java b/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
index 937512d..6c309ac 100644
--- a/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
+++ b/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
@@ -47,6 +47,7 @@ import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
/**
@@ -357,6 +358,34 @@ public class CassandraIndexTest extends CQLTester
}
@Test
+ public void indexOnClusteringColumnWithoutRegularColumns() throws Throwable
+ {
+ Object[] row1 = row("k0", "c0");
+ Object[] row2 = row("k0", "c1");
+ Object[] row3 = row("k1", "c0");
+ Object[] row4 = row("k1", "c1");
+ String tableName = createTable("CREATE TABLE %s (k text, c text, PRIMARY KEY(k, c))");
+ createIndex("CREATE INDEX no_regulars_idx ON %s(c)");
+
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row1);
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row2);
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row3);
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row4);
+
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c0"), row1, row3);
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c1"), row2, row4);
+ assertEmpty(execute("SELECT * FROM %s WHERE c = ?", "c3"));
+
+ dropIndex("DROP INDEX %s.no_regulars_idx");
+ createIndex("CREATE INDEX no_regulars_idx ON %s(c)");
+ assertTrue(waitForIndex(keyspace(), tableName, "no_regulars_idx"));
+
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c0"), row1, row3);
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c1"), row2, row4);
+ assertEmpty(execute("SELECT * FROM %s WHERE c = ?", "c3"));
+ }
+
+ @Test
public void createIndexesOnMultipleMapDimensions() throws Throwable
{
Object[] row1 = row(0, 0, ImmutableMap.of("a", 10, "b", 20, "c", 30));
[4/6] cassandra git commit: Merge branch cassandra-3.0 into
cassandra-3.11
Posted by bl...@apache.org.
Merge branch cassandra-3.0 into cassandra-3.11
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/e8053dd8
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/e8053dd8
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/e8053dd8
Branch: refs/heads/trunk
Commit: e8053dd8b003839e23ca8953f42d8a660899d69e
Parents: 6b87e49 828ca7c
Author: Benjamin Lerer <b....@gmail.com>
Authored: Tue Apr 4 14:28:51 2017 +0200
Committer: Benjamin Lerer <b....@gmail.com>
Committed: Tue Apr 4 14:28:51 2017 +0200
----------------------------------------------------------------------
.../index/internal/CassandraIndexTest.java | 29 ++++++++++++++++++++
1 file changed, 29 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e8053dd8/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
----------------------------------------------------------------------
diff --cc test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
index 59d6860,6c309ac..bfe3c32
--- a/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
+++ b/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
@@@ -358,32 -358,34 +359,60 @@@ public class CassandraIndexTest extend
}
@Test
+ public void indexOnStaticColumn() throws Throwable
+ {
+ Object[] row1 = row("k0", "c0", "s0");
+ Object[] row2 = row("k0", "c1", "s0");
+ Object[] row3 = row("k1", "c0", "s1");
+ Object[] row4 = row("k1", "c1", "s1");
+
+ createTable("CREATE TABLE %s (k text, c text, s text static, PRIMARY KEY (k, c));");
+ createIndex("CREATE INDEX sc_index on %s(s)");
+
+ execute("INSERT INTO %s (k, c, s) VALUES (?, ?, ?)", row1);
+ execute("INSERT INTO %s (k, c, s) VALUES (?, ?, ?)", row2);
+ execute("INSERT INTO %s (k, c, s) VALUES (?, ?, ?)", row3);
+ execute("INSERT INTO %s (k, c, s) VALUES (?, ?, ?)", row4);
+
+ assertRows(execute("SELECT * FROM %s WHERE s = ?", "s0"), row1, row2);
+ assertRows(execute("SELECT * FROM %s WHERE s = ?", "s1"), row3, row4);
+
+ assertRows(execute("SELECT * FROM %s WHERE s = ? AND token(k) >= token(?)", "s0", "k0"), row1, row2);
+ assertRows(execute("SELECT * FROM %s WHERE s = ? AND token(k) >= token(?)", "s1", "k1"), row3, row4);
+
+ assertEmpty(execute("SELECT * FROM %s WHERE s = ? AND token(k) < token(?)", "s0", "k0"));
+ assertEmpty(execute("SELECT * FROM %s WHERE s = ? AND token(k) < token(?)", "s1", "k1"));
+ }
+
+ @Test
+ public void indexOnClusteringColumnWithoutRegularColumns() throws Throwable
+ {
+ Object[] row1 = row("k0", "c0");
+ Object[] row2 = row("k0", "c1");
+ Object[] row3 = row("k1", "c0");
+ Object[] row4 = row("k1", "c1");
+ String tableName = createTable("CREATE TABLE %s (k text, c text, PRIMARY KEY(k, c))");
+ createIndex("CREATE INDEX no_regulars_idx ON %s(c)");
+
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row1);
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row2);
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row3);
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row4);
+
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c0"), row1, row3);
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c1"), row2, row4);
+ assertEmpty(execute("SELECT * FROM %s WHERE c = ?", "c3"));
+
+ dropIndex("DROP INDEX %s.no_regulars_idx");
+ createIndex("CREATE INDEX no_regulars_idx ON %s(c)");
+ assertTrue(waitForIndex(keyspace(), tableName, "no_regulars_idx"));
+
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c0"), row1, row3);
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c1"), row2, row4);
+ assertEmpty(execute("SELECT * FROM %s WHERE c = ?", "c3"));
+ }
+
+ @Test
public void createIndexesOnMultipleMapDimensions() throws Throwable
{
Object[] row1 = row(0, 0, ImmutableMap.of("a", 10, "b", 20, "c", 30));
[3/6] cassandra git commit: Fix 2i page size calculation when there
are no regular columns
Posted by bl...@apache.org.
Fix 2i page size calculation when there are no regular columns
patch by Andr�s de la Pe�a; reviewed by Benjamin Lerer for CASSANDRA-13400
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/828ca7cc
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/828ca7cc
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/828ca7cc
Branch: refs/heads/trunk
Commit: 828ca7cc925de90c3883e935c66f7beec6fa9113
Parents: 462b9cf
Author: Andr�s de la Pe�a <a....@gmail.com>
Authored: Tue Apr 4 14:23:19 2017 +0200
Committer: Benjamin Lerer <b....@gmail.com>
Committed: Tue Apr 4 14:23:19 2017 +0200
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../cassandra/index/SecondaryIndexManager.java | 2 +-
.../index/internal/CassandraIndexTest.java | 29 ++++++++++++++++++++
3 files changed, 31 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/828ca7cc/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 4126b07..c258203 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.0.13
+ * Fix 2i page size calculation when there are no regular columns (CASSANDRA-13400)
* Fix the conversion of 2.X expired rows without regular column data (CASSANDRA-13395)
* Fix hint delivery when using ext+internal IPs with prefer_local enabled (CASSANDRA-13020)
* Fix possible NPE on upgrade to 3.0/3.X in case of IO errors (CASSANDRA-13389)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/828ca7cc/src/java/org/apache/cassandra/index/SecondaryIndexManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/index/SecondaryIndexManager.java b/src/java/org/apache/cassandra/index/SecondaryIndexManager.java
index d39b607..dd6dde4 100644
--- a/src/java/org/apache/cassandra/index/SecondaryIndexManager.java
+++ b/src/java/org/apache/cassandra/index/SecondaryIndexManager.java
@@ -623,7 +623,7 @@ public class SecondaryIndexManager implements IndexRegistry
return DEFAULT_PAGE_SIZE;
int columnsPerRow = baseCfs.metadata.partitionColumns().regulars.size();
- if (meanCellsPerPartition <= 0)
+ if (columnsPerRow <= 0)
return DEFAULT_PAGE_SIZE;
int meanRowsPerPartition = meanCellsPerPartition / columnsPerRow;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/828ca7cc/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java b/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
index 937512d..6c309ac 100644
--- a/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
+++ b/test/unit/org/apache/cassandra/index/internal/CassandraIndexTest.java
@@ -47,6 +47,7 @@ import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
/**
@@ -357,6 +358,34 @@ public class CassandraIndexTest extends CQLTester
}
@Test
+ public void indexOnClusteringColumnWithoutRegularColumns() throws Throwable
+ {
+ Object[] row1 = row("k0", "c0");
+ Object[] row2 = row("k0", "c1");
+ Object[] row3 = row("k1", "c0");
+ Object[] row4 = row("k1", "c1");
+ String tableName = createTable("CREATE TABLE %s (k text, c text, PRIMARY KEY(k, c))");
+ createIndex("CREATE INDEX no_regulars_idx ON %s(c)");
+
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row1);
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row2);
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row3);
+ execute("INSERT INTO %s (k, c) VALUES (?, ?)", row4);
+
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c0"), row1, row3);
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c1"), row2, row4);
+ assertEmpty(execute("SELECT * FROM %s WHERE c = ?", "c3"));
+
+ dropIndex("DROP INDEX %s.no_regulars_idx");
+ createIndex("CREATE INDEX no_regulars_idx ON %s(c)");
+ assertTrue(waitForIndex(keyspace(), tableName, "no_regulars_idx"));
+
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c0"), row1, row3);
+ assertRowsIgnoringOrder(execute("SELECT * FROM %s WHERE c = ?", "c1"), row2, row4);
+ assertEmpty(execute("SELECT * FROM %s WHERE c = ?", "c3"));
+ }
+
+ @Test
public void createIndexesOnMultipleMapDimensions() throws Throwable
{
Object[] row1 = row(0, 0, ImmutableMap.of("a", 10, "b", 20, "c", 30));