You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by pr...@apache.org on 2017/10/02 17:30:50 UTC
[8/9] drill git commit: DRILL-5824: Retain original memory limit for
1st phase HashAgg with 1 partition
DRILL-5824: Retain original memory limit for 1st phase HashAgg with 1 partition
closes #966
Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/f958d4d0
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/f958d4d0
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/f958d4d0
Branch: refs/heads/master
Commit: f958d4d0545c2d886e16f3413e2166f69c80d772
Parents: 5a100d1
Author: Ben-Zvi <bb...@mapr.com>
Authored: Thu Sep 28 17:09:53 2017 -0700
Committer: Paul Rogers <pr...@maprtech.com>
Committed: Sat Sep 30 19:13:35 2017 -0700
----------------------------------------------------------------------
.../drill/exec/physical/impl/aggregate/HashAggTemplate.java | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/drill/blob/f958d4d0/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggTemplate.java
----------------------------------------------------------------------
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 1e65c49..4a81f3c 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
@@ -441,8 +441,9 @@ public abstract class HashAggTemplate implements HashAggregator {
// The following initial safety check should be revisited once we can lower the number of rows in a batch
// In cases of very tight memory -- need at least memory to process one batch, plus overhead (e.g. hash table)
- if ( numPartitions == 1 ) {
- // if too little memory - behave like the old code -- no memory limit for hash aggregate
+ if ( numPartitions == 1 && ! canSpill ) {
+ // if too little memory - behave like the old code -- practically no memory limit for hash aggregate
+ // (but 1st phase can still spill, so it will maintain the original memory limit)
allocator.setLimit(AbstractBase.MAX_ALLOCATION); // 10_000_000_000L
}
// Based on the number of partitions: Set the mask and bit count