[feature](nereids)support 'ISNULL' expression (#14967)

This commit is contained in:
minghong
2022-12-12 22:38:54 +08:00
committed by GitHub
parent 281d47434a
commit a5a092ab9f
3 changed files with 9 additions and 0 deletions

View File

@ -215,6 +215,7 @@ INTERSECT: 'INTERSECT';
INTERVAL: 'INTERVAL';
INTO: 'INTO';
IS: 'IS';
ISNULL: 'ISNULL';
ITEMS: 'ITEMS';
JOIN: 'JOIN';
KEYS: 'KEYS';

View File

@ -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

View File

@ -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());
}