You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by st...@apache.org on 2024/04/26 01:38:18 UTC
(doris) branch master updated: [fix](planner)date_add function should accept date type as its param (#34035)
This is an automated email from the ASF dual-hosted git repository.
starocean999 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 e6801105349 [fix](planner)date_add function should accept date type as its param (#34035)
e6801105349 is described below
commit e6801105349b262f4ca5eef7812d764a124dd57c
Author: starocean999 <40...@users.noreply.github.com>
AuthorDate: Fri Apr 26 09:38:10 2024 +0800
[fix](planner)date_add function should accept date type as its param (#34035)
---
.../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 9cfce9e67de..3978c3802bc 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
@@ -1658,6 +1658,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 841799f0a13..b7912d08904 100644
--- a/gensrc/script/doris_builtins_functions.py
+++ b/gensrc/script/doris_builtins_functions.py
@@ -1080,6 +1080,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 85d8e5ba711..df05738b1bf 100644
--- a/regression-test/suites/correctness/test_date_function_const.groovy
+++ b/regression-test/suites/correctness/test_date_function_const.groovy
@@ -57,5 +57,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-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org