From fe4271c59e75e1911f59de871537e9dae7fc642d Mon Sep 17 00:00:00 2001 From: Karol Sobczak Date: Fri, 8 Mar 2019 16:25:45 +0100 Subject: [PATCH] Rename getSizeInMemory to getSizeInMemoryWhenUnspilling --- .../SpillableHashAggregationBuilder.java | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/presto-main/src/main/java/io/prestosql/operator/aggregation/builder/SpillableHashAggregationBuilder.java b/presto-main/src/main/java/io/prestosql/operator/aggregation/builder/SpillableHashAggregationBuilder.java index 9a60aa0ca2914..643bb726c55a6 100644 --- a/presto-main/src/main/java/io/prestosql/operator/aggregation/builder/SpillableHashAggregationBuilder.java +++ b/presto-main/src/main/java/io/prestosql/operator/aggregation/builder/SpillableHashAggregationBuilder.java @@ -127,15 +127,6 @@ public void updateMemory() } } - public long getSizeInMemory() - { - // TODO: we could skip memory reservation for hashAggregationBuilder.getGroupIdsSortingSize() - // if before building result from hashAggregationBuilder we would convert it to "read only" version. - // Read only version of GroupByHash from hashAggregationBuilder could be compacted by dropping - // most of it's field, freeing up some memory that could be used for sorting. - return hashAggregationBuilder.getSizeInMemory() + hashAggregationBuilder.getGroupIdsSortingSize(); - } - @Override public void recordHashCollisions(HashCollisionsCounter hashCollisionsCounter) { @@ -210,7 +201,7 @@ public WorkProcessor buildResult() return hashAggregationBuilder.buildResult(); } - if (shouldMergeWithMemory(getSizeInMemory())) { + if (shouldMergeWithMemory(getSizeInMemoryWhenUnspilling())) { return mergeFromDiskAndMemory(); } else { @@ -219,6 +210,18 @@ public WorkProcessor buildResult() } } + /** + * Estimates future memory usage, during unspilling. + */ + private long getSizeInMemoryWhenUnspilling() + { + // TODO: we could skip memory reservation for hashAggregationBuilder.getGroupIdsSortingSize() + // if before building result from hashAggregationBuilder we would convert it to "read only" version. + // Read only version of GroupByHash from hashAggregationBuilder could be compacted by dropping + // most of it's field, freeing up some memory that could be used for sorting. + return hashAggregationBuilder.getSizeInMemory() + hashAggregationBuilder.getGroupIdsSortingSize(); + } + @Override public void close() {