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 d7d80985987a344c0a49909cd8d8584829015082
Author: Pengfei Zhan <dethr...@gmail.com>
AuthorDate: Wed Aug 9 19:33:45 2023 +0800

    KYLIN-5785 Support implicit query of split function
    
    1. support split('aaa-bbb-ccc', '-')[0] implicit query
    2. support simplify not(true/false) to false/true
---
 pom.xml                                                      |  2 +-
 .../org/apache/kylin/query/engine/QueryRoutingEngine.java    | 12 ------------
 .../main/java/org/apache/kylin/query/udf/SparkStringUDF.java |  6 ++++--
 .../org/apache/kylin/query/runtime/ExpressionConverter.scala |  2 ++
 4 files changed, 7 insertions(+), 15 deletions(-)

diff --git a/pom.xml b/pom.xml
index 2138ca85f8..71763ea249 100644
--- a/pom.xml
+++ b/pom.xml
@@ -135,7 +135,7 @@
         <scala-retry>0.3.0</scala-retry>
 
         <!-- Calcite Version -->
-        <calcite.version>1.116.0-kylin-4.x-r034</calcite.version>
+        <calcite.version>1.116.0-kylin-4.x-r035</calcite.version>
         <avatica.version>4.x_1.10-r01</avatica.version>
 
         <!-- Hadoop Common deps, keep compatible with hadoop2.version -->
diff --git 
a/src/query/src/main/java/org/apache/kylin/query/engine/QueryRoutingEngine.java 
b/src/query/src/main/java/org/apache/kylin/query/engine/QueryRoutingEngine.java
index 081edc0d0a..0e3f86b399 100644
--- 
a/src/query/src/main/java/org/apache/kylin/query/engine/QueryRoutingEngine.java
+++ 
b/src/query/src/main/java/org/apache/kylin/query/engine/QueryRoutingEngine.java
@@ -40,7 +40,6 @@ import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.QueryContext;
 import org.apache.kylin.common.QueryTrace;
 import org.apache.kylin.common.debug.BackdoorToggles;
-import org.apache.kylin.common.exception.CalciteNotSupportException;
 import org.apache.kylin.common.exception.KylinException;
 import org.apache.kylin.common.exception.NewQueryRefuseException;
 import org.apache.kylin.common.exception.TargetSegmentNotFoundException;
@@ -141,8 +140,6 @@ public class QueryRoutingEngine {
             return handleTransactionException(queryParams, e);
         } catch (SQLException e) {
             return handleSqlException(queryParams, e);
-        } catch (AssertionError e) {
-            return handleAssertionError(queryParams, e);
         } finally {
             QueryResultMasks.remove();
         }
@@ -183,15 +180,6 @@ public class QueryRoutingEngine {
         throw e;
     }
 
-    private QueryResult handleAssertionError(QueryParams queryParams, 
AssertionError e) throws SQLException {
-        // for example: split('abc', 'b') will jump into this AssertionError
-        if (e.getMessage().equals("OTHER")) {
-            SQLException ex = new SQLException(e.getMessage(), new 
CalciteNotSupportException());
-            return pushDownQuery(ex, queryParams);
-        }
-        throw e;
-    }
-
     public boolean checkIfRetryQuery(Throwable cause) {
         if (TargetSegmentNotFoundException.causedBySegmentNotFound(cause)
                 && QueryContext.current().getMetrics().getRetryTimes() == 0) {
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 5ce28e9851..867ffbefe1 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
@@ -18,6 +18,8 @@
 
 package org.apache.kylin.query.udf;
 
+import java.util.List;
+
 import org.apache.calcite.linq4j.function.Parameter;
 import org.apache.calcite.sql.type.NotConstant;
 import org.apache.kylin.common.exception.CalciteNotSupportException;
@@ -90,12 +92,12 @@ public class SparkStringUDF implements NotConstant {
         throw new CalciteNotSupportException();
     }
 
-    public String[] SPLIT(@Parameter(name = "str") Object str, @Parameter(name 
= "regex") Object regex)
+    public List<String> SPLIT(@Parameter(name = "str") Object str, 
@Parameter(name = "regex") Object regex)
             throws CalciteNotSupportException {
         throw new CalciteNotSupportException();
     }
 
-    public String[] SPLIT(@Parameter(name = "str") Object str, @Parameter(name 
= "regex") Object regex,
+    public List<String> SPLIT(@Parameter(name = "str") Object str, 
@Parameter(name = "regex") Object regex,
             @Parameter(name = "limit") Object limit) 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 d08a37d450..04afba3c94 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
@@ -428,6 +428,8 @@ object ExpressionConverter {
             new Column(expressions.Chr(k_lit(children.head).expr))
           case "space" =>
             new Column(StringRepeat(k_lit(" ").expr, 
k_lit(children.head).expr))
+          case "item" =>
+            element_at(k_lit(children.head), 
k_lit(children.apply(1).asInstanceOf[Int] + 1))
           case _ =>
             throw new UnsupportedOperationException(
               s"Unsupported function $funcName")

Reply via email to