public static LogicalBinaryExpression or(final Expression left, final Expression right) { return new LogicalBinaryExpression(Optional.empty(), Type.OR, left, right); }
public static LogicalBinaryExpression and(final Expression left, final Expression right) { return new LogicalBinaryExpression(Optional.empty(), Type.AND, left, right); }
@Override public Node visitLogicalBinary(final SqlBaseParser.LogicalBinaryContext context) { return new LogicalBinaryExpression( getLocation(context.operator), getLogicalBinaryOperator(context.operator), (Expression) visit(context.left), (Expression) visit(context.right) ); }
protected Node visitLogicalBinaryExpression( final LogicalBinaryExpression node, final Object context ) { // use an if/else block here (instead of isPresent.map(...).orElse(...)) so only one object // gets instantiated (issue #1784) if (node.getLocation().isPresent()) { return new LogicalBinaryExpression(node.getLocation().get(), node.getType(), (Expression) process(node.getLeft(), context), (Expression) process(node.getRight(), context) ); } else { return new LogicalBinaryExpression(node.getType(), (Expression) process(node.getLeft(), context), (Expression) process(node.getRight(), context) ); } }
@Test public void shouldFormatLogicalBinaryExpression() { final LogicalBinaryExpression expression = new LogicalBinaryExpression(LogicalBinaryExpression.Type.AND, new StringLiteral("a"), new StringLiteral("b")); assertThat(ExpressionFormatter.formatExpression(expression), equalTo("('a' AND 'b')")); }