Fix the bug of alias not right matched if there is no blank between alias name 
and right parenthesis


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/28d1e352
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/28d1e352
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/28d1e352

Branch: refs/heads/master
Commit: 28d1e352e59f741b7efbce7a2cb78d293916d072
Parents: 56bb972
Author: nichunen <chunen...@kyligence.io>
Authored: Fri Sep 22 21:06:03 2017 +0800
Committer: liyang-gmt8 <liy...@apache.org>
Committed: Fri Sep 22 22:11:37 2017 +0800

----------------------------------------------------------------------
 .../kylin/source/adhocquery/HivePushDownConverter.java   |  2 +-
 .../source/adhocquery/HivePushDownConverterTest.java     | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/28d1e352/core-metadata/src/main/java/org/apache/kylin/source/adhocquery/HivePushDownConverter.java
----------------------------------------------------------------------
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/source/adhocquery/HivePushDownConverter.java
 
b/core-metadata/src/main/java/org/apache/kylin/source/adhocquery/HivePushDownConverter.java
index eef4594..e7f6e96 100644
--- 
a/core-metadata/src/main/java/org/apache/kylin/source/adhocquery/HivePushDownConverter.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/source/adhocquery/HivePushDownConverter.java
@@ -38,7 +38,7 @@ public class HivePushDownConverter implements 
IPushDownConverter {
             Pattern.CASE_INSENSITIVE);
     private static final Pattern FROM_PATTERN = 
Pattern.compile("\\s+from\\s+(\\()\\s*select\\s",
             Pattern.CASE_INSENSITIVE);
-    private static final Pattern ALIAS_PATTERN = 
Pattern.compile("\\s+([`'_a-z0-9A-Z]+)", Pattern.CASE_INSENSITIVE);
+    private static final Pattern ALIAS_PATTERN = 
Pattern.compile("\\s*([`'_a-z0-9A-Z]+)", Pattern.CASE_INSENSITIVE);
     private static final Pattern CAST_PATTERN = Pattern.compile("CAST\\((.*?) 
(?i)AS\\s*(.*?)\\s*\\)",
             Pattern.CASE_INSENSITIVE);
     private static final Pattern CONCAT_PATTERN = 
Pattern.compile("(['_a-z0-9A-Z]+)\\|\\|(['_a-z0-9A-Z]+)",

http://git-wip-us.apache.org/repos/asf/kylin/blob/28d1e352/core-metadata/src/test/java/org/apache/kylin/source/adhocquery/HivePushDownConverterTest.java
----------------------------------------------------------------------
diff --git 
a/core-metadata/src/test/java/org/apache/kylin/source/adhocquery/HivePushDownConverterTest.java
 
b/core-metadata/src/test/java/org/apache/kylin/source/adhocquery/HivePushDownConverterTest.java
index 42c628a..2af3e07 100644
--- 
a/core-metadata/src/test/java/org/apache/kylin/source/adhocquery/HivePushDownConverterTest.java
+++ 
b/core-metadata/src/test/java/org/apache/kylin/source/adhocquery/HivePushDownConverterTest.java
@@ -68,6 +68,17 @@ public class HivePushDownConverterTest extends TestCase {
     }
 
     @Test
+    public void testSubqueryReplace4() {
+        String originString = "select t.TRANS_ID from (\n" +
+                "    select * from test_kylin_fact s inner join TEST_ACCOUNT a 
\n" +
+                "        on s.BUYER_ID = a.ACCOUNT_ID inner join TEST_COUNTRY 
c on c.COUNTRY = a.ACCOUNT_COUNTRY\n" +
+                "    )t\n" +
+                "LIMIT 50000";
+        String replacedString = 
HivePushDownConverter.subqueryReplace(originString);
+        assertEquals(originString, replacedString);
+    }
+
+    @Test
     public void testConcatReplace() {
         String originString = "select count(*) as cnt from test_kylin_fact 
where lstg_format_name||'a'='ABINa'";
         String replacedString = 
HivePushDownConverter.concatReplace(originString);

Reply via email to