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