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