This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-4.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-4.1 by this push:
new 7cac67921e2 branch-4.1: [fix](nereids) Fix pre-aggregation context
leakage across join branches #63357 (#63433)
7cac67921e2 is described below
commit 7cac67921e2434cc48448464f45702b4ad5d2885
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Thu May 21 13:24:26 2026 +0800
branch-4.1: [fix](nereids) Fix pre-aggregation context leakage across join
branches #63357 (#63433)
Cherry-picked from #63357
Co-authored-by: lw112 <[email protected]>
---
.../nereids/rules/rewrite/SetPreAggStatus.java | 1 +
.../nereids_rules_p0/set_preagg/set_preagg.groovy | 25 +++++++++++++++++++---
2 files changed, 23 insertions(+), 3 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SetPreAggStatus.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SetPreAggStatus.java
index 7ae49fc6ec8..9b152efbb20 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SetPreAggStatus.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SetPreAggStatus.java
@@ -207,6 +207,7 @@ public class SetPreAggStatus extends
DefaultPlanRewriter<Stack<SetPreAggStatus.P
Plan plan = super.visit(logicalAggregate, context);
if (!context.isEmpty()) {
PreAggInfoContext preAggInfoContext = context.pop();
+
preAggInfoContext.olapScanIds.retainAll(logicalAggregate.child().getInputRelations());
preAggInfoContext.addAggregateFunctions(logicalAggregate.getAggregateFunctions());
preAggInfoContext.addGroupByExpresssions(logicalAggregate.getGroupByExpressions());
for (RelationId id : preAggInfoContext.olapScanIds) {
diff --git
a/regression-test/suites/nereids_rules_p0/set_preagg/set_preagg.groovy
b/regression-test/suites/nereids_rules_p0/set_preagg/set_preagg.groovy
index 106f05b8f13..888892bc9c4 100644
--- a/regression-test/suites/nereids_rules_p0/set_preagg/set_preagg.groovy
+++ b/regression-test/suites/nereids_rules_p0/set_preagg/set_preagg.groovy
@@ -269,7 +269,9 @@ suite("set_preagg") {
group by preagg_t3.k2, t12.k2
order by 1, 2;
""")
- notContains "PREAGGREGATION: OFF"
+ contains "(preagg_t1), PREAGGREGATION: ON"
+ contains "(preagg_t2), PREAGGREGATION: ON"
+ contains "(preagg_t3), PREAGGREGATION: OFF"
}
explain {
@@ -287,7 +289,9 @@ suite("set_preagg") {
group by preagg_t3.k2, t12.k2
order by 1, 2;
""")
- notContains "PREAGGREGATION: OFF"
+ contains "(preagg_t1), PREAGGREGATION: ON"
+ contains "(preagg_t2), PREAGGREGATION: ON"
+ contains "(preagg_t3), PREAGGREGATION: OFF"
}
explain {
@@ -307,6 +311,21 @@ suite("set_preagg") {
""")
contains "(preagg_t1), PREAGGREGATION: ON"
contains "(preagg_t2), PREAGGREGATION: OFF. Reason: can't turn preAgg
on because aggregate function sum"
- contains "(preagg_t3), PREAGGREGATION: OFF. Reason: can't turn preAgg
on because aggregate function sum"
+ contains "(preagg_t3), PREAGGREGATION: OFF"
+ }
+
+ explain {
+ sql("""
+ select cw.k1, cw.k2, cw.v7, cw.v9
+ from preagg_t1 cw
+ inner join (
+ select k1, k2, max(v9) as v9
+ from preagg_t1
+ where k1 in (1, 2)
+ group by k1, k2
+ ) mw on cw.k1 = mw.k1 and cw.v9 = mw.v9;
+ """)
+ contains "(preagg_t1), PREAGGREGATION: OFF. Reason: No valid aggregate
on scan."
+ contains "(preagg_t1), PREAGGREGATION: ON"
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]