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:01 UTC
[kylin] 01/02: KYLIN-3347 : calcite function QueryService Exception
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 <hk...@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