This is an automated email from the ASF dual-hosted git repository. morrysnow pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 81c06e8edc [feature](nereids) add scalar function is_null_pred and is_not_null_pred (#15163) 81c06e8edc is described below commit 81c06e8edc80558bc6fc9e7dfbd978078710d86a Author: minghong <minghong.z...@163.com> AuthorDate: Tue Dec 20 00:54:40 2022 +0800 [feature](nereids) add scalar function is_null_pred and is_not_null_pred (#15163) --- fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.g4 | 2 ++ fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 | 5 ++++- .../java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java | 6 ++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.g4 b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.g4 index 5f2628e656..d16bf96b30 100644 --- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.g4 +++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.g4 @@ -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'; diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 index 8e36202897..9672e651dd 100644 --- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 +++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 @@ -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 diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java index 7194fccabf..65e1773fe4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java @@ -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()); } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org