[improvement](chat) Fix the issue of having empty elements in addFieldsToSelect. (#545)

This commit is contained in:
lexluo09
2023-12-19 11:54:28 +08:00
committed by GitHub
parent 7a1cfbcef8
commit bb1001677d
2 changed files with 15 additions and 8 deletions

View File

@@ -42,7 +42,7 @@ public class SqlParserAddHelper {
SelectBody selectBody = selectStatement.getSelectBody(); SelectBody selectBody = selectStatement.getSelectBody();
if (selectBody instanceof PlainSelect) { if (selectBody instanceof PlainSelect) {
PlainSelect plainSelect = (PlainSelect) selectBody; PlainSelect plainSelect = (PlainSelect) selectBody;
fields.stream().forEach(field -> { fields.stream().filter(Objects::nonNull).forEach(field -> {
SelectExpressionItem selectExpressionItem = new SelectExpressionItem(new Column(field)); SelectExpressionItem selectExpressionItem = new SelectExpressionItem(new Column(field));
plainSelect.addSelectItems(selectExpressionItem); plainSelect.addSelectItems(selectExpressionItem);
}); });
@@ -59,9 +59,6 @@ public class SqlParserAddHelper {
}); });
} }
} }
//for (String field : fields) {
// SelectUtils.addExpression(selectStatement, new Column(field));
//}
return selectStatement.toString(); return selectStatement.toString();
} }
@@ -228,7 +225,7 @@ public class SqlParserAddHelper {
} }
private static void addAggregateToSelectItems(List<SelectItem> selectItems, private static void addAggregateToSelectItems(List<SelectItem> selectItems,
Map<String, String> fieldNameToAggregate) { Map<String, String> fieldNameToAggregate) {
for (SelectItem selectItem : selectItems) { for (SelectItem selectItem : selectItems) {
if (selectItem instanceof SelectExpressionItem) { if (selectItem instanceof SelectExpressionItem) {
SelectExpressionItem selectExpressionItem = (SelectExpressionItem) selectItem; SelectExpressionItem selectExpressionItem = (SelectExpressionItem) selectItem;
@@ -243,7 +240,7 @@ public class SqlParserAddHelper {
} }
private static void addAggregateToOrderByItems(List<OrderByElement> orderByElements, private static void addAggregateToOrderByItems(List<OrderByElement> orderByElements,
Map<String, String> fieldNameToAggregate) { Map<String, String> fieldNameToAggregate) {
if (orderByElements == null) { if (orderByElements == null) {
return; return;
} }
@@ -258,7 +255,7 @@ public class SqlParserAddHelper {
} }
private static void addAggregateToGroupByItems(GroupByElement groupByElement, private static void addAggregateToGroupByItems(GroupByElement groupByElement,
Map<String, String> fieldNameToAggregate) { Map<String, String> fieldNameToAggregate) {
if (groupByElement == null) { if (groupByElement == null) {
return; return;
} }
@@ -279,7 +276,7 @@ public class SqlParserAddHelper {
} }
private static void modifyWhereExpression(Expression whereExpression, private static void modifyWhereExpression(Expression whereExpression,
Map<String, String> fieldNameToAggregate) { Map<String, String> fieldNameToAggregate) {
if (SqlParserSelectHelper.isLogicExpression(whereExpression)) { if (SqlParserSelectHelper.isLogicExpression(whereExpression)) {
AndExpression andExpression = (AndExpression) whereExpression; AndExpression andExpression = (AndExpression) whereExpression;
Expression leftExpression = andExpression.getLeftExpression(); Expression leftExpression = andExpression.getLeftExpression();

View File

@@ -387,4 +387,14 @@ class SqlParserAddHelperTest {
replaceSql); replaceSql);
} }
@Test
void addFieldsToSelect() {
String correctS2SQL = "SELECT 用户, 页面 FROM 超音数用户部门 GROUP BY 用户, 页面 ORDER BY count(*) DESC";
String replaceFields = SqlParserAddHelper.addFieldsToSelect(correctS2SQL,
SqlParserSelectHelper.getOrderByFields(correctS2SQL));
Assert.assertEquals(
"SELECT 用户, 页面 FROM 超音数用户部门 GROUP BY 用户, 页面 ORDER BY count(*) DESC", replaceFields);
}
} }