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

morrysnow 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 a97f582b93 [fix](nereids) use DAYS as default unit for DATE_ADD and 
DATE_SUB function (#15559)
a97f582b93 is described below

commit a97f582b93523ab5889320e13d6f2fc8e41ff37a
Author: starocean999 <40539150+starocean...@users.noreply.github.com>
AuthorDate: Wed Jan 4 01:55:15 2023 +0800

    [fix](nereids) use DAYS as default unit for DATE_ADD and DATE_SUB function 
(#15559)
---
 .../doris/nereids/parser/LogicalPlanBuilder.java   |  14 +-
 .../test_conditional_function.out                  | 201 +++++++++++++++++++++
 .../test_conditional_function.groovy               |  57 ++++++
 3 files changed, 262 insertions(+), 10 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
index f69d1a86ce..061f9ada40 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
@@ -716,11 +716,8 @@ public class LogicalPlanBuilder extends 
DorisParserBaseVisitor<Object> {
         Expression timeStamp = (Expression) visit(ctx.timestamp);
         Expression amount = (Expression) visit(ctx.unitsAmount);
         if (ctx.unit == null) {
-            if ("days_add".equalsIgnoreCase(ctx.name.getText())) {
-                return new DaysAdd(timeStamp, amount);
-            }
-            throw new ParseException("Unsupported signature: " + ctx.name
-                    + " needs time unit (YEAR/MONTH/DAY/HOUR/MINUTE/SECOND)", 
ctx);
+            //use "DAY" as unit by default
+            return new DaysAdd(timeStamp, amount);
         }
 
         if ("DAY".equalsIgnoreCase(ctx.unit.getText())) {
@@ -753,11 +750,8 @@ public class LogicalPlanBuilder extends 
DorisParserBaseVisitor<Object> {
             amount = new Cast(amount, IntegerType.INSTANCE);
         }
         if (ctx.unit == null) {
-            if ("days_sub".equalsIgnoreCase(ctx.name.getText())) {
-                return new DaysSub(timeStamp, amount);
-            }
-            throw new ParseException("Unsupported signature: " + ctx.name
-                    + " needs time unit (YEAR/MONTH/DAY/HOUR/MINUTE/SECOND)", 
ctx);
+            //use "DAY" as unit by default
+            return new DaysSub(timeStamp, amount);
         }
 
         if ("DAY".equalsIgnoreCase(ctx.unit.getText())) {
diff --git 
a/regression-test/data/query_p0/sql_functions/conditional_functions/test_conditional_function.out
 
b/regression-test/data/query_p0/sql_functions/conditional_functions/test_conditional_function.out
index f8b54b0509..c657c48dcd 100644
--- 
a/regression-test/data/query_p0/sql_functions/conditional_functions/test_conditional_function.out
+++ 
b/regression-test/data/query_p0/sql_functions/conditional_functions/test_conditional_function.out
@@ -196,3 +196,204 @@ true
 
 -- !if_false_else_nullable --
 4
+
+-- !sql --
+\N     user_id not exist
+\N     user_id not exist
+\N     user_id not exist
+\N     user_id not exist
+1      user_id = 1
+2      user_id = 2
+3      user_id not exist
+4      user_id not exist
+
+-- !sql --
+\N     user_id not exist
+\N     user_id not exist
+\N     user_id not exist
+\N     user_id not exist
+1      user_id = 1
+2      user_id = 2
+3      user_id not exist
+4      user_id not exist
+
+-- !sql --
+\N     false
+\N     false
+\N     false
+\N     false
+1      true
+2      false
+3      false
+4      false
+
+-- !sql --
+1111
+
+-- !sql --
+1
+
+-- !sql --
+10
+
+-- !sql --
+1
+1
+1
+1
+1
+1
+1
+1
+
+-- !sql --
+1
+1
+1
+1
+1
+2
+3
+4
+
+-- !sql --
+\N
+\N
+\N
+\N
+1
+2
+3
+4
+
+-- !sql --
+\N
+\N
+\N
+\N
+1
+2
+3
+4
+
+-- !sql --
+\N
+
+-- !sql --
+1
+
+-- !sql --
+1
+1
+1
+1
+\N
+1
+1
+1
+
+-- !sql --
+\N
+\N
+\N
+\N
+\N
+2
+3
+4
+
+-- !sql --
+\N
+\N
+\N
+\N
+\N
+\N
+\N
+\N
+
+-- !sql --
+\N
+\N
+\N
+\N
+1
+2
+3
+4
+
+-- !sql --
+\N
+
+-- !sql --
+1
+
+-- !sql --
+true
+true
+true
+true
+false
+false
+false
+false
+
+-- !sql --
+false
+false
+false
+false
+true
+true
+true
+true
+
+-- !sql --
+9999-07-31
+
+-- !sql --
+3
+
+-- !sql --
+9999-07
+
+-- !sql --
+\N
+
+-- !sql --
+9999-07
+
+-- !sql --
+1
+2
+3
+4
+99990101
+99990101
+99990101
+99990101
+
+-- !sql --
+1
+2
+3
+4
+999
+999
+999
+999
+
+-- !if_true_then_nullable --
+4
+
+-- !if_true_else_nullable --
+2
+
+-- !if_false_then_nullable --
+2
+
+-- !if_false_else_nullable --
+4
+
+-- !sql --
+9999-08-02 00:00
diff --git 
a/regression-test/suites/query_p0/sql_functions/conditional_functions/test_conditional_function.groovy
 
b/regression-test/suites/query_p0/sql_functions/conditional_functions/test_conditional_function.groovy
index 1146cf4ae8..08863cea7a 100644
--- 
a/regression-test/suites/query_p0/sql_functions/conditional_functions/test_conditional_function.groovy
+++ 
b/regression-test/suites/query_p0/sql_functions/conditional_functions/test_conditional_function.groovy
@@ -92,5 +92,62 @@ suite("test_conditional_function") {
     qt_if_false_then_nullable """select IF(false, DAYOFWEEK("2022-12-06 
17:48:46"), 1) + 1;"""
     qt_if_false_else_nullable """select IF(false, 1, DAYOFWEEK("2022-12-06 
17:48:46")) + 1;"""
 
+    sql 'set enable_vectorized_engine=true;'
+    sql 'set enable_fallback_to_original_planner=false'
+    sql 'set enable_nereids_planner=true'
+
+    qt_sql "select user_id, case user_id when 1 then 'user_id = 1' when 2 then 
'user_id = 2' else 'user_id not exist' end test_case from ${tbName} order by 
user_id;"
+    qt_sql "select user_id, case when user_id = 1 then 'user_id = 1' when 
user_id = 2 then 'user_id = 2' else 'user_id not exist' end test_case from 
${tbName} order by user_id;"
+
+    qt_sql "select user_id, if(user_id = 1, \"true\", \"false\") test_if from 
${tbName} order by user_id;"
+
+    qt_sql "select coalesce(NULL, '1111', '0000');"
+
+    qt_sql "select ifnull(1,0);"
+    qt_sql "select ifnull(null,10);"
+    qt_sql "select ifnull(1,user_id) from ${tbName} order by user_id;"
+    qt_sql "select ifnull(user_id,1) from ${tbName} order by user_id;"
+    qt_sql "select ifnull(null,user_id) from ${tbName} order by user_id;"
+    qt_sql "select ifnull(user_id,null) from ${tbName} order by user_id;"
+
+    qt_sql "select nullif(1,1);"
+    qt_sql "select nullif(1,0);"
+    qt_sql "select nullif(1,user_id) from ${tbName} order by user_id;"
+    qt_sql "select nullif(user_id,1) from ${tbName} order by user_id;"
+    qt_sql "select nullif(null,user_id) from ${tbName} order by user_id;"
+    qt_sql "select nullif(user_id,null) from ${tbName} order by user_id;"
+
+
+    qt_sql "select nullif(1,1);"
+    qt_sql "select nullif(1,0);"
+
+
+    qt_sql "select is_null_pred(user_id) from ${tbName} order by user_id"
+    qt_sql "select is_not_null_pred(user_id) from ${tbName} order by user_id"
+
+    qt_sql """select if(date_format(CONCAT_WS('', '9999-07', '-26'), '%Y-%m')= 
DATE_FORMAT( curdate(), '%Y-%m'),
+               curdate(),
+               DATE_FORMAT(DATE_SUB(month_ceil ( CONCAT_WS('', '9999-07', 
'-26')), 1), '%Y-%m-%d'));"""
+
+    qt_sql "select ifnull(date_format(CONCAT_WS('', '9999-07', '-00'), 
'%Y-%m'),3);"
+
+    qt_sql "select ifnull(date_format(CONCAT_WS('', '9999-07', '-01'), 
'%Y-%m'),3);"
+
+    qt_sql "select ifnull(date_format(CONCAT_WS('', '9999-07', '-00'), 
'%Y-%m'),date_format(CONCAT_WS('', '9999-07', '-00'), '%Y-%m'));"
+
+    qt_sql "select ifnull(date_format(CONCAT_WS('', '9999-07', '-00'), 
'%Y-%m'),date_format(CONCAT_WS('', '9999-07', '-26'), '%Y-%m'));"
+
+    qt_sql "select ifnull( user_id, to_date('9999-01-01')) r from ${tbName} 
order by r"
+
+    qt_sql "select ifnull( user_id, 999) r from ${tbName} order by r"
+
+    qt_if_true_then_nullable """select IF(true, DAYOFWEEK("2022-12-06 
17:48:46"), 1) + 1;"""
+    qt_if_true_else_nullable """select IF(true, 1, DAYOFWEEK("2022-12-06 
17:48:46")) + 1;"""
+
+    qt_if_false_then_nullable """select IF(false, DAYOFWEEK("2022-12-06 
17:48:46"), 1) + 1;"""
+    qt_if_false_else_nullable """select IF(false, 1, DAYOFWEEK("2022-12-06 
17:48:46")) + 1;"""
+
+    qt_sql "select date_add('9999-08-01 00:00:00',1);"
+
     sql "DROP TABLE ${tbName};"
 }


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

Reply via email to