mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 04:27:39 +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) {
|
private Column getColumn(Function leftExpressionFunction) {
|
||||||
List<Expression> leftExpressions = leftExpressionFunction.getParameters().getExpressions();
|
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 null;
|
||||||
}
|
}
|
||||||
return (Column) leftExpressions.get(0);
|
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.SelectVisitorAdapter;
|
||||||
import net.sf.jsqlparser.statement.select.SubSelect;
|
import net.sf.jsqlparser.statement.select.SubSelect;
|
||||||
import net.sf.jsqlparser.statement.select.SetOperationList;
|
import net.sf.jsqlparser.statement.select.SetOperationList;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
@@ -59,6 +60,9 @@ public class SqlParserSelectHelper {
|
|||||||
having.accept(new FieldAndValueAcquireVisitor(result));
|
having.accept(new FieldAndValueAcquireVisitor(result));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
result = result.stream()
|
||||||
|
.filter(fieldExpression -> StringUtils.isNotBlank(fieldExpression.getFieldName()))
|
||||||
|
.collect(Collectors.toSet());
|
||||||
return new ArrayList<>(result);
|
return new ArrayList<>(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -118,6 +118,13 @@ class SqlParserSelectHelperTest {
|
|||||||
+ "WHERE MONTH(数据日期) = 9) FROM 营销月模型 WHERE 国家中文名 = '肯尼亚' AND MONTH(数据日期) = 9");
|
+ "WHERE MONTH(数据日期) = 9) FROM 营销月模型 WHERE 国家中文名 = '肯尼亚' AND MONTH(数据日期) = 9");
|
||||||
|
|
||||||
System.out.println(fieldExpression);
|
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
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user