minor, refine sql comment removing
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/7d5fb855 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/7d5fb855 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/7d5fb855 Branch: refs/heads/sync Commit: 7d5fb855064e2b81cd3b154cdeeafec4e64f63c9 Parents: 60caf61 Author: Roger Shi <rogershijich...@hotmail.com> Authored: Tue Jan 16 15:17:46 2018 +0800 Committer: Li Yang <liy...@apache.org> Committed: Fri Jan 26 22:54:58 2018 +0800 ---------------------------------------------------------------------- .../org/apache/kylin/query/util/QueryUtil.java | 17 ++++------------- .../org/apache/kylin/query/util/QueryUtilTest.java | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/7d5fb855/query/src/main/java/org/apache/kylin/query/util/QueryUtil.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/kylin/query/util/QueryUtil.java b/query/src/main/java/org/apache/kylin/query/util/QueryUtil.java index 22658f1..da18bd7 100644 --- a/query/src/main/java/org/apache/kylin/query/util/QueryUtil.java +++ b/query/src/main/java/org/apache/kylin/query/util/QueryUtil.java @@ -142,23 +142,14 @@ public class QueryUtil { public static String removeCommentInSql(String sql1) { // match two patterns, one is "-- comment", the other is "/* comment */" - final String[] commentPatterns = new String[] { "--[^\r\n]*", "/\\*[\\s\\S]*?\\*/" }; + final String[] commentPatterns = new String[] { "--.*?[\r\n]", "/\\*.*?\\*/" }; for (int i = 0; i < commentPatterns.length; i++) { - String commentPattern = commentPatterns[i]; - Pattern pattern = Pattern.compile(commentPattern); - Matcher matcher = pattern.matcher(sql1); - - while (matcher.find()) { - if (matcher.start() == 0) { - sql1 = sql1.substring(matcher.end()).trim(); - } else { - sql1 = (sql1.substring(0, matcher.start()) + sql1.substring(matcher.end())).trim(); - } - matcher = pattern.matcher(sql1); - } + sql1 = sql1.replaceAll(commentPatterns[i], ""); } + sql1 = sql1.trim(); + return sql1; } } http://git-wip-us.apache.org/repos/asf/kylin/blob/7d5fb855/query/src/test/java/org/apache/kylin/query/util/QueryUtilTest.java ---------------------------------------------------------------------- diff --git a/query/src/test/java/org/apache/kylin/query/util/QueryUtilTest.java b/query/src/test/java/org/apache/kylin/query/util/QueryUtilTest.java index e7a7ecb..e3cd819 100644 --- a/query/src/test/java/org/apache/kylin/query/util/QueryUtilTest.java +++ b/query/src/test/java/org/apache/kylin/query/util/QueryUtilTest.java @@ -149,9 +149,23 @@ public class QueryUtilTest extends LocalFileMetadataTestCase { } { - String sqlWithComment = "/* comment \n select count(*) from kylin_sales; \n */ " + originSql; + String sqlWithComment = "/* comment1/comment2 */ " + originSql; Assert.assertEquals(originSql, QueryUtil.removeCommentInSql(sqlWithComment)); } + { + String sqlWithComment = "/* comment1 * comment2 */ " + originSql; + Assert.assertEquals(originSql, QueryUtil.removeCommentInSql(sqlWithComment)); + } + + { + String sqlWithComment = "/* comment1 * comment2 */ /* comment3 / comment4 */ -- comment 5\n" + originSql; + Assert.assertEquals(originSql, QueryUtil.removeCommentInSql(sqlWithComment)); + } + + { + String sqlWithComment = "/* comment1 * comment2 */ -- comment 5\n" + originSql + "/* comment3 / comment4 */"; + Assert.assertEquals(originSql, QueryUtil.removeCommentInSql(sqlWithComment)); + } } }