From 557c59607fa9eb2014a7905cfc0eb3dbcd043cab Mon Sep 17 00:00:00 2001 From: Alex Petrov Date: Fri, 15 Jul 2016 17:49:16 -0500 Subject: [PATCH] Avoid wrapping results with ThriftResultsMerger if command is not for thrift Patch by Alex Petrov; reviewed by Tyler Hobbs for CASSANDRA-12193. --- src/java/org/apache/cassandra/db/ReadResponse.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) 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; } }; }