mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-13 13:07:32 +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) {
|
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)) {
|
if (Objects.isNull(plainSelect)) {
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -126,6 +126,13 @@ class SqlParserSelectHelperTest {
|
|||||||
+ "= '2023-08-08' ORDER BY pv DESC LIMIT 1");
|
+ "= '2023-08-08' ORDER BY pv DESC LIMIT 1");
|
||||||
|
|
||||||
Assert.assertEquals(allFields.size(), 6);
|
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