mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-11 12:07:42 +00:00
(improvement)(chat) support nested query sql (#210)
This commit is contained in:
@@ -139,8 +139,16 @@ public class SqlParserSelectHelper {
|
||||
}
|
||||
|
||||
public static List<String> getAllFields(String sql) {
|
||||
List<PlainSelect> plainSelects = getPlainSelects(getPlainSelect(sql));
|
||||
Set<String> results = new HashSet<>();
|
||||
for (PlainSelect plainSelect : plainSelects) {
|
||||
List<String> fields = getFieldsByPlainSelect(plainSelect);
|
||||
results.addAll(fields);
|
||||
}
|
||||
return new ArrayList<>(results);
|
||||
}
|
||||
|
||||
PlainSelect plainSelect = getPlainSelect(sql);
|
||||
private static ArrayList<String> getFieldsByPlainSelect(PlainSelect plainSelect) {
|
||||
if (Objects.isNull(plainSelect)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user