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]

Reply via email to