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/f2520d7a Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f2520d7a Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f2520d7a Branch: refs/heads/trunk Commit: f2520d7a55525d281ff43348b4b913b3ef344208 Parents: 3834a27 4a531c2 Author: Blake Eggleston <[email protected]> Authored: Wed Nov 28 09:29:46 2018 -0800 Committer: Blake Eggleston <[email protected]> Committed: Wed Nov 28 09:29:46 2018 -0800 ---------------------------------------------------------------------- CHANGES.txt | 3 ++ .../db/rows/RowAndDeletionMergeIterator.java | 40 +++++++++++++++- .../rows/RowAndDeletionMergeIteratorTest.java | 48 ++++++++++++++++---- 3 files changed, 82 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/f2520d7a/CHANGES.txt ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/f2520d7a/src/java/org/apache/cassandra/db/rows/RowAndDeletionMergeIterator.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/f2520d7a/test/unit/org/apache/cassandra/db/rows/RowAndDeletionMergeIteratorTest.java ---------------------------------------------------------------------- diff --cc test/unit/org/apache/cassandra/db/rows/RowAndDeletionMergeIteratorTest.java index 0d790fc,2f48000..f590d36 --- a/test/unit/org/apache/cassandra/db/rows/RowAndDeletionMergeIteratorTest.java +++ b/test/unit/org/apache/cassandra/db/rows/RowAndDeletionMergeIteratorTest.java @@@ -341,6 -347,28 +346,28 @@@ public class RowAndDeletionMergeIterato assertFalse(iterator.hasNext()); } + /** + * RTL doesn't correctly merge range tombstones in some situations (see CASSANDRA-14894) + */ + @Test + public void testWithNoopBoundaryMarkers() + { - PartitionUpdate update = new PartitionUpdate(cfm, dk, cfm.partitionColumns(), 1); ++ PartitionUpdate update = PartitionUpdate.emptyUpdate(cfm, dk); + RangeTombstoneList rtl = new RangeTombstoneList(cfm.comparator, 10); + rtl.add(rt(1, 2, 5, 5)); + rtl.add(rt(3, 4, 5, 5)); + rtl.add(rt(5, 6, 5, 5)); + rtl.add(rt(0, 8, 6, 6)); // <- supersedes all other tombstones + + Assert.assertEquals(3, rtl.size()); + + try (UnfilteredRowIterator partition = createMergeIterator(update.iterator(), rtl.iterator(), false)) + { + assertRtMarker(partition.next(), ClusteringPrefix.Kind.INCL_START_BOUND, 0); + assertRtMarker(partition.next(), ClusteringPrefix.Kind.INCL_END_BOUND, 8); + assertFalse(partition.hasNext()); + } + } private void assertRtMarker(Unfiltered unfiltered, ClusteringBoundOrBoundary bound) { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
