[feature](nereids)support 'ISNULL' expression (#14967)
This commit is contained in:
@ -215,6 +215,7 @@ INTERSECT: 'INTERSECT';
|
||||
INTERVAL: 'INTERVAL';
|
||||
INTO: 'INTO';
|
||||
IS: 'IS';
|
||||
ISNULL: 'ISNULL';
|
||||
ITEMS: 'ITEMS';
|
||||
JOIN: 'JOIN';
|
||||
KEYS: 'KEYS';
|
||||
|
||||
@ -241,6 +241,7 @@ expression
|
||||
booleanExpression
|
||||
: NOT booleanExpression #logicalNot
|
||||
| EXISTS LEFT_PAREN query RIGHT_PAREN #exist
|
||||
| ISNULL LEFT_PAREN valueExpression RIGHT_PAREN #isnull
|
||||
| valueExpression predicate? #predicated
|
||||
| left=booleanExpression operator=AND right=booleanExpression #logicalBinary
|
||||
| left=booleanExpression operator=OR right=booleanExpression #logicalBinary
|
||||
@ -469,6 +470,7 @@ ansiNonReserved
|
||||
| INPUTFORMAT
|
||||
| INSERT
|
||||
| INTERVAL
|
||||
| ISNULL
|
||||
| ITEMS
|
||||
| KEYS
|
||||
| LAST
|
||||
|
||||
@ -48,6 +48,7 @@ import org.apache.doris.nereids.DorisParser.IdentifierListContext;
|
||||
import org.apache.doris.nereids.DorisParser.IdentifierSeqContext;
|
||||
import org.apache.doris.nereids.DorisParser.IntegerLiteralContext;
|
||||
import org.apache.doris.nereids.DorisParser.IntervalContext;
|
||||
import org.apache.doris.nereids.DorisParser.IsnullContext;
|
||||
import org.apache.doris.nereids.DorisParser.JoinCriteriaContext;
|
||||
import org.apache.doris.nereids.DorisParser.JoinRelationContext;
|
||||
import org.apache.doris.nereids.DorisParser.LimitClauseContext;
|
||||
@ -1329,6 +1330,11 @@ public class LogicalPlanBuilder extends DorisParserBaseVisitor<Object> {
|
||||
return ParserUtils.withOrigin(context, () -> new Exists(typedVisit(context.query()), false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Expression visitIsnull(IsnullContext context) {
|
||||
return ParserUtils.withOrigin(context, () -> new IsNull(typedVisit(context.valueExpression())));
|
||||
}
|
||||
|
||||
public List<Expression> withInList(PredicateContext ctx) {
|
||||
return ctx.expression().stream().map(this::getExpression).collect(ImmutableList.toImmutableList());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user