[feature](nereids) add scalar function is_null_pred and is_not_null_pred (#15163)
This commit is contained in:
@ -217,6 +217,8 @@ INTERVAL: 'INTERVAL';
|
||||
INTO: 'INTO';
|
||||
IS: 'IS';
|
||||
ISNULL: 'ISNULL';
|
||||
IS_NULL_PRED: 'IS_NULL_PRED';
|
||||
IS_NOT_NULL_PRED: 'IS_NOT_NULL_PRED';
|
||||
ITEMS: 'ITEMS';
|
||||
JOIN: 'JOIN';
|
||||
KEYS: 'KEYS';
|
||||
|
||||
@ -241,7 +241,8 @@ expression
|
||||
booleanExpression
|
||||
: NOT booleanExpression #logicalNot
|
||||
| EXISTS LEFT_PAREN query RIGHT_PAREN #exist
|
||||
| ISNULL LEFT_PAREN valueExpression RIGHT_PAREN #isnull
|
||||
| (ISNULL | IS_NULL_PRED) LEFT_PAREN valueExpression RIGHT_PAREN #isnull
|
||||
| IS_NOT_NULL_PRED LEFT_PAREN valueExpression RIGHT_PAREN #is_not_null_pred
|
||||
| valueExpression predicate? #predicated
|
||||
| left=booleanExpression operator=AND right=booleanExpression #logicalBinary
|
||||
| left=booleanExpression operator=OR right=booleanExpression #logicalBinary
|
||||
@ -478,6 +479,8 @@ ansiNonReserved
|
||||
| LAZY
|
||||
| LIKE
|
||||
| ILIKE
|
||||
| IS_NOT_NULL_PRED
|
||||
| IS_NULL_PRED
|
||||
| LIMIT
|
||||
| OFFSET
|
||||
| LINES
|
||||
|
||||
@ -47,6 +47,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.Is_not_null_predContext;
|
||||
import org.apache.doris.nereids.DorisParser.IsnullContext;
|
||||
import org.apache.doris.nereids.DorisParser.JoinCriteriaContext;
|
||||
import org.apache.doris.nereids.DorisParser.JoinRelationContext;
|
||||
@ -1357,6 +1358,11 @@ public class LogicalPlanBuilder extends DorisParserBaseVisitor<Object> {
|
||||
return ParserUtils.withOrigin(context, () -> new IsNull(typedVisit(context.valueExpression())));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Expression visitIs_not_null_pred(Is_not_null_predContext context) {
|
||||
return ParserUtils.withOrigin(context, () -> new Not(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