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/27 07:46:59 UTC
[kylin] branch master updated: KYLIN-3025
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
The following commit(s) were added to refs/heads/master by this push:
new 959ba2d KYLIN-3025
959ba2d is described below
commit 959ba2d53ab1922615dc75df325475d51b410f80
Author: Chao Long <wa...@qq.com>
AuthorDate: Mon Jun 25 14:34:56 2018 +0800
KYLIN-3025
KYLIN-3025 fix error: {fn CONVERT} for bigint type in tableau 10.4
minor, add UT
---
.../kylin/query/util/DefaultQueryTransformer.java | 2 +-
.../query/util/DefaultQueryTransformerTest.java | 20 ++++++++++++--------
2 files changed, 13 insertions(+), 9 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 f8ab8f2..f32e562 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
@@ -49,7 +49,7 @@ public class DefaultQueryTransformer implements IQueryTransformer {
+ 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);
+ + "," + S0 + "(SQL_DOUBLE|SQL_BIGINT)" + S0 + "\\)" + S0 + "\\}" + S0 + "\\)", Pattern.CASE_INSENSITIVE);
@Override
public String transform(String sql, String project, String defaultSchema) {
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 b6265b3..a38b887 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
@@ -27,39 +27,43 @@ public class DefaultQueryTransformerTest {
@Test
public void SumOfFnConvertTransform() throws Exception {
+ SumOfFnConvertTransform("SQL_DOUBLE");
+ SumOfFnConvertTransform("SQL_BIGINT");
+ }
+
+ private void SumOfFnConvertTransform(String dataType) throws Exception {
DefaultQueryTransformer transformer = new DefaultQueryTransformer();
- String fnConvertSumSql = "select sum({fn convert(\"LSTG_SITE_ID\", SQL_DOUBLE)}) from KYLIN_SALES group by LSTG_SITE_ID";
+ String fnConvertSumSql = "select sum({fn convert(\"LSTG_SITE_ID\", " + dataType + ")}) from KYLIN_SALES group by LSTG_SITE_ID";
String correctSql = transformer.transform(fnConvertSumSql, "", "");
assertTrue("select sum(\"LSTG_SITE_ID\") from KYLIN_SALES group by LSTG_SITE_ID".equalsIgnoreCase(correctSql));
//test SQL contains blank
//Case one blank interval
- fnConvertSumSql = "select sum ( { fn convert( \"LSTG_SITE_ID\" , SQL_DOUBLE) } ) from KYLIN_SALES group by LSTG_SITE_ID";
+ fnConvertSumSql = "select sum ( { fn convert( \"LSTG_SITE_ID\" , " + dataType + ") } ) from KYLIN_SALES group by LSTG_SITE_ID";
correctSql = transformer.transform(fnConvertSumSql, "", "");
assertTrue("select sum(\"LSTG_SITE_ID\") from KYLIN_SALES group by LSTG_SITE_ID".equalsIgnoreCase(correctSql));
//Case multi blank interval
- fnConvertSumSql = "select SUM ( { fn convert( \"LSTG_SITE_ID\" , SQL_DOUBLE ) } ) from KYLIN_SALES group by LSTG_SITE_ID";
+ fnConvertSumSql = "select SUM ( { fn convert( \"LSTG_SITE_ID\" , " + dataType + " ) } ) from KYLIN_SALES group by LSTG_SITE_ID";
correctSql = transformer.transform(fnConvertSumSql, "", "");
assertTrue("select sum(\"LSTG_SITE_ID\") from KYLIN_SALES group by LSTG_SITE_ID".equalsIgnoreCase(correctSql));
//Case one or multi blank interval
- fnConvertSumSql = "select SUM( { fn convert( \"LSTG_SITE_ID\" , SQL_DOUBLE ) } ) from KYLIN_SALES group by LSTG_SITE_ID";
+ fnConvertSumSql = "select SUM( { fn convert( \"LSTG_SITE_ID\" , " + dataType + " ) } ) from KYLIN_SALES group by LSTG_SITE_ID";
correctSql = transformer.transform(fnConvertSumSql, "", "");
assertTrue("select sum(\"LSTG_SITE_ID\") from KYLIN_SALES group by LSTG_SITE_ID".equalsIgnoreCase(correctSql));
//test exception case of "... fnconvert ..."
- fnConvertSumSql = "select SUM ({fnconvert(\"LSTG_SITE_ID\", SQL_DOUBLE)}) from KYLIN_SALES group by LSTG_SITE_ID";
+ fnConvertSumSql = "select SUM ({fnconvert(\"LSTG_SITE_ID\", " + dataType + ")}) from KYLIN_SALES group by LSTG_SITE_ID";
correctSql = transformer.transform(fnConvertSumSql, "", "");
assertFalse("select sum(\"LSTG_SITE_ID\") from KYLIN_SALES group by LSTG_SITE_ID".equalsIgnoreCase(correctSql));
//test SQL contains multi sum
- fnConvertSumSql = "select SUM({fn convert(\"LSTG_SITE_ID\", SQL_DOUBLE)}), SUM({fn convert(\"price\", SQL_DOUBLE)}) from KYLIN_SALES group by LSTG_SITE_ID";
+ fnConvertSumSql = "select SUM({fn convert(\"LSTG_SITE_ID\", " + dataType + ")}), SUM({fn convert(\"price\", " + dataType + ")}) from KYLIN_SALES group by LSTG_SITE_ID";
correctSql = transformer.transform(fnConvertSumSql, "", "");
assertTrue("select sum(\"LSTG_SITE_ID\"), sum(\"price\") from KYLIN_SALES group by LSTG_SITE_ID"
.equalsIgnoreCase(correctSql));
-
}
@Test
@@ -92,7 +96,7 @@ public class DefaultQueryTransformerTest {
assertTrue("select sum(LSTG_SITE_ID), sum(price) from KYLIN_SALES group by LSTG_SITE_ID"
.equalsIgnoreCase(correctSql));
}
-
+
@Test
public void functionEscapeTransform() throws Exception {
DefaultQueryTransformer transformer = new DefaultQueryTransformer();