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,
