This is an automated email from the ASF dual-hosted git repository.
jakevin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new ade598e043 [feature](Nereids): eliminate distinct for
max/min/any_value (#23428)
ade598e043 is described below
commit ade598e043131a002c89421d8ac5e90ab3478ff4
Author: 谢健 <[email protected]>
AuthorDate: Wed Aug 30 17:23:10 2023 +0800
[feature](Nereids): eliminate distinct for max/min/any_value (#23428)
eliminate distinct for max/min/any_value function
```
max(distinct value) = max(value)
```
---
.../nereids/trees/expressions/functions/agg/AnyValue.java | 2 +-
.../doris/nereids/trees/expressions/functions/agg/Max.java | 2 +-
.../doris/nereids/trees/expressions/functions/agg/Min.java | 2 +-
regression-test/suites/nereids_p0/aggregate/aggregate.groovy | 11 +++++++++++
regression-test/suites/nereids_syntax_p0/analyze_agg.groovy | 4 ++--
5 files changed, 16 insertions(+), 5 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/AnyValue.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/AnyValue.java
index aafc8d3599..c2c0d43660 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/AnyValue.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/AnyValue.java
@@ -51,7 +51,7 @@ public class AnyValue extends AggregateFunction
* constructor with 1 argument.
*/
public AnyValue(boolean distinct, Expression arg) {
- super("any_value", distinct, arg);
+ super("any_value", false, arg);
}
/**
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Max.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Max.java
index 02ac778eea..19cd0190bb 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Max.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Max.java
@@ -44,7 +44,7 @@ public class Max extends NullableAggregateFunction
}
private Max(boolean distinct, boolean alwaysNullable, Expression arg) {
- super("max", distinct, alwaysNullable, arg);
+ super("max", false, alwaysNullable, arg);
}
@Override
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Min.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Min.java
index ef3fd8db32..72b2162eb5 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Min.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Min.java
@@ -45,7 +45,7 @@ public class Min extends NullableAggregateFunction
}
private Min(boolean distinct, boolean alwaysNullable, Expression arg) {
- super("min", distinct, alwaysNullable, arg);
+ super("min", false, alwaysNullable, arg);
}
@Override
diff --git a/regression-test/suites/nereids_p0/aggregate/aggregate.groovy
b/regression-test/suites/nereids_p0/aggregate/aggregate.groovy
index e1ae3131b2..f0ba091e04 100644
--- a/regression-test/suites/nereids_p0/aggregate/aggregate.groovy
+++ b/regression-test/suites/nereids_p0/aggregate/aggregate.groovy
@@ -317,4 +317,15 @@ suite("aggregate") {
sql "select k1 as k, k1 from tempbaseall group by k1 having k1 > 0"
sql "select k1 as k, k1 from tempbaseall group by k1 having k > 0"
+
+ // remove distinct for max, min, any_value
+ def plan = sql(
+ """explain optimized plan SELECT max(distinct c_bigint),
+ min(distinct c_bigint),
+ any_value(distinct c_bigint)
+ FROM regression_test_nereids_p0_aggregate.${tableName};"""
+ ).toString()
+ assertTrue(plan.contains("max(c_bigint"))
+ assertTrue(plan.contains("min(c_bigint"))
+ assertTrue(plan.contains("any_value(c_bigint"))
}
diff --git a/regression-test/suites/nereids_syntax_p0/analyze_agg.groovy
b/regression-test/suites/nereids_syntax_p0/analyze_agg.groovy
index 2f0b0d01c6..55bb2deab2 100644
--- a/regression-test/suites/nereids_syntax_p0/analyze_agg.groovy
+++ b/regression-test/suites/nereids_syntax_p0/analyze_agg.groovy
@@ -70,7 +70,7 @@ suite("analyze_agg") {
"""
test {
- sql "select count(distinct t2.id), max(distinct t2.c) from t2"
- exception "max(DISTINCT c#2) can't support multi distinct."
+ sql "select count(distinct t2.b), variance(distinct t2.c) from t2"
+ exception "variance(DISTINCT c#2) can't support multi distinct."
}
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]