This is an automated email from the ASF dual-hosted git repository. amashenkov pushed a commit to branch ignite-21580 in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 913f0e50463e369f496dc49db284eaac273c31be Author: amashenkov <[email protected]> AuthorDate: Wed Mar 27 16:28:05 2024 +0300 Fix wrong memory estimation for IgniteAggregate. --- .../org/apache/ignite/internal/sql/engine/rel/IgniteAggregate.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rel/IgniteAggregate.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rel/IgniteAggregate.java index 637d2aca19..484ad1f0c8 100644 --- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rel/IgniteAggregate.java +++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rel/IgniteAggregate.java @@ -78,10 +78,13 @@ public abstract class IgniteAggregate extends Aggregate implements IgniteRel { if (!aggCalls.isEmpty()) { double grps = estimateRowCount(mq); - double rows = input.estimateRowCount(mq); for (AggregateCall aggCall : aggCalls) { if (aggCall.isDistinct()) { + Double distinctRowCount = mq.getDistinctRowCount(getInput(), ImmutableBitSet.of(aggCall.getArgList()), null); + + double rows = distinctRowCount == null ? input.estimateRowCount(mq) : distinctRowCount; + mem += IgniteCost.AGG_CALL_MEM_COST * rows / grps; } else { mem += IgniteCost.AGG_CALL_MEM_COST;
