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();
+      }
     }
   }
 

Reply via email to