This is an automated email from the ASF dual-hosted git repository. xxyu pushed a commit to branch kylin5 in repository https://gitbox.apache.org/repos/asf/kylin.git
commit 779bc03ed9b75a26d9bf8d3d40fb7ca98d54ec9a Author: liang.huang <83992752+lhuang09287...@users.noreply.github.com> AuthorDate: Sat May 20 09:46:30 2023 +0800 KYLIN-5691 make KYLIN5 date udfs hold string args --- .../query/sql_computedcolumn/sql_computedcolumn_DateUDF/query00.sql | 3 ++- .../sql_computedcolumn_DateUDF/query00.sql.expected | 3 ++- .../main/java/org/apache/kylin/query/udf/dateUdf/DateDiffUDF.java | 6 +++++- src/query/src/test/java/org/apache/kylin/query/udf/DateUDFTest.java | 3 ++- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/kylin-it/src/test/resources/query/sql_computedcolumn/sql_computedcolumn_DateUDF/query00.sql b/src/kylin-it/src/test/resources/query/sql_computedcolumn/sql_computedcolumn_DateUDF/query00.sql index 76b47c10ee..743672a151 100644 --- a/src/kylin-it/src/test/resources/query/sql_computedcolumn/sql_computedcolumn_DateUDF/query00.sql +++ b/src/kylin-it/src/test/resources/query/sql_computedcolumn/sql_computedcolumn_DateUDF/query00.sql @@ -21,5 +21,6 @@ select --add_months(CAL_DT,2), count(date_part('YEAR',CAL_DT)), count(date_part('MONTH',CAL_DT)), count(date_part('DAY',CAL_DT)), - count(datediff(CAL_DT,date'2019-8-3')) + count(datediff(CAL_DT,date'2019-8-3')), + count(datediff(cast(CAL_DT as string),'2019-8-3')) from TEST_KYLIN_FACT diff --git a/src/kylin-it/src/test/resources/query/sql_computedcolumn/sql_computedcolumn_DateUDF/query00.sql.expected b/src/kylin-it/src/test/resources/query/sql_computedcolumn/sql_computedcolumn_DateUDF/query00.sql.expected index 1de3c3624b..0560b80121 100644 --- a/src/kylin-it/src/test/resources/query/sql_computedcolumn/sql_computedcolumn_DateUDF/query00.sql.expected +++ b/src/kylin-it/src/test/resources/query/sql_computedcolumn/sql_computedcolumn_DateUDF/query00.sql.expected @@ -4,5 +4,6 @@ select --add_months(CAL_DT,2), count(date_format(CAL_DT,'y')), count(date_format(CAL_DT,'M')), count(date_format(CAL_DT,'d')), - count(datediff(CAL_DT,date'2019-8-3')) + count(datediff(CAL_DT,date'2019-8-3')), + count(datediff(cast(CAL_DT as string),'2019-8-3')) from TEST_KYLIN_FACT \ No newline at end of file diff --git a/src/query/src/main/java/org/apache/kylin/query/udf/dateUdf/DateDiffUDF.java b/src/query/src/main/java/org/apache/kylin/query/udf/dateUdf/DateDiffUDF.java index 841befa589..292288b678 100644 --- a/src/query/src/main/java/org/apache/kylin/query/udf/dateUdf/DateDiffUDF.java +++ b/src/query/src/main/java/org/apache/kylin/query/udf/dateUdf/DateDiffUDF.java @@ -24,7 +24,11 @@ import org.apache.calcite.linq4j.function.Parameter; public class DateDiffUDF { - public Long DATEDIFF(@Parameter(name = "date") Date date1, @Parameter(name = "date") Date date2) { + public Long dateDiff(@Parameter(name = "date") Date date1, @Parameter(name = "date") Date date2) { return (date1.getTime() - date2.getTime()) / (1000 * 60 * 60 * 24); } + + public Long dateDiff(@Parameter(name = "date") String date1, @Parameter(name = "date") String date2){ + return (Date.valueOf(date1).getTime() - Date.valueOf(date2).getTime()) / (1000 * 60 * 60 * 24); + } } diff --git a/src/query/src/test/java/org/apache/kylin/query/udf/DateUDFTest.java b/src/query/src/test/java/org/apache/kylin/query/udf/DateUDFTest.java index 6da41b24cc..05934f5dd7 100644 --- a/src/query/src/test/java/org/apache/kylin/query/udf/DateUDFTest.java +++ b/src/query/src/test/java/org/apache/kylin/query/udf/DateUDFTest.java @@ -32,7 +32,8 @@ public class DateUDFTest { @MultiTimezoneTest(timezones = { "GMT+8", "GMT+12", "GMT+0" }) public void testDateDiffUDF() throws Exception { DateDiffUDF dateDiffUDF = new DateDiffUDF(); - assertEquals(-35, (long) dateDiffUDF.DATEDIFF(Date.valueOf("2019-06-28"), Date.valueOf("2019-08-02"))); + assertEquals(-35, (long) dateDiffUDF.dateDiff(Date.valueOf("2019-06-28"), Date.valueOf("2019-08-02"))); + assertEquals(-35, (long) dateDiffUDF.dateDiff("2019-06-28", "2019-08-02")); } @MultiTimezoneTest(timezones = { "GMT+8", "GMT+12", "GMT+0" })