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 3400c96600dffabfb337f5362e33b9f73789beff
Author: DorrisRuixuanZhang <dorriszh...@hotmail.com>
AuthorDate: Fri Jun 2 18:50:59 2023 +0800

    KYLIN-5713 support REGEXP_EXTRACT function
---
 .../src/main/java/org/apache/kylin/query/udf/SparkStringUDF.java     | 5 +++++
 .../scala/org/apache/kylin/query/runtime/ExpressionConverter.scala   | 4 ++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git 
a/src/query/src/main/java/org/apache/kylin/query/udf/SparkStringUDF.java 
b/src/query/src/main/java/org/apache/kylin/query/udf/SparkStringUDF.java
index d83a85cdd3..ab5d6fab4a 100644
--- a/src/query/src/main/java/org/apache/kylin/query/udf/SparkStringUDF.java
+++ b/src/query/src/main/java/org/apache/kylin/query/udf/SparkStringUDF.java
@@ -113,4 +113,9 @@ public class SparkStringUDF implements NotConstant {
         throw new CalciteNotSupportException();
     }
 
+    public String REGEXP_EXTRACT(@Parameter(name = "str1") String exp1, 
@Parameter(name = "str2") String exp2,
+            @Parameter(name = "num3") Integer exp3) throws 
CalciteNotSupportException {
+        throw new CalciteNotSupportException();
+    }
+
 }
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 856c19f50f..86423ae47d 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
@@ -45,7 +45,7 @@ object ExpressionConverter {
     "explode"
   )
 
-  val ternaryParameterFunc = mutable.HashSet("replace", "substring_index", 
"lpad", "rpad", "conv")
+  val ternaryParameterFunc = mutable.HashSet("replace", "substring_index", 
"lpad", "rpad", "conv", "regexp_extract")
   val binaryParameterFunc =
     mutable.HashSet("decode", "encode", "find_in_set", "levenshtein", "sha2",
       "trunc", "add_months", "date_add", "date_sub", "from_utc_timestamp", 
"to_utc_timestamp",
@@ -74,7 +74,7 @@ object ExpressionConverter {
         if (children.length == 3) {
           if (!children.last.isInstanceOf[java.lang.String] || 
children.last.asInstanceOf[java.lang.String].length != 1) {
             throw new UnsupportedOperationException(
-            s"Invalid paramters for LIKE ESCAPE, expecting a single char for 
ESCAPE")
+              s"Invalid paramters for LIKE ESCAPE, expecting a single char for 
ESCAPE")
           }
           val escapeChar = 
children.last.asInstanceOf[java.lang.String].charAt(0)
           k_like(k_lit(children.head), k_lit(children(1)), escapeChar)

Reply via email to