This is an automated email from the ASF dual-hosted git repository.

hui pushed a commit to branch lmh/fixSonar
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 0b74365951ec1607781c24537e99c4409d023154
Author: Minghui Liu <[email protected]>
AuthorDate: Tue Jun 20 10:58:20 2023 +0800

    fix sonar (parser)
---
 .../plan/expression/multi/FunctionExpression.java  |  2 +-
 .../iotdb/db/mpp/plan/parser/ASTVisitor.java       | 62 +++++++++-------------
 .../db/mpp/plan/parser/StatementGenerator.java     | 62 +++++++++++++---------
 3 files changed, 62 insertions(+), 64 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/FunctionExpression.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/FunctionExpression.java
index af515d13179..daa8aad6b9c 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/FunctionExpression.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/FunctionExpression.java
@@ -118,7 +118,7 @@ public class FunctionExpression extends Expression {
     return functionType == FunctionType.AGGREGATION_FUNCTION;
   }
 
-  public Boolean isBuiltInScalarFunction() {
+  public boolean isBuiltInScalarFunction() {
     if (functionType == null) {
       initializeFunctionType();
     }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
index f84065183e8..0a5b71bfeb5 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
@@ -26,7 +26,6 @@ import org.apache.iotdb.commons.auth.entity.PrivilegeType;
 import org.apache.iotdb.commons.cluster.NodeStatus;
 import org.apache.iotdb.commons.conf.IoTDBConstant;
 import org.apache.iotdb.commons.cq.TimeoutPolicy;
-import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.schema.filter.SchemaFilter;
 import org.apache.iotdb.commons.schema.filter.impl.DataTypeFilter;
@@ -257,6 +256,11 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
   private static final String GROUP_BY_COMMON_ONLY_ONE_MSG =
       "Only one of group by time or group by variation/series/session can be 
supported at a time";
 
+  private static final String NEGATIVE_TIMESTAMP_ERROR_MSG =
+      "Please set the time >=0 or after 1970-01-01 00:00:00";
+  private static final String LIMIT_CONFIGURATION_ENABLED_ERROR_MSG =
+      "Limit configuration is not enabled, please enable it first.";
+
   private static final String IGNORENULL = "IgnoreNull";
   private ZoneId zoneId;
 
@@ -1129,7 +1133,7 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
       BiConsumer<PartialPath, List<PartialPath>> setTargetPathsGroup,
       Consumer<IntoItem> setTargetIntoItem) {
     // full paths
-    if (ctx.fullPath() != null && ctx.fullPath().size() > 0) {
+    if (ctx.fullPath() != null && !ctx.fullPath().isEmpty()) {
       List<IoTDBSqlParser.FullPathContext> fullPathContextList = 
ctx.fullPath();
       List<PartialPath> pathList = new ArrayList<>();
       for (IoTDBSqlParser.FullPathContext pathContext : fullPathContextList) {
@@ -1140,7 +1144,7 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
     // prefix path and suffix paths
     if (ctx.prefixPath() != null
         && ctx.viewSuffixPaths() != null
-        && ctx.viewSuffixPaths().size() > 0) {
+        && !ctx.viewSuffixPaths().isEmpty()) {
       IoTDBSqlParser.PrefixPathContext prefixPathContext = ctx.prefixPath();
       List<IoTDBSqlParser.ViewSuffixPathsContext> suffixPathContextList = 
ctx.viewSuffixPaths();
       List<PartialPath> suffixPathList = new ArrayList<>();
@@ -1180,7 +1184,7 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
       BiConsumer<PartialPath, List<PartialPath>> setSourcePathsGroup,
       Consumer<QueryStatement> setSourceQueryStatement) {
     // full paths
-    if (ctx.fullPath() != null && ctx.fullPath().size() > 0) {
+    if (ctx.fullPath() != null && !ctx.fullPath().isEmpty()) {
       List<IoTDBSqlParser.FullPathContext> fullPathContextList = 
ctx.fullPath();
       List<PartialPath> pathList = new ArrayList<>();
       for (IoTDBSqlParser.FullPathContext pathContext : fullPathContextList) {
@@ -1191,7 +1195,7 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
     // prefix path and suffix paths
     if (ctx.prefixPath() != null
         && ctx.viewSuffixPaths() != null
-        && ctx.viewSuffixPaths().size() > 0) {
+        && !ctx.viewSuffixPaths().isEmpty()) {
       IoTDBSqlParser.PrefixPathContext prefixPathContext = ctx.prefixPath();
       PartialPath prefixPath = parsePrefixPath(prefixPathContext);
       List<IoTDBSqlParser.ViewSuffixPathsContext> suffixPathContextList = 
ctx.viewSuffixPaths();
@@ -1549,10 +1553,10 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
       GroupByAttributeClauseContext ctx, WindowType windowType) {
 
     boolean ignoringNull = true;
-    if (ctx.attributePair() != null && !ctx.attributePair().isEmpty()) {
-      if (ctx.attributePair().key.getText().equalsIgnoreCase(IGNORENULL)) {
-        ignoringNull = 
Boolean.parseBoolean(ctx.attributePair().value.getText());
-      }
+    if (ctx.attributePair() != null
+        && !ctx.attributePair().isEmpty()
+        && ctx.attributePair().key.getText().equalsIgnoreCase(IGNORENULL)) {
+      ignoringNull = Boolean.parseBoolean(ctx.attributePair().value.getText());
     }
     List<ExpressionContext> expressions = ctx.expression();
     if (windowType == WindowType.VARIATION_WINDOW) {
@@ -1953,10 +1957,6 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
     return new PartialPath(path);
   }
 
-  private PartialPath convertConstantToPath(String src) throws 
IllegalPathException {
-    return new PartialPath(src);
-  }
-
   private String parseNodeName(IoTDBSqlParser.NodeNameContext ctx) {
     if (!useWildcard && !ctx.wildcard().isEmpty()) {
       useWildcard = true;
@@ -2085,11 +2085,10 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
   }
 
   private String parseStringLiteralInInsertValue(String src) {
-    if (2 <= src.length()) {
-      if ((src.charAt(0) == '\"' && src.charAt(src.length() - 1) == '\"')
-          || (src.charAt(0) == '\'' && src.charAt(src.length() - 1) == '\'')) {
-        return "'" + parseStringLiteral(src) + "'";
-      }
+    if (2 <= src.length()
+        && ((src.charAt(0) == '\"' && src.charAt(src.length() - 1) == '\"')
+            || (src.charAt(0) == '\'' && src.charAt(src.length() - 1) == 
'\''))) {
+      return "'" + parseStringLiteral(src) + "'";
     }
     return src;
   }
@@ -3127,7 +3126,7 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
     } else if (ctx.READONLY() != null) {
       setSystemStatusStatement.setStatus(NodeStatus.ReadOnly);
     } else {
-      throw new RuntimeException("Unknown system status in set system 
command.");
+      throw new SemanticException("Unknown system status in set system 
command.");
     }
     return setSystemStatusStatement;
   }
@@ -3495,17 +3494,6 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
     return attributes;
   }
 
-  private PartialPath parsePathFromExpression(Expression expression) {
-    if (expression instanceof TimeSeriesOperand) {
-      return ((TimeSeriesOperand) expression).getPath();
-    } else if (expression instanceof TimestampOperand) {
-      return SqlConstant.TIME_PATH;
-    } else {
-      throw new IllegalArgumentException(
-          "Unsupported expression type: " + expression.getExpressionType());
-    }
-  }
-
   // PIPE
 
   @Override
@@ -3636,7 +3624,7 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
     if (ctx.time != null) {
       long timestamp = parseTimeValue(ctx.time, DateTimeUtils.currentTime());
       if (timestamp < 0) {
-        throw new SemanticException("Please set the time >=0 or after 
1970-01-01 00:00:00");
+        throw new SemanticException(NEGATIVE_TIMESTAMP_ERROR_MSG);
       } else {
         getRegionIdStatement.setTimeStamp(timestamp);
       }
@@ -3664,7 +3652,7 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
     if (ctx.startTime != null) {
       long timestamp = parseTimeValue(ctx.startTime, 
DateTimeUtils.currentTime());
       if (timestamp < 0) {
-        throw new SemanticException("Please set the time >=0 or after 
1970-01-01 00:00:00");
+        throw new SemanticException(NEGATIVE_TIMESTAMP_ERROR_MSG);
       } else {
         getTimeSlotListStatement.setStartTime(timestamp);
       }
@@ -3672,7 +3660,7 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
     if (ctx.endTime != null) {
       long timestamp = parseTimeValue(ctx.endTime, 
DateTimeUtils.currentTime());
       if (timestamp < 0) {
-        throw new SemanticException("Please set the time >=0 or after 
1970-01-01 00:00:00");
+        throw new SemanticException(NEGATIVE_TIMESTAMP_ERROR_MSG);
       } else {
         getTimeSlotListStatement.setEndTime(timestamp);
       }
@@ -3711,7 +3699,7 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
   @Override
   public Statement visitSetSpaceQuota(IoTDBSqlParser.SetSpaceQuotaContext ctx) 
{
     if (!IoTDBDescriptor.getInstance().getConfig().isQuotaEnable()) {
-      throw new SemanticException("Limit configuration is not enabled, please 
enable it first.");
+      throw new SemanticException(LIMIT_CONFIGURATION_ENABLED_ERROR_MSG);
     }
     SetSpaceQuotaStatement setSpaceQuotaStatement = new 
SetSpaceQuotaStatement();
     List<IoTDBSqlParser.PrefixPathContext> prefixPathContexts = 
ctx.prefixPath();
@@ -3778,7 +3766,7 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
   @Override
   public Statement 
visitSetThrottleQuota(IoTDBSqlParser.SetThrottleQuotaContext ctx) {
     if (!IoTDBDescriptor.getInstance().getConfig().isQuotaEnable()) {
-      throw new SemanticException("Limit configuration is not enabled, please 
enable it first.");
+      throw new SemanticException(LIMIT_CONFIGURATION_ENABLED_ERROR_MSG);
     }
     if 
(parseIdentifier(ctx.userName.getText()).equals(IoTDBConstant.PATH_ROOT)) {
       throw new SemanticException("Cannot set throttle quota for user root.");
@@ -3878,7 +3866,7 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
   @Override
   public Statement 
visitShowThrottleQuota(IoTDBSqlParser.ShowThrottleQuotaContext ctx) {
     if (!IoTDBDescriptor.getInstance().getConfig().isQuotaEnable()) {
-      throw new SemanticException("Limit configuration is not enabled, please 
enable it first.");
+      throw new SemanticException(LIMIT_CONFIGURATION_ENABLED_ERROR_MSG);
     }
     ShowThrottleQuotaStatement showThrottleQuotaStatement = new 
ShowThrottleQuotaStatement();
     if (ctx.userName != null) {
@@ -3952,7 +3940,7 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
   @Override
   public Statement visitShowSpaceQuota(IoTDBSqlParser.ShowSpaceQuotaContext 
ctx) {
     if (!IoTDBDescriptor.getInstance().getConfig().isQuotaEnable()) {
-      throw new SemanticException("Limit configuration is not enabled, please 
enable it first.");
+      throw new SemanticException(LIMIT_CONFIGURATION_ENABLED_ERROR_MSG);
     }
     ShowSpaceQuotaStatement showSpaceQuotaStatement = new 
ShowSpaceQuotaStatement();
     if (ctx.prefixPath() != null) {
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/StatementGenerator.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/StatementGenerator.java
index 5fc4f3a2348..5cf6c5aad6b 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/StatementGenerator.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/StatementGenerator.java
@@ -124,6 +124,10 @@ public class StatementGenerator {
   private static final DataNodeDevicePathCache DEVICE_PATH_CACHE =
       DataNodeDevicePathCache.getInstance();
 
+  private StatementGenerator() {
+    // forbidding instantiation
+  }
+
   public static Statement createStatement(String sql, ZoneId zoneId) {
     return invokeParser(sql, zoneId);
   }
@@ -285,7 +289,7 @@ public class StatementGenerator {
   }
 
   public static InsertRowStatement createStatement(TSInsertStringRecordReq 
insertRecordReq)
-      throws IllegalPathException, QueryProcessException {
+      throws IllegalPathException {
     final long startTime = System.nanoTime();
     // construct insert statement
     InsertRowStatement insertStatement = new InsertRowStatement();
@@ -395,7 +399,7 @@ public class StatementGenerator {
   }
 
   public static InsertRowsStatement createStatement(TSInsertStringRecordsReq 
req)
-      throws IllegalPathException, QueryProcessException {
+      throws IllegalPathException {
     final long startTime = System.nanoTime();
     // construct insert statement
     InsertRowsStatement insertStatement = new InsertRowsStatement();
@@ -507,16 +511,16 @@ public class StatementGenerator {
     CreateAlignedTimeSeriesStatement statement = new 
CreateAlignedTimeSeriesStatement();
     statement.setDevicePath(new PartialPath(req.prefixPath));
     List<TSDataType> dataTypes = new ArrayList<>();
-    for (int dataType : req.dataTypes) {
-      dataTypes.add(TSDataType.deserialize((byte) dataType));
+    for (Integer dataType : req.dataTypes) {
+      dataTypes.add(TSDataType.deserialize(dataType.byteValue()));
     }
     List<TSEncoding> encodings = new ArrayList<>();
-    for (int encoding : req.encodings) {
-      encodings.add(TSEncoding.deserialize((byte) encoding));
+    for (Integer encoding : req.encodings) {
+      encodings.add(TSEncoding.deserialize(encoding.byteValue()));
     }
     List<CompressionType> compressors = new ArrayList<>();
-    for (int compressor : req.compressors) {
-      compressors.add(CompressionType.deserialize((byte) compressor));
+    for (Integer compressor : req.compressors) {
+      compressors.add(CompressionType.deserialize(compressor.byteValue()));
     }
     statement.setMeasurements(req.measurements);
     statement.setDataTypes(dataTypes);
@@ -538,16 +542,16 @@ public class StatementGenerator {
       paths.add(new PartialPath(path));
     }
     List<TSDataType> dataTypes = new ArrayList<>();
-    for (int dataType : req.dataTypes) {
-      dataTypes.add(TSDataType.deserialize((byte) dataType));
+    for (Integer dataType : req.dataTypes) {
+      dataTypes.add(TSDataType.deserialize(dataType.byteValue()));
     }
     List<TSEncoding> encodings = new ArrayList<>();
-    for (int encoding : req.encodings) {
-      encodings.add(TSEncoding.deserialize((byte) encoding));
+    for (Integer encoding : req.encodings) {
+      encodings.add(TSEncoding.deserialize(encoding.byteValue()));
     }
     List<CompressionType> compressors = new ArrayList<>();
-    for (int compressor : req.compressors) {
-      compressors.add(CompressionType.deserialize((byte) compressor));
+    for (Integer compressor : req.compressors) {
+      compressors.add(CompressionType.deserialize(compressor.byteValue()));
     }
     CreateMultiTimeSeriesStatement statement = new 
CreateMultiTimeSeriesStatement();
     statement.setPaths(paths);
@@ -603,7 +607,7 @@ public class StatementGenerator {
     List<List<TSEncoding>> encodings = new ArrayList<>();
     List<List<CompressionType>> compressors = new ArrayList<>();
 
-    String templateName = ReadWriteIOUtils.readString(buffer);
+    ReadWriteIOUtils.readString(buffer); // skip template name
     boolean isAlign = ReadWriteIOUtils.readBool(buffer);
     if (isAlign) {
       alignedPrefix.put("", new ArrayList<>());
@@ -650,18 +654,20 @@ public class StatementGenerator {
       }
     }
 
-    for (String prefix : alignedPrefix.keySet()) {
+    for (Map.Entry<String, List<String>> alignedPrefixEntry : 
alignedPrefix.entrySet()) {
+      String prefix = alignedPrefixEntry.getKey();
+      List<String> alignedMeasurements = alignedPrefixEntry.getValue();
+
       List<String> thisMeasurements = new ArrayList<>();
       List<TSDataType> thisDataTypes = new ArrayList<>();
       List<TSEncoding> thisEncodings = new ArrayList<>();
       List<CompressionType> thisCompressors = new ArrayList<>();
 
-      for (int i = 0; i < alignedPrefix.get(prefix).size(); i++) {
+      for (int i = 0; i < alignedMeasurements.size(); i++) {
         if ("".equals(prefix)) {
-          thisMeasurements.add(alignedPrefix.get(prefix).get(i));
+          thisMeasurements.add(alignedMeasurements.get(i));
         } else {
-          thisMeasurements.add(
-              prefix + TsFileConstant.PATH_SEPARATOR + 
alignedPrefix.get(prefix).get(i));
+          thisMeasurements.add(prefix + TsFileConstant.PATH_SEPARATOR + 
alignedMeasurements.get(i));
         }
         thisDataTypes.add(alignedDataTypes.get(prefix).get(i));
         thisEncodings.add(alignedEncodings.get(prefix).get(i));
@@ -673,6 +679,7 @@ public class StatementGenerator {
       encodings.add(thisEncodings);
       compressors.add(thisCompressors);
     }
+
     CreateSchemaTemplateStatement statement =
         new CreateSchemaTemplateStatement(
             req.getName(), measurements, dataTypes, encodings, compressors, 
isAlign);
@@ -778,8 +785,8 @@ public class StatementGenerator {
       try {
         // STAGE 1: try with simpler/faster SLL(*)
         tree = parser1.singleStatement();
-        // if we get here, there was no syntax error and SLL(*) was enough;
-        // there is no need to try full LL(*)
+        // if we get here, there was no syntax error and SLL(*) was enough; 
there is no need to try
+        // full LL(*)
       } catch (Exception ex) {
         CharStream charStream2 = CharStreams.fromString(sql);
 
@@ -889,11 +896,14 @@ public class StatementGenerator {
                 new TimestampOperand(), new ConstantOperand(TSDataType.INT64, 
times[1]));
         predictNum += 2;
       }
-      whereCondition.setPredicate(
-          predictNum == 3
-              ? new LogicAndExpression(leftPredicate, rightPredicate)
-              : (predictNum == 1 ? leftPredicate : rightPredicate));
 
+      if (predictNum == 3) {
+        whereCondition.setPredicate(new LogicAndExpression(leftPredicate, 
rightPredicate));
+      } else if (predictNum == 1) {
+        whereCondition.setPredicate(leftPredicate);
+      } else {
+        whereCondition.setPredicate(rightPredicate);
+      }
       queryStatement.setWhereCondition(whereCondition);
     }
     return queryStatement;

Reply via email to