You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2022/12/19 16:54:47 UTC
[doris] branch master updated: [feature](nereids) add scalar function is_null_pred and is_not_null_pred (#15163)
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 <mi...@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-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org