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)