Fix paging logic for deleted partitions with static columns patch by Sharvanath Pathak; reviewed by Benjamin Lerer for CASSANDRA-12107
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/84426d18 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/84426d18 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/84426d18 Branch: refs/heads/cassandra-3.8 Commit: 84426d183ae095107bb264b92d828f231d0a9826 Parents: fbd287a Author: Sharvanath Pathak <sharvan...@gmail.com> Authored: Thu Jul 14 21:38:14 2016 +0200 Committer: Benjamin Lerer <b.le...@gmail.com> Committed: Thu Jul 14 21:38:14 2016 +0200 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../apache/cassandra/db/filter/DataLimits.java | 3 +- .../validation/operations/SelectLimitTest.java | 31 ++++++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/84426d18/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 3829046..59f0a5f 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.9 + * Fix paging logic for deleted partitions with static columns (CASSANDRA-12107) * Wait until the message is being send to decide which serializer must be used (CASSANDRA-11393) * Fix migration of static thrift column names with non-text comparators (CASSANDRA-12147) * Fix upgrading sparse tables that are incorrectly marked as dense (CASSANDRA-11315) http://git-wip-us.apache.org/repos/asf/cassandra/blob/84426d18/src/java/org/apache/cassandra/db/filter/DataLimits.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/filter/DataLimits.java b/src/java/org/apache/cassandra/db/filter/DataLimits.java index f6fdcdd..94f43dc 100644 --- a/src/java/org/apache/cassandra/db/filter/DataLimits.java +++ b/src/java/org/apache/cassandra/db/filter/DataLimits.java @@ -360,8 +360,7 @@ public abstract class DataLimits public void applyToPartition(DecoratedKey partitionKey, Row staticRow) { rowInCurrentPartition = 0; - if (!staticRow.isEmpty() && (assumeLiveData || staticRow.hasLiveData(nowInSec))) - hasLiveStaticRow = true; + hasLiveStaticRow = !staticRow.isEmpty() && (assumeLiveData || staticRow.hasLiveData(nowInSec)); } @Override http://git-wip-us.apache.org/repos/asf/cassandra/blob/84426d18/test/unit/org/apache/cassandra/cql3/validation/operations/SelectLimitTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/cql3/validation/operations/SelectLimitTest.java b/test/unit/org/apache/cassandra/cql3/validation/operations/SelectLimitTest.java index a21ef3c..aeb3d56 100644 --- a/test/unit/org/apache/cassandra/cql3/validation/operations/SelectLimitTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/operations/SelectLimitTest.java @@ -133,4 +133,35 @@ public class SelectLimitTest extends CQLTester row(2, 2), row(2, 3)); } + + @Test + public void testLimitWithDeletedRowsAndStaticColumns() throws Throwable + { + createTable("CREATE TABLE %s (pk int, c int, v int, s int static, PRIMARY KEY (pk, c))"); + + execute("INSERT INTO %s (pk, c, v, s) VALUES (1, -1, 1, 1)"); + execute("INSERT INTO %s (pk, c, v, s) VALUES (2, -1, 1, 1)"); + execute("INSERT INTO %s (pk, c, v, s) VALUES (3, -1, 1, 1)"); + execute("INSERT INTO %s (pk, c, v, s) VALUES (4, -1, 1, 1)"); + execute("INSERT INTO %s (pk, c, v, s) VALUES (5, -1, 1, 1)"); + + assertRows(execute("SELECT * FROM %s"), + row(1, -1, 1, 1), + row(2, -1, 1, 1), + row(3, -1, 1, 1), + row(4, -1, 1, 1), + row(5, -1, 1, 1)); + + execute("DELETE FROM %s WHERE pk = 2"); + + assertRows(execute("SELECT * FROM %s"), + row(1, -1, 1, 1), + row(3, -1, 1, 1), + row(4, -1, 1, 1), + row(5, -1, 1, 1)); + + assertRows(execute("SELECT * FROM %s LIMIT 2"), + row(1, -1, 1, 1), + row(3, -1, 1, 1)); + } }