diff --git a/src/java/org/apache/cassandra/db/ReadResponse.java b/src/java/org/apache/cassandra/db/ReadResponse.java index 12a200fc4a..2304cb4ab7 100644 --- a/src/java/org/apache/cassandra/db/ReadResponse.java +++ b/src/java/org/apache/cassandra/db/ReadResponse.java @@ -282,12 +282,17 @@ public abstract class ReadResponse // Pre-3.0, we didn't have a way to express exclusivity for non-composite comparators, so all slices were // inclusive on both ends. If we have exclusive slice ends, we need to filter the results here. + UnfilteredRowIterator iterator; if (!command.metadata().isCompound()) - return ThriftResultsMerger.maybeWrap( - filter.filter(partition.sliceableUnfilteredIterator(command.columnFilter(), filter.isReversed())), command.nowInSec()); + iterator = filter.filter(partition.sliceableUnfilteredIterator(command.columnFilter(), filter.isReversed())); + else + iterator = partition.unfilteredIterator(command.columnFilter(), Slices.ALL, filter.isReversed()); - return ThriftResultsMerger.maybeWrap( - partition.unfilteredIterator(command.columnFilter(), Slices.ALL, filter.isReversed()), command.nowInSec()); + // Wrap results with a ThriftResultMerger only if they're intended for the thrift command. + if (command.isForThrift()) + return ThriftResultsMerger.maybeWrap(iterator, command.nowInSec()); + else + return iterator; } }; }