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

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

commit fbd36de020d87f0ff54d66a4951612dcf42440dd
Author: imsong <hkss...@gmail.com>
AuthorDate: Wed Apr 25 17:49:12 2018 +0900

    KYLIN-3347 : calcite function QueryService Exception
---
 .../java/org/apache/kylin/query/util/DefaultQueryTransformer.java | 8 ++++++++
 .../org/apache/kylin/query/util/DefaultQueryTransformerTest.java  | 5 +++++
 2 files changed, 13 insertions(+)

diff --git 
a/query/src/main/java/org/apache/kylin/query/util/DefaultQueryTransformer.java 
b/query/src/main/java/org/apache/kylin/query/util/DefaultQueryTransformer.java
index 671d9db..2fcb74e 100644
--- 
a/query/src/main/java/org/apache/kylin/query/util/DefaultQueryTransformer.java
+++ 
b/query/src/main/java/org/apache/kylin/query/util/DefaultQueryTransformer.java
@@ -50,6 +50,8 @@ public class DefaultQueryTransformer implements 
IQueryTransformer {
     private static final Pattern PIN_SUM_OF_FN_CONVERT = Pattern
             .compile(S0 + "SUM" + S0 + "\\(" + S0 + "\\{\\s*fn" + SM + 
"convert" + S0 + "\\(" + S0 + "([^\\s,]+)" + S0
                     + "," + S0 + "SQL_DOUBLE" + S0 + "\\)" + S0 + "\\}" + S0 + 
"\\)", Pattern.CASE_INSENSITIVE);
+    private static final Pattern PTN_HAVING_FUNCTION = Pattern.compile("\\{fn" 
+ "(.*?)" + "\\}",
+            Pattern.CASE_INSENSITIVE);
 
     @Override
     public String transform(String sql, String project, String defaultSchema) {
@@ -138,6 +140,12 @@ public class DefaultQueryTransformer implements 
IQueryTransformer {
             sql = sql.substring(0, m.start(1)) + "'" + value + "'" + 
sql.substring(m.end(3));
         }
 
+        while (true) {
+            m = PTN_HAVING_FUNCTION.matcher(sql);
+            if (!m.find())
+                break;
+            sql = sql.substring(0, m.start()) + m.group(1) + 
sql.substring(m.end());
+        }
         
         return sql;
     }
diff --git 
a/query/src/test/java/org/apache/kylin/query/util/DefaultQueryTransformerTest.java
 
b/query/src/test/java/org/apache/kylin/query/util/DefaultQueryTransformerTest.java
index 8ce1017..e95db85 100644
--- 
a/query/src/test/java/org/apache/kylin/query/util/DefaultQueryTransformerTest.java
+++ 
b/query/src/test/java/org/apache/kylin/query/util/DefaultQueryTransformerTest.java
@@ -100,5 +100,10 @@ public class DefaultQueryTransformerTest {
         String fnConvertSumSql = "select {fn EXTRACT(YEAR from PART_DT)} from 
KYLIN_SALES";
         String correctSql = transformer.transform(fnConvertSumSql, "", "");
         assertTrue("select EXTRACT(YEAR from PART_DT) from 
KYLIN_SALES".equalsIgnoreCase(correctSql));
+
+        fnConvertSumSql = "SELECT {fn CURRENT_TIMESTAMP(0)}";
+        correctSql = transformer.transform(fnConvertSumSql, "", "");
+        assertTrue("SELECT CURRENT_TIMESTAMP".equalsIgnoreCase(correctSql));
+
     }
 }
\ No newline at end of file

Reply via email to