You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by bo...@apache.org on 2018/07/23 17:47:36 UTC
[drill] branch master updated: DRILL-6622: Fixed a
NullPointerException in a query with Union
This is an automated email from the ASF dual-hosted git repository.
boaz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/drill.git
The following commit(s) were added to refs/heads/master by this push:
new c58735a DRILL-6622: Fixed a NullPointerException in a query with Union
c58735a is described below
commit c58735a04e0ad6dcff15ee35bbbc27bdd7a14aef
Author: Salim Achouche <sa...@gmail.com>
AuthorDate: Sat Jul 21 22:55:25 2018 -0700
DRILL-6622: Fixed a NullPointerException in a query with Union
closes #1391
---
.../apache/drill/exec/physical/impl/aggregate/HashAggBatch.java | 7 ++++++-
.../drill/exec/physical/impl/aggregate/HashAggTemplate.java | 9 ++++++++-
.../org/apache/drill/exec/record/RecordBatchMemoryManager.java | 3 +++
3 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggBatch.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggBatch.java
index d37631b..ba928ae 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggBatch.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggBatch.java
@@ -114,8 +114,13 @@ public class HashAggBatch extends AbstractRecordBatch<HashAggregate> {
@Override
public void update() {
+ update(incoming);
+ }
+
+ @Override
+ public void update(RecordBatch incomingRecordBatch) {
// Get sizing information for the batch.
- setRecordBatchSizer(new RecordBatchSizer(incoming));
+ setRecordBatchSizer(new RecordBatchSizer(incomingRecordBatch));
int fieldId = 0;
int newOutgoingRowWidth = 0;
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggTemplate.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggTemplate.java
index 2f3bc23..4bbfa05 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggTemplate.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggTemplate.java
@@ -584,6 +584,11 @@ public abstract class HashAggTemplate implements HashAggregator {
currentBatchRecordCount = incoming.getRecordCount(); // initialize for first non empty batch
// Calculate the number of partitions based on actual incoming data
delayedSetup();
+ // Update the record batch manager since this is the first batch with data; we need to
+ // perform the update before any processing.
+ // NOTE - We pass the incoming record batch explicitly because it could be a spilled record (different
+ // from the instance owned by the HashAggBatch).
+ outgoing.getRecordBatchMemoryManager().update(incoming);
}
//
@@ -666,7 +671,9 @@ public abstract class HashAggTemplate implements HashAggregator {
// remember EMIT, but continue like handling OK
case OK:
- outgoing.getRecordBatchMemoryManager().update();
+ // NOTE - We pass the incoming record batch explicitly because it could be a spilled record (different
+ // from the instance owned by the HashAggBatch).
+ outgoing.getRecordBatchMemoryManager().update(incoming);
currentBatchRecordCount = incoming.getRecordCount(); // size of next batch
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/record/RecordBatchMemoryManager.java b/exec/java-exec/src/main/java/org/apache/drill/exec/record/RecordBatchMemoryManager.java
index 79b28db..2372be2 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/record/RecordBatchMemoryManager.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/record/RecordBatchMemoryManager.java
@@ -154,6 +154,9 @@ public class RecordBatchMemoryManager {
public void update() {};
+ public void update(RecordBatch recordBatch) {
+ }
+
public void update(RecordBatch recordBatch, int index) {
// Get sizing information for the batch.
setRecordBatchSizer(index, new RecordBatchSizer(recordBatch));