This is an automated email from the ASF dual-hosted git repository. nic pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/kylin.git
commit d018b046a29bce12a1ddf3806e65d2e5b22f48bc Author: nichunen <[email protected]> AuthorDate: Sun Feb 2 15:01:32 2020 +0800 KYLIN-4365 Fix sql starts with "with" cannot be queried on web --- .../org/apache/kylin/query/util/QueryUtil.java | 28 +++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) 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 aa6c345..3d5632c 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 @@ -23,6 +23,7 @@ import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.commons.lang.StringUtils; import org.apache.kylin.common.KylinConfig; import org.apache.kylin.common.util.ClassUtil; import org.apache.kylin.metadata.project.ProjectInstance; @@ -37,26 +38,20 @@ import com.google.common.collect.Lists; public class QueryUtil { protected static final Logger logger = LoggerFactory.getLogger(QueryUtil.class); - - private QueryUtil() { - throw new IllegalStateException("Class QueryUtil is an utility class !"); - } - - private static List<IQueryTransformer> queryTransformers; - - public interface IQueryTransformer { - String transform(String sql, String project, String defaultSchema); - } - private static final String KEYWORD_SELECT = "select"; private static final String KEYWORD_WITH = "with"; private static final String KEYWORD_EXPLAIN = "explain"; + private static List<IQueryTransformer> queryTransformers; + private QueryUtil() { + throw new IllegalStateException("Class QueryUtil is an utility class !"); + } public static String appendLimitOffsetToSql(String sql, int limit, int offset) { String retSql = sql; String prefixSql = "select * from ("; String suffixSql = ")"; - if (sql.startsWith(KEYWORD_EXPLAIN)) { + if (StringUtils.startsWithIgnoreCase(sql, KEYWORD_EXPLAIN) + || StringUtils.startsWithIgnoreCase(sql, KEYWORD_WITH)) { prefixSql = ""; suffixSql = ""; } @@ -126,7 +121,8 @@ public class QueryUtil { /** * add remove catalog step at final */ - public static String massageSql(String sql, String project, int limit, int offset, String defaultSchema, String catalog) { + public static String massageSql(String sql, String project, int limit, int offset, String defaultSchema, + String catalog) { String correctedSql = massageSql(sql, project, limit, offset, defaultSchema); correctedSql = removeCatalog(correctedSql, catalog); return correctedSql; @@ -219,7 +215,7 @@ 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]", "/\\*(.|\r|\n)*?\\*/"}; + final String[] commentPatterns = new String[] { "--(?!.*\\*/).*?[\r\n]", "/\\*(.|\r|\n)*?\\*/" }; for (int i = 0; i < commentPatterns.length; i++) { sql1 = sql1.replaceAll(commentPatterns[i], ""); @@ -229,4 +225,8 @@ public class QueryUtil { return sql1; } + + public interface IQueryTransformer { + String transform(String sql, String project, String defaultSchema); + } }
