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;

Reply via email to