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);