[fix](planner) fix date_xxx functions without complete function signature (#34761)

Problem:
When using current_date as input of functions like date_sub,
fold constant would failed cause of missing of function signature in Planner

Solved:
Add complete function signature of functions like date_sub
This commit is contained in:
LiBinfeng
2024-05-15 16:39:42 +08:00
committed by yiguolei
parent 71caf88ec1
commit 5719f6ff0c
2 changed files with 113 additions and 0 deletions

View File

@ -104,6 +104,11 @@ public class FEFunctions {
return daysAdd(date, day);
}
@FEFunction(name = "date_add", argTypes = { "DATE", "INT" }, returnType = "DATE")
public static DateLiteral dateAddDate(LiteralExpr date, LiteralExpr day) throws AnalysisException {
return daysAdd(date, day);
}
@FEFunction(name = "date_add", argTypes = { "DATEV2", "INT" }, returnType = "DATEV2")
public static DateLiteral dateAddDateV2(LiteralExpr date, LiteralExpr day) throws AnalysisException {
return daysAdd(date, day);
@ -135,6 +140,12 @@ public class FEFunctions {
return dateLiteral.plusYears(year.getLongValue());
}
@FEFunction(name = "years_add", argTypes = { "DATE", "INT" }, returnType = "DATE")
public static DateLiteral yearsAddDate(LiteralExpr date, LiteralExpr year) throws AnalysisException {
DateLiteral dateLiteral = (DateLiteral) date;
return dateLiteral.plusYears((int) year.getLongValue());
}
@FEFunction(name = "years_add", argTypes = { "DATEV2", "INT" }, returnType = "DATEV2")
public static DateLiteral yearsAddDateV2(LiteralExpr date, LiteralExpr year) throws AnalysisException {
DateLiteral dateLiteral = (DateLiteral) date;
@ -153,6 +164,12 @@ public class FEFunctions {
return dateLiteral.plusMonths(month.getLongValue());
}
@FEFunction(name = "months_add", argTypes = { "DATE", "INT" }, returnType = "DATE")
public static DateLiteral monthsAddDate(LiteralExpr date, LiteralExpr month) throws AnalysisException {
DateLiteral dateLiteral = (DateLiteral) date;
return dateLiteral.plusMonths((int) month.getLongValue());
}
@FEFunction(name = "months_add", argTypes = { "DATEV2", "INT" }, returnType = "DATEV2")
public static DateLiteral monthsAddDateV2(LiteralExpr date, LiteralExpr month) throws AnalysisException {
DateLiteral dateLiteral = (DateLiteral) date;
@ -171,6 +188,12 @@ public class FEFunctions {
return dateLiteral.plusDays(day.getLongValue());
}
@FEFunction(name = "days_add", argTypes = { "DATE", "INT" }, returnType = "DATE")
public static DateLiteral daysAddDate(LiteralExpr date, LiteralExpr day) throws AnalysisException {
DateLiteral dateLiteral = (DateLiteral) date;
return dateLiteral.plusDays((int) day.getLongValue());
}
@FEFunction(name = "days_add", argTypes = { "DATEV2", "INT" }, returnType = "DATEV2")
public static DateLiteral daysAddDateV2(LiteralExpr date, LiteralExpr day) throws AnalysisException {
DateLiteral dateLiteral = (DateLiteral) date;
@ -224,26 +247,71 @@ public class FEFunctions {
return dateAdd(date, new IntLiteral(-(int) day.getLongValue()));
}
@FEFunction(name = "date_sub", argTypes = { "DATE", "INT" }, returnType = "DATE")
public static DateLiteral dateSubDate(LiteralExpr date, LiteralExpr day) throws AnalysisException {
return daysAdd(date, new IntLiteral(-(int) day.getLongValue()));
}
@FEFunction(name = "date_sub", argTypes = { "DATEV2", "INT" }, returnType = "DATEV2")
public static DateLiteral dateSubDateV2(LiteralExpr date, LiteralExpr day) throws AnalysisException {
return dateAdd(date, new IntLiteral(-(int) day.getLongValue()));
}
@FEFunction(name = "date_sub", argTypes = { "DATETIMEV2", "INT" }, returnType = "DATETIMEV2")
public static DateLiteral dateSubDateTimeV2(LiteralExpr date, LiteralExpr day) throws AnalysisException {
return daysAdd(date, new IntLiteral(-(int) day.getLongValue()));
}
@FEFunction(name = "years_sub", argTypes = { "DATETIME", "INT" }, returnType = "DATETIME")
public static DateLiteral yearsSub(LiteralExpr date, LiteralExpr year) throws AnalysisException {
return yearsAdd(date, new IntLiteral(-(int) year.getLongValue()));
}
@FEFunction(name = "years_sub", argTypes = { "DATE", "INT" }, returnType = "DATE")
public static DateLiteral yearsSubDate(LiteralExpr date, LiteralExpr year) throws AnalysisException {
return yearsAdd(date, new IntLiteral(-(int) year.getLongValue()));
}
@FEFunction(name = "years_sub", argTypes = { "DATEV2", "INT" }, returnType = "DATEV2")
public static DateLiteral yearsSubDateV2(LiteralExpr date, LiteralExpr year) throws AnalysisException {
return yearsAdd(date, new IntLiteral(-(int) year.getLongValue()));
}
@FEFunction(name = "years_sub", argTypes = { "DATETIMEV2", "INT" }, returnType = "DATETIMEV2")
public static DateLiteral yearsSubDateTimeV2(LiteralExpr date, LiteralExpr year) throws AnalysisException {
return yearsAdd(date, new IntLiteral(-(int) year.getLongValue()));
}
@FEFunction(name = "months_sub", argTypes = { "DATETIME", "INT" }, returnType = "DATETIME")
public static DateLiteral monthsSub(LiteralExpr date, LiteralExpr month) throws AnalysisException {
return monthsAdd(date, new IntLiteral(-(int) month.getLongValue()));
}
@FEFunction(name = "months_sub", argTypes = { "DATE", "INT" }, returnType = "DATE")
public static DateLiteral monthsSubDate(LiteralExpr date, LiteralExpr month) throws AnalysisException {
return monthsAdd(date, new IntLiteral(-(int) month.getLongValue()));
}
@FEFunction(name = "months_sub", argTypes = { "DATEV2", "INT" }, returnType = "DATEV2")
public static DateLiteral monthsSubDateV2(LiteralExpr date, LiteralExpr month) throws AnalysisException {
return monthsAdd(date, new IntLiteral(-(int) month.getLongValue()));
}
@FEFunction(name = "months_sub", argTypes = { "DATETIMEV2", "INT" }, returnType = "DATETIMEV2")
public static DateLiteral monthsSubDateTimeV2(LiteralExpr date, LiteralExpr month) throws AnalysisException {
return monthsAdd(date, new IntLiteral(-(int) month.getLongValue()));
}
@FEFunction(name = "days_sub", argTypes = { "DATETIME", "INT" }, returnType = "DATETIME")
public static DateLiteral daysSub(LiteralExpr date, LiteralExpr day) throws AnalysisException {
return daysAdd(date, new IntLiteral(-(int) day.getLongValue()));
}
@FEFunction(name = "days_sub", argTypes = { "DATE", "INT" }, returnType = "DATE")
public static DateLiteral daysSubDate(LiteralExpr date, LiteralExpr day) throws AnalysisException {
return daysAdd(date, new IntLiteral(-(int) day.getLongValue()));
}
@FEFunction(name = "days_sub", argTypes = { "DATETIMEV2", "INT" }, returnType = "DATETIMEV2")
public static DateLiteral daysSubDateTimeV2(LiteralExpr date, LiteralExpr day) throws AnalysisException {
return daysAdd(date, new IntLiteral(-(int) day.getLongValue()));