From 4611ffa4d6fea79fc4d0ffac41c877aedee37a2e Mon Sep 17 00:00:00 2001 From: minghong Date: Thu, 11 Jun 2026 16:37:14 +0800 Subject: [PATCH] aggfunc slots and group by key slots intersect --- .../rewrite/eageraggregation/PushDownAggContext.java | 3 +-- .../rewrite/eageraggregation/PushDownAggregation.java | 8 ++++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/eageraggregation/PushDownAggContext.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/eageraggregation/PushDownAggContext.java index 17686d006a7cb4..29950687a88d95 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/eageraggregation/PushDownAggContext.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/eageraggregation/PushDownAggContext.java @@ -94,8 +94,7 @@ public PushDownAggContext(List aggFunctions, * @return true, if groupKeys is not empty and no group by key is in aggFunctionsInputSlots */ public boolean isValid() { - return !groupKeys.isEmpty() - && !groupKeys.stream().anyMatch(s -> aggFunctionsInputSlots.contains(s)); + return !groupKeys.isEmpty(); } public PushDownAggContext passThroughBigJoin() { diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/eageraggregation/PushDownAggregation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/eageraggregation/PushDownAggregation.java index d92bc91e61ce20..8bf95f9c955360 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/eageraggregation/PushDownAggregation.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/eageraggregation/PushDownAggregation.java @@ -177,10 +177,10 @@ public Plan visitLogicalAggregate(LogicalAggregate agg, JobConte If body = (If) (aggFunction).child(0); Set valueSlots = Sets.newHashSet(body.getTrueValue().getInputSlots()); valueSlots.addAll(body.getFalseValue().getInputSlots()); - if (body.getCondition().getInputSlots().stream().anyMatch(s -> valueSlots.contains(s))) { - // do not push down sum(if a then a else b) - return agg; - } + // if (body.getCondition().getInputSlots().stream().anyMatch(s -> valueSlots.contains(s))) { + // // do not push down sum(if a then a else b) + // return agg; + // } AggregateFunction aggTrue = (AggregateFunction) aggFunction.withChildren(body.getTrueValue()); aggFunctions.add(aggTrue); funcs.add(aggTrue);