Skip to content

Commit d083de5

Browse files
committed
test: collect the WITH lambda through the expression visitor
The ClickHouse visitor-adapter test declared a list that was never filled or asserted, and its WithItem override only called super, so the claimed expression-visitor hand-off was not actually verified (Codacy: unused local variable). Pass a collecting ExpressionVisitorAdapter to the SelectVisitorAdapter and assert the lambda text it receives. Signed-off-by: 付典 <fudianchn@gmail.com>
1 parent 06f1556 commit d083de5

1 file changed

Lines changed: 10 additions & 6 deletions

File tree

src/test/java/net/sf/jsqlparser/statement/select/ClickHouseTest.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import net.sf.jsqlparser.expression.ColumnsExpression;
2121
import net.sf.jsqlparser.expression.ColumnsTransformer;
2222
import net.sf.jsqlparser.expression.Function;
23+
import net.sf.jsqlparser.expression.ExpressionVisitorAdapter;
2324
import net.sf.jsqlparser.expression.LambdaExpression;
2425
import net.sf.jsqlparser.expression.operators.relational.ParenthesedExpressionList;
2526
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
@@ -632,16 +633,19 @@ public <S> Void visit(PlainSelect plainSelect, S context) {
632633

633634
// a lambda alias is handed to the expression visitor
634635
List<String> expressions = new ArrayList<>();
635-
SelectVisitorAdapter<Void> exprVisitor = new SelectVisitorAdapter<>() {
636-
@Override
637-
public <S> Void visit(WithItem<?> withItem, S context) {
638-
return super.visit(withItem, context);
639-
}
640-
};
636+
SelectVisitorAdapter<Void> exprVisitor =
637+
new SelectVisitorAdapter<>(new ExpressionVisitorAdapter<>() {
638+
@Override
639+
public <S> Void visit(LambdaExpression lambdaExpression, S context) {
640+
expressions.add(String.valueOf(lambdaExpression));
641+
return super.visit(lambdaExpression, context);
642+
}
643+
});
641644
Select lambdaSelect = (Select) CCJSqlParserUtil
642645
.parse("WITH (x -> x * 2) AS double SELECT double(5)");
643646
Assertions.assertNotNull(lambdaSelect.getWithItemsList().get(0).getExpression());
644647
lambdaSelect.getSelectBody().accept(exprVisitor, null);
648+
Assertions.assertEquals(List.of("x -> x * 2"), expressions);
645649
}
646650

647651
@Test

0 commit comments

Comments
 (0)