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/07/02 06:04:12 UTC

[kylin] branch 2.4.x updated: KYLIN-3025

This is an automated email from the ASF dual-hosted git repository.

shaofengshi pushed a commit to branch 2.4.x
in repository https://gitbox.apache.org/repos/asf/kylin.git


The following commit(s) were added to refs/heads/2.4.x by this push:
     new da93c5e  KYLIN-3025
da93c5e is described below

commit da93c5e31c5cbb378d8cf366ccc8270c908e8d33
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();