This is an automated email from the ASF dual-hosted git repository.

dataroaring pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/doris.git

commit ffbfe6b1138880aa01f7a596cc0f426de671725a
Author: morrySnow <101034200+morrys...@users.noreply.github.com>
AuthorDate: Mon Jul 1 16:02:38 2024 +0800

    [fix](Nereids) simplify window expression should inherit data type (#37061)
    
    intro by #33647
    
    after window expression rewritten by literal.
    literal's data type should same with original window expression.
---
 .../doris/nereids/rules/rewrite/SimplifyWindowExpression.java     | 4 +++-
 .../simplify_window_expression/simplify_window_expression.out     | 8 ++++++++
 .../simplify_window_expression/simplify_window_expression.groovy  | 7 +++++--
 3 files changed, 16 insertions(+), 3 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SimplifyWindowExpression.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SimplifyWindowExpression.java
index 0db1d59b9e6..311fe57cf16 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SimplifyWindowExpression.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SimplifyWindowExpression.java
@@ -22,6 +22,7 @@ import org.apache.doris.nereids.pattern.MatchingContext;
 import org.apache.doris.nereids.rules.Rule;
 import org.apache.doris.nereids.rules.RuleType;
 import org.apache.doris.nereids.trees.expressions.Alias;
+import org.apache.doris.nereids.trees.expressions.Cast;
 import org.apache.doris.nereids.trees.expressions.Expression;
 import org.apache.doris.nereids.trees.expressions.NamedExpression;
 import org.apache.doris.nereids.trees.expressions.Slot;
@@ -91,7 +92,8 @@ public class SimplifyWindowExpression extends 
OneRewriteRuleFactory {
                 String name = ((BoundFunction) function).getName();
                 if ((name.equals(COUNT) && checkCount((Count) boundFunction))
                         || REWRRITE_TO_CONST_WINDOW_FUNCTIONS.contains(name)) {
-                    projectionsBuilder.add(new Alias(alias.getExprId(), new 
TinyIntLiteral((byte) 1), alias.getName()));
+                    projectionsBuilder.add(new Alias(alias.getExprId(),
+                            new Cast(new TinyIntLiteral((byte) 1), 
function.getDataType()), alias.getName()));
                 } else if (REWRRITE_TO_SLOT_WINDOW_FUNCTIONS.contains(name)) {
                     projectionsBuilder.add(new Alias(alias.getExprId(),
                             
TypeCoercionUtils.castIfNotSameType(boundFunction.child(0), 
boundFunction.getDataType()),
diff --git 
a/regression-test/data/nereids_rules_p0/simplify_window_expression/simplify_window_expression.out
 
b/regression-test/data/nereids_rules_p0/simplify_window_expression/simplify_window_expression.out
index e660cd7702c..7c72e1c31e7 100644
--- 
a/regression-test/data/nereids_rules_p0/simplify_window_expression/simplify_window_expression.out
+++ 
b/regression-test/data/nereids_rules_p0/simplify_window_expression/simplify_window_expression.out
@@ -265,3 +265,11 @@ PhysicalResultSink
 ----------filter((mal_test_simplify_window.__DORIS_DELETE_SIGN__ = 0))
 ------------PhysicalOlapScan[mal_test_simplify_window]
 
+-- !check_output_type --
+\N     1       1
+1      1       1
+2      1       1
+3      1       1
+4      1       1
+6      1       1
+
diff --git 
a/regression-test/suites/nereids_rules_p0/simplify_window_expression/simplify_window_expression.groovy
 
b/regression-test/suites/nereids_rules_p0/simplify_window_expression/simplify_window_expression.groovy
index 10c76049e8e..252116e6314 100644
--- 
a/regression-test/suites/nereids_rules_p0/simplify_window_expression/simplify_window_expression.groovy
+++ 
b/regression-test/suites/nereids_rules_p0/simplify_window_expression/simplify_window_expression.groovy
@@ -16,8 +16,6 @@
 // under the License.
 
 suite("simplify_window_expression") {
-    sql "SET enable_nereids_planner=true"
-    sql "SET enable_fallback_to_original_planner=false"
     sql "set enable_parallel_result_sink=false;"
     sql """
           DROP TABLE IF EXISTS mal_test_simplify_window
@@ -111,4 +109,9 @@ suite("simplify_window_expression") {
         select a, rank() over (partition by a order by sum(b) desc) as ranking
         from mal_test_simplify_window group by a;
     """
+
+    order_qt_check_output_type """
+        select * from ( select a, rank() over (partition by a order by sum(b) 
desc) as ranking
+        from mal_test_simplify_window group by a) t, (select 1 a) t2 where 
t.ranking = t2.a
+    """
 }
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to