diff --git a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FieldAndValueAcquireVisitor.java b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FieldAndValueAcquireVisitor.java index bb107ca35..6728874fb 100644 --- a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FieldAndValueAcquireVisitor.java +++ b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/FieldAndValueAcquireVisitor.java @@ -144,7 +144,10 @@ public class FieldAndValueAcquireVisitor extends ExpressionVisitorAdapter { private Column getColumn(Function leftExpressionFunction) { List leftExpressions = leftExpressionFunction.getParameters().getExpressions(); - if (CollectionUtils.isEmpty(leftExpressions) || leftExpressions.size() < 1) { + if (CollectionUtils.isEmpty(leftExpressions)) { + return null; + } + if (!(leftExpressions.get(0) instanceof Column)) { return null; } return (Column) leftExpressions.get(0); diff --git a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelper.java b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelper.java index ddbae1d60..7cf1ccf78 100644 --- a/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelper.java +++ b/common/src/main/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelper.java @@ -34,6 +34,7 @@ import net.sf.jsqlparser.statement.select.SelectItem; import net.sf.jsqlparser.statement.select.SelectVisitorAdapter; import net.sf.jsqlparser.statement.select.SubSelect; import net.sf.jsqlparser.statement.select.SetOperationList; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.ImmutablePair; import org.springframework.util.CollectionUtils; @@ -59,6 +60,9 @@ public class SqlParserSelectHelper { having.accept(new FieldAndValueAcquireVisitor(result)); } } + result = result.stream() + .filter(fieldExpression -> StringUtils.isNotBlank(fieldExpression.getFieldName())) + .collect(Collectors.toSet()); return new ArrayList<>(result); } diff --git a/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelperTest.java b/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelperTest.java index ce6f44b30..f82025f23 100644 --- a/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelperTest.java +++ b/common/src/test/java/com/tencent/supersonic/common/util/jsqlparser/SqlParserSelectHelperTest.java @@ -118,6 +118,13 @@ class SqlParserSelectHelperTest { + "WHERE MONTH(数据日期) = 9) FROM 营销月模型 WHERE 国家中文名 = '肯尼亚' AND MONTH(数据日期) = 9"); System.out.println(fieldExpression); + + fieldExpression = SqlParserSelectHelper.getFilterExpression( + "select 等级, count(*) from 歌手 where 别名 = '港台' or 活跃区域 = '港台' and" + + " datediff('day', 数据日期, '2023-12-24') <= 0 group by 等级"); + + System.out.println(fieldExpression); + } @Test