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) {