in merge receiver, handle case where no records are returned
Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/bfbc83f9 Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/bfbc83f9 Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/bfbc83f9 Branch: refs/heads/master Commit: bfbc83f907d38d2bcee6e0e1c2b22242326d22a4 Parents: ca58de1 Author: Steven Phillips <[email protected]> Authored: Wed Apr 2 15:35:50 2014 -0700 Committer: Jacques Nadeau <[email protected]> Committed: Sat Apr 19 18:07:11 2014 -0700 ---------------------------------------------------------------------- .../physical/impl/mergereceiver/MergingRecordBatch.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/bfbc83f9/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/mergereceiver/MergingRecordBatch.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/mergereceiver/MergingRecordBatch.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/mergereceiver/MergingRecordBatch.java index ee2244e..c5c77a6 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/mergereceiver/MergingRecordBatch.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/mergereceiver/MergingRecordBatch.java @@ -146,6 +146,9 @@ public class MergingRecordBatch implements RecordBatch { // allocate the incoming record batch loaders senderCount = rawBatches.size(); + if (senderCount == 0) { + return IterOutcome.NONE; + } incomingBatches = new RawFragmentBatch[senderCount]; batchOffsets = new int[senderCount]; batchLoaders = new RecordBatchLoader[senderCount]; @@ -634,8 +637,10 @@ public class MergingRecordBatch implements RecordBatch { @Override public void cleanup() { outgoingContainer.clear(); - for(RecordBatchLoader rbl : batchLoaders){ - rbl.clear(); + if (batchLoaders != null) { + for(RecordBatchLoader rbl : batchLoaders){ + rbl.clear(); + } } }
