This is an automated email from the ASF dual-hosted git repository.

liyang pushed a commit to branch kylin5
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit a354fbe23e2b3aa2cd80d9f4c0cd9a9be22e579f
Author: jlf <longfei.ji...@kyligence.io>
AuthorDate: Tue Oct 24 01:04:54 2023 -0500

    KYLIN-5858 Upgrade the realization of query function `date_format`
---
 .../org/apache/kylin/common/KylinConfigBase.java   |  1 -
 .../org/apache/kylin/query/udf/SparkTimeUDF.java   |  5 ++
 .../kylin/query/udf/formatUdf/DateFormatUDF.java   | 61 ----------------------
 .../org/apache/kylin/query/udf/FormatUDFTest.java  | 15 ------
 .../kylin/query/runtime/ExpressionConverter.scala  |  2 +-
 5 files changed, 6 insertions(+), 78 deletions(-)

diff --git 
a/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java 
b/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
index 9285486698..a7acba56bc 100644
--- a/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
+++ b/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
@@ -2165,7 +2165,6 @@ public abstract class KylinConfigBase implements 
Serializable {
         udfMap.put("length", "org.apache.kylin.query.udf.stringUdf.LengthUDF");
         udfMap.put("repeat", "org.apache.kylin.query.udf.stringUdf.RepeatUDF");
         udfMap.put("to_char", 
"org.apache.kylin.query.udf.formatUdf.ToCharUDF");
-        udfMap.put("date_format", 
"org.apache.kylin.query.udf.formatUdf.DateFormatUDF");
         udfMap.put("instr", "org.apache.kylin.query.udf.stringUdf.InStrUDF");
         udfMap.put("strpos", "org.apache.kylin.query.udf.stringUdf.StrPosUDF");
         udfMap.put("ifnull", 
"org.apache.kylin.query.udf.nullHandling.IfNullUDF");
diff --git 
a/src/query/src/main/java/org/apache/kylin/query/udf/SparkTimeUDF.java 
b/src/query/src/main/java/org/apache/kylin/query/udf/SparkTimeUDF.java
index 60f9805931..1bec52599a 100644
--- a/src/query/src/main/java/org/apache/kylin/query/udf/SparkTimeUDF.java
+++ b/src/query/src/main/java/org/apache/kylin/query/udf/SparkTimeUDF.java
@@ -106,4 +106,9 @@ public class SparkTimeUDF implements NotConstant {
     public Integer WEEKOFYEAR(@Parameter(name = "t1") Object exp1) throws 
CalciteNotSupportException {
         throw new CalciteNotSupportException();
     }
+
+    public String DATE_FORMAT(@Parameter(name = "left") Object left, 
@Parameter(name = "format") String fmt)
+            throws CalciteNotSupportException {
+        throw new CalciteNotSupportException();
+    }
 }
diff --git 
a/src/query/src/main/java/org/apache/kylin/query/udf/formatUdf/DateFormatUDF.java
 
b/src/query/src/main/java/org/apache/kylin/query/udf/formatUdf/DateFormatUDF.java
deleted file mode 100644
index 5f96fe48ed..0000000000
--- 
a/src/query/src/main/java/org/apache/kylin/query/udf/formatUdf/DateFormatUDF.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.kylin.query.udf.formatUdf;
-
-import java.sql.Date;
-import java.sql.Timestamp;
-import java.util.Locale;
-
-import org.apache.calcite.linq4j.function.Parameter;
-
-public class DateFormatUDF {
-
-    public String DATE_FORMAT(@Parameter(name = "date") Timestamp date, 
@Parameter(name = "part") String part) {
-        String partOfDate = null;
-        switch (part.toUpperCase(Locale.ROOT)) {
-        case "YEAR":
-            partOfDate = date.toString().substring(0, 4);
-            break;
-        case "MONTH":
-            partOfDate = date.toString().substring(5, 7);
-            break;
-        case "DAY":
-            partOfDate = date.toString().substring(8, 10);
-            break;
-        case "HOUR":
-            partOfDate = date.toString().substring(11, 13);
-            break;
-        case "MINUTE":
-        case "MINUTES":
-            partOfDate = date.toString().substring(14, 16);
-            break;
-        case "SECOND":
-        case "SECONDS":
-            partOfDate = date.toString().substring(17, 19);
-            break;
-        default:
-            //throws
-        }
-        return partOfDate;
-    }
-
-    public String DATE_FORMAT(@Parameter(name = "date") Date date, 
@Parameter(name = "part") String part) {
-        return DATE_FORMAT(new Timestamp(date.getTime()), part);
-    }
-}
diff --git 
a/src/query/src/test/java/org/apache/kylin/query/udf/FormatUDFTest.java 
b/src/query/src/test/java/org/apache/kylin/query/udf/FormatUDFTest.java
index f091715843..4545ed6cf0 100644
--- a/src/query/src/test/java/org/apache/kylin/query/udf/FormatUDFTest.java
+++ b/src/query/src/test/java/org/apache/kylin/query/udf/FormatUDFTest.java
@@ -23,7 +23,6 @@ import static org.junit.Assert.assertEquals;
 import java.sql.Date;
 import java.sql.Timestamp;
 
-import org.apache.kylin.query.udf.formatUdf.DateFormatUDF;
 import org.apache.kylin.query.udf.formatUdf.ToCharUDF;
 import org.junit.Test;
 
@@ -42,18 +41,4 @@ public class FormatUDFTest {
         assertEquals("05", toCharUDF.TO_CHAR(Date.valueOf("2019-05-09"), 
"month"));
         assertEquals("09", toCharUDF.TO_CHAR(Date.valueOf("2019-05-09"), 
"day"));
     }
-
-    @Test
-    public void testDateFormatUDF() throws Exception {
-        DateFormatUDF dateFormatUDF = new DateFormatUDF();
-        assertEquals("2019", 
dateFormatUDF.DATE_FORMAT(Timestamp.valueOf("2019-05-09 11:49:45"), "year"));
-        assertEquals("05", 
dateFormatUDF.DATE_FORMAT(Timestamp.valueOf("2019-05-09 11:49:45"), "month"));
-        assertEquals("09", 
dateFormatUDF.DATE_FORMAT(Timestamp.valueOf("2019-05-09 11:49:45"), "day"));
-        assertEquals("11", 
dateFormatUDF.DATE_FORMAT(Timestamp.valueOf("2019-05-09 11:49:45"), "hour"));
-        assertEquals("49", 
dateFormatUDF.DATE_FORMAT(Timestamp.valueOf("2019-05-09 11:49:45"), "minute"));
-        assertEquals("45", 
dateFormatUDF.DATE_FORMAT(Timestamp.valueOf("2019-05-09 11:49:45"), "seconds"));
-        assertEquals("2019", 
dateFormatUDF.DATE_FORMAT(Date.valueOf("2019-05-09"), "year"));
-        assertEquals("05", 
dateFormatUDF.DATE_FORMAT(Date.valueOf("2019-05-09"), "month"));
-        assertEquals("09", 
dateFormatUDF.DATE_FORMAT(Date.valueOf("2019-05-09"), "day"));
-    }
 }
diff --git 
a/src/spark-project/sparder/src/main/scala/org/apache/kylin/query/runtime/ExpressionConverter.scala
 
b/src/spark-project/sparder/src/main/scala/org/apache/kylin/query/runtime/ExpressionConverter.scala
index ee251b1e7e..5a26ebaf8a 100644
--- 
a/src/spark-project/sparder/src/main/scala/org/apache/kylin/query/runtime/ExpressionConverter.scala
+++ 
b/src/spark-project/sparder/src/main/scala/org/apache/kylin/query/runtime/ExpressionConverter.scala
@@ -48,7 +48,7 @@ object ExpressionConverter {
   private val ternaryParameterFunc = mutable.HashSet("replace", 
"substring_index", "conv", "regexp_extract")
   private val binaryParameterFunc =
     mutable.HashSet("decode", "encode", "find_in_set", "levenshtein", "sha2",
-      "trunc", "add_months", "date_add", "date_sub", "from_utc_timestamp", 
"to_utc_timestamp",
+      "trunc", "add_months", "date_add", "date_sub", "from_utc_timestamp", 
"to_utc_timestamp", "date_format",
       // math function
       "hypot", "log"
     )

Reply via email to