[fix](planner)date_add function should accept date type as its param (#34035)
This commit is contained in:
@ -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) {
|
||||
|
||||
@ -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'], ''],
|
||||
|
||||
@ -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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user