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" })