DRILL-242: fix negative hash values, sort order POP case and sending of empty 
batches with no schema


Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/8b64b942
Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/8b64b942
Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/8b64b942

Branch: refs/heads/master
Commit: 8b64b942558d6d38038de4755b9e333a393b45f6
Parents: f3ecb20
Author: Ben Becker <[email protected]>
Authored: Tue Sep 17 10:46:24 2013 -0700
Committer: Steven Phillips <[email protected]>
Committed: Wed Oct 30 15:23:23 2013 -0700

----------------------------------------------------------------------
 .../physical/impl/partitionsender/OutgoingRecordBatch.java     | 6 ++----
 .../physical/impl/partitionsender/PartitionSenderRootExec.java | 2 +-
 2 files changed, 3 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/8b64b942/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/partitionsender/OutgoingRecordBatch.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/partitionsender/OutgoingRecordBatch.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/partitionsender/OutgoingRecordBatch.java
index c24a7a3..29ed795 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/partitionsender/OutgoingRecordBatch.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/partitionsender/OutgoingRecordBatch.java
@@ -116,10 +116,7 @@ public class OutgoingRecordBatch implements RecordBatch {
     } else {
       logger.debug("Flush requested on an empty outgoing record batch" + 
(isLast ? " (last batch)" : ""));
       if (isLast) {
-        // if the last batch is empty, it must not contain any value vectors.
-        vectorContainer = new VectorContainer();
-
-        // send final batch
+        // send final (empty) batch
         FragmentWritableBatch writableBatch = new FragmentWritableBatch(isLast,
                                                                         
handle.getQueryId(),
                                                                         
handle.getMajorFragmentId(),
@@ -128,6 +125,7 @@ public class OutgoingRecordBatch implements RecordBatch {
                                                                         
oppositeMinorFragmentId,
                                                                         
getWritableBatch());
         tunnel.sendRecordBatch(statusHandler, context, writableBatch);
+        vectorContainer.clear();
         return true;
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/8b64b942/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/partitionsender/PartitionSenderRootExec.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/partitionsender/PartitionSenderRootExec.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/partitionsender/PartitionSenderRootExec.java
index 87c7ee5..b26b817 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/partitionsender/PartitionSenderRootExec.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/partitionsender/PartitionSenderRootExec.java
@@ -184,7 +184,7 @@ class PartitionSenderRootExec implements RootExec {
     // generate evaluate expression to determine the hash
     CodeGenerator.HoldingContainer exprHolder = cg.addExpr(materializedExpr);
     cg.getEvalBlock().decl(JType.parse(cg.getModel(), "int"), "bucket", 
exprHolder.getValue().mod(JExpr.lit(outgoing.length)));
-
+    cg.getEvalBlock().assign(JExpr.ref("bucket"), 
cg.getModel().ref(Math.class).staticInvoke("abs").arg(bucket));
     // declare and assign the array of outgoing record batches
     JVar outgoingBatches = cg.clazz.field(JMod.NONE,
         outgoingBatchArrayType,

Reply via email to