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/a1cb8e5a Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a1cb8e5a Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a1cb8e5a Branch: refs/heads/trunk Commit: a1cb8e5abc224623c35fe84969dc08894c91278a Parents: 94aa57e 863ad11 Author: Alex Petrov <oleksandr.pet...@gmail.com> Authored: Fri Apr 7 12:20:02 2017 +0200 Committer: Alex Petrov <oleksandr.pet...@gmail.com> Committed: Fri Apr 7 12:20:02 2017 +0200 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../db/SinglePartitionReadCommand.java | 11 +-- .../db/filter/ClusteringIndexNamesFilter.java | 6 +- .../db/partitions/AbstractBTreePartition.java | 5 -- .../cassandra/utils/IndexedSearchIterator.java | 5 ++ .../apache/cassandra/utils/SearchIterator.java | 2 - .../cassandra/utils/memory/EnsureOnHeap.java | 5 -- .../cql3/validation/operations/DeleteTest.java | 82 +++++++++++++++++++- .../partition/PartitionImplementationTest.java | 2 +- 9 files changed, 92 insertions(+), 27 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/a1cb8e5a/CHANGES.txt ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/a1cb8e5a/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java index 1de02a9,1358f29..d5d2901 --- a/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java +++ b/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java @@@ -744,13 -778,13 +744,13 @@@ public class SinglePartitionReadComman // We need to get the partition deletion and include it if it's live. In any case though, we're done with that sstable. sstable.incrementReadCount(); - try (UnfilteredRowIterator iter = StorageHook.instance.makeRowIterator(cfs, sstable, partitionKey(), Slices.ALL, columnFilter(), filter.isReversed())) - try (UnfilteredRowIterator iter = StorageHook.instance.makeRowIterator(cfs, sstable, partitionKey(), filter.getSlices(metadata()), columnFilter(), filter.isReversed(), isForThrift())) ++ try (UnfilteredRowIterator iter = StorageHook.instance.makeRowIterator(cfs, sstable, partitionKey(), filter.getSlices(metadata()), columnFilter(), filter.isReversed())) { + sstablesIterated++; if (!iter.partitionLevelDeletion().isLive()) - { - sstablesIterated++; result = add(UnfilteredRowIterators.noRowsIterator(iter.metadata(), iter.partitionKey(), Rows.EMPTY_STATIC_ROW, iter.partitionLevelDeletion(), filter.isReversed()), result, filter, sstable.isRepaired()); - } + else + result = add(iter, result, filter, sstable.isRepaired()); } continue; } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a1cb8e5a/src/java/org/apache/cassandra/db/filter/ClusteringIndexNamesFilter.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/db/filter/ClusteringIndexNamesFilter.java index 2f7c13a,31535fc..264e327 --- a/src/java/org/apache/cassandra/db/filter/ClusteringIndexNamesFilter.java +++ b/src/java/org/apache/cassandra/db/filter/ClusteringIndexNamesFilter.java @@@ -136,20 -136,20 +136,20 @@@ public class ClusteringIndexNamesFilte public UnfilteredRowIterator getUnfilteredRowIterator(final ColumnFilter columnFilter, final Partition partition) { + final Iterator<Clustering> clusteringIter = clusteringsInQueryOrder.iterator(); final SearchIterator<Clustering, Row> searcher = partition.searchIterator(columnFilter, reversed); + return new AbstractUnfilteredRowIterator(partition.metadata(), - partition.partitionKey(), - partition.partitionLevelDeletion(), - columnFilter.fetchedColumns(), - searcher.next(Clustering.STATIC_CLUSTERING), - reversed, - partition.stats()) + partition.partitionKey(), + partition.partitionLevelDeletion(), + columnFilter.fetchedColumns(), + searcher.next(Clustering.STATIC_CLUSTERING), + reversed, + partition.stats()) { - private final Iterator<Clustering> clusteringIter = clusteringsInQueryOrder.iterator(); - protected Unfiltered computeNext() { - while (clusteringIter.hasNext() && searcher.hasNext()) + while (clusteringIter.hasNext()) { Row row = searcher.next(clusteringIter.next()); if (row != null) http://git-wip-us.apache.org/repos/asf/cassandra/blob/a1cb8e5a/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java index 465dec3,bb9201b..d8f2856 --- a/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java +++ b/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java @@@ -131,14 -136,9 +131,9 @@@ public abstract class AbstractBTreePart final Holder current = holder(); return new SearchIterator<Clustering, Row>() { - private final SearchIterator<Clustering, Row> rawIter = new BTreeSearchIterator<>(current.tree, metadata.comparator, desc(reversed)); + private final SearchIterator<Clustering, Row> rawIter = new BTreeSearchIterator<>(current.tree, metadata().comparator, desc(reversed)); private final DeletionTime partitionDeletion = current.deletionInfo.getPartitionDeletion(); - public boolean hasNext() - { - return rawIter.hasNext(); - } - public Row next(Clustering clustering) { if (clustering == Clustering.STATIC_CLUSTERING) http://git-wip-us.apache.org/repos/asf/cassandra/blob/a1cb8e5a/test/unit/org/apache/cassandra/db/partition/PartitionImplementationTest.java ----------------------------------------------------------------------