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

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


The following commit(s) were added to refs/heads/master by this push:
     new 08075e0  KYLIN-4157 When using PrepareStatement query, functions 
within WHERE will cause InternalErrorException
08075e0 is described below

commit 08075e0d0dee9106546c2c1112699a57a3d25c62
Author: mawu2 <ma...@cisco.com>
AuthorDate: Wed Sep 4 20:47:19 2019 +0800

    KYLIN-4157 When using PrepareStatement query, functions within WHERE will 
cause InternalErrorException
---
 .../org/apache/kylin/query/relnode/OLAPContext.java     | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git 
a/query/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java 
b/query/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java
index 2087b22..59f84df 100755
--- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java
+++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java
@@ -25,6 +25,7 @@ import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 
 import org.apache.calcite.DataContext;
@@ -317,8 +318,7 @@ public class OLAPContext {
                 Object value = dataContext.get(variable);
                 if (value != null) {
                     String str = value.toString();
-                    if (compFilter.getColumn().getType().isDateTimeFamily())
-                        str = String.valueOf(DateFormat.stringToMillis(str));
+                    str = transferDateTimeColumnToMillis(compFilter, str);
                     compFilter.clearPreviousVariableValues(variable);
                     compFilter.bindVariable(variable, str);
                 }
@@ -326,6 +326,19 @@ public class OLAPContext {
             }
         }
     }
+
+    private String transferDateTimeColumnToMillis(CompareTupleFilter 
compFilter, String value) {
+        TblColRef column = compFilter.getColumn();
+        // To fix KYLIN-4157, when using PrepareStatement query, functions 
within WHERE will cause InternalErrorException
+        if (Objects.isNull(column)){
+            return value;
+        }
+
+        if (column.getType().isDateTimeFamily()){
+            value = String.valueOf(DateFormat.stringToMillis(value));
+        }
+        return value;
+    }
     // 
============================================================================
 
     public interface IAccessController {

Reply via email to