You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2018/06/20 02:57:02 UTC

[kylin] 02/02: general PTN_HAVING_FUNCTION removed and then add CURRENT_TIMESTAMP in PTN_HAVING_ESCAPE_FUNCTION

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 01df768ac5f38cbeaff1f3a6245c26a8863d5709
Author: imsong <hk...@gmail.com>
AuthorDate: Thu Apr 26 17:26:08 2018 +0900

    general PTN_HAVING_FUNCTION removed and then add CURRENT_TIMESTAMP in PTN_HAVING_ESCAPE_FUNCTION
---
 .../org/apache/kylin/query/util/DefaultQueryTransformer.java  | 11 +----------
 .../apache/kylin/query/util/DefaultQueryTransformerTest.java  |  2 +-
 2 files changed, 2 insertions(+), 11 deletions(-)

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 2fcb74e..f8ab8f2 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
@@ -43,15 +43,13 @@ public class DefaultQueryTransformer implements IQueryTransformer {
     private static final Pattern PTN_INTERVAL = Pattern.compile(
             "interval" + SM + "(floor\\()([\\d\\.]+)(\\))" + SM + "(second|minute|hour|day|month|year)",
             Pattern.CASE_INSENSITIVE);
-    private static final Pattern PTN_HAVING_ESCAPE_FUNCTION = Pattern.compile("\\{fn" + SM + "(EXTRACT\\(.*?\\))" + "\\}",
+    private static final Pattern PTN_HAVING_ESCAPE_FUNCTION = Pattern.compile("\\{fn" + SM + "(EXTRACT\\(.*?\\)||CURRENT_TIMESTAMP\\(.*?\\))" + "\\}",
             Pattern.CASE_INSENSITIVE);
     private static final Pattern PIN_SUM_OF_CAST = Pattern.compile(S0 + "SUM" + S0 + "\\(" + S0 + "CAST" + S0 + "\\("
             + S0 + "([^\\s,]+)" + S0 + "AS" + SM + "DOUBLE" + S0 + "\\)" + S0 + "\\)", Pattern.CASE_INSENSITIVE);
     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) {
@@ -139,13 +137,6 @@ public class DefaultQueryTransformer implements IQueryTransformer {
             int value = (int) Math.floor(Double.valueOf(m.group(2)));
             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 e95db85..b6265b3 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
@@ -103,7 +103,7 @@ public class DefaultQueryTransformerTest {
 
         fnConvertSumSql = "SELECT {fn CURRENT_TIMESTAMP(0)}";
         correctSql = transformer.transform(fnConvertSumSql, "", "");
-        assertTrue("SELECT CURRENT_TIMESTAMP".equalsIgnoreCase(correctSql));
+        assertTrue("SELECT CURRENT_TIMESTAMP(0)".equalsIgnoreCase(correctSql));
 
     }
 }
\ No newline at end of file