mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 11:07:06 +00:00
(improvement)(chat) Modify getFilterExpression to support the datediff function. (#576)
This commit is contained in:
@@ -144,7 +144,10 @@ public class FieldAndValueAcquireVisitor extends ExpressionVisitorAdapter {
|
||||
|
||||
private Column getColumn(Function leftExpressionFunction) {
|
||||
List<Expression> 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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user