diff --git a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserAddHelper.java b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserAddHelper.java index ea3f667c8..c5723074f 100644 --- a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserAddHelper.java +++ b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserAddHelper.java @@ -42,7 +42,7 @@ public class SqlParserAddHelper { SelectBody selectBody = selectStatement.getSelectBody(); if (selectBody instanceof PlainSelect) { PlainSelect plainSelect = (PlainSelect) selectBody; - fields.stream().forEach(field -> { + fields.stream().filter(Objects::nonNull).forEach(field -> { SelectExpressionItem selectExpressionItem = new SelectExpressionItem(new Column(field)); plainSelect.addSelectItems(selectExpressionItem); }); @@ -59,9 +59,6 @@ public class SqlParserAddHelper { }); } } - //for (String field : fields) { - // SelectUtils.addExpression(selectStatement, new Column(field)); - //} return selectStatement.toString(); } @@ -228,7 +225,7 @@ public class SqlParserAddHelper { } private static void addAggregateToSelectItems(List selectItems, - Map fieldNameToAggregate) { + Map fieldNameToAggregate) { for (SelectItem selectItem : selectItems) { if (selectItem instanceof SelectExpressionItem) { SelectExpressionItem selectExpressionItem = (SelectExpressionItem) selectItem; @@ -243,7 +240,7 @@ public class SqlParserAddHelper { } private static void addAggregateToOrderByItems(List orderByElements, - Map fieldNameToAggregate) { + Map fieldNameToAggregate) { if (orderByElements == null) { return; } @@ -258,7 +255,7 @@ public class SqlParserAddHelper { } private static void addAggregateToGroupByItems(GroupByElement groupByElement, - Map fieldNameToAggregate) { + Map fieldNameToAggregate) { if (groupByElement == null) { return; } @@ -279,7 +276,7 @@ public class SqlParserAddHelper { } private static void modifyWhereExpression(Expression whereExpression, - Map fieldNameToAggregate) { + Map fieldNameToAggregate) { if (SqlParserSelectHelper.isLogicExpression(whereExpression)) { AndExpression andExpression = (AndExpression) whereExpression; Expression leftExpression = andExpression.getLeftExpression(); diff --git a/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserAddHelperTest.java b/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserAddHelperTest.java index 16d4cd8e3..0648de68f 100644 --- a/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserAddHelperTest.java +++ b/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserAddHelperTest.java @@ -387,4 +387,14 @@ class SqlParserAddHelperTest { 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); + } + }