You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ro...@apache.org on 2022/04/27 03:41:06 UTC
[iotdb] 01/02: visitors
This is an automated email from the ASF dual-hosted git repository.
rong pushed a commit to branch iotdb-2933
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 6fe372fb0a08ef7b5ab7b36c3b38fe774649b903
Author: Steve Yurong Su <ro...@apache.org>
AuthorDate: Wed Apr 27 10:04:11 2022 +0800
visitors
---
.../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 | 2 +-
.../apache/iotdb/db/mpp/sql/parser/ASTVisitor.java | 27 ++++++++++++++-------
.../apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java | 28 +++++++++++++++-------
3 files changed, 39 insertions(+), 18 deletions(-)
diff --git a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
index e5f1ea3e62..04ff27d438 100644
--- a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
+++ b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
@@ -848,7 +848,7 @@ expression
| leftExpression=expression (STAR | DIV | MOD) rightExpression=expression
| leftExpression=expression (PLUS | MINUS) rightExpression=expression
| leftExpression=expression (OPERATOR_GT | OPERATOR_GTE | OPERATOR_LT | OPERATOR_LTE | OPERATOR_DEQ | OPERATOR_NEQ) rightExpression=expression
- | unaryBeforeRegularExpression=expression (REGEXP | LIKE) STRING_LITERAL
+ | unaryBeforeRegularOrLikeExpression=expression (REGEXP | LIKE) STRING_LITERAL
| unaryBeforeInExpression=expression OPERATOR_IN LR_BRACKET constant (COMMA constant)* RR_BRACKET
| leftExpression=expression OPERATOR_AND rightExpression=expression
| leftExpression=expression OPERATOR_OR rightExpression=expression
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/parser/ASTVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/parser/ASTVisitor.java
index 2f4a4d8f8a..7d5fe127f1 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/parser/ASTVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/parser/ASTVisitor.java
@@ -1620,6 +1620,10 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
return new TimeSeriesOperand(parseSuffixPathCanInExpr(context.suffixPathCanInExpr()));
}
+ if (context.functionName() != null) {
+ return parseFunctionExpression(context);
+ }
+
if (context.expressionAfterUnaryOperator != null) {
if (context.MINUS() != null) {
return new NegationExpression(parseExpression(context.expressionAfterUnaryOperator));
@@ -1672,14 +1676,17 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
if (context.OPERATOR_OR() != null) {
return new LogicOrExpression(leftExpression, rightExpression);
}
+ throw new UnsupportedOperationException();
}
- if (context.functionName() != null) {
- return parseFunctionExpression(context);
- }
-
- if (context.unaryBeforeRegularExpression != null) {
- return parseRegularExpression(context);
+ if (context.unaryBeforeRegularOrLikeExpression != null) {
+ if (context.REGEXP() != null) {
+ return parseRegularExpression(context);
+ }
+ if (context.LIKE() != null) {
+ return parseLikeExpression(context);
+ }
+ throw new UnsupportedOperationException();
}
if (context.unaryBeforeInExpression != null) {
@@ -1723,11 +1730,15 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
}
private Expression parseRegularExpression(ExpressionContext context) {
- return null;
+ throw new UnsupportedOperationException();
+ }
+
+ private Expression parseLikeExpression(ExpressionContext context) {
+ throw new UnsupportedOperationException();
}
private Expression parseInExpression(ExpressionContext context) {
- return null;
+ throw new UnsupportedOperationException();
}
private Expression parseConstantOperand(ConstantContext constantContext) {
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
index c384720ed8..1bab8fb65e 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
@@ -2506,7 +2506,6 @@ public class IoTDBSqlVisitor extends IoTDBSqlParserBaseVisitor<Operator> {
}
}
- @SuppressWarnings("squid:S3776")
private Expression parseExpression(IoTDBSqlParser.ExpressionContext context) {
if (context.unaryInBracket != null) {
return parseExpression(context.unaryInBracket);
@@ -2524,6 +2523,10 @@ public class IoTDBSqlVisitor extends IoTDBSqlParserBaseVisitor<Operator> {
return new TimeSeriesOperand(parseSuffixPathCanInExpr(context.suffixPathCanInExpr()));
}
+ if (context.functionName() != null) {
+ return parseFunctionExpression(context);
+ }
+
if (context.expressionAfterUnaryOperator != null) {
if (context.MINUS() != null) {
return new NegationExpression(parseExpression(context.expressionAfterUnaryOperator));
@@ -2576,14 +2579,17 @@ public class IoTDBSqlVisitor extends IoTDBSqlParserBaseVisitor<Operator> {
if (context.OPERATOR_OR() != null) {
return new LogicOrExpression(leftExpression, rightExpression);
}
+ throw new UnsupportedOperationException();
}
- if (context.functionName() != null) {
- return parseFunctionExpression(context);
- }
-
- if (context.unaryBeforeRegularExpression != null) {
- return parseRegularExpression(context);
+ if (context.unaryBeforeRegularOrLikeExpression != null) {
+ if (context.REGEXP() != null) {
+ return parseRegularExpression(context);
+ }
+ if (context.LIKE() != null) {
+ return parseLikeExpression(context);
+ }
+ throw new UnsupportedOperationException();
}
if (context.unaryBeforeInExpression != null) {
@@ -2627,11 +2633,15 @@ public class IoTDBSqlVisitor extends IoTDBSqlParserBaseVisitor<Operator> {
}
private Expression parseRegularExpression(ExpressionContext context) {
- return null;
+ throw new UnsupportedOperationException();
+ }
+
+ private Expression parseLikeExpression(ExpressionContext context) {
+ throw new UnsupportedOperationException();
}
private Expression parseInExpression(ExpressionContext context) {
- return null;
+ throw new UnsupportedOperationException();
}
private Expression parseConstantOperand(ConstantContext constantContext) {