From bb1001677d68e52ab1973f3a0351d6da8e3eef19 Mon Sep 17 00:00:00 2001 From: lexluo09 <39718951+lexluo09@users.noreply.github.com> Date: Tue, 19 Dec 2023 11:54:28 +0800 Subject: [PATCH] [improvement](chat) Fix the issue of having empty elements in addFieldsToSelect. (#545) --- .../common/util/jsqlparser/SqlParserAddHelper.java | 13 +++++-------- .../util/jsqlparser/SqlParserAddHelperTest.java | 10 ++++++++++ 2 files changed, 15 insertions(+), 8 deletions(-) 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); + } + }