You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by xx...@apache.org on 2023/09/07 08:47:19 UTC

[kylin] 11/24: KYLIN-5691 make KYLIN5 date udfs hold string args

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 <83...@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" })