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