This is an automated email from the ASF dual-hosted git repository. starocean999 pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push: new 93471ca93e0 [fix](planner)date_add function should accept date type as its param (#34036) 93471ca93e0 is described below commit 93471ca93e0515cc62a5595dd5dec8e8ec5b8380 Author: starocean999 <40539150+starocean...@users.noreply.github.com> AuthorDate: Thu Apr 25 18:50:49 2024 +0800 [fix](planner)date_add function should accept date type as its param (#34036) --- .../java/org/apache/doris/analysis/FunctionCallExpr.java | 16 ++++++++++++++++ gensrc/script/doris_builtins_functions.py | 2 ++ .../suites/correctness/test_date_function_const.groovy | 5 ++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java index b7bc0cea969..1a52c965818 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java @@ -1602,6 +1602,22 @@ public class FunctionCallExpr extends Expr { } fn = getBuiltinFunction(fnName.getFunction(), argTypes, Function.CompareMode.IS_NONSTRICT_SUPERTYPE_OF); + } else if (fnName.getFunction().equalsIgnoreCase("date_add") + || fnName.getFunction().equalsIgnoreCase("days_add") + || fnName.getFunction().equalsIgnoreCase("adddate") + || fnName.getFunction().equalsIgnoreCase("date_sub") + || fnName.getFunction().equalsIgnoreCase("days_sub") + || fnName.getFunction().equalsIgnoreCase("subdate")) { + Type[] childTypes = collectChildReturnTypes(); + argTypes[0] = childTypes[0]; + argTypes[1] = childTypes[1]; + if (childTypes[1] == Type.TINYINT || childTypes[1] == Type.SMALLINT) { + // be only support second param as int type + uncheckedCastChild(Type.INT, 1); + argTypes[1] = Type.INT; + } + fn = getBuiltinFunction(fnName.getFunction(), argTypes, + Function.CompareMode.IS_NONSTRICT_SUPERTYPE_OF); } else { // now first find table function in table function sets if (isTableFnCall) { diff --git a/gensrc/script/doris_builtins_functions.py b/gensrc/script/doris_builtins_functions.py index e7a0f1ec278..9fa38174be1 100644 --- a/gensrc/script/doris_builtins_functions.py +++ b/gensrc/script/doris_builtins_functions.py @@ -1028,6 +1028,8 @@ visible_functions = { [['weeks_sub'], 'DATEV2', ['DATEV2', 'INT'], ''], [['days_add', 'date_add', 'adddate'], 'DATEV2', ['DATEV2', 'INT'], ''], [['days_sub', 'date_sub', 'subdate'], 'DATEV2', ['DATEV2', 'INT'], ''], + [['days_add', 'date_add', 'adddate'], 'DATE', ['DATE', 'INT'], ''], + [['days_sub', 'date_sub', 'subdate'], 'DATE', ['DATE', 'INT'], ''], [['hours_add'], 'DATETIMEV2', ['DATEV2', 'INT'], ''], [['hours_sub'], 'DATETIMEV2', ['DATEV2', 'INT'], ''], [['minutes_add'], 'DATETIMEV2', ['DATEV2', 'INT'], ''], diff --git a/regression-test/suites/correctness/test_date_function_const.groovy b/regression-test/suites/correctness/test_date_function_const.groovy index fd5607d519e..2b423e4e933 100644 --- a/regression-test/suites/correctness/test_date_function_const.groovy +++ b/regression-test/suites/correctness/test_date_function_const.groovy @@ -55,5 +55,8 @@ suite("test_date_function_const") { qt_select10 """ select hours_add(cast('2023-03-30 22:23:45.23452' as datetimev2(6)),8) """ - + explain { + sql("""select date_add(CURRENT_DATE(),-2);""") + notContains("00:00:00") + } } \ 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