diff --git a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelper.java b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelper.java index 3e9f92a7b..7f85d522e 100644 --- a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelper.java +++ b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelper.java @@ -139,8 +139,16 @@ public class SqlParserSelectHelper { } public static List getAllFields(String sql) { + List plainSelects = getPlainSelects(getPlainSelect(sql)); + Set results = new HashSet<>(); + for (PlainSelect plainSelect : plainSelects) { + List fields = getFieldsByPlainSelect(plainSelect); + results.addAll(fields); + } + return new ArrayList<>(results); + } - PlainSelect plainSelect = getPlainSelect(sql); + private static ArrayList getFieldsByPlainSelect(PlainSelect plainSelect) { if (Objects.isNull(plainSelect)) { return new ArrayList<>(); } diff --git a/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelperTest.java b/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelperTest.java index 80def539e..cef8b95d0 100644 --- a/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelperTest.java +++ b/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelperTest.java @@ -126,6 +126,13 @@ class SqlParserSelectHelperTest { + "= '2023-08-08' ORDER BY pv DESC LIMIT 1"); Assert.assertEquals(allFields.size(), 6); + + allFields = SqlParserSelectHelper.getAllFields( + "SELECT * FROM CSpider WHERE (评分 < (SELECT min(评分) FROM CSpider WHERE 语种 = '英文' ))" + + " AND 数据日期 = '2023-10-12'"); + + Assert.assertEquals(allFields.size(), 3); + }