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 <wayn...@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();

Reply via email to