diff --git a/server/src/main/java/org/apache/iotdb/db/exception/sql/MeasurementNotExistException.java b/server/src/main/java/org/apache/iotdb/db/exception/sql/MeasurementNotExistException.java index 0ea1ca2a870b..d1a74a0d7f33 100644 --- a/server/src/main/java/org/apache/iotdb/db/exception/sql/MeasurementNotExistException.java +++ b/server/src/main/java/org/apache/iotdb/db/exception/sql/MeasurementNotExistException.java @@ -19,7 +19,7 @@ package org.apache.iotdb.db.exception.sql; -public class MeasurementNotExistException extends SemanticException { +public class MeasurementNotExistException extends RuntimeException { public MeasurementNotExistException(String message) { super(message); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/QueryId.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/QueryId.java index 2208e0067212..897eb6ea1fe6 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/common/QueryId.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/QueryId.java @@ -33,13 +33,15 @@ public class QueryId { - public static QueryId mockQueryId = QueryId.valueOf("mock_query_id"); + public static final QueryId mockQueryId = QueryId.valueOf("mock_query_id"); private final String id; private int nextPlanNodeIndex; private int nextPlanFragmentIndex; + private static final String INVALID_ID_ERROR_MSG = "Invalid id %s"; + public static QueryId valueOf(String queryId) { // ID is verified in the constructor return new QueryId(queryId); @@ -94,8 +96,8 @@ public static List parseDottedId(String id, int expectedParts, String na checkArgument(ids.size() == expectedParts, "Invalid %s %s", name, id); for (String part : ids) { - checkArgument(!part.isEmpty(), "Invalid id %s", id); - checkArgument(isValidId(part), "Invalid id %s", id); + checkArgument(!part.isEmpty(), INVALID_ID_ERROR_MSG, id); + checkArgument(isValidId(part), INVALID_ID_ERROR_MSG, id); } return ids; } @@ -128,7 +130,7 @@ private static boolean isValidId(String id) { public static String validateId(String id) { requireNonNull(id, "id is null"); checkArgument(!id.isEmpty(), "id is empty"); - checkArgument(isValidId(id), "Invalid id %s", id); + checkArgument(isValidId(id), INVALID_ID_ERROR_MSG, id); return id; } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java index a982df07a4df..e8f5eec98fef 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java @@ -27,6 +27,10 @@ public class ColumnHeaderConstant { + private ColumnHeaderConstant() { + // forbidding instantiation + } + // column names for query statement public static final String TIME = "Time"; public static final String ENDTIME = "__endTime"; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeaderFactory.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeaderFactory.java index 430839e0d6d0..a630e6d7ce17 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeaderFactory.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeaderFactory.java @@ -21,6 +21,10 @@ public class DatasetHeaderFactory { + private DatasetHeaderFactory() { + // forbidding instantiation + } + public static DatasetHeader getCountStorageGroupHeader() { return new DatasetHeader(ColumnHeaderConstant.countStorageGroupColumnHeaders, true); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/ClusterSchemaTree.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/ClusterSchemaTree.java index 94eb822ba5e8..72b187d6f3bb 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/ClusterSchemaTree.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/ClusterSchemaTree.java @@ -25,6 +25,7 @@ import org.apache.iotdb.commons.utils.PathUtils; import org.apache.iotdb.commons.utils.TestOnly; import org.apache.iotdb.db.exception.metadata.PathNotExistException; +import org.apache.iotdb.db.exception.sql.SemanticException; import org.apache.iotdb.db.mpp.common.schematree.node.SchemaEntityNode; import org.apache.iotdb.db.mpp.common.schematree.node.SchemaInternalNode; import org.apache.iotdb.db.mpp.common.schematree.node.SchemaMeasurementNode; @@ -40,7 +41,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.rmi.UnexpectedException; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Deque; @@ -184,11 +184,9 @@ public List compute( if (node == null) { indexOfMissingMeasurements.add(index); } else { - if (firstNonViewMeasurement) { - if (!node.getAsMeasurementNode().isLogicalView()) { - schemaComputation.computeDevice(cur.getAsEntityNode().isAligned()); - firstNonViewMeasurement = false; - } + if (firstNonViewMeasurement && !node.getAsMeasurementNode().isLogicalView()) { + schemaComputation.computeDevice(cur.getAsEntityNode().isAligned()); + firstNonViewMeasurement = false; } schemaComputation.computeMeasurement(index, node.getAsMeasurementNode()); } @@ -214,16 +212,14 @@ public void computeSourceOfLogicalView( PartialPath fullPath = logicalViewSchema.getSourcePathIfWritable(); Pair, Integer> searchResult = this.searchMeasurementPaths(fullPath); List measurementPathList = searchResult.left; - if (measurementPathList.size() <= 0) { - throw new RuntimeException( + if (measurementPathList.isEmpty()) { + throw new SemanticException( new PathNotExistException( String.format( "The source path of view [%s] does not exist.", fullPath.getFullPath()))); } else if (measurementPathList.size() > 1) { - throw new RuntimeException( - new UnexpectedException( - String.format( - "The source paths of view [%s] are multiple.", fullPath.getFullPath()))); + throw new SemanticException( + String.format("The source paths of view [%s] are multiple.", fullPath.getFullPath())); } else { Integer realIndex = schemaComputation.getIndexListOfLogicalViewPaths().get(index); MeasurementPath measurementPath = measurementPathList.get(0); @@ -407,7 +403,7 @@ public String getBelongedDatabase(String pathName) { return database; } } - throw new RuntimeException("No matched database. Please check the path " + pathName); + throw new SemanticException("No matched database. Please check the path " + pathName); } @Override diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/visitor/SchemaTreeVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/visitor/SchemaTreeVisitor.java index 7ddab681367b..b42a96439e25 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/visitor/SchemaTreeVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/schematree/visitor/SchemaTreeVisitor.java @@ -31,7 +31,7 @@ public abstract class SchemaTreeVisitor extends AbstractTreeVisitor - INTERNAL_SERVICE_CLIENT_MANAGER = - new IClientManager.Factory() - .createClientManager( - new ClientPoolFactory.SyncDataNodeInternalServiceClientPoolFactory()); - - private final IClientManager syncClientManager; - - public TestRPCClient() { - syncClientManager = - new IClientManager.Factory() - .createClientManager( - new IoTConsensusClientPool.SyncIoTConsensusServiceClientPoolFactory( - new IoTConsensusConfig.Builder().build())); - } - - public static void main(String[] args) { - TestRPCClient client = new TestRPCClient(); - // client.removeRegionPeer(); - client.addPeer(); - // client.loadSnapshot(); - } - - private void loadSnapshot() { - try (SyncIoTConsensusServiceClient client = - syncClientManager.borrowClient(new TEndPoint("127.0.0.1", 40011))) { - TTriggerSnapshotLoadRes res = - client.triggerSnapshotLoad( - new TTriggerSnapshotLoadReq( - new DataRegionId(1).convertToTConsensusGroupId(), "snapshot_1_1662370255552")); - System.out.println(res.status); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - private void testAddPeer() { - try (SyncIoTConsensusServiceClient client = - syncClientManager.borrowClient(new TEndPoint("127.0.0.1", 40012))) { - TInactivatePeerRes res = - client.inactivatePeer( - new TInactivatePeerReq(new DataRegionId(1).convertToTConsensusGroupId())); - System.out.println(res.status); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - private void removeRegionPeer() { - try (SyncDataNodeInternalServiceClient client = - INTERNAL_SERVICE_CLIENT_MANAGER.borrowClient(new TEndPoint("127.0.0.1", 9003))) { - client.removeRegionPeer( - new TMaintainPeerReq(new DataRegionId(1).convertToTConsensusGroupId(), getLocation2(3))); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - private void addPeer() { - try (SyncDataNodeInternalServiceClient client = - INTERNAL_SERVICE_CLIENT_MANAGER.borrowClient(new TEndPoint("127.0.0.1", 9003))) { - client.addRegionPeer( - new TMaintainPeerReq(new DataRegionId(1).convertToTConsensusGroupId(), getLocation2(3))); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - private TDataNodeLocation getLocation3(int dataNodeId) { - return new TDataNodeLocation( - dataNodeId, - new TEndPoint("127.0.0.1", 6669), - new TEndPoint("127.0.0.1", 10732), - new TEndPoint("127.0.0.1", 10742), - new TEndPoint("127.0.0.1", 10762), - new TEndPoint("127.0.0.1", 10752)); - } - - private TDataNodeLocation getLocation2(int dataNodeId) { - return new TDataNodeLocation( - dataNodeId, - new TEndPoint("127.0.0.1", 6668), - new TEndPoint("127.0.0.1", 10731), - new TEndPoint("127.0.0.1", 10741), - new TEndPoint("127.0.0.1", 10761), - new TEndPoint("127.0.0.1", 10751)); - } - - private void createDataRegion() { - try (SyncDataNodeInternalServiceClient client = - INTERNAL_SERVICE_CLIENT_MANAGER.borrowClient(new TEndPoint("127.0.0.1", 9005))) { - TCreateDataRegionReq req = new TCreateDataRegionReq(); - req.setStorageGroup("root.test.g_0"); - TRegionReplicaSet regionReplicaSet = new TRegionReplicaSet(); - regionReplicaSet.setRegionId(new DataRegionId(1).convertToTConsensusGroupId()); - List locationList = new ArrayList<>(); - locationList.add( - new TDataNodeLocation( - 3, - new TEndPoint("127.0.0.1", 6667), - new TEndPoint("127.0.0.1", 10730), - new TEndPoint("127.0.0.1", 10740), - new TEndPoint("127.0.0.1", 10760), - new TEndPoint("127.0.0.1", 10750))); - locationList.add( - new TDataNodeLocation( - 4, - new TEndPoint("127.0.0.1", 6668), - new TEndPoint("127.0.0.1", 10731), - new TEndPoint("127.0.0.1", 10741), - new TEndPoint("127.0.0.1", 10761), - new TEndPoint("127.0.0.1", 10751))); - locationList.add( - new TDataNodeLocation( - 4, - new TEndPoint("127.0.0.1", 6669), - new TEndPoint("127.0.0.1", 10732), - new TEndPoint("127.0.0.1", 10742), - new TEndPoint("127.0.0.1", 10762), - new TEndPoint("127.0.0.1", 10752))); - regionReplicaSet.setDataNodeLocations(locationList); - req.setRegionReplicaSet(regionReplicaSet); - TSStatus res = client.createDataRegion(req); - System.out.println(res.code + " " + res.message); - - } catch (Exception e) { - throw new RuntimeException(e); - } - } -} diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analysis.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analysis.java index b50ef2dfd2a8..ec8e5361627d 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analysis.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analysis.java @@ -66,9 +66,6 @@ public class Analysis { // Statement private Statement statement; - // indicate whether this statement is `WRITE` or `READ` - private QueryType queryType; - private DataPartition dataPartition; private SchemaPartition schemaPartition; @@ -111,15 +108,17 @@ public class Analysis { // tag keys specified in `GROUP BY TAG` clause private List tagKeys; - // {tag values -> {grouped expression -> output expressions}} - // For different combination of tag keys, the grouped expression may be different. Let's say there - // are 3 timeseries root.sg.d1.temperature, root.sg.d1.status, root.sg.d2.temperature, and their - // tags are [k1=v1], [k1=v1] and [k1=v2] respectively. For query "SELECT last_value(**) FROM root - // GROUP BY k1", timeseries are grouped by their tags into 2 buckets. Bucket [v1] has - // [root.sg.d1.temperature, root.sg.d1.status], while bucket [v2] has [root.sg.d2.temperature]. - // Thus, the aggregation results of bucket [v1] and [v2] are different. Bucket [v1] has 2 - // aggregation results last_value(temperature) and last_value(status), whereas bucket [v2] only - // has [last_value(temperature)]. + /* + tag values -> (grouped expression -> output expressions) + For different combination of tag keys, the grouped expression may be different. Let's say there + are 3 timeseries root.sg.d1.temperature, root.sg.d1.status, root.sg.d2.temperature, and their + tags are [k1=v1], [k1=v1] and [k1=v2] respectively. For query "SELECT last_value(**) FROM root + GROUP BY k1", timeseries are grouped by their tags into 2 buckets. Bucket [v1] has + [root.sg.d1.temperature, root.sg.d1.status], while bucket [v2] has [root.sg.d2.temperature]. + Thus, the aggregation results of bucket [v1] and [v2] are different. Bucket [v1] has 2 + aggregation results last_value(temperature) and last_value(status), whereas bucket [v2] only + has [last_value(temperature)]. + */ private Map, LinkedHashMap>> tagValuesToGroupedTimeseriesOperands; @@ -260,6 +259,7 @@ public List getPartitionInfo(PartialPath seriesPath, Filter t } public List getPartitionInfo(String deviceName, Filter globalTimeFilter) { + // TODO: (xingtanzjr) implement the calculation of timePartitionIdList return dataPartition.getDataRegionReplicaSet(deviceName, null); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java index 86eaf75f7bed..1aa437f1301a 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.analyze; import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation; @@ -379,7 +380,6 @@ public Analysis visitQuery(QueryStatement queryStatement, MPPQueryContext contex analyzeDataPartition(analysis, queryStatement, schemaTree); } catch (StatementAnalyzeException e) { - logger.warn("Meet error when analyzing the query statement: ", e); throw new StatementAnalyzeException( "Meet error when analyzing the query statement: " + e.getMessage()); } @@ -481,7 +481,7 @@ private void updateSchemaTreeByViews(Analysis analysis, ISchemaTree originSchema } } } catch (Exception e) { - throw new RuntimeException(e); + throw new SemanticException(e); } if (needToReFetch) { ISchemaTree viewSchemaTree = this.schemaFetcher.fetchSchema(patternTree, null); @@ -612,14 +612,17 @@ private List> analyzeSelect( "alias '%s' can only be matched with one time series", resultColumn.getAlias())); } - for (Expression measurementExpression : measurementToDeviceSelectExpressions.keySet()) { + for (Map.Entry> measurementDeviceSelectExpressionsEntry : + measurementToDeviceSelectExpressions.entrySet()) { + Expression measurementExpression = measurementDeviceSelectExpressionsEntry.getKey(); + Map deviceToSelectExpressionsOfOneMeasurement = + measurementDeviceSelectExpressionsEntry.getValue(); + if (paginationController.hasCurOffset()) { paginationController.consumeOffset(); continue; } if (paginationController.hasCurLimit()) { - Map deviceToSelectExpressionsOfOneMeasurement = - measurementToDeviceSelectExpressions.get(measurementExpression); deviceToSelectExpressionsOfOneMeasurement .values() .forEach(expression -> analyzeExpression(analysis, expression)); @@ -638,8 +641,11 @@ private List> analyzeSelect( outputExpressions.add(new Pair<>(measurementExpressionWithoutAlias, outputColumnName)); // add deviceToSelectExpressions - for (String deviceName : deviceToSelectExpressionsOfOneMeasurement.keySet()) { - Expression expression = deviceToSelectExpressionsOfOneMeasurement.get(deviceName); + for (Map.Entry deviceNameSelectExpressionEntry : + deviceToSelectExpressionsOfOneMeasurement.entrySet()) { + String deviceName = deviceNameSelectExpressionEntry.getKey(); + Expression expression = deviceNameSelectExpressionEntry.getValue(); + Expression expressionWithoutAlias = ExpressionAnalyzer.removeAliasFromExpression(expression); analyzeExpression(analysis, expressionWithoutAlias); @@ -809,10 +815,13 @@ private void analyzeGroupByLevel( private void checkDataTypeConsistencyInGroupByLevel( Analysis analysis, Map> groupByLevelExpressions) { - for (Expression groupedAggregationExpression : groupByLevelExpressions.keySet()) { + for (Map.Entry> groupedExpressionRawExpressionsEntry : + groupByLevelExpressions.entrySet()) { + Expression groupedAggregationExpression = groupedExpressionRawExpressionsEntry.getKey(); + Set rawAggregationExpressions = groupedExpressionRawExpressionsEntry.getValue(); + TSDataType checkedDataType = analysis.getType(groupedAggregationExpression); - for (Expression rawAggregationExpression : - groupByLevelExpressions.get(groupedAggregationExpression)) { + for (Expression rawAggregationExpression : rawAggregationExpressions) { if (analysis.getType(rawAggregationExpression) != checkedDataType) { throw new SemanticException( String.format( @@ -930,8 +939,11 @@ private void analyzeDeviceToAggregation( Map> deviceToSelectExpressions = analysis.getDeviceToSelectExpressions(); - for (String deviceName : deviceToSelectExpressions.keySet()) { - Set selectExpressions = deviceToSelectExpressions.get(deviceName); + for (Map.Entry> deviceSelectExpressionsEntry : + deviceToSelectExpressions.entrySet()) { + String deviceName = deviceSelectExpressionsEntry.getKey(); + Set selectExpressions = deviceSelectExpressionsEntry.getValue(); + Set aggregationExpressions = new LinkedHashSet<>(); for (Expression expression : selectExpressions) { aggregationExpressions.addAll(ExpressionAnalyzer.searchAggregationExpressions(expression)); @@ -944,8 +956,11 @@ private void analyzeDeviceToAggregation( if (queryStatement.hasOrderByExpression()) { Map> deviceToOrderByExpressions = analysis.getDeviceToOrderByExpressions(); - for (String deviceName : deviceToOrderByExpressions.keySet()) { - for (Expression orderByExpression : deviceToOrderByExpressions.get(deviceName)) { + for (Map.Entry> deviceOrderByExpressionsEntry : + deviceToOrderByExpressions.entrySet()) { + String deviceName = deviceOrderByExpressionsEntry.getKey(); + Set orderByExpressions = deviceOrderByExpressionsEntry.getValue(); + for (Expression orderByExpression : orderByExpressions) { deviceToAggregationExpressions .computeIfAbsent(deviceName, key -> new LinkedHashSet<>()) .addAll(ExpressionAnalyzer.searchAggregationExpressions(orderByExpression)); @@ -989,8 +1004,11 @@ private void analyzeDeviceToSourceTransform(Analysis analysis, QueryStatement qu if (queryStatement.isAggregationQuery()) { Map> deviceToAggregationExpressions = analysis.getDeviceToAggregationExpressions(); - for (String deviceName : deviceToAggregationExpressions.keySet()) { - Set aggregationExpressions = deviceToAggregationExpressions.get(deviceName); + for (Map.Entry> deviceAggregationExpressionsEntry : + deviceToAggregationExpressions.entrySet()) { + String deviceName = deviceAggregationExpressionsEntry.getKey(); + Set aggregationExpressions = deviceAggregationExpressionsEntry.getValue(); + Set sourceTransformExpressions = new LinkedHashSet<>(); for (Expression expression : aggregationExpressions) { // We just process first input Expression of AggregationFunction, @@ -1009,10 +1027,12 @@ private void analyzeDeviceToSourceTransform(Analysis analysis, QueryStatement qu if (queryStatement.hasOrderByExpression()) { Map> deviceToOrderByExpressions = analysis.getDeviceToOrderByExpressions(); - for (String deviceName : deviceToOrderByExpressions.keySet()) { - for (Expression expression : deviceToOrderByExpressions.get(deviceName)) { - deviceToSourceTransformExpressions.get(deviceName).add(expression); - } + for (Map.Entry> deviceOrderByExpressionsEntry : + deviceToOrderByExpressions.entrySet()) { + String deviceName = deviceOrderByExpressionsEntry.getKey(); + Set orderByExpressions = deviceOrderByExpressionsEntry.getValue(); + + deviceToSourceTransformExpressions.get(deviceName).addAll(orderByExpressions); } } } @@ -1042,9 +1062,11 @@ private void analyzeDeviceToSource(Analysis analysis, QueryStatement queryStatem Map> deviceToSourceExpressions = new HashMap<>(); Map> deviceToSourceTransformExpressions = analysis.getDeviceToSourceTransformExpressions(); - for (String deviceName : deviceToSourceTransformExpressions.keySet()) { - Set sourceTransformExpressions = - deviceToSourceTransformExpressions.get(deviceName); + for (Map.Entry> deviceSourceTransformExpressionsEntry : + deviceToSourceTransformExpressions.entrySet()) { + String deviceName = deviceSourceTransformExpressionsEntry.getKey(); + Set sourceTransformExpressions = deviceSourceTransformExpressionsEntry.getValue(); + Set sourceExpressions = new LinkedHashSet<>(); for (Expression expression : sourceTransformExpressions) { sourceExpressions.addAll(ExpressionAnalyzer.searchSourceExpressions(expression)); @@ -1053,8 +1075,10 @@ private void analyzeDeviceToSource(Analysis analysis, QueryStatement queryStatem } if (queryStatement.hasWhere()) { Map deviceToWhereExpression = analysis.getDeviceToWhereExpression(); - for (String deviceName : deviceToWhereExpression.keySet()) { - Expression whereExpression = deviceToWhereExpression.get(deviceName); + for (Map.Entry deviceWhereExpressionEntry : + deviceToWhereExpression.entrySet()) { + String deviceName = deviceWhereExpressionEntry.getKey(); + Expression whereExpression = deviceWhereExpressionEntry.getValue(); deviceToSourceExpressions .computeIfAbsent(deviceName, key -> new LinkedHashSet<>()) .addAll(ExpressionAnalyzer.searchSourceExpressions(whereExpression)); @@ -1075,6 +1099,9 @@ private void analyzeSource(Analysis analysis, QueryStatement queryStatement) { analysis.setSourceExpressions(sourceExpressions); } + private static final String WHERE_WRONG_TYPE_ERROR_MSG = + "The output type of the expression in WHERE clause should be BOOLEAN, actual data type: %s."; + private void analyzeDeviceToWhere( Analysis analysis, QueryStatement queryStatement, @@ -1091,25 +1118,18 @@ private void analyzeDeviceToWhere( Expression whereExpression; try { whereExpression = analyzeWhereSplitByDevice(queryStatement, devicePath, schemaTree); - } catch (SemanticException e) { - if (e instanceof MeasurementNotExistException) { - logger.warn(e.getMessage()); - deviceIterator.remove(); - analysis.getDeviceToSelectExpressions().remove(devicePath.getFullPath()); - if (queryStatement.isAggregationQuery()) { - analysis.getDeviceToAggregationExpressions().remove(devicePath.getFullPath()); - } - continue; + } catch (MeasurementNotExistException e) { + deviceIterator.remove(); + analysis.getDeviceToSelectExpressions().remove(devicePath.getFullPath()); + if (queryStatement.isAggregationQuery()) { + analysis.getDeviceToAggregationExpressions().remove(devicePath.getFullPath()); } - throw e; + continue; } TSDataType outputType = analyzeExpression(analysis, whereExpression); if (outputType != TSDataType.BOOLEAN) { - throw new SemanticException( - String.format( - "The output type of the expression in WHERE clause should be BOOLEAN, actual data type: %s.", - outputType)); + throw new SemanticException(String.format(WHERE_WRONG_TYPE_ERROR_MSG, outputType)); } deviceToWhereExpression.put(devicePath.getFullPath(), whereExpression); @@ -1134,10 +1154,7 @@ private void analyzeWhere( whereExpression = ExpressionAnalyzer.removeAliasFromExpression(whereExpression); TSDataType outputType = analyzeExpression(analysis, whereExpression); if (outputType != TSDataType.BOOLEAN) { - throw new SemanticException( - String.format( - "The output type of the expression in WHERE clause should be BOOLEAN, actual data type: %s.", - outputType)); + throw new SemanticException(String.format(WHERE_WRONG_TYPE_ERROR_MSG, outputType)); } analysis.setWhereExpression(whereExpression); } @@ -1205,8 +1222,11 @@ private void analyzeDeviceView( queryStatement.isAggregationQuery() ? analysis.getDeviceToAggregationExpressions() : analysis.getDeviceToSourceTransformExpressions(); - for (String deviceName : deviceToOutputExpressions.keySet()) { - Set outputExpressionsUnderDevice = deviceToOutputExpressions.get(deviceName); + for (Map.Entry> deviceOutputExpressionEntry : + deviceToOutputExpressions.entrySet()) { + String deviceName = deviceOutputExpressionEntry.getKey(); + Set outputExpressionsUnderDevice = deviceOutputExpressionEntry.getValue(); + Set outputColumns = new LinkedHashSet<>(); if (queryStatement.isOutputEndTime()) { outputColumns.add(ENDTIME); @@ -1219,8 +1239,11 @@ private void analyzeDeviceView( } Map> deviceViewInputIndexesMap = new HashMap<>(); - for (String deviceName : deviceToOutputColumnsMap.keySet()) { - List outputsUnderDevice = new ArrayList<>(deviceToOutputColumnsMap.get(deviceName)); + for (Map.Entry> deviceOutputColumnsEntry : + deviceToOutputColumnsMap.entrySet()) { + String deviceName = deviceOutputColumnsEntry.getKey(); + List outputsUnderDevice = new ArrayList<>(deviceOutputColumnsEntry.getValue()); + List indexes = new ArrayList<>(); for (String output : outputsUnderDevice) { int index = deviceViewOutputColumns.indexOf(output); @@ -1309,7 +1332,7 @@ private void analyzeOrderBy( // Expression in a sortItem only indicates one column List expressions = ExpressionAnalyzer.bindSchemaForExpression(expressionForItem, schemaTree); - if (expressions.size() == 0) { + if (expressions.isEmpty()) { throw new SemanticException( String.format( "%s in order by clause doesn't exist.", expressionForItem.getExpressionString())); @@ -1356,7 +1379,7 @@ private void analyzeDeviceToGroupBy( ExpressionAnalyzer.concatDeviceAndBindSchemaForExpression( expression, device, schemaTree); - if (groupByExpressionsOfOneDevice.size() == 0) { + if (groupByExpressionsOfOneDevice.isEmpty()) { throw new SemanticException( String.format("%s in group by clause doesn't exist.", expression)); } @@ -1371,7 +1394,7 @@ private void analyzeDeviceToGroupBy( // Aggregation expression shouldn't exist in group by clause. List aggregationExpression = ExpressionAnalyzer.searchAggregationExpressions(groupByExpressionOfOneDevice); - if (aggregationExpression != null && aggregationExpression.size() != 0) { + if (aggregationExpression != null && !aggregationExpression.isEmpty()) { throw new SemanticException("Aggregation expression shouldn't exist in group by clause"); } deviceToGroupByExpression.put(device.getFullPath(), groupByExpressionOfOneDevice); @@ -1434,7 +1457,7 @@ private void analyzeDeviceToOrderBy( List expressions = ExpressionAnalyzer.concatDeviceAndBindSchemaForExpression( expressionForItem, device, schemaTree); - if (expressions.size() == 0) { + if (expressions.isEmpty()) { throw new SemanticException( String.format( "%s in order by clause doesn't exist.", expressionForItem.getExpressionString())); @@ -1485,7 +1508,7 @@ private void analyzeGroupBy( // Expression in group by variation clause only indicates one column List expressions = ExpressionAnalyzer.bindSchemaForExpression(groupByExpression, schemaTree); - if (expressions.size() == 0) { + if (expressions.isEmpty()) { throw new SemanticException( String.format( "%s in group by clause doesn't exist.", groupByExpression.getExpressionString())); @@ -1499,7 +1522,7 @@ private void analyzeGroupBy( // Aggregation expression shouldn't exist in group by clause. List aggregationExpression = ExpressionAnalyzer.searchAggregationExpressions(expressions.get(0)); - if (aggregationExpression != null && aggregationExpression.size() != 0) { + if (aggregationExpression != null && !aggregationExpression.isEmpty()) { throw new SemanticException("Aggregation expression shouldn't exist in group by clause"); } groupByExpression = ExpressionAnalyzer.removeAliasFromExpression(expressions.get(0)); @@ -1540,10 +1563,8 @@ private void analyzeGroupBy( private void checkGroupByVariationExpressionType( Analysis analysis, Expression groupByExpression, double delta) { TSDataType type = analyzeExpression(analysis, groupByExpression); - if (delta != 0) { - if (!type.isNumeric()) { - throw new SemanticException("Only support numeric type when delta != 0"); - } + if (delta != 0 && !type.isNumeric()) { + throw new SemanticException("Only support numeric type when delta != 0"); } } @@ -1626,7 +1647,7 @@ private DataPartition fetchDataPartitionByDevices( Pair, Pair> res = getTimePartitionSlotList(globalTimeFilter); // there is no satisfied time range - if (res.left.isEmpty() && !res.right.left) { + if (res.left.isEmpty() && Boolean.FALSE.equals(res.right.left)) { return new DataPartition( Collections.emptyMap(), CONFIG.getSeriesPartitionExecutorClass(), @@ -1675,10 +1696,13 @@ public static Pair, Pair> getTimePart return new Pair<>(Collections.emptyList(), new Pair<>(true, true)); } - boolean needLeftAll, needRightAll; - long startTime, endTime; + boolean needLeftAll; + boolean needRightAll; + long startTime; + long endTime; TTimePartitionSlot timePartitionSlot; - int index = 0, size = timeRangeList.size(); + int index = 0; + int size = timeRangeList.size(); if (timeRangeList.get(0).getMin() == Long.MIN_VALUE) { needLeftAll = true; @@ -1922,7 +1946,7 @@ public Analysis visitCreateTimeseries( CreateTimeSeriesStatement createTimeSeriesStatement, MPPQueryContext context) { context.setQueryType(QueryType.WRITE); if (createTimeSeriesStatement.getPath().getNodeLength() < 3) { - throw new RuntimeException( + throw new SemanticException( new IllegalPathException(createTimeSeriesStatement.getPath().getFullPath())); } analyzeSchemaProps(createTimeSeriesStatement.getProps()); @@ -1955,7 +1979,7 @@ private void checkIsTemplateCompatible(PartialPath timeseriesPath, String alias) Pair templateInfo = schemaFetcher.checkTemplateSetAndPreSetInfo(timeseriesPath, alias); if (templateInfo != null) { - throw new RuntimeException( + throw new SemanticException( new TemplateImcompatibeException( timeseriesPath.getFullPath(), templateInfo.left.getName(), templateInfo.right)); } @@ -1969,7 +1993,7 @@ private void checkIsTemplateCompatible( devicePath.concatNode(measurements.get(i)), aliasList == null ? null : aliasList.get(i)); if (templateInfo != null) { - throw new RuntimeException( + throw new SemanticException( new TemplateImcompatibeException( devicePath.getFullPath() + measurements, templateInfo.left.getName(), @@ -1986,13 +2010,14 @@ private void analyzeSchemaProps(Map props) { for (String key : props.keySet()) { caseChangeMap.put(key.toLowerCase(Locale.ROOT), key); } - for (String lowerCaseKey : caseChangeMap.keySet()) { + for (Map.Entry caseChangeEntry : caseChangeMap.entrySet()) { + String lowerCaseKey = caseChangeEntry.getKey(); if (!ALLOWED_SCHEMA_PROPS.contains(lowerCaseKey)) { throw new SemanticException( new MetadataException( - String.format("%s is not a legal prop.", caseChangeMap.get(lowerCaseKey)))); + String.format("%s is not a legal prop.", caseChangeEntry.getValue()))); } - props.put(lowerCaseKey, props.remove(caseChangeMap.get(lowerCaseKey))); + props.put(lowerCaseKey, props.remove(caseChangeEntry.getValue())); } if (props.containsKey(DEADBAND)) { props.put(LOSS, props.remove(DEADBAND)); @@ -2013,7 +2038,7 @@ public Analysis visitCreateAlignedTimeseries( CreateAlignedTimeSeriesStatement createAlignedTimeSeriesStatement, MPPQueryContext context) { context.setQueryType(QueryType.WRITE); if (createAlignedTimeSeriesStatement.getDevicePath().getNodeLength() < 2) { - throw new RuntimeException( + throw new SemanticException( new IllegalPathException(createAlignedTimeSeriesStatement.getDevicePath().getFullPath())); } List measurements = createAlignedTimeSeriesStatement.getMeasurements(); @@ -2292,7 +2317,6 @@ private void validateSchema(Analysis analysis, InsertBaseStatement insertStateme } else { analysis.setFailStatus(RpcUtils.getStatus(TSStatusCode.METADATA_ERROR, e.getMessage())); } - return; } finally { PERFORMANCE_OVERVIEW_METRICS.recordScheduleSchemaValidateCost(System.nanoTime() - startTime); } @@ -2336,7 +2360,9 @@ public Analysis visitLoadFile(LoadTsFileStatement loadTsFileStatement, MPPQueryC // analyze tsfile metadata for (File tsFile : loadTsFileStatement.getTsFiles()) { if (tsFile.length() == 0) { - logger.warn(String.format("TsFile %s is empty.", tsFile.getPath())); + if (logger.isWarnEnabled()) { + logger.warn(String.format("TsFile %s is empty.", tsFile.getPath())); + } throw new SemanticException( String.format( "TsFile %s is empty, please check it be flushed to disk correctly.", @@ -2619,7 +2645,7 @@ private void verifySchema( Arrays.stream(tsFileSchemas) .map(MeasurementSchema::getMeasurementId) .collect(Collectors.toList())); - if (schemaInfo.isAligned() != device2IsAligned.get(device).left) { + if (schemaInfo.isAligned() != Boolean.TRUE.equals(device2IsAligned.get(device).left)) { throw new VerifyMetadataException( device, "Is aligned", @@ -3244,10 +3270,7 @@ private void analyzeWhere(Analysis analysis, ShowQueriesStatement showQueriesSta TSDataType outputType = analyzeExpression(analysis, whereExpression); if (outputType != TSDataType.BOOLEAN) { - throw new SemanticException( - String.format( - "The output type of the expression in WHERE clause should be BOOLEAN, actual data type: %s.", - outputType)); + throw new SemanticException(String.format(WHERE_WRONG_TYPE_ERROR_MSG, outputType)); } analysis.setWhereExpression(whereExpression); @@ -3293,7 +3316,7 @@ private Pair, PartialPath> findAllViewsInPaths( for (PartialPath path : pathList) { Pair, Integer> measurementPathList = schemaTree.searchMeasurementPaths(path); - if (measurementPathList.left.size() <= 0) { + if (measurementPathList.left.isEmpty()) { return new Pair<>(result, path); } for (MeasurementPath measurementPath : measurementPathList.left) { @@ -3371,7 +3394,7 @@ private void checkViewsInSource( + " does not exist! You can not create a view based on non-exist time series.")); return; } - if (viewInSourceCheckResult.left.size() > 0) { + if (!viewInSourceCheckResult.left.isEmpty()) { // some source paths is logical view analysis.setFinishQueryAfterAnalyze(true); analysis.setFailStatus( @@ -3384,7 +3407,7 @@ private void checkViewsInSource( private void checkPathsInCreateLogicalView( Analysis analysis, CreateLogicalViewStatement createLogicalViewStatement) { Pair checkResult = createLogicalViewStatement.checkAllPaths(); - if (!checkResult.left) { + if (Boolean.FALSE.equals(checkResult.left)) { analysis.setFinishQueryAfterAnalyze(true); analysis.setFailStatus( RpcUtils.getStatus( diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ClusterPartitionFetcher.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ClusterPartitionFetcher.java index 7bf6cfecd31b..bb9406a6974a 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ClusterPartitionFetcher.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ClusterPartitionFetcher.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.analyze; import org.apache.iotdb.common.rpc.thrift.TConsensusGroupId; @@ -120,7 +121,6 @@ public SchemaPartition getSchemaPartition(PathPatternTree patternTree) { } return schemaPartition; } catch (ClientManagerException | TException e) { - logger.warn("Get Schema Partition error", e); throw new StatementAnalyzeException( "An error occurred when executing getSchemaPartition():" + e.getMessage()); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ConcatPathRewriter.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ConcatPathRewriter.java index c1a611cafc8a..513603818ee2 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ConcatPathRewriter.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ConcatPathRewriter.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.analyze; import org.apache.iotdb.commons.path.PartialPath; @@ -70,8 +71,7 @@ public Statement rewrite(Statement statement, PathPatternTree patternTree) } else { // concat SELECT with FROM List resultColumns = - concatSelectWithFrom( - queryStatement.getSelectComponent(), prefixPaths, queryStatement.isGroupByLevel()); + concatSelectWithFrom(queryStatement.getSelectComponent(), prefixPaths); queryStatement.getSelectComponent().setResultColumns(resultColumns); // concat GROUP BY with FROM @@ -110,7 +110,7 @@ public Statement rewrite(Statement statement, PathPatternTree patternTree) * path pattern. And construct pattern tree. */ private List concatSelectWithFrom( - SelectComponent selectComponent, List prefixPaths, boolean isGroupByLevel) + SelectComponent selectComponent, List prefixPaths) throws StatementAnalyzeException { // resultColumns after concat List resultColumns = new ArrayList<>(); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionAnalyzer.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionAnalyzer.java index f283eb762b06..19552a72b306 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionAnalyzer.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionAnalyzer.java @@ -31,6 +31,7 @@ import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; +import org.apache.iotdb.db.mpp.plan.expression.UnknownExpressionTypeException; import org.apache.iotdb.db.mpp.plan.expression.binary.BinaryExpression; import org.apache.iotdb.db.mpp.plan.expression.leaf.ConstantOperand; import org.apache.iotdb.db.mpp.plan.expression.leaf.LeafOperand; @@ -76,6 +77,15 @@ import static org.apache.iotdb.db.mpp.plan.analyze.ExpressionUtils.getPairFromBetweenTimeThird; public class ExpressionAnalyzer { + + private static final String RAW_AGGREGATION_HYBRID_ERROR_MSG = + "Raw data and aggregation result hybrid calculation is not supported."; + private static final String CONSTANT_COLUMN_ERROR_MSG = "Constant column is not supported."; + + private ExpressionAnalyzer() { + // forbidden construction + } + /** * Check if all suffix paths in expression are measurements or one-level wildcards, used in ALIGN * BY DEVICE query or GroupByLevel query. If not, throw a {@link SemanticException}. @@ -112,8 +122,7 @@ public static void checkIsAllMeasurement(Expression expression) { || expression instanceof NullOperand) { // do nothing } else { - throw new IllegalArgumentException( - "unsupported expression type: " + expression.getExpressionType()); + throw new UnknownExpressionTypeException(expression.getExpressionType()); } } @@ -126,7 +135,8 @@ public static ResultColumn.ColumnType identifyOutputColumnType( identifyOutputColumnType(((TernaryExpression) expression).getSecondExpression(), false); ResultColumn.ColumnType thirdType = identifyOutputColumnType(((TernaryExpression) expression).getThirdExpression(), false); - boolean rawFlag = false, aggregationFlag = false; + boolean rawFlag = false; + boolean aggregationFlag = false; if (firstType == ResultColumn.ColumnType.RAW || secondType == ResultColumn.ColumnType.RAW || thirdType == ResultColumn.ColumnType.RAW) { @@ -138,13 +148,12 @@ public static ResultColumn.ColumnType identifyOutputColumnType( aggregationFlag = true; } if (rawFlag && aggregationFlag) { - throw new SemanticException( - "Raw data and aggregation result hybrid calculation is not supported."); + throw new SemanticException(RAW_AGGREGATION_HYBRID_ERROR_MSG); } if (firstType == ResultColumn.ColumnType.CONSTANT && secondType == ResultColumn.ColumnType.CONSTANT && thirdType == ResultColumn.ColumnType.CONSTANT) { - throw new SemanticException("Constant column is not supported."); + throw new SemanticException(CONSTANT_COLUMN_ERROR_MSG); } if (firstType != ResultColumn.ColumnType.CONSTANT) { return firstType; @@ -162,13 +171,12 @@ public static ResultColumn.ColumnType identifyOutputColumnType( && rightType == ResultColumn.ColumnType.AGGREGATION) || (leftType == ResultColumn.ColumnType.AGGREGATION && rightType == ResultColumn.ColumnType.RAW)) { - throw new SemanticException( - "Raw data and aggregation result hybrid calculation is not supported."); + throw new SemanticException(RAW_AGGREGATION_HYBRID_ERROR_MSG); } if (isRoot && leftType == ResultColumn.ColumnType.CONSTANT && rightType == ResultColumn.ColumnType.CONSTANT) { - throw new SemanticException("Constant column is not supported."); + throw new SemanticException(CONSTANT_COLUMN_ERROR_MSG); } if (leftType != ResultColumn.ColumnType.CONSTANT) { return leftType; @@ -233,14 +241,13 @@ public static ResultColumn.ColumnType identifyOutputColumnType( .anyMatch(columnType -> columnType == ResultColumn.ColumnType.AGGREGATION); // not allow RAW && AGGREGATION if (rawFlag && aggregationFlag) { - throw new SemanticException( - "Raw data and aggregation result hybrid calculation is not supported."); + throw new SemanticException(RAW_AGGREGATION_HYBRID_ERROR_MSG); } // not allow all const boolean allConst = typeList.stream().allMatch(columnType -> columnType == ResultColumn.ColumnType.CONSTANT); if (allConst) { - throw new SemanticException("Constant column is not supported."); + throw new SemanticException(CONSTANT_COLUMN_ERROR_MSG); } for (ResultColumn.ColumnType type : typeList) { if (type != ResultColumn.ColumnType.CONSTANT) { @@ -253,8 +260,7 @@ public static ResultColumn.ColumnType identifyOutputColumnType( } else if (expression instanceof ConstantOperand || expression instanceof NullOperand) { return ResultColumn.ColumnType.CONSTANT; } else { - throw new IllegalArgumentException( - "unsupported expression type: " + expression.getExpressionType()); + throw new UnknownExpressionTypeException(expression.getExpressionType()); } } @@ -342,8 +348,7 @@ public static List concatExpressionWithSuffixPaths( || expression instanceof NullOperand) { return new ArrayList<>(); } else { - throw new IllegalArgumentException( - "unsupported expression type: " + expression.getExpressionType()); + throw new UnknownExpressionTypeException(expression.getExpressionType()); } } @@ -397,8 +402,7 @@ public static void constructPatternTreeFromExpression( || predicate instanceof NullOperand) { // do nothing } else { - throw new IllegalArgumentException( - "unsupported expression type: " + predicate.getExpressionType()); + throw new UnknownExpressionTypeException(predicate.getExpressionType()); } } @@ -518,7 +522,7 @@ public static Pair extractGlobalTimeFilter( ((BinaryExpression) predicate).getRightExpression(), false, false); if (leftResultPair.left != null && rightResultPair.left != null) { - if (isFirstOr && !leftResultPair.right && !rightResultPair.right) { + if (Boolean.TRUE.equals(isFirstOr && !leftResultPair.right && !rightResultPair.right)) { ((BinaryExpression) predicate) .setLeftExpression(new ConstantOperand(TSDataType.BOOLEAN, "true")); ((BinaryExpression) predicate) @@ -598,8 +602,7 @@ public static Pair extractGlobalTimeFilter( } else if (predicate.getExpressionType().equals(ExpressionType.CASE_WHEN_THEN)) { return new Pair<>(null, true); } else { - throw new IllegalArgumentException( - "unsupported expression type: " + predicate.getExpressionType()); + throw new UnknownExpressionTypeException(predicate.getExpressionType()); } } @@ -633,8 +636,7 @@ public static boolean checkIfTimeFilterExist(Expression predicate) { } else if (predicate instanceof TimestampOperand) { return true; } else { - throw new IllegalArgumentException( - "unsupported expression type: " + predicate.getExpressionType()); + throw new UnknownExpressionTypeException(predicate.getExpressionType()); } } @@ -687,8 +689,7 @@ public static boolean checkIsNeedTransform(Expression expression) { } else if (expression instanceof CaseWhenThenExpression) { return true; } else { - throw new IllegalArgumentException( - "unsupported expression type: " + expression.getExpressionType()); + throw new UnknownExpressionTypeException(expression.getExpressionType()); } } @@ -790,8 +791,7 @@ public static boolean isDeviceViewNeedSpecialProcess(Expression expression, Anal } else if (expression instanceof LeafOperand) { return false; } else { - throw new IllegalArgumentException( - "unsupported expression type: " + expression.getExpressionType()); + throw new UnknownExpressionTypeException(expression.getExpressionType()); } } @@ -831,8 +831,7 @@ && checkIsScalarExpression(ternaryExpression.getSecondExpression(), analysis) } else if (expression instanceof LeafOperand) { return true; } else { - throw new IllegalArgumentException( - "unsupported expression type: " + expression.getExpressionType()); + throw new UnknownExpressionTypeException(expression.getExpressionType()); } } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionUtils.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionUtils.java index c92b4e5b56c3..6d0672e1f563 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionUtils.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionUtils.java @@ -22,6 +22,7 @@ import org.apache.iotdb.commons.path.PartialPath; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; +import org.apache.iotdb.db.mpp.plan.expression.UnknownExpressionTypeException; import org.apache.iotdb.db.mpp.plan.expression.binary.AdditionExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.BinaryExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.DivisionExpression; @@ -62,6 +63,10 @@ public class ExpressionUtils { + private ExpressionUtils() { + // util class + } + public static List reconstructTimeSeriesOperands( TimeSeriesOperand rawExpression, List actualPaths) { List resultExpressions = new ArrayList<>(); @@ -111,7 +116,7 @@ public static Expression reconstructCaseWhenThenExpression( new CaseWhenThenExpression( childExpressions // transform to List .subList(0, childExpressions.size() - 1).stream() - .map(expression -> (WhenThenExpression) expression) + .map(WhenThenExpression.class::cast) .collect(Collectors.toList()), childExpressions.get(childExpressions.size() - 1)); return cloneCommonFields(rawExpression, resultExpression); @@ -153,8 +158,7 @@ public static Expression reconstructUnaryExpression( ((RegularExpression) rawExpression).getPattern()); break; default: - throw new IllegalArgumentException( - "unsupported expression type: " + rawExpression.getExpressionType()); + throw new UnknownExpressionTypeException(rawExpression.getExpressionType()); } return cloneCommonFields(rawExpression, resultExpression); } @@ -254,8 +258,7 @@ public static Expression reconstructTernaryExpression( thirdExpression, ((BetweenExpression) rawExpression).isNotBetween()); } else { - throw new IllegalArgumentException( - "unsupported expression type: " + rawExpression.getExpressionType()); + throw new UnknownExpressionTypeException(rawExpression.getExpressionType()); } return cloneCommonFields(rawExpression, resultExpression); } @@ -322,7 +325,7 @@ public static Filter constructTimeFilter( case NON_EQUAL: return TimeFilter.notEq(value); default: - throw new IllegalArgumentException("unsupported expression type: " + expressionType); + throw new UnknownExpressionTypeException(expressionType); } } return null; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/IPartitionFetcher.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/IPartitionFetcher.java index e2c4b4a7c880..ea6ba1ebbbe4 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/IPartitionFetcher.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/IPartitionFetcher.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.analyze; import org.apache.iotdb.commons.partition.DataPartition; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/QueryType.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/QueryType.java index f7b35c66b65f..9563a422198a 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/QueryType.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/QueryType.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.analyze; public enum QueryType { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/SelectIntoUtils.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/SelectIntoUtils.java index 58d16c446c02..5084206a7a92 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/SelectIntoUtils.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/SelectIntoUtils.java @@ -43,6 +43,10 @@ public class SelectIntoUtils { + private SelectIntoUtils() { + // forbidding instantiation + } + public static PartialPath constructTargetPath( PartialPath sourcePath, PartialPath deviceTemplate, String measurementTemplate) { PartialPath targetDevice = constructTargetDevice(sourcePath.getDevicePath(), deviceTemplate); @@ -56,15 +60,17 @@ public static PartialPath constructTargetDevice( String[] templateNodes = deviceTemplate.getNodes(); List targetNodes = new ArrayList<>(); - for (int nodeIndex = 0; nodeIndex < templateNodes.length; nodeIndex++) { + int nodeIndex = 0; + for (; nodeIndex < templateNodes.length; nodeIndex++) { String curNode = templateNodes[nodeIndex]; if (curNode.equals(DOUBLE_COLONS)) { if (nodeIndex != templateNodes.length - 1) { throw new SemanticException( "select into: placeholder `::` can only be used at the end of the path."); } - for (; nodeIndex < sourceNodes.length; nodeIndex++) { + while (nodeIndex < sourceNodes.length) { targetNodes.add(sourceNodes[nodeIndex]); + nodeIndex++; } break; } @@ -122,8 +128,7 @@ public static boolean checkIsAllRawSeriesQuery(List expressions) { public static List> bindTypeForSourceTargetPathPairList( List> sourceTargetPathPairList, Map sourceToDataTypeMap, - ISchemaTree targetSchemaTree, - Map targetDeviceToAlignedMap) { + ISchemaTree targetSchemaTree) { List> sourceTypeBoundTargetPathPairList = new ArrayList<>(); for (Pair sourceTargetPathPair : sourceTargetPathPairList) { String sourceColumn = sourceTargetPathPair.left; @@ -172,7 +177,7 @@ public static List> bindTypeForSourceTargetPathPairLis public static Map> convertSourceTargetPathPairListToTargetPathDataTypeMap( List> sourceTargetPathPairList) { - // targetDevice -> { targetMeasurement -> dataType } + // targetDevice -> ( targetMeasurement -> dataType ) Map> targetPathToDataTypeMap = new HashMap<>(); for (Pair sourceTargetPathPair : sourceTargetPathPairList) { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/cache/PartitionCache.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/cache/PartitionCache.java index 4b03153394ef..c1b185a9af53 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/cache/PartitionCache.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/cache/PartitionCache.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.analyze.cache; import org.apache.iotdb.common.rpc.thrift.TConsensusGroupId; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/cache/StorageGroupCacheResult.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/cache/StorageGroupCacheResult.java index 2c95d5919db4..d547d0c67b25 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/cache/StorageGroupCacheResult.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/cache/StorageGroupCacheResult.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.analyze.cache; import java.util.ArrayList; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/schema/AutoCreateSchemaExecutor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/schema/AutoCreateSchemaExecutor.java index 9475ee232b1e..a26c23af00de 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/schema/AutoCreateSchemaExecutor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/schema/AutoCreateSchemaExecutor.java @@ -55,6 +55,7 @@ import java.util.Map; import java.util.Set; import java.util.function.Function; +import java.util.function.IntFunction; import java.util.stream.Collectors; import static org.apache.iotdb.db.utils.EncodingInferenceUtils.getDefaultEncoding; @@ -76,7 +77,7 @@ void autoCreateTimeSeries( PartialPath devicePath, List indexOfTargetMeasurements, String[] measurements, - Function getDataType, + IntFunction getDataType, boolean isAligned) { // auto create the rest missing timeseries List missingMeasurements = new ArrayList<>(indexOfTargetMeasurements.size()); @@ -188,7 +189,7 @@ void autoActivateTemplate(ClusterSchemaTree schemaTree, PartialPath devicePath, for (Map.Entry entry : template.getSchemaMap().entrySet()) { schemaTree.appendSingleMeasurement( devicePath.concatNode(entry.getKey()), - (MeasurementSchema) entry.getValue(), + entry.getValue(), null, null, template.isDirectAligned()); @@ -219,7 +220,7 @@ void autoActivateTemplate( template.getSchemaMap().entrySet()) { schemaTree.appendSingleMeasurement( devicePath.concatNode(measurementEntry.getKey()), - (MeasurementSchema) measurementEntry.getValue(), + measurementEntry.getValue(), null, null, template.isDirectAligned()); @@ -228,6 +229,7 @@ void autoActivateTemplate( } // used for load TsFile + @SuppressWarnings("squid:S107") void autoCreateMissingMeasurements( ClusterSchemaTree schemaTree, List devicePathList, @@ -297,11 +299,7 @@ void autoCreateMissingMeasurements( template = templateInfo.left; indexOfMeasurementsNotInTemplate = checkMeasurementsInSchemaTemplate( - devicePath, - indexOfTargetMeasurements, - measurementsList.get(deviceIndex), - isAlignedList.get(deviceIndex), - template); + indexOfTargetMeasurements, measurementsList.get(deviceIndex), template); if (schemaTree.getMatchedDevices(devicePath).isEmpty()) { // not activated yet devicesNeedActivateTemplate.putIfAbsent(devicePath, templateInfo); @@ -373,7 +371,7 @@ void autoCreateMissingMeasurements( template.getSchemaMap().entrySet()) { schemaTree.appendSingleMeasurement( devicePath.concatNode(measurementEntry.getKey()), - (MeasurementSchema) measurementEntry.getValue(), + measurementEntry.getValue(), null, null, template.isDirectAligned()); @@ -387,11 +385,7 @@ void autoCreateMissingMeasurements( } private List checkMeasurementsInSchemaTemplate( - PartialPath devicePath, - List indexOfTargetMeasurements, - String[] measurements, - boolean isAligned, - Template template) { + List indexOfTargetMeasurements, String[] measurements, Template template) { // check whether there is template should be activated boolean shouldActivateTemplate = false; for (int index : indexOfTargetMeasurements) { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/schema/ClusterSchemaFetcher.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/schema/ClusterSchemaFetcher.java index 5d2c272072b7..d021a5a559b0 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/schema/ClusterSchemaFetcher.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/schema/ClusterSchemaFetcher.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.analyze.schema; import org.apache.iotdb.commons.path.PartialPath; @@ -90,8 +91,7 @@ public class ClusterSchemaFetcher implements ISchemaFetcher { private final NormalSchemaFetcher normalSchemaFetcher = new NormalSchemaFetcher(schemaCache, autoCreateSchemaExecutor, clusterSchemaFetchExecutor); private final TemplateSchemaFetcher templateSchemaFetcher = - new TemplateSchemaFetcher( - templateManager, schemaCache, autoCreateSchemaExecutor, clusterSchemaFetchExecutor); + new TemplateSchemaFetcher(schemaCache, autoCreateSchemaExecutor, clusterSchemaFetchExecutor); private static final class ClusterSchemaFetcherHolder { private static final ClusterSchemaFetcher INSTANCE = new ClusterSchemaFetcher(); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/schema/NormalSchemaFetcher.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/schema/NormalSchemaFetcher.java index afb531a8aa11..9b95cb84ddd3 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/schema/NormalSchemaFetcher.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/schema/NormalSchemaFetcher.java @@ -25,6 +25,7 @@ import org.apache.iotdb.db.conf.IoTDBConfig; import org.apache.iotdb.db.conf.IoTDBDescriptor; import org.apache.iotdb.db.exception.metadata.AlignedTimeseriesException; +import org.apache.iotdb.db.exception.sql.SemanticException; import org.apache.iotdb.db.metadata.cache.DataNodeSchemaCache; import org.apache.iotdb.db.mpp.common.schematree.ClusterSchemaTree; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; @@ -286,7 +287,7 @@ void processNormalTimeSeries( for (int i = 0, size = schemaComputationWithAutoCreationList.size(); i < size; i++) { Pair, List> missedIndexAndPathString = schemaCache.computeSourceOfLogicalView(schemaComputationWithAutoCreationList.get(i)); - if (missedIndexAndPathString.left.size() > 0) { + if (!missedIndexAndPathString.left.isEmpty()) { hasUnFetchedLogicalView = true; } missedIndexAndPathStringOfViewList.get(i).left = missedIndexAndPathString.left; @@ -399,7 +400,7 @@ private void validateIsAlignedValueIfAutoCreate( msg = "Timeseries under this device is not aligned, please use createTimeseries or change device."; } - throw new RuntimeException(new AlignedTimeseriesException(msg, devicePath.getFullPath())); + throw new SemanticException(new AlignedTimeseriesException(msg, devicePath.getFullPath())); } } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/schema/TemplateSchemaFetcher.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/schema/TemplateSchemaFetcher.java index 906d848a80a6..266dcb2f4668 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/schema/TemplateSchemaFetcher.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/schema/TemplateSchemaFetcher.java @@ -23,7 +23,6 @@ import org.apache.iotdb.db.conf.IoTDBConfig; import org.apache.iotdb.db.conf.IoTDBDescriptor; import org.apache.iotdb.db.metadata.cache.DataNodeSchemaCache; -import org.apache.iotdb.db.metadata.template.ITemplateManager; import org.apache.iotdb.db.metadata.template.Template; import org.apache.iotdb.db.metadata.template.alter.TemplateExtendInfo; import org.apache.iotdb.db.mpp.common.schematree.ClusterSchemaTree; @@ -42,18 +41,15 @@ class TemplateSchemaFetcher { private final IoTDBConfig config = IoTDBDescriptor.getInstance().getConfig(); - private final ITemplateManager templateManager; private final DataNodeSchemaCache templateSchemaCache; private final AutoCreateSchemaExecutor autoCreateSchemaExecutor; private final ClusterSchemaFetchExecutor clusterSchemaFetchExecutor; TemplateSchemaFetcher( - ITemplateManager templateManager, DataNodeSchemaCache templateSchemaCache, AutoCreateSchemaExecutor autoCreateSchemaExecutor, ClusterSchemaFetchExecutor clusterSchemaFetchExecutor) { - this.templateManager = templateManager; this.templateSchemaCache = templateSchemaCache; this.autoCreateSchemaExecutor = autoCreateSchemaExecutor; this.clusterSchemaFetchExecutor = clusterSchemaFetchExecutor; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/ExecutionResult.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/ExecutionResult.java index 4ac05aabee3d..8d778289dd4f 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/ExecutionResult.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/ExecutionResult.java @@ -22,8 +22,8 @@ import org.apache.iotdb.db.mpp.common.QueryId; public class ExecutionResult { - public QueryId queryId; - public TSStatus status; + public final QueryId queryId; + public final TSStatus status; public ExecutionResult(QueryId queryId, TSStatus status) { this.queryId = queryId; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/QueryExecution.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/QueryExecution.java index 8c4200fe391e..ac5e0d912c87 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/QueryExecution.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/QueryExecution.java @@ -148,6 +148,7 @@ public class QueryExecution implements IQueryExecution { private static final PerformanceOverviewMetrics PERFORMANCE_OVERVIEW_METRICS = PerformanceOverviewMetrics.getInstance(); + @SuppressWarnings("squid:S107") public QueryExecution( Statement statement, MPPQueryContext context, @@ -601,11 +602,16 @@ public ExecutionResult getStatus() { } // TODO: (xingtanzjr) use more TSStatusCode if the QueryState isn't FINISHED return getExecutionResult(state); - } catch (InterruptedException | ExecutionException e) { + } catch (InterruptedException e) { // TODO: (xingtanzjr) use more accurate error handling - if (e instanceof InterruptedException) { - Thread.currentThread().interrupt(); - } + Thread.currentThread().interrupt(); + return new ExecutionResult( + context.getQueryId(), + stateMachine.getFailureStatus() == null + ? RpcUtils.getStatus( + TSStatusCode.INTERNAL_SERVER_ERROR, stateMachine.getFailureMessage()) + : stateMachine.getFailureStatus()); + } catch (ExecutionException e) { return new ExecutionResult( context.getQueryId(), stateMachine.getFailureStatus() == null diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigExecution.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigExecution.java index 20a4aa9f82dd..2b323f99ef02 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigExecution.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigExecution.java @@ -145,13 +145,19 @@ private void fail(Throwable cause) { } @Override - public void stop(Throwable t) {} + public void stop(Throwable t) { + // do nothing + } @Override - public void stopAndCleanup() {} + public void stopAndCleanup() { + // do nothing + } @Override - public void stopAndCleanup(Throwable t) {} + public void stopAndCleanup(Throwable t) { + // do nothing + } @Override public void cancel() { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigTaskVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigTaskVisitor.java index 3ed3b35696fc..90afc38cd671 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigTaskVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigTaskVisitor.java @@ -379,7 +379,7 @@ public IConfigTask visitShowDataNodes( @Override public IConfigTask visitShowConfigNodes( ShowConfigNodesStatement showConfigNodesStatement, TaskContext context) { - return new ShowConfigNodesTask(showConfigNodesStatement); + return new ShowConfigNodesTask(); } @Override @@ -449,6 +449,7 @@ public IConfigTask visitGetTimeSlotList( return new GetTimeSlotListTask(getTimeSlotListStatement); } + @Override public IConfigTask visitCountTimeSlotList( CountTimeSlotListStatement countTimeSlotListStatement, TaskContext context) { return new CountTimeSlotListTask(countTimeSlotListStatement); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java index 0651ae0e32b1..6428abd7b1f0 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java @@ -1086,7 +1086,7 @@ public SettableFuture showCluster(ShowClusterStatement showClu if (showClusterStatement.isDetails()) { ShowClusterDetailsTask.buildTSBlock(showClusterResp, future); } else { - ShowClusterTask.buildTSBlock(showClusterResp, future); + ShowClusterTask.buildTsBlock(showClusterResp, future); } return future; @@ -1878,7 +1878,7 @@ public SettableFuture getRegionId(GetRegionIdStatement getRegi } catch (Exception e) { future.setException(e); } - GetRegionIdTask.buildTSBlock(resp, future); + GetRegionIdTask.buildTsBlock(resp, future); return future; } @@ -1901,7 +1901,7 @@ public SettableFuture getSeriesSlotList( } catch (Exception e) { future.setException(e); } - GetSeriesSlotListTask.buildTSBlock(resp, future); + GetSeriesSlotListTask.buildTsBlock(resp, future); return future; } @@ -2159,7 +2159,7 @@ public SettableFuture showSpaceQuota( // Send request to some API server TSpaceQuotaResp showSpaceQuotaResp = configNodeClient.showSpaceQuota(databases); // build TSBlock - ShowSpaceQuotaTask.buildTSBlock(showSpaceQuotaResp, future); + ShowSpaceQuotaTask.buildTsBlock(showSpaceQuotaResp, future); } catch (Exception e) { future.setException(e); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/DatabaseSchemaTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/DatabaseSchemaTask.java index 10eb7b24bbb1..59ed0e3babb3 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/DatabaseSchemaTask.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/DatabaseSchemaTask.java @@ -53,8 +53,8 @@ public static TDatabaseSchema constructDatabaseSchema( DatabaseSchemaStatement databaseSchemaStatement) { TDatabaseSchema databaseSchema = new TDatabaseSchema(); databaseSchema.setName(databaseSchemaStatement.getDatabasePath().getFullPath()); - if (databaseSchemaStatement.getTTL() != null) { - databaseSchema.setTTL(databaseSchemaStatement.getTTL()); + if (databaseSchemaStatement.getTtl() != null) { + databaseSchema.setTTL(databaseSchemaStatement.getTtl()); } if (databaseSchemaStatement.getSchemaReplicationFactor() != null) { databaseSchema.setSchemaReplicationFactor( diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/GetRegionIdTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/GetRegionIdTask.java index c1568149321c..be6552fd1071 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/GetRegionIdTask.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/GetRegionIdTask.java @@ -60,7 +60,7 @@ public static void buildTsBlock(TsBlockBuilder builder, TConsensusGroupId tConse builder.declarePosition(); } - public static void buildTSBlock( + public static void buildTsBlock( TGetRegionIdResp getRegionIdResp, SettableFuture future) { List outputDataTypes = ColumnHeaderConstant.getRegionIdColumnHeaders.stream() diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/GetSeriesSlotListTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/GetSeriesSlotListTask.java index 5da8c5c7ed79..9f4ebd896f36 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/GetSeriesSlotListTask.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/GetSeriesSlotListTask.java @@ -61,7 +61,7 @@ public static void buildTsBlock( builder.declarePosition(); } - public static void buildTSBlock( + public static void buildTsBlock( TGetSeriesSlotListResp getSeriesSlotListResp, SettableFuture future) { List outputDataTypes = ColumnHeaderConstant.getSeriesSlotListColumnHeaders.stream() diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterDetailsTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterDetailsTask.java index 6549ee3ffc69..7b6b1b9f623a 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterDetailsTask.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterDetailsTask.java @@ -73,6 +73,7 @@ private static void buildConfigNodesTsBlock( builder.declarePosition(); } + @SuppressWarnings("squid:S107") private static void buildDataNodesTsBlock( TsBlockBuilder builder, int nodeId, diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterTask.java index b1cf6a2e953a..d4cabb17375e 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterTask.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterTask.java @@ -72,7 +72,7 @@ private static void buildTsBlock( builder.declarePosition(); } - public static void buildTSBlock( + public static void buildTsBlock( TShowClusterResp clusterNodeInfos, SettableFuture future) { List outputDataTypes = ColumnHeaderConstant.showClusterColumnHeaders.stream() diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowConfigNodesTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowConfigNodesTask.java index cb4a12689108..6fdb6c9fe86d 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowConfigNodesTask.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowConfigNodesTask.java @@ -28,7 +28,6 @@ import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult; import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask; import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor; -import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowConfigNodesStatement; import org.apache.iotdb.rpc.TSStatusCode; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder; @@ -42,12 +41,8 @@ public class ShowConfigNodesTask implements IConfigTask { - private ShowConfigNodesStatement showConfigNodesStatement; - - public ShowConfigNodesTask() {} - - public ShowConfigNodesTask(ShowConfigNodesStatement showConfigNodesStatement) { - this.showConfigNodesStatement = showConfigNodesStatement; + public ShowConfigNodesTask() { + // do nothing } @Override diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowFunctionsTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowFunctionsTask.java index 96fa09fc3db8..31edbc373b49 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowFunctionsTask.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowFunctionsTask.java @@ -120,7 +120,7 @@ private static void appendBuiltInScalarFunctions(TsBlockBuilder builder) { } private static String getFunctionType(UDFInformation udfInformation) { - String functionType = FUNCTION_TYPE_EXTERNAL_UDTF; + String functionType = null; try { if (udfInformation.isBuiltin()) { if (UDFManagementService.getInstance().isUDTF(udfInformation.getFunctionName())) { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowModelsTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowModelsTask.java index 750e0dd5ae30..b6493d590abc 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowModelsTask.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowModelsTask.java @@ -42,7 +42,9 @@ public class ShowModelsTask implements IConfigTask { - public ShowModelsTask() {} + public ShowModelsTask() { + // do nothing + } @Override public ListenableFuture execute(IConfigTaskExecutor configTaskExecutor) diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/sys/quota/ShowSpaceQuotaTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/sys/quota/ShowSpaceQuotaTask.java index 961a9ccda35e..d069c925cccc 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/sys/quota/ShowSpaceQuotaTask.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/sys/quota/ShowSpaceQuotaTask.java @@ -57,7 +57,7 @@ public ListenableFuture execute(IConfigTaskExecutor configTask return configTaskExecutor.showSpaceQuota(showSpaceQuotaStatement); } - public static void buildTSBlock(TSpaceQuotaResp resp, SettableFuture future) { + public static void buildTsBlock(TSpaceQuotaResp resp, SettableFuture future) { List outputDataTypes = ColumnHeaderConstant.showSpaceQuotaColumnHeaders.stream() .map(ColumnHeader::getColumnType) diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/sys/quota/ShowThrottleQuotaTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/sys/quota/ShowThrottleQuotaTask.java index 8533e59a581e..67c99a7beeba 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/sys/quota/ShowThrottleQuotaTask.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/sys/quota/ShowThrottleQuotaTask.java @@ -141,7 +141,7 @@ private static String toRequestType(ThrottleType throttleType) { case REQUEST_SIZE: return ""; default: - throw new RuntimeException("Wrong request type"); + throw new IllegalArgumentException("Wrong request type"); } } @@ -170,7 +170,7 @@ private static String toQuotaLimit(ThrottleType throttleType, TTimedQuota timedQ + toTimeUnit(timedQuota.getTimeUnit()); } default: - throw new RuntimeException("Wrong request type"); + throw new IllegalArgumentException("Wrong request type"); } } @@ -185,7 +185,7 @@ private static String toTimeUnit(long timeUnit) { case IoTDBConstant.DAY: return IoTDBConstant.DAY_UNIT; default: - throw new RuntimeException("Wrong unit type"); + throw new IllegalArgumentException("Wrong unit type"); } } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/memory/MemorySourceHandle.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/memory/MemorySourceHandle.java index a071b4b83c72..d307952288a4 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/memory/MemorySourceHandle.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/memory/MemorySourceHandle.java @@ -98,7 +98,9 @@ public boolean isAborted() { } @Override - public void abort() {} + public void abort() { + // do nothing + } @Override public void abort(Throwable t) { @@ -106,8 +108,12 @@ public void abort(Throwable t) { } @Override - public void close() {} + public void close() { + // do nothing + } @Override - public void setMaxBytesCanReserve(long maxBytesCanReserve) {} + public void setMaxBytesCanReserve(long maxBytesCanReserve) { + // do nothing + } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/Expression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/Expression.java index 1369e16fcd9e..431c412e9148 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/Expression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/Expression.java @@ -65,6 +65,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.NoSuchElementException; import java.util.Objects; /** A skeleton class for expression */ @@ -402,7 +403,7 @@ public boolean hasNext() { @Override public Expression next() { if (!hasNext()) { - return null; + throw new NoSuchElementException(); } Expression current = queue.pop(); if (current != null) { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ExpressionFactory.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ExpressionFactory.java index dfd2f054445e..30474bf5d9db 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ExpressionFactory.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ExpressionFactory.java @@ -41,6 +41,10 @@ public class ExpressionFactory { + private ExpressionFactory() { + // forbidden construction + } + public static PartialPath path(String pathStr) throws IllegalPathException { return new PartialPath(pathStr); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ExpressionType.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ExpressionType.java index c49a674fff78..1d37bab2ea90 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ExpressionType.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ExpressionType.java @@ -62,16 +62,16 @@ public enum ExpressionType { WHEN_THEN((short) 22, (short) 1000), // priority not sure ; - private final short expressionType; + private final short type; private final short priority; - ExpressionType(short expressionType, short priority) { - this.expressionType = expressionType; + ExpressionType(short type, short priority) { + this.type = type; this.priority = priority; } public short getExpressionTypeInShortEnum() { - return expressionType; + return type; } public short getPriority() { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/FilterNullPolicy.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/UnknownExpressionTypeException.java similarity index 70% rename from server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/FilterNullPolicy.java rename to server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/UnknownExpressionTypeException.java index a6bd1d3907eb..3432c6e42d83 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/FilterNullPolicy.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/UnknownExpressionTypeException.java @@ -7,7 +7,7 @@ * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an @@ -16,10 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.iotdb.db.mpp.plan.statement.component; -public enum FilterNullPolicy { - NO_FILTER, - CONTAINS_NULL, - ALL_NULL +package org.apache.iotdb.db.mpp.plan.expression; + +public class UnknownExpressionTypeException extends IllegalArgumentException { + + public UnknownExpressionTypeException(ExpressionType expressionType) { + super("Unsupported expression type: " + expressionType); + } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/AdditionExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/AdditionExpression.java index 01591f6dfc89..2775dffddd04 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/AdditionExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/AdditionExpression.java @@ -21,6 +21,7 @@ import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; +import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; import java.nio.ByteBuffer; @@ -43,4 +44,9 @@ protected String operator() { public ExpressionType getExpressionType() { return ExpressionType.ADDITION; } + + @Override + public R accept(ExpressionVisitor visitor, C context) { + return visitor.visitAdditionExpression(this, context); + } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/BinaryExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/BinaryExpression.java index d6a5c89f9ce6..5eda9e2c80cd 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/BinaryExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/BinaryExpression.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.expression.binary; import org.apache.iotdb.db.mpp.common.NodeRef; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/DivisionExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/DivisionExpression.java index ee444a134b50..aab4ff710732 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/DivisionExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/DivisionExpression.java @@ -21,6 +21,7 @@ import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; +import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; import java.nio.ByteBuffer; @@ -43,4 +44,9 @@ protected String operator() { public ExpressionType getExpressionType() { return ExpressionType.DIVISION; } + + @Override + public R accept(ExpressionVisitor visitor, C context) { + return visitor.visitDivisionExpression(this, context); + } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/EqualToExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/EqualToExpression.java index 54f9882d4a3c..159200eda408 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/EqualToExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/EqualToExpression.java @@ -21,6 +21,7 @@ import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; +import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; import java.nio.ByteBuffer; @@ -43,4 +44,9 @@ protected String operator() { public ExpressionType getExpressionType() { return ExpressionType.EQUAL_TO; } + + @Override + public R accept(ExpressionVisitor visitor, C context) { + return visitor.visitEqualToExpression(this, context); + } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/GreaterEqualExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/GreaterEqualExpression.java index f065198f6b51..6025f25e08aa 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/GreaterEqualExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/GreaterEqualExpression.java @@ -21,6 +21,7 @@ import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; +import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; import java.nio.ByteBuffer; @@ -43,4 +44,9 @@ protected String operator() { public ExpressionType getExpressionType() { return ExpressionType.GREATER_EQUAL; } + + @Override + public R accept(ExpressionVisitor visitor, C context) { + return visitor.visitGreaterEqualExpression(this, context); + } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/GreaterThanExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/GreaterThanExpression.java index c7fa4a263510..3ce303dcfdf0 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/GreaterThanExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/GreaterThanExpression.java @@ -21,6 +21,7 @@ import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; +import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; import java.nio.ByteBuffer; @@ -43,4 +44,9 @@ protected String operator() { public ExpressionType getExpressionType() { return ExpressionType.GREATER_THAN; } + + @Override + public R accept(ExpressionVisitor visitor, C context) { + return visitor.visitGreaterThanExpression(this, context); + } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LessEqualExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LessEqualExpression.java index a765c20c3724..f3b5f1015ff2 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LessEqualExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LessEqualExpression.java @@ -21,6 +21,7 @@ import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; +import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; import java.nio.ByteBuffer; @@ -43,4 +44,9 @@ protected String operator() { public ExpressionType getExpressionType() { return ExpressionType.LESS_EQUAL; } + + @Override + public R accept(ExpressionVisitor visitor, C context) { + return visitor.visitLessEqualExpression(this, context); + } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LessThanExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LessThanExpression.java index b3d8ba0caecc..60b3f06a283b 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LessThanExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LessThanExpression.java @@ -21,6 +21,7 @@ import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; +import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; import java.nio.ByteBuffer; @@ -43,4 +44,9 @@ protected String operator() { public ExpressionType getExpressionType() { return ExpressionType.LESS_THAN; } + + @Override + public R accept(ExpressionVisitor visitor, C context) { + return visitor.visitLessThanExpression(this, context); + } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LogicAndExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LogicAndExpression.java index 311ae5046bbd..33712c68753b 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LogicAndExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LogicAndExpression.java @@ -21,6 +21,7 @@ import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; +import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; import java.nio.ByteBuffer; @@ -43,4 +44,9 @@ protected String operator() { public ExpressionType getExpressionType() { return ExpressionType.LOGIC_AND; } + + @Override + public R accept(ExpressionVisitor visitor, C context) { + return visitor.visitLogicAndExpression(this, context); + } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LogicOrExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LogicOrExpression.java index c0b877af474a..374ba249a7ed 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LogicOrExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LogicOrExpression.java @@ -21,6 +21,7 @@ import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; +import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; import java.nio.ByteBuffer; @@ -43,4 +44,9 @@ protected String operator() { public ExpressionType getExpressionType() { return ExpressionType.LOGIC_OR; } + + @Override + public R accept(ExpressionVisitor visitor, C context) { + return visitor.visitLogicOrExpression(this, context); + } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/ModuloExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/ModuloExpression.java index c2ba296cfa0f..d7d4e556b52c 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/ModuloExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/ModuloExpression.java @@ -21,6 +21,7 @@ import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; +import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; import java.nio.ByteBuffer; @@ -43,4 +44,9 @@ protected String operator() { public ExpressionType getExpressionType() { return ExpressionType.MODULO; } + + @Override + public R accept(ExpressionVisitor visitor, C context) { + return visitor.visitModuloExpression(this, context); + } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/MultiplicationExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/MultiplicationExpression.java index a6bf85d42d8d..2d171ea0bada 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/MultiplicationExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/MultiplicationExpression.java @@ -21,6 +21,7 @@ import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; +import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; import java.nio.ByteBuffer; @@ -43,4 +44,9 @@ protected String operator() { public ExpressionType getExpressionType() { return ExpressionType.MULTIPLICATION; } + + @Override + public R accept(ExpressionVisitor visitor, C context) { + return visitor.visitMultiplicationExpression(this, context); + } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/NonEqualExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/NonEqualExpression.java index e5665be10d26..88dd0d7b2322 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/NonEqualExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/NonEqualExpression.java @@ -21,6 +21,7 @@ import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; +import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; import java.nio.ByteBuffer; @@ -43,4 +44,9 @@ protected String operator() { public ExpressionType getExpressionType() { return ExpressionType.NON_EQUAL; } + + @Override + public R accept(ExpressionVisitor visitor, C context) { + return visitor.visitNonEqualExpression(this, context); + } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/SubtractionExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/SubtractionExpression.java index a9832fcca52f..5cc6bc5eb03a 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/SubtractionExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/SubtractionExpression.java @@ -21,6 +21,7 @@ import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; +import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; import java.nio.ByteBuffer; @@ -43,4 +44,9 @@ protected String operator() { public ExpressionType getExpressionType() { return ExpressionType.SUBTRACTION; } + + @Override + public R accept(ExpressionVisitor visitor, C context) { + return visitor.visitSubtractionExpression(this, context); + } } 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 af515d131799..75c5cbc104cb 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 @@ -100,10 +100,10 @@ public R accept(ExpressionVisitor visitor, C context) { } private void initializeFunctionType() { - final String functionName = this.functionName.toLowerCase(); - if (BuiltinAggregationFunction.getNativeFunctionNames().contains(functionName)) { + final String lowerCaseFunctionName = this.functionName.toLowerCase(); + if (BuiltinAggregationFunction.getNativeFunctionNames().contains(lowerCaseFunctionName)) { functionType = FunctionType.AGGREGATION_FUNCTION; - } else if (BuiltinScalarFunction.getNativeFunctionNames().contains(functionName)) { + } else if (BuiltinScalarFunction.getNativeFunctionNames().contains(lowerCaseFunctionName)) { functionType = FunctionType.BUILT_IN_SCALAR_FUNCTION; } else { functionType = FunctionType.UDF; @@ -118,7 +118,7 @@ public boolean isBuiltInAggregationFunctionExpression() { 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/expression/multi/builtin/BuiltInScalarFunctionHelperFactory.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/builtin/BuiltInScalarFunctionHelperFactory.java index 4726c88a2c33..acef8984307e 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/builtin/BuiltInScalarFunctionHelperFactory.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/builtin/BuiltInScalarFunctionHelperFactory.java @@ -26,6 +26,11 @@ import org.apache.iotdb.db.mpp.plan.expression.multi.builtin.helper.SubStringFunctionHelper; public class BuiltInScalarFunctionHelperFactory { + + private BuiltInScalarFunctionHelperFactory() { + // forbidden instantiation + } + public static BuiltInScalarFunctionHelper createHelper(String functionName) { functionName = functionName.toUpperCase(); switch (functionName) { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/builtin/helper/CastFunctionHelper.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/builtin/helper/CastFunctionHelper.java index ff6a5e85db04..316fbc8e2ad0 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/builtin/helper/CastFunctionHelper.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/builtin/helper/CastFunctionHelper.java @@ -37,7 +37,9 @@ public class CastFunctionHelper implements BuiltInScalarFunctionHelper { @Override public void checkBuiltInScalarFunctionInputDataType(TSDataType tsDataType) - throws SemanticException {} + throws SemanticException { + // needn't check + } @Override public TSDataType getBuiltInScalarFunctionReturnType(FunctionExpression functionExpression) { @@ -73,7 +75,7 @@ public void appendFunctionAttributes( public static int castLongToInt(long value) { if (value > Integer.MAX_VALUE || value < Integer.MIN_VALUE) { - throw new RuntimeException( + throw new SemanticException( String.format("long value %d is out of range of integer value.", value)); } return (int) value; @@ -81,7 +83,7 @@ public static int castLongToInt(long value) { public static int castFloatToInt(float value) { if (value > Integer.MAX_VALUE || value < Integer.MIN_VALUE) { - throw new RuntimeException( + throw new SemanticException( String.format("Float value %f is out of range of integer value.", value)); } return Math.round(value); @@ -89,7 +91,7 @@ public static int castFloatToInt(float value) { public static long castFloatToLong(float value) { if (value > Long.MAX_VALUE || value < Long.MIN_VALUE) { - throw new RuntimeException( + throw new SemanticException( String.format("Float value %f is out of range of long value.", value)); } return Math.round((double) value); @@ -97,7 +99,7 @@ public static long castFloatToLong(float value) { public static int castDoubleToInt(double value) { if (value > Integer.MAX_VALUE || value < Integer.MIN_VALUE) { - throw new RuntimeException( + throw new SemanticException( String.format("Double value %f is out of range of integer value.", value)); } return Math.round((float) value); @@ -105,7 +107,7 @@ public static int castDoubleToInt(double value) { public static long castDoubleToLong(double value) { if (value > Long.MAX_VALUE || value < Long.MIN_VALUE) { - throw new RuntimeException( + throw new SemanticException( String.format("Double value %f is out of range of long value.", value)); } return Math.round(value); @@ -113,7 +115,7 @@ public static long castDoubleToLong(double value) { public static float castDoubleToFloat(double value) { if (value > Float.MAX_VALUE || value < -Float.MAX_VALUE) { - throw new RuntimeException( + throw new SemanticException( String.format("Double value %f is out of range of float value.", value)); } return (float) value; @@ -122,7 +124,7 @@ public static float castDoubleToFloat(double value) { public static float castTextToFloat(String value) { float f = Float.parseFloat(value); if (f == Float.POSITIVE_INFINITY || f == Float.NEGATIVE_INFINITY) { - throw new RuntimeException( + throw new SemanticException( String.format("Text value %s is out of range of float value.", value)); } return f; @@ -131,7 +133,7 @@ public static float castTextToFloat(String value) { public static Double castTextToDouble(String value) { double d = Double.parseDouble(value); if (d == Double.POSITIVE_INFINITY || d == Double.NEGATIVE_INFINITY) { - throw new RuntimeException( + throw new SemanticException( String.format("Text value %s is out of range of double value.", value)); } return d; @@ -144,7 +146,7 @@ public static boolean castTextToBoolean(String value) { } else if (lowerCase.equals("false")) { return false; } else { - throw new RuntimeException(String.format("Invalid text input for boolean type: %s", value)); + throw new SemanticException(String.format("Invalid text input for boolean type: %s", value)); } } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/LikeExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/LikeExpression.java index 13b51495ad85..ee0ebb1b26e4 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/LikeExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/LikeExpression.java @@ -96,16 +96,17 @@ private Pattern compile() { */ private String unescapeString(String value) { StringBuilder stringBuilder = new StringBuilder(); - for (int i = 0; i < value.length(); i++) { - String ch = String.valueOf(value.charAt(i)); + int curIndex = 0; + for (; curIndex < value.length(); curIndex++) { + String ch = String.valueOf(value.charAt(curIndex)); if ("\\".equals(ch)) { - if (i < value.length() - 1) { - String nextChar = String.valueOf(value.charAt(i + 1)); + if (curIndex < value.length() - 1) { + String nextChar = String.valueOf(value.charAt(curIndex + 1)); if ("%".equals(nextChar) || "_".equals(nextChar) || "\\".equals(nextChar)) { stringBuilder.append(ch); } if ("\\".equals(nextChar)) { - i++; + curIndex++; } } } else { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/BindTypeForTimeSeriesOperandVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/BindTypeForTimeSeriesOperandVisitor.java index 2b7d7c8f099e..8f3e8bbdb417 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/BindTypeForTimeSeriesOperandVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/BindTypeForTimeSeriesOperandVisitor.java @@ -58,7 +58,8 @@ public Expression visitTimeSeriesOperand( return reconstructTimeSeriesOperand( predicate, new MeasurementPath(columnHeader.getColumnName(), columnHeader.getColumnType())); - } catch (IllegalPathException ignored) { + } catch (IllegalPathException e) { + throw new SemanticException(e); } } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/ColumnTransformerVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/ColumnTransformerVisitor.java index 61406fb57dcd..ec8b1b4ee27c 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/ColumnTransformerVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/ColumnTransformerVisitor.java @@ -84,6 +84,8 @@ public class ColumnTransformerVisitor extends ExpressionVisitor< ColumnTransformer, ColumnTransformerVisitor.ColumnTransformerVisitorContext> { + private static final String UNSUPPORTED_EXPRESSION_TYPE = "Unsupported expression type: "; + @Override public ColumnTransformer visitExpression( Expression expression, ColumnTransformerVisitorContext context) { @@ -436,7 +438,7 @@ private ColumnTransformer getConcreteUnaryColumnTransformer( returnType, childColumnTransformer, regularExpression.getPattern()); default: throw new UnsupportedOperationException( - "Unsupported Expression Type: " + expression.getExpressionType()); + UNSUPPORTED_EXPRESSION_TYPE + expression.getExpressionType()); } } @@ -487,7 +489,7 @@ private ColumnTransformer getConcreteBinaryColumnTransformer( returnType, leftColumnTransformer, rightColumnTransformer); default: throw new UnsupportedOperationException( - "Unsupported Expression Type: " + expression.getExpressionType()); + UNSUPPORTED_EXPRESSION_TYPE + expression.getExpressionType()); } } @@ -507,7 +509,7 @@ private ColumnTransformer getConcreteTernaryTransformer( betweenExpression.isNotBetween()); } else { throw new UnsupportedOperationException( - "Unsupported Expression Type: " + expression.getExpressionType()); + UNSUPPORTED_EXPRESSION_TYPE + expression.getExpressionType()); } } @@ -537,6 +539,7 @@ public static class ColumnTransformerVisitorContext { int originSize; + @SuppressWarnings("squid:S107") public ColumnTransformerVisitorContext( UDTFContext udtfContext, Map, TSDataType> expressionTypes, diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/CompleteMeasurementSchemaVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/CompleteMeasurementSchemaVisitor.java index d7bf53d98279..7712d37fbaff 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/CompleteMeasurementSchemaVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/CompleteMeasurementSchemaVisitor.java @@ -22,6 +22,7 @@ import org.apache.iotdb.commons.path.MeasurementPath; import org.apache.iotdb.commons.path.PartialPath; import org.apache.iotdb.db.exception.metadata.view.BrokenViewException; +import org.apache.iotdb.db.exception.sql.SemanticException; import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.binary.BinaryExpression; @@ -90,17 +91,13 @@ public Expression visitTimeSeriesOperand( TimeSeriesOperand timeSeriesOperand, ISchemaTree schemaTree) { PartialPath path = timeSeriesOperand.getPath(); try { - try { - path.getMeasurementSchema(); - } catch (Exception notAMeasurementPath) { - List actualPaths = schemaTree.searchMeasurementPaths(path).left; - if (actualPaths.size() != 1) { - throw new BrokenViewException(path.getFullPath(), actualPaths); - } - return new TimeSeriesOperand(actualPaths.get(0)); + path.getMeasurementSchema(); + } catch (Exception notAMeasurementPath) { + List actualPaths = schemaTree.searchMeasurementPaths(path).left; + if (actualPaths.size() != 1) { + throw new SemanticException(new BrokenViewException(path.getFullPath(), actualPaths)); } - } catch (Exception e) { - throw new RuntimeException(e); + return new TimeSeriesOperand(actualPaths.get(0)); } return timeSeriesOperand; } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/ExpressionVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/ExpressionVisitor.java index cbfed82bb829..428f596295d3 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/ExpressionVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/ExpressionVisitor.java @@ -20,10 +20,23 @@ package org.apache.iotdb.db.mpp.plan.expression.visitor; import org.apache.iotdb.db.mpp.plan.expression.Expression; +import org.apache.iotdb.db.mpp.plan.expression.binary.AdditionExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.ArithmeticBinaryExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.BinaryExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.CompareBinaryExpression; +import org.apache.iotdb.db.mpp.plan.expression.binary.DivisionExpression; +import org.apache.iotdb.db.mpp.plan.expression.binary.EqualToExpression; +import org.apache.iotdb.db.mpp.plan.expression.binary.GreaterEqualExpression; +import org.apache.iotdb.db.mpp.plan.expression.binary.GreaterThanExpression; +import org.apache.iotdb.db.mpp.plan.expression.binary.LessEqualExpression; +import org.apache.iotdb.db.mpp.plan.expression.binary.LessThanExpression; +import org.apache.iotdb.db.mpp.plan.expression.binary.LogicAndExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.LogicBinaryExpression; +import org.apache.iotdb.db.mpp.plan.expression.binary.LogicOrExpression; +import org.apache.iotdb.db.mpp.plan.expression.binary.ModuloExpression; +import org.apache.iotdb.db.mpp.plan.expression.binary.MultiplicationExpression; +import org.apache.iotdb.db.mpp.plan.expression.binary.NonEqualExpression; +import org.apache.iotdb.db.mpp.plan.expression.binary.SubtractionExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.WhenThenExpression; import org.apache.iotdb.db.mpp.plan.expression.leaf.ConstantOperand; import org.apache.iotdb.db.mpp.plan.expression.leaf.LeafOperand; @@ -94,15 +107,68 @@ public R visitArithmeticBinaryExpression( return visitBinaryExpression(arithmeticBinaryExpression, context); } + public R visitAdditionExpression(AdditionExpression additionExpression, C context) { + return visitArithmeticBinaryExpression(additionExpression, context); + } + + public R visitSubtractionExpression(SubtractionExpression subtractionExpression, C context) { + return visitArithmeticBinaryExpression(subtractionExpression, context); + } + + public R visitMultiplicationExpression( + MultiplicationExpression multiplicationExpression, C context) { + return visitArithmeticBinaryExpression(multiplicationExpression, context); + } + + public R visitDivisionExpression(DivisionExpression divisionExpression, C context) { + return visitArithmeticBinaryExpression(divisionExpression, context); + } + + public R visitModuloExpression(ModuloExpression moduloExpression, C context) { + return visitArithmeticBinaryExpression(moduloExpression, context); + } + public R visitLogicBinaryExpression(LogicBinaryExpression logicBinaryExpression, C context) { return visitBinaryExpression(logicBinaryExpression, context); } + public R visitLogicAndExpression(LogicAndExpression logicAndExpression, C context) { + return visitLogicBinaryExpression(logicAndExpression, context); + } + + public R visitLogicOrExpression(LogicOrExpression logicOrExpression, C context) { + return visitLogicBinaryExpression(logicOrExpression, context); + } + public R visitCompareBinaryExpression( CompareBinaryExpression compareBinaryExpression, C context) { return visitBinaryExpression(compareBinaryExpression, context); } + public R visitEqualToExpression(EqualToExpression equalToExpression, C context) { + return visitCompareBinaryExpression(equalToExpression, context); + } + + public R visitNonEqualExpression(NonEqualExpression nonEqualExpression, C context) { + return visitCompareBinaryExpression(nonEqualExpression, context); + } + + public R visitGreaterThanExpression(GreaterThanExpression greaterThanExpression, C context) { + return visitCompareBinaryExpression(greaterThanExpression, context); + } + + public R visitGreaterEqualExpression(GreaterEqualExpression greaterEqualExpression, C context) { + return visitCompareBinaryExpression(greaterEqualExpression, context); + } + + public R visitLessThanExpression(LessThanExpression lessThanExpression, C context) { + return visitCompareBinaryExpression(lessThanExpression, context); + } + + public R visitLessEqualExpression(LessEqualExpression lessEqualExpression, C context) { + return visitCompareBinaryExpression(lessEqualExpression, context); + } + public R visitTernaryExpression(TernaryExpression ternaryExpression, C context) { return visitExpression(ternaryExpression, context); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/IntermediateLayerVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/IntermediateLayerVisitor.java index 753589884af7..1a0b254128fd 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/IntermediateLayerVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/IntermediateLayerVisitor.java @@ -22,6 +22,7 @@ import org.apache.iotdb.db.exception.query.QueryProcessException; import org.apache.iotdb.db.mpp.common.NodeRef; import org.apache.iotdb.db.mpp.plan.expression.Expression; +import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; import org.apache.iotdb.db.mpp.plan.expression.binary.BinaryExpression; import org.apache.iotdb.db.mpp.plan.expression.leaf.ConstantOperand; import org.apache.iotdb.db.mpp.plan.expression.leaf.TimeSeriesOperand; @@ -376,18 +377,16 @@ private Transformer getConcreteTernaryTransformer( LayerPointReader firstParentLayerPointReader, LayerPointReader secondParentLayerPointReader, LayerPointReader thirdParentLayerPointReader) { - switch (expression.getExpressionType()) { - case BETWEEN: - BetweenExpression betweenExpression = (BetweenExpression) expression; - return new BetweenTransformer( - firstParentLayerPointReader, - secondParentLayerPointReader, - thirdParentLayerPointReader, - betweenExpression.isNotBetween()); - default: - throw new UnsupportedOperationException( - "Unsupported Expression Type: " + expression.getExpressionType()); + if (expression.getExpressionType() == ExpressionType.BETWEEN) { + BetweenExpression betweenExpression = (BetweenExpression) expression; + return new BetweenTransformer( + firstParentLayerPointReader, + secondParentLayerPointReader, + thirdParentLayerPointReader, + betweenExpression.isNotBetween()); } + throw new UnsupportedOperationException( + "Unsupported Expression Type: " + expression.getExpressionType()); } private UDFQueryTransformer getUdfTransformer( @@ -426,8 +425,7 @@ private UDFQueryTransformer getUdfTransformer( } private IntermediateLayer constructUdfInputIntermediateLayer( - FunctionExpression functionExpression, IntermediateLayerVisitorContext context) - throws QueryProcessException, IOException { + FunctionExpression functionExpression, IntermediateLayerVisitorContext context) { List intermediateLayers = new ArrayList<>(); for (Expression expression : functionExpression.getExpressions()) { intermediateLayers.add(this.process(expression, context)); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/TransformToViewExpressionVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/TransformToViewExpressionVisitor.java index 5c4ec7160755..6336d966389e 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/TransformToViewExpressionVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/TransformToViewExpressionVisitor.java @@ -47,9 +47,7 @@ import org.apache.iotdb.commons.schema.view.viewExpression.unary.RegularViewExpression; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.binary.AdditionExpression; -import org.apache.iotdb.db.mpp.plan.expression.binary.ArithmeticBinaryExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.BinaryExpression; -import org.apache.iotdb.db.mpp.plan.expression.binary.CompareBinaryExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.DivisionExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.EqualToExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.GreaterEqualExpression; @@ -57,31 +55,25 @@ import org.apache.iotdb.db.mpp.plan.expression.binary.LessEqualExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.LessThanExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.LogicAndExpression; -import org.apache.iotdb.db.mpp.plan.expression.binary.LogicBinaryExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.LogicOrExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.ModuloExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.MultiplicationExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.NonEqualExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.SubtractionExpression; import org.apache.iotdb.db.mpp.plan.expression.leaf.ConstantOperand; -import org.apache.iotdb.db.mpp.plan.expression.leaf.LeafOperand; import org.apache.iotdb.db.mpp.plan.expression.leaf.NullOperand; import org.apache.iotdb.db.mpp.plan.expression.leaf.TimeSeriesOperand; import org.apache.iotdb.db.mpp.plan.expression.leaf.TimestampOperand; import org.apache.iotdb.db.mpp.plan.expression.multi.FunctionExpression; import org.apache.iotdb.db.mpp.plan.expression.ternary.BetweenExpression; -import org.apache.iotdb.db.mpp.plan.expression.ternary.TernaryExpression; import org.apache.iotdb.db.mpp.plan.expression.unary.InExpression; import org.apache.iotdb.db.mpp.plan.expression.unary.IsNullExpression; import org.apache.iotdb.db.mpp.plan.expression.unary.LikeExpression; import org.apache.iotdb.db.mpp.plan.expression.unary.LogicNotExpression; import org.apache.iotdb.db.mpp.plan.expression.unary.NegationExpression; import org.apache.iotdb.db.mpp.plan.expression.unary.RegularExpression; -import org.apache.iotdb.db.mpp.plan.expression.unary.UnaryExpression; import org.apache.iotdb.tsfile.utils.Pair; -import javax.ws.rs.NotSupportedException; - import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; @@ -96,16 +88,12 @@ public ViewExpression process(Expression expression, Void context) { @Override public ViewExpression visitExpression(Expression expression, Void context) { - throw new RuntimeException( - new NotSupportedException( - "visitExpression in TransformToViewExpressionVisitor is not supported.")); + throw new UnsupportedOperationException( + "Unsupported expression type in TransformToViewExpressionVisitor: " + + expression.getExpressionType()); } // region leaf operand - @Override - public ViewExpression visitLeafOperand(LeafOperand leafOperand, Void context) { - throw new RuntimeException(new NotSupportedException("Can not construct abstract class.")); - } @Override public ViewExpression visitConstantOperand(ConstantOperand constantOperand, Void context) { @@ -129,10 +117,6 @@ public ViewExpression visitTimeStampOperand(TimestampOperand timestampOperand, V // endregion // region Unary Expressions - @Override - public ViewExpression visitUnaryExpression(UnaryExpression unaryExpression, Void context) { - throw new RuntimeException(new NotSupportedException("Can not construct abstract class.")); - } @Override public ViewExpression visitInExpression(InExpression inExpression, Void context) { @@ -177,20 +161,6 @@ public ViewExpression visitRegularExpression(RegularExpression regularExpression // endregion // region Binary Expressions - @Override - public ViewExpression visitBinaryExpression(BinaryExpression binaryExpression, Void context) { - if (binaryExpression instanceof ArithmeticBinaryExpression) { - return this.visitArithmeticBinaryExpression( - (ArithmeticBinaryExpression) binaryExpression, context); - } else if (binaryExpression instanceof CompareBinaryExpression) { - return this.visitCompareBinaryExpression((CompareBinaryExpression) binaryExpression, context); - } else if (binaryExpression instanceof LogicBinaryExpression) { - return this.visitLogicBinaryExpression((LogicBinaryExpression) binaryExpression, context); - } - throw new RuntimeException( - new NotSupportedException( - "unsupported expression type:" + binaryExpression.getExpressionType())); - } private Pair getExpressionsForBinaryExpression( BinaryExpression binaryExpression) { @@ -201,26 +171,6 @@ private Pair getExpressionsForBinaryExpression( // region Binary : Arithmetic Binary Expression @Override - public ViewExpression visitArithmeticBinaryExpression( - ArithmeticBinaryExpression arithmeticBinaryExpression, Void context) { - if (arithmeticBinaryExpression instanceof AdditionExpression) { - return this.visitAdditionExpression((AdditionExpression) arithmeticBinaryExpression, context); - } else if (arithmeticBinaryExpression instanceof DivisionExpression) { - return this.visitDivisionExpression((DivisionExpression) arithmeticBinaryExpression, context); - } else if (arithmeticBinaryExpression instanceof ModuloExpression) { - return this.visitModuloExpression((ModuloExpression) arithmeticBinaryExpression, context); - } else if (arithmeticBinaryExpression instanceof MultiplicationExpression) { - return this.visitMultiplicationExpression( - (MultiplicationExpression) arithmeticBinaryExpression, context); - } else if (arithmeticBinaryExpression instanceof SubtractionExpression) { - return this.visitSubtractionExpression( - (SubtractionExpression) arithmeticBinaryExpression, context); - } - throw new RuntimeException( - new NotSupportedException( - "unsupported expression type:" + arithmeticBinaryExpression.getExpressionType())); - } - public ViewExpression visitAdditionExpression( AdditionExpression additionExpression, Void context) { Pair pair = @@ -228,6 +178,7 @@ public ViewExpression visitAdditionExpression( return new AdditionViewExpression(pair.left, pair.right); } + @Override public ViewExpression visitDivisionExpression( DivisionExpression divisionExpression, Void context) { Pair pair = @@ -235,12 +186,14 @@ public ViewExpression visitDivisionExpression( return new DivisionViewExpression(pair.left, pair.right); } + @Override public ViewExpression visitModuloExpression(ModuloExpression moduloExpression, Void context) { Pair pair = this.getExpressionsForBinaryExpression(moduloExpression); return new ModuloViewExpression(pair.left, pair.right); } + @Override public ViewExpression visitMultiplicationExpression( MultiplicationExpression multiplicationExpression, Void context) { Pair pair = @@ -248,6 +201,7 @@ public ViewExpression visitMultiplicationExpression( return new MultiplicationViewExpression(pair.left, pair.right); } + @Override public ViewExpression visitSubtractionExpression( SubtractionExpression subtractionExpression, Void context) { Pair pair = @@ -257,35 +211,15 @@ public ViewExpression visitSubtractionExpression( // endregion // region Binary: Compare Binary Expression - @Override - public ViewExpression visitCompareBinaryExpression( - CompareBinaryExpression compareBinaryExpression, Void context) { - if (compareBinaryExpression instanceof EqualToExpression) { - return this.visitEqualToExpression((EqualToExpression) compareBinaryExpression, context); - } else if (compareBinaryExpression instanceof GreaterEqualExpression) { - return this.visitGreaterEqualExpression( - (GreaterEqualExpression) compareBinaryExpression, context); - } else if (compareBinaryExpression instanceof GreaterThanExpression) { - return this.visitGreaterThanExpression( - (GreaterThanExpression) compareBinaryExpression, context); - } else if (compareBinaryExpression instanceof LessEqualExpression) { - return this.visitLessEqualExpression((LessEqualExpression) compareBinaryExpression, context); - } else if (compareBinaryExpression instanceof LessThanExpression) { - return this.visitLessThanExpression((LessThanExpression) compareBinaryExpression, context); - } else if (compareBinaryExpression instanceof NonEqualExpression) { - return this.visitNonEqualExpression((NonEqualExpression) compareBinaryExpression, context); - } - throw new RuntimeException( - new NotSupportedException( - "unsupported expression type:" + compareBinaryExpression.getExpressionType())); - } + @Override public ViewExpression visitEqualToExpression(EqualToExpression equalToExpression, Void context) { Pair pair = this.getExpressionsForBinaryExpression(equalToExpression); return new EqualToViewExpression(pair.left, pair.right); } + @Override public ViewExpression visitGreaterEqualExpression( GreaterEqualExpression greaterEqualExpression, Void context) { Pair pair = @@ -293,6 +227,7 @@ public ViewExpression visitGreaterEqualExpression( return new GreaterEqualViewExpression(pair.left, pair.right); } + @Override public ViewExpression visitGreaterThanExpression( GreaterThanExpression greaterThanExpression, Void context) { Pair pair = @@ -300,6 +235,7 @@ public ViewExpression visitGreaterThanExpression( return new GreaterThanViewExpression(pair.left, pair.right); } + @Override public ViewExpression visitLessEqualExpression( LessEqualExpression lessEqualExpression, Void context) { Pair pair = @@ -307,6 +243,7 @@ public ViewExpression visitLessEqualExpression( return new LessEqualViewExpression(pair.left, pair.right); } + @Override public ViewExpression visitLessThanExpression( LessThanExpression lessThanExpression, Void context) { Pair pair = @@ -314,6 +251,7 @@ public ViewExpression visitLessThanExpression( return new LessThanViewExpression(pair.left, pair.right); } + @Override public ViewExpression visitNonEqualExpression( NonEqualExpression nonEqualExpression, Void context) { Pair pair = @@ -323,19 +261,8 @@ public ViewExpression visitNonEqualExpression( // endregion // region Binary : Logic Binary Expression - @Override - public ViewExpression visitLogicBinaryExpression( - LogicBinaryExpression logicBinaryExpression, Void context) { - if (logicBinaryExpression instanceof LogicAndExpression) { - return this.visitLogicAndExpression((LogicAndExpression) logicBinaryExpression, context); - } else if (logicBinaryExpression instanceof LogicOrExpression) { - return this.visitLogicOrExpression((LogicOrExpression) logicBinaryExpression, context); - } - throw new RuntimeException( - new NotSupportedException( - "unsupported expression type:" + logicBinaryExpression.getExpressionType())); - } + @Override public ViewExpression visitLogicAndExpression( LogicAndExpression logicAndExpression, Void context) { Pair pair = @@ -343,6 +270,7 @@ public ViewExpression visitLogicAndExpression( return new LogicAndViewExpression(pair.left, pair.right); } + @Override public ViewExpression visitLogicOrExpression(LogicOrExpression logicOrExpression, Void context) { Pair pair = this.getExpressionsForBinaryExpression(logicOrExpression); @@ -353,10 +281,6 @@ public ViewExpression visitLogicOrExpression(LogicOrExpression logicOrExpression // endregion // region Ternary Expressions - @Override - public ViewExpression visitTernaryExpression(TernaryExpression ternaryExpression, Void context) { - throw new RuntimeException(new NotSupportedException("Can not construct abstract class.")); - } @Override public ViewExpression visitBetweenExpression(BetweenExpression betweenExpression, Void context) { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/cartesian/BindSchemaForExpressionVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/cartesian/BindSchemaForExpressionVisitor.java index f6331c98f2e5..e253946d6ab3 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/cartesian/BindSchemaForExpressionVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/cartesian/BindSchemaForExpressionVisitor.java @@ -122,16 +122,15 @@ public List visitConstantOperand( public static Expression transformViewPath( MeasurementPath measurementPath, ISchemaTree schemaTree) { IMeasurementSchema measurementSchema = measurementPath.getMeasurementSchema(); - if (measurementSchema.isLogicalView()) { - ViewExpression viewExpression = ((LogicalViewSchema) measurementSchema).getExpression(); - // complete measurementPaths in expressions. - Expression expression = new TransformToExpressionVisitor().process(viewExpression, null); - expression = new CompleteMeasurementSchemaVisitor().process(expression, schemaTree); - return expression; - } else { - throw new RuntimeException( - new UnsupportedOperationException( - "Can not construct expression using non view path in transformViewPath!")); + if (!measurementSchema.isLogicalView()) { + throw new IllegalArgumentException( + "Can not construct expression using non view path in transformViewPath!"); } + + ViewExpression viewExpression = ((LogicalViewSchema) measurementSchema).getExpression(); + // complete measurementPaths in expressions. + Expression expression = new TransformToExpressionVisitor().process(viewExpression, null); + expression = new CompleteMeasurementSchemaVisitor().process(expression, schemaTree); + return expression; } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/optimization/PlanOptimizer.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/optimization/PlanOptimizer.java index a2b1f860ab0f..d3eff3a5a264 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/optimization/PlanOptimizer.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/optimization/PlanOptimizer.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.optimization; import org.apache.iotdb.db.mpp.common.MPPQueryContext; 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 0096ea11900b..7732f3e9cdd6 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.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.SchemaFilterFactory; @@ -255,6 +254,11 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor { 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; @@ -1127,7 +1131,7 @@ private void parseViewTargetPaths( BiConsumer> setTargetPathsGroup, Consumer setTargetIntoItem) { // full paths - if (ctx.fullPath() != null && ctx.fullPath().size() > 0) { + if (ctx.fullPath() != null && !ctx.fullPath().isEmpty()) { List fullPathContextList = ctx.fullPath(); List pathList = new ArrayList<>(); for (IoTDBSqlParser.FullPathContext pathContext : fullPathContextList) { @@ -1138,7 +1142,7 @@ private void parseViewTargetPaths( // 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 suffixPathContextList = ctx.viewSuffixPaths(); List suffixPathList = new ArrayList<>(); @@ -1178,7 +1182,7 @@ private void parseViewSourcePaths( BiConsumer> setSourcePathsGroup, Consumer setSourceQueryStatement) { // full paths - if (ctx.fullPath() != null && ctx.fullPath().size() > 0) { + if (ctx.fullPath() != null && !ctx.fullPath().isEmpty()) { List fullPathContextList = ctx.fullPath(); List pathList = new ArrayList<>(); for (IoTDBSqlParser.FullPathContext pathContext : fullPathContextList) { @@ -1189,7 +1193,7 @@ private void parseViewSourcePaths( // 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 suffixPathContextList = ctx.viewSuffixPaths(); @@ -1547,10 +1551,10 @@ private GroupByComponent parseGroupByClause( 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 expressions = ctx.expression(); if (windowType == WindowType.VARIATION_WINDOW) { @@ -1951,10 +1955,6 @@ private PartialPath parsePrefixPath(IoTDBSqlParser.PrefixPathContext ctx) { 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; @@ -2083,11 +2083,10 @@ private String parseStringLiteral(String src) { } 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; } @@ -2389,7 +2388,7 @@ private void parseDatabaseAttributesClause( IoTDBSqlParser.DatabaseAttributeKeyContext attributeKey = attribute.databaseAttributeKey(); if (attributeKey.TTL() != null) { long ttl = Long.parseLong(attribute.INTEGER_LITERAL().getText()); - databaseSchemaStatement.setTTL(ttl); + databaseSchemaStatement.setTtl(ttl); } else if (attributeKey.SCHEMA_REPLICATION_FACTOR() != null) { int schemaReplicationFactor = Integer.parseInt(attribute.INTEGER_LITERAL().getText()); databaseSchemaStatement.setSchemaReplicationFactor(schemaReplicationFactor); @@ -3125,7 +3124,7 @@ public Statement visitSetSystemStatus(IoTDBSqlParser.SetSystemStatusContext ctx) } 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; } @@ -3493,17 +3492,6 @@ public Map parseSyncAttributeClauses( 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 @@ -3634,7 +3622,7 @@ public Statement visitGetRegionId(IoTDBSqlParser.GetRegionIdContext ctx) { 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); } @@ -3662,7 +3650,7 @@ public Statement visitGetTimeSlotList(IoTDBSqlParser.GetTimeSlotListContext ctx) 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); } @@ -3670,7 +3658,7 @@ public Statement visitGetTimeSlotList(IoTDBSqlParser.GetTimeSlotListContext ctx) 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); } @@ -3709,7 +3697,7 @@ public Statement visitMigrateRegion(IoTDBSqlParser.MigrateRegionContext ctx) { @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 prefixPathContexts = ctx.prefixPath(); @@ -3776,7 +3764,7 @@ public Statement visitSetSpaceQuota(IoTDBSqlParser.SetSpaceQuotaContext ctx) { @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."); @@ -3876,7 +3864,7 @@ public Statement visitSetThrottleQuota(IoTDBSqlParser.SetThrottleQuotaContext ct @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) { @@ -3950,7 +3938,7 @@ private long parseSpaceQuotaSizeUnit(String data) { @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 10d60e2f9ed1..44d7a45c0142 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 static InsertRowStatement createStatement(TSInsertRecordReq insertRecordR } public static InsertRowStatement createStatement(TSInsertStringRecordReq insertRecordReq) - throws IllegalPathException, QueryProcessException { + throws IllegalPathException { final long startTime = System.nanoTime(); // construct insert statement InsertRowStatement insertStatement = new InsertRowStatement(); @@ -397,7 +401,7 @@ public static InsertRowsStatement createStatement(TSInsertRecordsReq req) } public static InsertRowsStatement createStatement(TSInsertStringRecordsReq req) - throws IllegalPathException, QueryProcessException { + throws IllegalPathException { final long startTime = System.nanoTime(); // construct insert statement InsertRowsStatement insertStatement = new InsertRowsStatement(); @@ -509,16 +513,16 @@ public static CreateAlignedTimeSeriesStatement createStatement(TSCreateAlignedTi CreateAlignedTimeSeriesStatement statement = new CreateAlignedTimeSeriesStatement(); statement.setDevicePath(new PartialPath(req.prefixPath)); List 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 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 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); @@ -540,16 +544,16 @@ public static CreateMultiTimeSeriesStatement createStatement(TSCreateMultiTimese paths.add(new PartialPath(path)); } List 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 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 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); @@ -605,7 +609,7 @@ public static CreateSchemaTemplateStatement createStatement(TSCreateSchemaTempla List> encodings = new ArrayList<>(); List> 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<>()); @@ -652,18 +656,20 @@ public static CreateSchemaTemplateStatement createStatement(TSCreateSchemaTempla } } - for (String prefix : alignedPrefix.keySet()) { + for (Map.Entry> alignedPrefixEntry : alignedPrefix.entrySet()) { + String prefix = alignedPrefixEntry.getKey(); + List alignedMeasurements = alignedPrefixEntry.getValue(); + List thisMeasurements = new ArrayList<>(); List thisDataTypes = new ArrayList<>(); List thisEncodings = new ArrayList<>(); List 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)); @@ -675,6 +681,7 @@ public static CreateSchemaTemplateStatement createStatement(TSCreateSchemaTempla encodings.add(thisEncodings); compressors.add(thisCompressors); } + CreateSchemaTemplateStatement statement = new CreateSchemaTemplateStatement( req.getName(), measurements, dataTypes, encodings, compressors, isAlign); @@ -780,8 +787,8 @@ private static Statement invokeParser(String sql, ZoneId zoneId) { 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); @@ -891,11 +898,14 @@ public static Statement createStatement(TFetchTimeseriesReq fetchTimeseriesReq, 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; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/parameter/DeviceViewIntoPathDescriptor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/parameter/DeviceViewIntoPathDescriptor.java index 25689a71323d..6bd2c4af0dc8 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/parameter/DeviceViewIntoPathDescriptor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/parameter/DeviceViewIntoPathDescriptor.java @@ -107,10 +107,7 @@ public void bindType(ISchemaTree targetSchemaTree) { deviceToSourceTypeBoundTargetPathPairListMap.put( sourceTargetEntry.getKey(), SelectIntoUtils.bindTypeForSourceTargetPathPairList( - sourceTargetEntry.getValue(), - sourceToDataTypeMap, - targetSchemaTree, - targetDeviceToAlignedMap)); + sourceTargetEntry.getValue(), sourceToDataTypeMap, targetSchemaTree)); } this.deviceToSourceTargetPathPairListMap = deviceToSourceTypeBoundTargetPathPairListMap; } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/parameter/IntoPathDescriptor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/parameter/IntoPathDescriptor.java index 59208e3af1d8..165b4aa56d20 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/parameter/IntoPathDescriptor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/parameter/IntoPathDescriptor.java @@ -93,10 +93,7 @@ public void validate() { public void bindType(ISchemaTree targetSchemaTree) { this.sourceTargetPathPairList = SelectIntoUtils.bindTypeForSourceTargetPathPairList( - sourceTargetPathPairList, - sourceToDataTypeMap, - targetSchemaTree, - targetDeviceToAlignedMap); + sourceTargetPathPairList, sourceToDataTypeMap, targetSchemaTree); } public List> getSourceTargetPathPairList() { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/AuthorType.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/AuthorType.java index 23b816ef5043..6d41c1cc25e0 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/AuthorType.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/AuthorType.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.statement; public enum AuthorType { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/Statement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/Statement.java index 3962bae22b11..eca7ecbd704f 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/Statement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/Statement.java @@ -62,5 +62,5 @@ public boolean isAuthenticationRequired() { return true; } - public abstract List getPaths(); + public abstract List getPaths(); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/FillComponent.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/FillComponent.java index 74d3567e49c6..832dbd7b8811 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/FillComponent.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/FillComponent.java @@ -28,7 +28,9 @@ public class FillComponent extends StatementNode { private FillPolicy fillPolicy; private Literal fillValue; - public FillComponent() {} + public FillComponent() { + // do nothing + } public FillPolicy getFillPolicy() { return fillPolicy; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/FillPolicy.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/FillPolicy.java index 46f4a1be51f0..a5e6bf4a3d3f 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/FillPolicy.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/FillPolicy.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.statement.component; public enum FillPolicy { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/FromComponent.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/FromComponent.java index 1bfd1b4df265..8324188a6adc 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/FromComponent.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/FromComponent.java @@ -30,7 +30,9 @@ public class FromComponent extends StatementNode { private final List prefixPaths = new ArrayList<>(); - public FromComponent() {} + public FromComponent() { + // do nothing + } public void addPrefixPath(PartialPath prefixPath) { prefixPaths.add(prefixPath); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/GroupByComponent.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/GroupByComponent.java index fa7c7c241c39..2b3c96a91360 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/GroupByComponent.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/GroupByComponent.java @@ -25,13 +25,13 @@ public abstract class GroupByComponent extends StatementNode { - protected Expression ControlColumnExpression; + protected Expression controlColumnExpression; private boolean ignoringNull; private final WindowType windowType; - public GroupByComponent(WindowType windowType) { + protected GroupByComponent(WindowType windowType) { this.windowType = windowType; } @@ -40,11 +40,11 @@ public WindowType getWindowType() { } public void setControlColumnExpression(Expression controlColumnExpression) { - ControlColumnExpression = controlColumnExpression; + this.controlColumnExpression = controlColumnExpression; } public Expression getControlColumnExpression() { - return ControlColumnExpression; + return controlColumnExpression; } public void setIgnoringNull(boolean ignoringNull) { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/GroupByCountComponent.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/GroupByCountComponent.java index 7b7e32300c89..0f95748417ce 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/GroupByCountComponent.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/GroupByCountComponent.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.statement.component; import org.apache.iotdb.db.mpp.execution.operator.window.WindowType; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/GroupByTimeComponent.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/GroupByTimeComponent.java index fc5d8a5fdc95..40ba99f79d6a 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/GroupByTimeComponent.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/GroupByTimeComponent.java @@ -41,7 +41,9 @@ public class GroupByTimeComponent extends StatementNode { // if it is left close and right open interval private boolean leftCRightO = true; - public GroupByTimeComponent() {} + public GroupByTimeComponent() { + // do nothing + } public boolean isLeftCRightO() { return leftCRightO; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/IntoComponent.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/IntoComponent.java index 02b2c344c8c5..ab1d0b4a4282 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/IntoComponent.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/IntoComponent.java @@ -31,17 +31,17 @@ /** This class maintains information of {@code INTO} clause. */ public class IntoComponent extends StatementNode { - public static String PLACEHOLDER_MISMATCH_ERROR_MSG = + public static final String PLACEHOLDER_MISMATCH_ERROR_MSG = "select into: the correspondence between the placeholder and the raw time series could not be established."; - public static String FORBID_PLACEHOLDER_ERROR_MSG = + public static final String FORBID_PLACEHOLDER_ERROR_MSG = "select into: placeholders can only be used in raw time series data queries."; - public static String DEVICE_NUM_MISMATCH_ERROR_MSG = + public static final String DEVICE_NUM_MISMATCH_ERROR_MSG = "select into: the number of source devices and the number of target devices should be the same."; - public static String PATH_NUM_MISMATCH_ERROR_MSG = + public static final String PATH_NUM_MISMATCH_ERROR_MSG = "select into: the number of source columns and the number of target paths should be the same."; - public static String DUPLICATE_TARGET_PATH_ERROR_MSG = + public static final String DUPLICATE_TARGET_PATH_ERROR_MSG = "select into: target paths in into clause should be different."; - public static String DEVICE_ALIGNMENT_INCONSISTENT_ERROR_MSG = + public static final String DEVICE_ALIGNMENT_INCONSISTENT_ERROR_MSG = "select into: alignment property must be the same for the same device."; private final List intoItems; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/OrderByComponent.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/OrderByComponent.java index cd5b4a59cb99..193b6cee2058 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/OrderByComponent.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/OrderByComponent.java @@ -62,6 +62,9 @@ public void addSortItem(SortItem sortItem) { orderByDevice = true; deviceOrderPriority = sortItemList.size() - 1; break; + default: + throw new IllegalArgumentException( + String.format("Unknown sort key %s", sortItem.getSortKey())); } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/OrderByKey.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/OrderByKey.java index 4c1e3ae5b8c8..4cccb49d3197 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/OrderByKey.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/OrderByKey.java @@ -27,4 +27,8 @@ public class OrderByKey { public static final String DATANODEID = "DATANODEID"; public static final String ELAPSEDTIME = "ELAPSEDTIME"; public static final String STATEMENT = "STATEMENT"; + + private OrderByKey() { + // forbidding instantiation + } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/DeleteDataStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/DeleteDataStatement.java index 9e7dfb4b6631..64113a2a7ac1 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/DeleteDataStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/DeleteDataStatement.java @@ -39,8 +39,8 @@ public DeleteDataStatement() { } @Override - public List getPaths() { - return pathList; + public List getPaths() { + return getPathList(); } public List getPathList() { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertBaseStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertBaseStatement.java index 59d4462e4371..d551467b3877 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertBaseStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertBaseStatement.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.statement.crud; import org.apache.iotdb.commons.path.PartialPath; @@ -294,22 +295,22 @@ public void setFailedMeasurementIndex2Info( Map>> mapFromDeviceToMeasurementAndIndex = new HashMap<>(); for (int i = 0; i < this.measurements.length; i++) { - PartialPath devicePath; + PartialPath targetDevicePath; String measurementName; if (isLogicalView[i]) { int viewIndex = indexMapToLogicalViewList[i]; - devicePath = + targetDevicePath = this.logicalViewSchemaList.get(viewIndex).getSourcePathIfWritable().getDevicePath(); measurementName = this.logicalViewSchemaList.get(viewIndex).getSourcePathIfWritable().getMeasurement(); } else { - devicePath = this.devicePath; + targetDevicePath = this.devicePath; measurementName = this.measurements[i]; } int index = i; final String finalMeasurementName = measurementName; mapFromDeviceToMeasurementAndIndex.compute( - devicePath, + targetDevicePath, (k, v) -> { if (v == null) { List> valueList = new ArrayList<>(); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowStatement.java index 902ca3d9ac31..f51be4bdddee 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowStatement.java @@ -256,10 +256,7 @@ public void markFailedMeasurement(int index, Exception cause) { } public boolean isNeedSplit() { - if (this.indexOfSourcePathsOfLogicalViews == null) { - return false; - } - return !this.indexOfSourcePathsOfLogicalViews.isEmpty(); + return hasLogicalViewNeedProcess(); } public List getSplitList() { @@ -278,13 +275,13 @@ public List getSplitList() { statement.setNeedInferType(this.isNeedInferType); statement.setDevicePath(entry.getKey()); statement.setAligned(this.isAligned); - Object[] values = new Object[pairList.size()]; + Object[] copiedValues = new Object[pairList.size()]; String[] measurements = new String[pairList.size()]; MeasurementSchema[] measurementSchemas = new MeasurementSchema[pairList.size()]; TSDataType[] dataTypes = new TSDataType[pairList.size()]; for (int i = 0; i < pairList.size(); i++) { int realIndex = pairList.get(i).right; - values[i] = this.values[realIndex]; + copiedValues[i] = this.values[realIndex]; measurements[i] = pairList.get(i).left; measurementSchemas[i] = this.measurementSchemas[realIndex]; dataTypes[i] = this.dataTypes[realIndex]; @@ -292,7 +289,7 @@ public List getSplitList() { statement.setAligned(this.measurementIsAligned[realIndex]); } } - statement.setValues(values); + statement.setValues(copiedValues); statement.setMeasurements(measurements); statement.setMeasurementSchemas(measurementSchemas); statement.setDataTypes(dataTypes); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertTabletStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertTabletStatement.java index 8223b3e86412..ca0a08acc3e6 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertTabletStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertTabletStatement.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.statement.crud; import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot; @@ -199,10 +200,7 @@ public void markFailedMeasurement(int index, Exception cause) { } public boolean isNeedSplit() { - if (this.indexOfSourcePathsOfLogicalViews == null) { - return false; - } - return !this.indexOfSourcePathsOfLogicalViews.isEmpty(); + return hasLogicalViewNeedProcess(); } public List getSplitList() { @@ -221,30 +219,30 @@ public List getSplitList() { statement.setDevicePath(entry.getKey()); statement.setRowCount(this.rowCount); statement.setAligned(this.isAligned); - Object[] columns = new Object[pairList.size()]; + Object[] copiedColumns = new Object[pairList.size()]; String[] measurements = new String[pairList.size()]; - BitMap[] bitMaps = new BitMap[pairList.size()]; + BitMap[] copiedBitMaps = new BitMap[pairList.size()]; MeasurementSchema[] measurementSchemas = new MeasurementSchema[pairList.size()]; TSDataType[] dataTypes = new TSDataType[pairList.size()]; for (int i = 0; i < pairList.size(); i++) { int realIndex = pairList.get(i).right; - columns[i] = this.columns[realIndex]; + copiedColumns[i] = this.columns[realIndex]; measurements[i] = pairList.get(i).left; measurementSchemas[i] = this.measurementSchemas[realIndex]; dataTypes[i] = this.dataTypes[realIndex]; if (this.bitMaps != null) { - bitMaps[i] = this.bitMaps[realIndex]; + copiedBitMaps[i] = this.bitMaps[realIndex]; } if (this.measurementIsAligned != null) { statement.setAligned(this.measurementIsAligned[realIndex]); } } - statement.setColumns(columns); + statement.setColumns(copiedColumns); statement.setMeasurements(measurements); statement.setMeasurementSchemas(measurementSchemas); statement.setDataTypes(dataTypes); if (this.bitMaps != null) { - statement.setBitMaps(bitMaps); + statement.setBitMaps(copiedBitMaps); } statement.setFailedMeasurementIndex2Info(failedMeasurementIndex2Info); insertTabletStatementList.add(statement); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/LoadTsFileStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/LoadTsFileStatement.java index 9c4162195f70..4cafe48e5b94 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/LoadTsFileStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/LoadTsFileStatement.java @@ -136,7 +136,7 @@ public List getResources() { } @Override - public List getPaths() { + public List getPaths() { return Collections.emptyList(); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/QueryStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/QueryStatement.java index 2f22bff1549b..93a9732c7769 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/QueryStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/QueryStatement.java @@ -469,6 +469,9 @@ public boolean useWildcard() { return useWildcard; } + private static final String RAW_AGGREGATION_HYBRID_QUERY_ERROR_MSG = + "Raw data and aggregation hybrid query is not supported."; + public void semanticCheck() { if (isAggregationQuery()) { if (disableAlign()) { @@ -486,7 +489,7 @@ public void semanticCheck() { Set outputColumn = new HashSet<>(); for (ResultColumn resultColumn : selectComponent.getResultColumns()) { if (resultColumn.getColumnType() != ResultColumn.ColumnType.AGGREGATION) { - throw new SemanticException("Raw data and aggregation hybrid query is not supported."); + throw new SemanticException(RAW_AGGREGATION_HYBRID_QUERY_ERROR_MSG); } outputColumn.add( resultColumn.getAlias() != null @@ -495,7 +498,7 @@ public void semanticCheck() { } for (Expression expression : getExpressionSortItemList()) { if (!hasAggregationFunction(expression)) { - throw new SemanticException("Raw data and aggregation hybrid query is not supported."); + throw new SemanticException(RAW_AGGREGATION_HYBRID_QUERY_ERROR_MSG); } } if (isGroupByTag()) { @@ -527,7 +530,7 @@ public void semanticCheck() { } for (Expression expression : getExpressionSortItemList()) { if (hasAggregationFunction(expression)) { - throw new SemanticException("Raw data and aggregation hybrid query is not supported."); + throw new SemanticException(RAW_AGGREGATION_HYBRID_QUERY_ERROR_MSG); } } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/InternalBatchActivateTemplateStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/InternalBatchActivateTemplateStatement.java index b1d3cf8bd111..ace62d4cfde2 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/InternalBatchActivateTemplateStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/InternalBatchActivateTemplateStatement.java @@ -48,7 +48,7 @@ public Map> getDeviceMap() { } @Override - public List getPaths() { + public List getPaths() { return new ArrayList<>(deviceMap.keySet()); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/InternalCreateMultiTimeSeriesStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/InternalCreateMultiTimeSeriesStatement.java index 42d0b0f93584..78650ab9913a 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/InternalCreateMultiTimeSeriesStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/InternalCreateMultiTimeSeriesStatement.java @@ -46,7 +46,7 @@ public Map> getDeviceMap() { } @Override - public List getPaths() { + public List getPaths() { return new ArrayList<>(deviceMap.keySet()); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/InternalCreateTimeSeriesStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/InternalCreateTimeSeriesStatement.java index 5f7b07d0672e..c3b54c186175 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/InternalCreateTimeSeriesStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/InternalCreateTimeSeriesStatement.java @@ -85,7 +85,7 @@ public boolean isAligned() { } @Override - public List getPaths() { + public List getPaths() { return measurements.stream().map(o -> devicePath.concatNode(o)).collect(Collectors.toList()); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/LongLiteral.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/LongLiteral.java index 182a075a204d..8f1f7ed94718 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/LongLiteral.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/LongLiteral.java @@ -83,17 +83,17 @@ public int getInt() { @Override public long getLong() { - return value; + return getValue(); } @Override public float getFloat() { - return value; + return getValue(); } @Override public double getDouble() { - return value; + return getValue(); } @Override diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/NullLiteral.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/NullLiteral.java index ce2d4e056433..4ba15cbdef71 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/NullLiteral.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/literal/NullLiteral.java @@ -59,10 +59,7 @@ public boolean equals(Object o) { if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { - return false; - } - return true; + return o != null && getClass() == o.getClass(); } @Override diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreateContinuousQueryStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreateContinuousQueryStatement.java index 97d40e9fd264..a5f94aca2599 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreateContinuousQueryStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreateContinuousQueryStatement.java @@ -140,7 +140,6 @@ public String constructFormattedSQL() { sqlBuilder.append("RESAMPLE\n"); sqlBuilder.append('\t').append("EVERY ").append(everyInterval).append("ms\n"); sqlBuilder.append('\t').append("BOUNDARY ").append(boundaryTime).append("\n"); - ; sqlBuilder.append('\t').append("RANGE ").append(startTimeOffset).append("ms"); if (endTimeOffset != 0) { sqlBuilder.append(", ").append(endTimeOffset).append("ms\n"); @@ -164,7 +163,7 @@ public QueryType getQueryType() { } @Override - public List getPaths() { + public List getPaths() { return Collections.emptyList(); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreateFunctionStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreateFunctionStatement.java index e08898fdbe61..a84c70c9504e 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreateFunctionStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreateFunctionStatement.java @@ -83,7 +83,7 @@ public QueryType getQueryType() { } @Override - public List getPaths() { + public List getPaths() { return Collections.emptyList(); } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreatePipePluginStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreatePipePluginStatement.java index 332ee48c4156..7b380909bfa9 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreatePipePluginStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreatePipePluginStatement.java @@ -61,7 +61,7 @@ public QueryType getQueryType() { } @Override - public List getPaths() { + public List getPaths() { return Collections.emptyList(); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreateTriggerStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreateTriggerStatement.java index f2e05650b4a6..af7f299c90b3 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreateTriggerStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreateTriggerStatement.java @@ -114,7 +114,7 @@ public QueryType getQueryType() { } @Override - public List getPaths() { + public List getPaths() { return Collections.singletonList(pathPattern); } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DatabaseSchemaStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DatabaseSchemaStatement.java index 930c2956be96..8a08e735e7ad 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DatabaseSchemaStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DatabaseSchemaStatement.java @@ -34,7 +34,7 @@ public class DatabaseSchemaStatement extends Statement implements IConfigStateme private final DatabaseSchemaStatementType subType; private PartialPath databasePath; - private Long TTL = null; + private Long ttl = null; private Integer schemaReplicationFactor = null; private Integer dataReplicationFactor = null; private Long timePartitionInterval = null; @@ -59,12 +59,12 @@ public void setDatabasePath(PartialPath databasePath) { this.databasePath = databasePath; } - public Long getTTL() { - return TTL; + public Long getTtl() { + return ttl; } - public void setTTL(Long TTL) { - this.TTL = TTL; + public void setTtl(Long ttl) { + this.ttl = ttl; } public Integer getSchemaReplicationFactor() { @@ -134,7 +134,7 @@ public String toString() { + "storageGroupPath=" + databasePath + ", ttl=" - + TTL + + ttl + ", schemaReplicationFactor=" + schemaReplicationFactor + ", dataReplicationFactor=" diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DropContinuousQueryStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DropContinuousQueryStatement.java index a4fddad83c82..7d3095baa378 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DropContinuousQueryStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DropContinuousQueryStatement.java @@ -49,7 +49,7 @@ public QueryType getQueryType() { } @Override - public List getPaths() { + public List getPaths() { return Collections.emptyList(); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DropFunctionStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DropFunctionStatement.java index 03821ee92591..e72e6be50ca4 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DropFunctionStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DropFunctionStatement.java @@ -54,7 +54,7 @@ public QueryType getQueryType() { } @Override - public List getPaths() { + public List getPaths() { return Collections.emptyList(); } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DropPipePluginStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DropPipePluginStatement.java index a5d883962e71..4ece5fd37d64 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DropPipePluginStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DropPipePluginStatement.java @@ -49,7 +49,7 @@ public QueryType getQueryType() { } @Override - public List getPaths() { + public List getPaths() { return Collections.emptyList(); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DropTriggerStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DropTriggerStatement.java index c4f3665c1a04..6df8d6b5e1c6 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DropTriggerStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/DropTriggerStatement.java @@ -71,7 +71,7 @@ public boolean isAuthenticationRequired() { } @Override - public List getPaths() { + public List getPaths() { return isAuthenticationRequired() ? Collections.singletonList(authPath) : Collections.emptyList(); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/MigrateRegionStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/MigrateRegionStatement.java index c993747ddf6e..c85f11a9b90e 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/MigrateRegionStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/MigrateRegionStatement.java @@ -38,29 +38,29 @@ // TODO: Whether to support more complex migration, such as, migrate all region from 1, 2 to 5, 6 public class MigrateRegionStatement extends Statement implements IConfigStatement { - private final int RegionId; + private final int regionId; - private final int FromId; + private final int fromId; - private final int ToId; + private final int toId; - public MigrateRegionStatement(int RegionId, int FromId, int ToId) { + public MigrateRegionStatement(int regionId, int fromId, int toId) { super(); - this.RegionId = RegionId; - this.FromId = FromId; - this.ToId = ToId; + this.regionId = regionId; + this.fromId = fromId; + this.toId = toId; } public int getRegionId() { - return RegionId; + return regionId; } public int getFromId() { - return FromId; + return fromId; } public int getToId() { - return ToId; + return toId; } @Override diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/ShowClusterStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/ShowClusterStatement.java index be001b932feb..106f0702fed7 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/ShowClusterStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/ShowClusterStatement.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.statement.metadata; import org.apache.iotdb.db.mpp.plan.analyze.QueryType; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/ShowVariablesStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/ShowVariablesStatement.java index 40b028012f4f..6d52493d99fb 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/ShowVariablesStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/ShowVariablesStatement.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.statement.metadata; import org.apache.iotdb.db.mpp.plan.analyze.QueryType; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/CreateModelStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/CreateModelStatement.java index 47372902aa52..aa2237492488 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/CreateModelStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/CreateModelStatement.java @@ -39,7 +39,9 @@ public class CreateModelStatement extends Statement implements IConfigStatement private Map attributes; private QueryStatement queryStatement; - public CreateModelStatement() {} + public CreateModelStatement() { + // do nothing + } public String getModelId() { return modelId; @@ -91,7 +93,7 @@ public void semanticCheck() { } @Override - public List getPaths() { + public List getPaths() { return Collections.emptyList(); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/DropModelStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/DropModelStatement.java index 16ecc95cdfe9..8b59f0919745 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/DropModelStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/DropModelStatement.java @@ -41,7 +41,7 @@ public String getModelId() { } @Override - public List getPaths() { + public List getPaths() { return Collections.emptyList(); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/ShowModelsStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/ShowModelsStatement.java index 88f075889ca5..b9b84c5eb130 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/ShowModelsStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/ShowModelsStatement.java @@ -30,10 +30,12 @@ public class ShowModelsStatement extends Statement implements IConfigStatement { - public ShowModelsStatement() {} + public ShowModelsStatement() { + // do nothing + } @Override - public List getPaths() { + public List getPaths() { return Collections.emptyList(); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/ShowTrailsStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/ShowTrailsStatement.java index 108ec8eb9267..d4392a8f2f6f 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/ShowTrailsStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/ShowTrailsStatement.java @@ -41,7 +41,7 @@ public String getModelId() { } @Override - public List getPaths() { + public List getPaths() { return Collections.emptyList(); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/ActivateTemplateStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/ActivateTemplateStatement.java index eee2d7133262..80d74fac9901 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/ActivateTemplateStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/ActivateTemplateStatement.java @@ -43,7 +43,7 @@ public ActivateTemplateStatement(PartialPath path) { } @Override - public List getPaths() { + public List getPaths() { return Collections.singletonList(path); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/AlterSchemaTemplateStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/AlterSchemaTemplateStatement.java index 9a501ee621e3..0be7251561b9 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/AlterSchemaTemplateStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/AlterSchemaTemplateStatement.java @@ -32,6 +32,7 @@ import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding; +import java.util.Collections; import java.util.List; public class AlterSchemaTemplateStatement extends Statement implements IConfigStatement { @@ -74,8 +75,8 @@ public QueryType getQueryType() { } @Override - public List getPaths() { - return null; + public List getPaths() { + return Collections.emptyList(); } @Override diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/BatchActivateTemplateStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/BatchActivateTemplateStatement.java index 08dd879eec68..efe4b4f1d2dd 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/BatchActivateTemplateStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/BatchActivateTemplateStatement.java @@ -37,8 +37,8 @@ public BatchActivateTemplateStatement(List devicePathList) { } @Override - public List getPaths() { - return devicePathList; + public List getPaths() { + return getDevicePathList(); } public List getDevicePathList() { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/CreateSchemaTemplateStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/CreateSchemaTemplateStatement.java index a5c2ed3ef3e4..1d162429b6a0 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/CreateSchemaTemplateStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/CreateSchemaTemplateStatement.java @@ -29,6 +29,7 @@ import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -41,9 +42,6 @@ public class CreateSchemaTemplateStatement extends Statement implements IConfigS List compressors; boolean isAligned; - // constant to help resolve serialized sequence - private static final int NEW_PLAN = -1; - public CreateSchemaTemplateStatement() { super(); statementType = StatementType.CREATE_TEMPLATE; @@ -74,8 +72,8 @@ public CreateSchemaTemplateStatement( } @Override - public List getPaths() { - return null; + public List getPaths() { + return Collections.emptyList(); } public String getName() { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/DeactivateTemplateStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/DeactivateTemplateStatement.java index 11b124b9df50..9ab96f6d2029 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/DeactivateTemplateStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/DeactivateTemplateStatement.java @@ -48,8 +48,8 @@ public DeactivateTemplateStatement(String templateName, List pathPa } @Override - public List getPaths() { - return pathPatternList; + public List getPaths() { + return getPathPatternList(); } public String getTemplateName() { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/DropSchemaTemplateStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/DropSchemaTemplateStatement.java index c8f6bfd928bc..f7b4b4adf015 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/DropSchemaTemplateStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/DropSchemaTemplateStatement.java @@ -58,7 +58,7 @@ public QueryType getQueryType() { } @Override - public List getPaths() { + public List getPaths() { return Collections.emptyList(); } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/UnsetSchemaTemplateStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/UnsetSchemaTemplateStatement.java index 00762be2671f..2460faf34b6c 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/UnsetSchemaTemplateStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/template/UnsetSchemaTemplateStatement.java @@ -68,7 +68,7 @@ public QueryType getQueryType() { } @Override - public List getPaths() { + public List getPaths() { return Collections.singletonList(path); } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/view/CreateLogicalViewStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/view/CreateLogicalViewStatement.java index bd6a20d96ae7..bd0bbc95d8bf 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/view/CreateLogicalViewStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/view/CreateLogicalViewStatement.java @@ -22,6 +22,7 @@ import org.apache.iotdb.commons.path.PartialPath; import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpression; import org.apache.iotdb.db.exception.metadata.view.UnsupportedViewException; +import org.apache.iotdb.db.exception.sql.SemanticException; import org.apache.iotdb.db.metadata.view.ViewPathType; import org.apache.iotdb.db.metadata.view.ViewPaths; import org.apache.iotdb.db.mpp.plan.analyze.SelectIntoUtils; @@ -130,7 +131,7 @@ public void setSourceExpressions(List expressionList) // check expressions, make sure no aggregation function expression Pair checkResult = ViewPaths.checkExpressionList(expressionList); - if (checkResult.left) { + if (Boolean.TRUE.equals(checkResult.left)) { this.sourcePaths.setExpressionsList(expressionList); } else { throw checkResult.right; @@ -180,7 +181,7 @@ public void parseIntoItemIfNecessary() { targetPathsList.add( SelectIntoUtils.constructTargetPath(sourcePath, deviceTemplate, measurementTemplate)); } else { - throw new RuntimeException( + throw new SemanticException( new UnsupportedViewException( "Cannot create views using data sources with calculated expressions while using into item.")); } @@ -232,9 +233,13 @@ public Pair checkSourcePathsIfNotUsingQueryStatement() { */ public Pair checkAllPaths() { Pair result = this.checkTargetPaths(); - if (result.left == false) return result; + if (Boolean.FALSE.equals(result.left)) { + return result; + } result = this.checkSourcePathsIfNotUsingQueryStatement(); - if (result.left == false) return result; + if (Boolean.FALSE.equals(result.left)) { + return result; + } return new Pair<>(true, null); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/view/RenameLogicalViewStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/view/RenameLogicalViewStatement.java index 08eea629c091..91ad93597127 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/view/RenameLogicalViewStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/view/RenameLogicalViewStatement.java @@ -57,7 +57,7 @@ public void setNewName(PartialPath newName) { } @Override - public List getPaths() { + public List getPaths() { return Arrays.asList(oldName, newName); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/AuthorStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/AuthorStatement.java index 05127a7c3b6e..38651abfd815 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/AuthorStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/AuthorStatement.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.statement.sys; import org.apache.iotdb.commons.path.PartialPath; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/ExplainStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/ExplainStatement.java index 6c2b294741f2..f25468ab393a 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/ExplainStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/ExplainStatement.java @@ -39,7 +39,7 @@ public QueryStatement getQueryStatement() { } @Override - public List getPaths() { + public List getPaths() { return queryStatement.getPaths(); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/KillQueryStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/KillQueryStatement.java index 2b4b75de8f94..1717fafbe179 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/KillQueryStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/KillQueryStatement.java @@ -48,7 +48,7 @@ public String getQueryId() { } @Override - public List getPaths() { + public List getPaths() { return Collections.emptyList(); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/LoadConfigurationStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/LoadConfigurationStatement.java index b2189579b261..c1c6c9a55b6e 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/LoadConfigurationStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/LoadConfigurationStatement.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.statement.sys; import org.apache.iotdb.commons.path.PartialPath; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/SetSystemStatusStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/SetSystemStatusStatement.java index 54b657d7d90c..de56479bbb5c 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/SetSystemStatusStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/SetSystemStatusStatement.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.mpp.plan.statement.sys; import org.apache.iotdb.commons.cluster.NodeStatus; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/ShowQueriesStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/ShowQueriesStatement.java index ce8ad3a9de72..79b1e612cff5 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/ShowQueriesStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/ShowQueriesStatement.java @@ -42,7 +42,9 @@ public class ShowQueriesStatement extends ShowStatement { private ZoneId zoneId; - public ShowQueriesStatement() {} + public ShowQueriesStatement() { + // do nothing + } @Override public boolean isQuery() { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/ShowVersionStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/ShowVersionStatement.java index 2e4ee20cfb57..4a0817054498 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/ShowVersionStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/ShowVersionStatement.java @@ -24,7 +24,9 @@ public class ShowVersionStatement extends ShowStatement { - public ShowVersionStatement() {} + public ShowVersionStatement() { + // do nothing + } @Override public R accept(StatementVisitor visitor, C context) { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/quota/ShowSpaceQuotaStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/quota/ShowSpaceQuotaStatement.java index 35669ec7e805..d95e57bf7870 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/quota/ShowSpaceQuotaStatement.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/quota/ShowSpaceQuotaStatement.java @@ -52,7 +52,7 @@ public QueryType getQueryType() { @Override public List getPaths() { - return databases; + return getDatabases(); } @Override diff --git a/server/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java index 6000f1f17798..114f389d62b1 100644 --- a/server/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java +++ b/server/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java @@ -129,6 +129,10 @@ public static TSStatus tryCatchQueryException(Exception e) { } else if (t instanceof TsFileRuntimeException) { return RpcUtils.getStatus(TSStatusCode.TSFILE_PROCESSOR_ERROR, rootCause.getMessage()); } else if (t instanceof SemanticException) { + if (t.getCause() instanceof IoTDBException) { + return RpcUtils.getStatus( + ((IoTDBException) t.getCause()).getErrorCode(), rootCause.getMessage()); + } return RpcUtils.getStatus(TSStatusCode.SEMANTIC_ERROR, rootCause.getMessage()); } diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TimeValuePair.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TimeValuePair.java index 86a4aea1ebf7..4bc768471c72 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TimeValuePair.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TimeValuePair.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read; import org.apache.iotdb.tsfile.utils.TsPrimitiveType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileCheckStatus.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileCheckStatus.java index d63aa8349993..8f9c693d9ca3 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileCheckStatus.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileCheckStatus.java @@ -24,4 +24,8 @@ public class TsFileCheckStatus { public static final long FILE_EXISTS_MISTAKES = -1; public static final long INCOMPATIBLE_FILE = -2; public static final long FILE_NOT_FOUND = -3; + + private TsFileCheckStatus() { + // forbidding instantiation + } } diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileDeviceIterator.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileDeviceIterator.java index 075c8da0eae4..35d5fde9dc39 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileDeviceIterator.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileDeviceIterator.java @@ -57,7 +57,7 @@ public Pair current() { public boolean hasNext() { if (!queue.isEmpty()) { return true; - } else if (leafDeviceNodeOffsetList.size() == 0) { + } else if (leafDeviceNodeOffsetList.isEmpty()) { // device queue is empty and all device leaf node has been read return false; } else { diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileReader.java index 04e3ed2104f1..18a6476af7e0 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileReader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileReader.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read; import org.apache.iotdb.tsfile.read.controller.CachedChunkLoaderImpl; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java index 529a310a7bb3..56602d07b091 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read; import org.apache.iotdb.tsfile.common.conf.TSFileConfig; @@ -80,6 +81,7 @@ import java.util.List; import java.util.Map; import java.util.NoSuchElementException; +import java.util.Objects; import java.util.Queue; import java.util.Set; import java.util.TreeMap; @@ -101,7 +103,10 @@ public class TsFileSequenceReader implements AutoCloseable { protected long fileMetadataPos; protected int fileMetadataSize; private ByteBuffer markerBuffer = ByteBuffer.allocate(Byte.BYTES); + + @SuppressWarnings("squid:S3077") protected volatile TsFileMetadata tsFileMetaData; + // device -> measurement -> TimeseriesMetadata private Map> cachedDeviceMetadata = new ConcurrentHashMap<>(); @@ -681,7 +686,7 @@ public void getDevicesAndEntriesOfOneLeafNode( private void getDevicesOfLeafNode( MetadataIndexNode deviceLeafNode, Queue> measurementNodeOffsetQueue) { if (!deviceLeafNode.getNodeType().equals(MetadataIndexNodeType.LEAF_DEVICE)) { - throw new RuntimeException("the first param should be device leaf node."); + throw new IllegalStateException("the first param should be device leaf node."); } List childrenEntries = deviceLeafNode.getChildren(); for (int i = 0; i < childrenEntries.size(); i++) { @@ -704,7 +709,7 @@ private void getDevicesOfLeafNode( private void getAllDeviceLeafNodeOffset( MetadataIndexNode deviceInternalNode, List leafDeviceNodeOffsets) throws IOException { if (!deviceInternalNode.getNodeType().equals(MetadataIndexNodeType.INTERNAL_DEVICE)) { - throw new RuntimeException("the first param should be device internal node."); + throw new IllegalStateException("the first param should be device internal node."); } try { int metadataIndexListSize = deviceInternalNode.getChildren().size(); @@ -1988,27 +1993,29 @@ public List getAlignedChunkMetadata(String device) throws } } - for (List timeseriesMetadataList : timeseriesMetadataMap.values()) { - TimeseriesMetadata timeseriesMetadata = timeseriesMetadataList.get(0); - List valueTimeseriesMetadataList = new ArrayList<>(); + if (timeseriesMetadataMap.values().size() != 1) { + throw new IOException( + String.format( + "Error when reading timeseriesMetadata of device %s in file %s: should only one timeseriesMetadataList in one device, actual: %d", + device, file, timeseriesMetadataMap.values().size())); + } - for (int i = 1; i < timeseriesMetadataList.size(); i++) { - valueTimeseriesMetadataList.add(timeseriesMetadataList.get(i)); - } + List timeseriesMetadataList = + timeseriesMetadataMap.values().iterator().next(); + TimeseriesMetadata timeseriesMetadata = timeseriesMetadataList.get(0); + List valueTimeseriesMetadataList = new ArrayList<>(); - AlignedTimeSeriesMetadata alignedTimeSeriesMetadata = - new AlignedTimeSeriesMetadata(timeseriesMetadata, valueTimeseriesMetadataList); - List chunkMetadataList = new ArrayList<>(); - for (IChunkMetadata chunkMetadata : readIChunkMetaDataList(alignedTimeSeriesMetadata)) { - chunkMetadataList.add((AlignedChunkMetadata) chunkMetadata); - } - // only one timeseriesMetadataList in one device - return chunkMetadataList; + for (int i = 1; i < timeseriesMetadataList.size(); i++) { + valueTimeseriesMetadataList.add(timeseriesMetadataList.get(i)); } - throw new IOException( - String.format( - "Error when reading timeseriesMetadata of device %s in file %s", device, file)); + AlignedTimeSeriesMetadata alignedTimeSeriesMetadata = + new AlignedTimeSeriesMetadata(timeseriesMetadata, valueTimeseriesMetadataList); + List chunkMetadataList = new ArrayList<>(); + for (IChunkMetadata chunkMetadata : readIChunkMetaDataList(alignedTimeSeriesMetadata)) { + chunkMetadataList.add((AlignedChunkMetadata) chunkMetadata); + } + return chunkMetadataList; } /** @@ -2123,7 +2130,7 @@ private boolean hasDataInPartition( for (ChunkMetadata chunkMetadata : chunkMetadataList) { LocateStatus location = MetadataQuerierByFileImpl.checkLocateStatus(chunkMetadata, start, end); - if (location == LocateStatus.in) { + if (location == LocateStatus.IN) { return true; } } @@ -2140,9 +2147,9 @@ private boolean hasDataInPartition( * space partition. */ public enum LocateStatus { - in, - before, - after + IN, + BEFORE, + AFTER } public long getMinPlanIndex() { @@ -2262,8 +2269,20 @@ public MetadataIndexNode readMetadataIndexNode(long start, long end) throws IOEx return MetadataIndexNode.deserializeFrom(readData(start, end)); } + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TsFileSequenceReader reader = (TsFileSequenceReader) o; + return file.equals(reader.file); + } + @Override public int hashCode() { - return file.hashCode(); + return Objects.hash(file); } } diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/UnClosedTsFileReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/UnClosedTsFileReader.java index a77727ab16c3..fb0e320fde5d 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/UnClosedTsFileReader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/UnClosedTsFileReader.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read; import org.apache.iotdb.tsfile.exception.NotImplementedException; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/BatchData.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/BatchData.java index 3ff8c5f7ac1b..4d57583d80a0 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/BatchData.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/BatchData.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common; import org.apache.iotdb.tsfile.common.conf.TSFileConfig; @@ -60,7 +61,7 @@ public class BatchData { protected TSDataType dataType; - protected BatchDataType batchDataType = BatchDataType.Ordinary; + protected BatchDataType batchDataType = BatchDataType.ORDINARY; // outer list index for read protected int readCurListIndex; @@ -731,11 +732,15 @@ public void serializeData(DataOutputStream outputStream) throws IOException { case INT32: outputStream.writeInt(value.getInt()); break; + default: + throw new IllegalArgumentException("Unknown data type for BatchData:" + dataType); } } } } break; + default: + throw new IllegalArgumentException("Unknown data type for BatchData:" + dataType); } } @@ -770,9 +775,9 @@ public BatchData flip() { } public enum BatchDataType { - Ordinary, - DescRead, - DescReadWrite; + ORDINARY, + DESC_READ, + DESC_READ_WRITE; BatchDataType() {} @@ -851,7 +856,9 @@ public TimeValuePair currentTimeValuePair() { } @Override - public void close() {} + public void close() { + // do nothing + } } private class VectorBatchDataIterator extends BatchDataIterator { @@ -873,7 +880,7 @@ public boolean hasNext() { @Override public boolean hasNext(long minBound, long maxBound) { while (BatchData.this.hasCurrent() && currentValue() == null) { - if (currentTime() < minBound || currentTime() >= maxBound) { + if (super.currentTime() < minBound || super.currentTime() >= maxBound) { break; } super.next(); @@ -896,7 +903,7 @@ public int totalLength() { int readCurListIndexSave = BatchData.this.readCurListIndex; while (hasNext()) { cnt++; - next(); + super.next(); } BatchData.this.readCurArrayIndex = readCurArrayIndexSave; BatchData.this.readCurListIndex = readCurListIndexSave; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Chunk.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Chunk.java index bc51e33112da..039257e3bdf0 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Chunk.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Chunk.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common; import org.apache.iotdb.tsfile.file.MetaMarker; @@ -38,8 +39,6 @@ public class Chunk { /** A list of deleted intervals. */ private List deleteIntervalList; - private long ramSize; - public Chunk( ChunkHeader header, ByteBuffer buffer, diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/DescReadBatchData.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/DescReadBatchData.java index ebfc20434a67..16e359f16a57 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/DescReadBatchData.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/DescReadBatchData.java @@ -29,12 +29,12 @@ public class DescReadBatchData extends BatchData { public DescReadBatchData() { - batchDataType = BatchDataType.DescRead; + batchDataType = BatchDataType.DESC_READ; } public DescReadBatchData(TSDataType dataType) { super(dataType); - batchDataType = BatchDataType.DescRead; + batchDataType = BatchDataType.DESC_READ; } @Override diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/DescReadWriteBatchData.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/DescReadWriteBatchData.java index fe8f481d2bab..6d9e15c1218d 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/DescReadWriteBatchData.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/DescReadWriteBatchData.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common; import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException; @@ -37,7 +38,7 @@ public class DescReadWriteBatchData extends DescReadBatchData { public DescReadWriteBatchData(TSDataType dataType) { super(); - this.batchDataType = BatchDataType.DescReadWrite; + this.batchDataType = BatchDataType.DESC_READ_WRITE; this.dataType = dataType; this.readCurListIndex = 0; this.readCurArrayIndex = 0; @@ -484,11 +485,15 @@ public void serializeData(DataOutputStream outputStream) throws IOException { case INT32: outputStream.writeInt(value.getInt()); break; + default: + throw new UnSupportedDataTypeException(String.valueOf(dataType)); } } } } break; + default: + throw new UnSupportedDataTypeException(String.valueOf(dataType)); } } diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/ExceptionBatchData.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/ExceptionBatchData.java deleted file mode 100644 index b26284b7836a..000000000000 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/ExceptionBatchData.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.iotdb.tsfile.read.common; - -public class ExceptionBatchData extends BatchData { - - private Throwable throwable; - - public ExceptionBatchData(Throwable throwable) { - this.throwable = throwable; - } - - @Override - public boolean hasCurrent() { - throw new UnsupportedOperationException("hasCurrent is not supported for ExceptionBatchData"); - } - - public Throwable getThrowable() { - return throwable; - } -} diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Field.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Field.java index b15a4aa31051..82c580d97be8 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Field.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Field.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common; import org.apache.iotdb.tsfile.exception.NullFieldException; @@ -30,7 +31,7 @@ */ public class Field { - private TSDataType dataType; + private final TSDataType dataType; private boolean boolV; private int intV; private long longV; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Path.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Path.java index 043a950099e6..bff37836eeac 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Path.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Path.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common; import org.apache.iotdb.tsfile.common.constant.TsFileConstant; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/RowRecord.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/RowRecord.java index 51d04e227069..5fb65793fcd3 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/RowRecord.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/RowRecord.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/SignalBatchData.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/SignalBatchData.java index 31aaa4fecb7d..fea8f782d5bb 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/SignalBatchData.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/SignalBatchData.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common; /** It is an empty signal to notify the caller that there is no more batch data after it. */ diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/TimeRange.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/TimeRange.java index bd7ff50fb32a..77ddb5ad60ee 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/TimeRange.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/TimeRange.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common; import org.apache.iotdb.tsfile.read.expression.IExpression; @@ -234,11 +235,9 @@ public boolean overlaps(TimeRange rhs) { } else if (!this.rightClose && !rhs.leftClose && rhs.min + 1 >= this.max) { // e.g., this:[1,5) does not overlap with rhs:(4,6] return false; - } else if (this.rightClose && rhs.leftClose && rhs.min > this.max) { - // e.g., this:[1,5] does not overlap with rhs:[6,8] - return false; } else { - return true; + // e.g., this:[1,5] does not overlap with rhs:[6,8] + return !this.rightClose || !rhs.leftClose || rhs.min <= this.max; } } diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlock.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlock.java index 9f37f4b780db..a22793fa486b 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlock.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlock.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block; import org.apache.iotdb.tsfile.read.TimeValuePair; @@ -29,6 +30,7 @@ import java.util.Arrays; import java.util.Iterator; +import java.util.NoSuchElementException; import static java.lang.String.format; import static java.util.Objects.requireNonNull; @@ -108,7 +110,6 @@ public boolean isEmpty() { } public long getRetainedSizeInBytes() { - long retainedSizeInBytes = this.retainedSizeInBytes; if (retainedSizeInBytes < 0) { return updateRetainedSize(); } @@ -312,7 +313,9 @@ public TimeValuePair currentTimeValuePair() { } @Override - public void close() {} + public void close() { + // do nothing + } public long getEndTime() { return TsBlock.this.getEndTime(); @@ -350,13 +353,17 @@ public boolean hasNext() { /** @return A row in the TsBlock. The timestamp is at the last column. */ @Override public Object[] next() { - int columnCount = getValueColumnCount(); - Object[] row = new Object[columnCount + 1]; - for (int i = 0; i < columnCount; ++i) { + if (!hasNext()) { + throw new NoSuchElementException(); + } + + int curColumnCount = getValueColumnCount(); + Object[] row = new Object[curColumnCount + 1]; + for (int i = 0; i < curColumnCount; ++i) { final Column column = valueColumns[i]; row[i] = column.isNull(rowIndex) ? null : column.getObject(rowIndex); } - row[columnCount] = timeColumn.getObject(rowIndex); + row[curColumnCount] = timeColumn.getObject(rowIndex); rowIndex++; @@ -441,7 +448,9 @@ public TimeValuePair currentTimeValuePair() { } @Override - public void close() {} + public void close() { + // do nothing + } public long getEndTime() { return TsBlock.this.getEndTime(); @@ -470,13 +479,13 @@ private boolean isCurrentValueAllNull() { } private long updateRetainedSize() { - long retainedSizeInBytes = INSTANCE_SIZE; - retainedSizeInBytes += timeColumn.getRetainedSizeInBytes(); + long newRetainedSizeInBytes = INSTANCE_SIZE; + newRetainedSizeInBytes += timeColumn.getRetainedSizeInBytes(); for (Column column : valueColumns) { - retainedSizeInBytes += column.getRetainedSizeInBytes(); + newRetainedSizeInBytes += column.getRetainedSizeInBytes(); } - this.retainedSizeInBytes = retainedSizeInBytes; - return retainedSizeInBytes; + this.retainedSizeInBytes = newRetainedSizeInBytes; + return newRetainedSizeInBytes; } public int getTotalInstanceSize() { diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilder.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilder.java index c309835a09f5..29370d2735fb 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilder.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilder.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block; import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilderStatus.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilderStatus.java index 15d585800c16..47fae34ea3df 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilderStatus.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilderStatus.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block; import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockMetadata.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockMetadata.java deleted file mode 100644 index 0f16f1e5c4c8..000000000000 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockMetadata.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.iotdb.tsfile.read.common.block; - -import java.util.List; - -public class TsBlockMetadata { - // list of all columns in current TsBlock - // The column list not only contains the series column, but also contains other column to - // construct the final result - // set such as timestamp and deviceName - private List columnList; - - // Indicate whether the result set should be aligned by device. This parameter can be used for - // downstream operators - // when processing data from current TsBlock. The RowRecord produced by TsBlock with - // `alignedByDevice = true` will contain - // n + 2 fields which are n series field, 1 deviceName field and 1 timestamp. - // For example, when the FilterOperator execute the filter operation, it may need the deviceName - // field when matching - // the series with corresponding column in Tablet - // - // If alignedByDevice is true, the owned series should belong to one device - private boolean alignedByDevice; -} diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockUtil.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockUtil.java index 34f1cd42dc63..8e10bcea0237 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockUtil.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockUtil.java @@ -41,7 +41,9 @@ public static int getFirstConditionIndex( TsBlock tsBlock, TimeRange targetTimeRange, boolean ascending) { TimeColumn timeColumn = tsBlock.getTimeColumn(); long targetTime = ascending ? targetTimeRange.getMin() : targetTimeRange.getMax(); - int left = 0, right = timeColumn.getPositionCount() - 1, mid; + int left = 0; + int right = timeColumn.getPositionCount() - 1; + int mid; while (left < right) { mid = (left + right) >> 1; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumn.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumn.java index 0aa80cff18ef..0c82f97cf302 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumn.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumn.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumnBuilder.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumnBuilder.java index ad1e05ac61b3..48706a317d99 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumnBuilder.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumnBuilder.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumn.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumn.java index 39995db4e14e..6d64b841cc20 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumn.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumn.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumnBuilder.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumnBuilder.java index ba408840230c..37958d678848 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumnBuilder.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumnBuilder.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/Column.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/Column.java index 203ea58b25d6..5cc8385daeaf 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/Column.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/Column.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnBuilder.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnBuilder.java index cf88949d74fa..14b946dbb834 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnBuilder.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnBuilder.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnBuilderStatus.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnBuilderStatus.java index 86dca2ee503b..afe8fa8e05c5 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnBuilderStatus.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnBuilderStatus.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilderStatus; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnEncoderFactory.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnEncoderFactory.java index 2ac585643a54..f6055a8b5ee4 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnEncoderFactory.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnEncoderFactory.java @@ -24,6 +24,10 @@ public class ColumnEncoderFactory { + private ColumnEncoderFactory() { + // util class + } + private static final Map encodingToEncoder = new HashMap<>(); static { diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnUtil.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnUtil.java index 150f713d18cf..ddf5db413fe7 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnUtil.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnUtil.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import static java.lang.Math.ceil; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumn.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumn.java index c7966f1653b2..7324123b12ca 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumn.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumn.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumnBuilder.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumnBuilder.java index 78f9faa068ae..52de139ed023 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumnBuilder.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumnBuilder.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumn.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumn.java index cd96c17812a7..69694acfaaed 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumn.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumn.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumnBuilder.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumnBuilder.java index c5f97b77fc6d..27823f729505 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumnBuilder.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumnBuilder.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumn.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumn.java index b0ac59aef55e..8eee589c9061 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumn.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumn.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumnBuilder.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumnBuilder.java index 00e6863cea36..78030eb10727 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumnBuilder.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumnBuilder.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumn.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumn.java index cf7e64da5d6e..47dd972a28d2 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumn.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumn.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumnBuilder.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumnBuilder.java index 5f0037f68815..76f3cc554c4a 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumnBuilder.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumnBuilder.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/NullColumn.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/NullColumn.java index b50bc77a2f9d..ffd70136d730 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/NullColumn.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/NullColumn.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; @@ -96,7 +97,9 @@ public Column subColumn(int fromIndex) { } @Override - public void reverse() {} + public void reverse() { + // do nothing + } public static Column create(TSDataType dataType, int positionCount) { requireNonNull(dataType, "dataType is null"); diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/RunLengthEncodedColumn.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/RunLengthEncodedColumn.java index 54174d477632..449471a703f0 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/RunLengthEncodedColumn.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/RunLengthEncodedColumn.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumn.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumn.java index ee6e6d3699a6..89261c6a32bc 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumn.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumn.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumnBuilder.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumnBuilder.java index 59157916be6e..c5bca16b88fa 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumnBuilder.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumnBuilder.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.block.column; import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathNodesGenerator.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathNodesGenerator.java index 30033ef65d3a..5aa49cffbd29 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathNodesGenerator.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathNodesGenerator.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.parser; import org.apache.iotdb.db.qp.sql.PathParser; @@ -31,7 +32,12 @@ /** convert String path to String[] nodes * */ public class PathNodesGenerator { - private static PathVisitor pathVisitor = new PathVisitor(); + + private PathNodesGenerator() { + // forbidding instantiation + } + + private static final PathVisitor pathVisitor = new PathVisitor(); public static String[] splitPathToNodes(String path) throws PathParseException { try { @@ -69,8 +75,8 @@ private static String[] invokeParser(String path) { try { // STAGE 1: try with simpler/faster SLL(*) tree = pathParser1.path(); - // 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(path); diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathParseError.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathParseError.java index e106c408e374..f99912ddeeb6 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathParseError.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathParseError.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.parser; import org.antlr.v4.runtime.BaseErrorListener; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathVisitor.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathVisitor.java index 9347e2a0e74e..e5a1514a41b2 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathVisitor.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathVisitor.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.common.parser; import org.apache.iotdb.db.qp.sql.PathParser; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/TypeFactory.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/TypeFactory.java index d292465f55b5..ed52a9fef958 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/TypeFactory.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/TypeFactory.java @@ -22,6 +22,11 @@ import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; public class TypeFactory { + + private TypeFactory() { + // forbidding instantiation + } + public static Type getType(TSDataType tsDataType) { switch (tsDataType) { case INT32: diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/CachedChunkLoaderImpl.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/CachedChunkLoaderImpl.java index c0f76b52d62d..77733ca2af92 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/CachedChunkLoaderImpl.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/CachedChunkLoaderImpl.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.controller; import org.apache.iotdb.tsfile.common.cache.LRUCache; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IChunkLoader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IChunkLoader.java index 27554c2563db..96e59abb2a58 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IChunkLoader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IChunkLoader.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.controller; import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IChunkMetadataLoader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IChunkMetadataLoader.java index 5d8421637b45..5a43921b87c2 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IChunkMetadataLoader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IChunkMetadataLoader.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.controller; import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IMetadataQuerier.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IMetadataQuerier.java index 77eb09dfd5e0..d3f1c9cf675c 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IMetadataQuerier.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IMetadataQuerier.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.controller; import org.apache.iotdb.tsfile.exception.write.NoMeasurementException; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/MetadataQuerierByFileImpl.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/MetadataQuerierByFileImpl.java index c5fea77b217a..a86364c24a7b 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/MetadataQuerierByFileImpl.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/MetadataQuerierByFileImpl.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.controller; import org.apache.iotdb.tsfile.common.cache.LRUCache; @@ -193,11 +194,11 @@ public List convertSpace2TimePartition( for (IChunkMetadata chunkMetadata : seriesMetadata.getValue()) { LocateStatus location = checkLocateStatus(chunkMetadata, spacePartitionStartPos, spacePartitionEndPos); - if (location == LocateStatus.after) { + if (location == LocateStatus.AFTER) { break; } - if (location == LocateStatus.in) { + if (location == LocateStatus.IN) { timeRangesInCandidates.add( new TimeRange(chunkMetadata.getStartTime(), chunkMetadata.getEndTime())); } else { @@ -241,11 +242,11 @@ public static LocateStatus checkLocateStatus( IChunkMetadata chunkMetaData, long spacePartitionStartPos, long spacePartitionEndPos) { long startOffsetOfChunk = chunkMetaData.getOffsetOfChunkHeader(); if (spacePartitionStartPos <= startOffsetOfChunk && startOffsetOfChunk < spacePartitionEndPos) { - return LocateStatus.in; + return LocateStatus.IN; } else if (startOffsetOfChunk < spacePartitionStartPos) { - return LocateStatus.before; + return LocateStatus.BEFORE; } else { - return LocateStatus.after; + return LocateStatus.AFTER; } } diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/ExpressionType.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/ExpressionType.java index a71cd2c61be7..ad4ef2cdab34 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/ExpressionType.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/ExpressionType.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.expression; public enum ExpressionType { diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IBinaryExpression.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IBinaryExpression.java index 3a8e77d26cb4..a1198a6bf2af 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IBinaryExpression.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IBinaryExpression.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.expression; public interface IBinaryExpression extends IExpression { diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IExpression.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IExpression.java index 7633af840a7d..6cfd38144dbc 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IExpression.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IExpression.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.expression; import java.io.Serializable; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IUnaryExpression.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IUnaryExpression.java index 99de4ff0fee6..e206e798f2bb 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IUnaryExpression.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IUnaryExpression.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.expression; import org.apache.iotdb.tsfile.read.filter.basic.Filter; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/QueryExpression.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/QueryExpression.java index f2de99570317..8f647923ce0e 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/QueryExpression.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/QueryExpression.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.expression; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/BinaryExpression.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/BinaryExpression.java index 5bd88aab3f41..d98fcaba3c36 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/BinaryExpression.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/BinaryExpression.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.expression.impl; import org.apache.iotdb.tsfile.read.expression.ExpressionType; @@ -44,8 +45,8 @@ public static OrExpression or(IExpression left, IExpression right) { protected static class AndExpression extends BinaryExpression { - public IExpression left; - public IExpression right; + private IExpression left; + private IExpression right; public AndExpression(IExpression left, IExpression right) { this.left = left; @@ -116,8 +117,8 @@ public int hashCode() { protected static class OrExpression extends BinaryExpression { - public IExpression left; - public IExpression right; + private IExpression left; + private IExpression right; public OrExpression(IExpression left, IExpression right) { this.left = left; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/GlobalTimeExpression.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/GlobalTimeExpression.java index 353135ed7f55..7ef8a26b4a2a 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/GlobalTimeExpression.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/GlobalTimeExpression.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.expression.impl; import org.apache.iotdb.tsfile.read.expression.ExpressionType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/SingleSeriesExpression.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/SingleSeriesExpression.java index c4d850bdb41b..81f79ca7e3ad 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/SingleSeriesExpression.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/SingleSeriesExpression.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.expression.impl; import org.apache.iotdb.tsfile.read.common.Path; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/util/ExpressionOptimizer.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/util/ExpressionOptimizer.java index b05628659f29..accd871cc458 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/util/ExpressionOptimizer.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/util/ExpressionOptimizer.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.expression.util; import org.apache.iotdb.tsfile.exception.filter.QueryFilterOptimizationException; @@ -179,7 +180,7 @@ private boolean updateFilterWithOr(IExpression expression, Filter filter, Path p private IExpression pushGlobalTimeFilterToAllSeries( GlobalTimeExpression timeFilter, List selectedSeries) throws QueryFilterOptimizationException { - if (selectedSeries.size() == 0) { + if (selectedSeries.isEmpty()) { throw new QueryFilterOptimizationException("size of selectSeries could not be 0"); } IExpression expression = diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/util/ExpressionPrinter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/util/ExpressionPrinter.java deleted file mode 100644 index 07c966c49a93..000000000000 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/util/ExpressionPrinter.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.iotdb.tsfile.read.expression.util; - -import org.apache.iotdb.tsfile.read.expression.IBinaryExpression; -import org.apache.iotdb.tsfile.read.expression.IExpression; -import org.apache.iotdb.tsfile.read.expression.IUnaryExpression; - -public class ExpressionPrinter { - - private static final int MAX_DEPTH = 100; - private static final char PREFIX_CHAR = '\t'; - private static final String[] PREFIX = new String[MAX_DEPTH]; - - static { - StringBuilder stringBuilder = new StringBuilder(); - for (int i = 0; i < MAX_DEPTH; i++) { - PREFIX[i] = stringBuilder.toString(); - stringBuilder.append(PREFIX_CHAR); - } - } - - public static void print(IExpression expression) { - print(expression, 0); - } - - private static void print(IExpression expression, int level) { - if (expression instanceof IUnaryExpression) { - System.out.println(getPrefix(level) + expression); - } else { - System.out.println(getPrefix(level) + expression.getType() + ":"); - print(((IBinaryExpression) expression).getLeft(), level + 1); - print(((IBinaryExpression) expression).getRight(), level + 1); - } - } - - private static String getPrefix(int count) { - if (count < MAX_DEPTH) { - return PREFIX[count]; - } else { - return PREFIX[MAX_DEPTH - 1]; - } - } -} diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/GroupByFilter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/GroupByFilter.java index 9ef5750de6b4..6ee54c118756 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/GroupByFilter.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/GroupByFilter.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter; import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/GroupByMonthFilter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/GroupByMonthFilter.java index b36ba41cdf8a..2f500b6656d7 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/GroupByMonthFilter.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/GroupByMonthFilter.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter; import org.apache.iotdb.tsfile.read.filter.basic.Filter; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/PredicateRemoveNotRewriter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/PredicateRemoveNotRewriter.java index 4a66d032f9f9..b100d93f5dca 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/PredicateRemoveNotRewriter.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/PredicateRemoveNotRewriter.java @@ -28,6 +28,10 @@ public class PredicateRemoveNotRewriter { + private PredicateRemoveNotRewriter() { + // forbidden to construct + } + public static Filter rewrite(Filter filter) { return removeNot(filter); } diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/TimeFilter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/TimeFilter.java index 0cbd94dc0a62..04970f079bb0 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/TimeFilter.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/TimeFilter.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter; import org.apache.iotdb.tsfile.read.common.TimeRange; @@ -179,7 +180,8 @@ private TimeBetween(long value1, long value2, boolean not) { @Override public List getTimeRanges() { - long left = value1, right = value2; + long left = value1; + long right = value2; if (not) { List res = new ArrayList<>(); if (left != Long.MIN_VALUE) { diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/ValueFilter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/ValueFilter.java index 79a4bdfd0932..23d091f547cc 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/ValueFilter.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/ValueFilter.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter; import org.apache.iotdb.tsfile.read.filter.factory.FilterType; @@ -29,7 +30,6 @@ import org.apache.iotdb.tsfile.read.filter.operator.LtEq; import org.apache.iotdb.tsfile.read.filter.operator.NotEq; import org.apache.iotdb.tsfile.read.filter.operator.Regexp; -import org.apache.iotdb.tsfile.utils.TsPrimitiveType; import java.util.Set; @@ -100,21 +100,6 @@ private ValueGt(T value) { } } - public static class VectorValueGt> extends ValueGt { - - private final int index; - - private VectorValueGt(T value, int index) { - super(value); - this.index = index; - } - - public boolean satisfy(long time, TsPrimitiveType[] values) { - Object v = filterType == FilterType.TIME_FILTER ? time : values[index].getValue(); - return this.value.compareTo((T) v) < 0; - } - } - public static class ValueGtEq> extends GtEq { private ValueGtEq(T value) { @@ -122,21 +107,6 @@ private ValueGtEq(T value) { } } - public static class VectorValueGtEq> extends ValueGtEq { - - private final int index; - - private VectorValueGtEq(T value, int index) { - super(value); - this.index = index; - } - - public boolean satisfy(long time, TsPrimitiveType[] values) { - Object v = filterType == FilterType.TIME_FILTER ? time : values[index].getValue(); - return this.value.compareTo((T) v) <= 0; - } - } - public static class ValueLt> extends Lt { private ValueLt(T value) { @@ -144,21 +114,6 @@ private ValueLt(T value) { } } - public static class VectorValueLt> extends ValueLt { - - private final int index; - - private VectorValueLt(T value, int index) { - super(value); - this.index = index; - } - - public boolean satisfy(long time, TsPrimitiveType[] values) { - Object v = filterType == FilterType.TIME_FILTER ? time : values[index].getValue(); - return this.value.compareTo((T) v) > 0; - } - } - public static class ValueLtEq> extends LtEq { private ValueLtEq(T value) { @@ -166,21 +121,6 @@ private ValueLtEq(T value) { } } - public static class VectorValueLtEq> extends ValueLtEq { - - private final int index; - - private VectorValueLtEq(T value, int index) { - super(value); - this.index = index; - } - - public boolean satisfy(long time, TsPrimitiveType[] values) { - Object v = filterType == FilterType.TIME_FILTER ? time : values[index].getValue(); - return this.value.compareTo((T) v) >= 0; - } - } - public static class ValueEq> extends Eq { private ValueEq(T value) { @@ -188,21 +128,6 @@ private ValueEq(T value) { } } - public static class VectorValueEq> extends ValueEq { - - private final int index; - - private VectorValueEq(T value, int index) { - super(value); - this.index = index; - } - - public boolean satisfy(long time, TsPrimitiveType[] values) { - Object v = filterType == FilterType.TIME_FILTER ? time : values[index].getValue(); - return this.value.equals(v); - } - } - public static class ValueNotEq> extends NotEq { private ValueNotEq(T value) { @@ -210,21 +135,6 @@ private ValueNotEq(T value) { } } - public static class VectorValueNotEq> extends ValueNotEq { - - private final int index; - - private VectorValueNotEq(T value, int index) { - super(value); - this.index = index; - } - - public boolean satisfy(long time, TsPrimitiveType[] values) { - Object v = filterType == FilterType.TIME_FILTER ? time : values[index].getValue(); - return !this.value.equals(v); - } - } - public static class ValueBetween> extends Between { private ValueBetween(T value1, T value2, boolean not) { @@ -232,24 +142,6 @@ private ValueBetween(T value1, T value2, boolean not) { } } - public static class VectorValueBetween> extends ValueBetween { - - private final int index; - - private VectorValueBetween(T value1, T value2, boolean not, int index) { - super(value1, value2, not); - this.index = index; - } - - public boolean satisfy(long time, TsPrimitiveType[] values) { - if (filterType != FilterType.VALUE_FILTER) { - return false; - } - Object v = values[index].getValue(); - return (value1.compareTo((T) v) <= 0 && ((T) v).compareTo(value2) <= 0) ^ not; - } - } - public static class ValueLike> extends Like { private ValueLike(String value, boolean not) { @@ -257,67 +149,16 @@ private ValueLike(String value, boolean not) { } } - public static class VectorValueLike> extends ValueLike { - - private final int index; - - private VectorValueLike(String value, int index, boolean not) { - super(value, not); - this.index = index; - } - - public boolean satisfy(long time, TsPrimitiveType[] values) { - if (filterType != FilterType.VALUE_FILTER) { - return false; - } - Object value = values[index].getValue(); - return pattern.matcher(value.toString()).find() != not; - } - } - public static class ValueRegexp> extends Regexp { private ValueRegexp(String value, boolean not) { super(value, FilterType.VALUE_FILTER, not); } } - public static class VectorValueRegexp> extends ValueRegexp { - - private final int index; - - private VectorValueRegexp(String value, int index, boolean not) { - super(value, not); - this.index = index; - } - - public boolean satisfy(long time, TsPrimitiveType[] values) { - if (filterType != FilterType.VALUE_FILTER) { - return false; - } - Object value = values[index].getValue(); - return pattern.matcher(new MatcherInput(value.toString(), new AccessCount())).find() != not; - } - } - public static class ValueIn> extends In { private ValueIn(Set values, boolean not) { super(values, FilterType.VALUE_FILTER, not); } } - - public static class VectorValueIn> extends ValueIn { - - private final int index; - - private VectorValueIn(Set values, boolean not, int index) { - super(values, not); - this.index = index; - } - - public boolean satisfy(long time, TsPrimitiveType[] values) { - Object v = filterType == FilterType.TIME_FILTER ? time : values[index].getValue(); - return this.values.contains(v) != not; - } - } } diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/BinaryFilter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/BinaryFilter.java index 0d91b58b081d..ba4eeca8a34b 100755 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/BinaryFilter.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/BinaryFilter.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter.basic; import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory; @@ -34,7 +35,9 @@ public abstract class BinaryFilter implements Filter, Serializable { protected Filter left; protected Filter right; - public BinaryFilter() {} + protected BinaryFilter() { + // do nothing + } protected BinaryFilter(Filter left, Filter right) { this.left = left; @@ -57,9 +60,6 @@ public Filter getRight() { return right; } - @Override - public abstract Filter copy(); - @Override public void serialize(DataOutputStream outputStream) { try { diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/Filter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/Filter.java index 691cf1030d1d..85fa3a09244f 100755 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/Filter.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/Filter.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter.basic; import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/UnaryFilter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/UnaryFilter.java index e05ade1588c4..14e47bd19411 100755 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/UnaryFilter.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/UnaryFilter.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter.basic; import org.apache.iotdb.tsfile.read.filter.factory.FilterType; @@ -39,7 +40,7 @@ public abstract class UnaryFilter> implements Filter, Se protected FilterType filterType; - public UnaryFilter() {} + protected UnaryFilter() {} protected UnaryFilter(T value, FilterType filterType) { this.value = value; @@ -61,9 +62,6 @@ public FilterType getFilterType() { @Override public abstract String toString(); - @Override - public abstract Filter copy(); - @Override public void serialize(DataOutputStream outputStream) { try { diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/factory/FilterFactory.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/factory/FilterFactory.java index 6d647b96c555..4fe31cc03317 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/factory/FilterFactory.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/factory/FilterFactory.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter.factory; import org.apache.iotdb.tsfile.read.filter.GroupByFilter; @@ -39,6 +40,10 @@ public class FilterFactory { + private FilterFactory() { + // forbidden construction + } + public static AndFilter and(Filter left, Filter right) { return new AndFilter(left, right); } diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/factory/FilterType.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/factory/FilterType.java index 1751e042206a..2b7ad8f9c371 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/factory/FilterType.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/factory/FilterType.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter.factory; public enum FilterType { diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/AndFilter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/AndFilter.java index 1488c7013522..ca251dc4d830 100755 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/AndFilter.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/AndFilter.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter.operator; import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics; @@ -87,10 +88,10 @@ public List getTimeRanges() { List leftTimeRanges = left.getTimeRanges(); List rightTimeRanges = right.getTimeRanges(); - int leftIndex = 0, - rightIndex = 0, - leftSize = leftTimeRanges.size(), - rightSize = rightTimeRanges.size(); + int leftIndex = 0; + int rightIndex = 0; + int leftSize = leftTimeRanges.size(); + int rightSize = rightTimeRanges.size(); while (leftIndex < leftSize && rightIndex < rightSize) { TimeRange leftRange = leftTimeRanges.get(leftIndex); TimeRange rightRange = rightTimeRanges.get(rightIndex); diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Eq.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Eq.java index 922a102c9c72..f8f1798e49cf 100755 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Eq.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Eq.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter.operator; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Gt.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Gt.java index ffb6c75eabb1..41a4941e555f 100755 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Gt.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Gt.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter.operator; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GtEq.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GtEq.java index f6b3a2cd86ce..3feb09f21f2f 100755 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GtEq.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GtEq.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter.operator; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/In.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/In.java index 60d6eed75fca..3699b2da1107 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/In.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/In.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter.operator; import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Like.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Like.java index d509c00862d2..4e2112549c33 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Like.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Like.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter.operator; import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics; @@ -54,6 +55,8 @@ public Like() {} /** * The main idea of this part comes from * https://codereview.stackexchange.com/questions/36861/convert-sql-like-to-regex/36864 + * + * @throws PatternSyntaxException if the regex expression's syntax is invalid */ public Like(String value, FilterType filterType, boolean not) { this.value = value; @@ -85,7 +88,7 @@ public Like(String value, FilterType filterType, boolean not) { patternStrBuild.append("$"); this.pattern = Pattern.compile(patternStrBuild.toString()); } catch (PatternSyntaxException e) { - throw new PatternSyntaxException("Regular expression error", value.toString(), e.getIndex()); + throw new PatternSyntaxException("Regular expression error", value, e.getIndex()); } } @@ -175,23 +178,24 @@ public int hashCode() { * we need to use '\' to judege whether to replace this to regexp string */ private String unescapeString(String value) { - String out = ""; - for (int i = 0; i < value.length(); i++) { - String ch = String.valueOf(value.charAt(i)); + StringBuilder out = new StringBuilder(); + int curIndex = 0; + for (; curIndex < value.length(); curIndex++) { + String ch = String.valueOf(value.charAt(curIndex)); if ("\\".equals(ch)) { - if (i < value.length() - 1) { - String nextChar = String.valueOf(value.charAt(i + 1)); + if (curIndex < value.length() - 1) { + String nextChar = String.valueOf(value.charAt(curIndex + 1)); if ("%".equals(nextChar) || "_".equals(nextChar) || "\\".equals(nextChar)) { - out = out + ch; + out.append(ch); } if ("\\".equals(nextChar)) { - i++; + curIndex++; } } } else { - out = out + ch; + out.append(ch); } } - return out; + return out.toString(); } } diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Lt.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Lt.java index c0151d3f636b..827db78a47d3 100755 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Lt.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Lt.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter.operator; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/LtEq.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/LtEq.java index 4b35f154a172..62d0a94a2774 100755 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/LtEq.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/LtEq.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter.operator; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/NotEq.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/NotEq.java index 45148c5c034d..bee588d0a24a 100755 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/NotEq.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/NotEq.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter.operator; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/NotFilter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/NotFilter.java index ef21c14a0c3f..538d26a47e47 100755 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/NotFilter.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/NotFilter.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter.operator; import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/OrFilter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/OrFilter.java index 0a16909e2c56..b5f781f3a04d 100755 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/OrFilter.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/OrFilter.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter.operator; import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics; @@ -89,10 +90,10 @@ public List getTimeRanges() { List leftTimeRanges = left.getTimeRanges(); List rightTimeRanges = right.getTimeRanges(); - int leftIndex = 0, - rightIndex = 0, - leftSize = leftTimeRanges.size(), - rightSize = rightTimeRanges.size(); + int leftIndex = 0; + int rightIndex = 0; + int leftSize = leftTimeRanges.size(); + int rightSize = rightTimeRanges.size(); TimeRange range; if (leftTimeRanges.isEmpty() && rightTimeRanges.isEmpty()) { return Collections.emptyList(); diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Regexp.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Regexp.java index 3a154e732081..f3d516f40411 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Regexp.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Regexp.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.filter.operator; import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/DataSetWithTimeGenerator.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/DataSetWithTimeGenerator.java index 1773c6648dc8..d9addd6af2f0 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/DataSetWithTimeGenerator.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/DataSetWithTimeGenerator.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.query.dataset; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; @@ -72,7 +73,7 @@ public RowRecord nextWithoutConstraint() throws IOException { for (int i = 0; i < paths.size(); i++) { // get value from readers in time generator - if (cached.get(i)) { + if (Boolean.TRUE.equals(cached.get(i))) { Object value = timeGenerator.getValue(paths.get(i)); if (dataTypes.get(i) == TSDataType.VECTOR) { TsPrimitiveType v = ((TsPrimitiveType[]) value)[0]; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/DataSetWithoutTimeGenerator.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/DataSetWithoutTimeGenerator.java index bcb6bc56824b..6132d5996d7b 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/DataSetWithoutTimeGenerator.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/DataSetWithoutTimeGenerator.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.query.dataset; import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException; @@ -36,7 +37,7 @@ /** multi-way merging data set, no need to use TimeGenerator. */ public class DataSetWithoutTimeGenerator extends QueryDataSet { - private List readers; + private final List readers; private List batchDataList; @@ -89,7 +90,7 @@ private void initHeap() throws IOException { @Override public boolean hasNextWithoutConstraint() { - return timeHeap.size() > 0; + return !timeHeap.isEmpty(); } @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning @@ -97,11 +98,11 @@ public boolean hasNextWithoutConstraint() { public RowRecord nextWithoutConstraint() throws IOException { long minTime = timeHeapGet(); - RowRecord record = new RowRecord(minTime); + RowRecord rowRecord = new RowRecord(minTime); for (int i = 0; i < paths.size(); i++) { - if (!hasDataRemaining.get(i)) { - record.addField(null); + if (Boolean.FALSE.equals(hasDataRemaining.get(i))) { + rowRecord.addField(null); continue; } @@ -127,12 +128,12 @@ public RowRecord nextWithoutConstraint() throws IOException { } else { timeHeapPut(data.currentTime()); } - record.addField(field); + rowRecord.addField(field); } else { - record.addField(null); + rowRecord.addField(null); } } - return record; + return rowRecord; } /** keep heap from storing duplicate time. */ diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/QueryDataSet.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/QueryDataSet.java index 40e6ee3d8f38..e1d836525128 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/QueryDataSet.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/QueryDataSet.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.query.dataset; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; @@ -89,13 +90,13 @@ public String toString() { } } - public QueryDataSet() {} + protected QueryDataSet() {} - public QueryDataSet(List paths, List dataTypes) { + protected QueryDataSet(List paths, List dataTypes) { initQueryDataSetFields(paths, dataTypes, true); } - public QueryDataSet(List paths, List dataTypes, boolean ascending) { + protected QueryDataSet(List paths, List dataTypes, boolean ascending) { initQueryDataSetFields(paths, dataTypes, ascending); } @@ -150,12 +151,11 @@ public boolean hasNext() throws IOException { * @return true satisfy false don't satisfy */ public boolean withoutNullFilter(RowRecord rowRecord) { - boolean - anyNullFlag = - (withoutNullColumnsIndex == null) - ? rowRecord.hasNullField() - : (withoutNullColumnsIndex.isEmpty() && rowRecord.hasNullField()), - allNullFlag = (withoutNullColumnsIndex != null) || rowRecord.isAllNull(); + boolean anyNullFlag = + (withoutNullColumnsIndex == null) + ? rowRecord.hasNullField() + : (withoutNullColumnsIndex.isEmpty() && rowRecord.hasNullField()); + boolean allNullFlag = (withoutNullColumnsIndex != null) || rowRecord.isAllNull(); if (withoutNullColumnsIndex != null) { for (int index : withoutNullColumnsIndex) { diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/ExecutorWithTimeGenerator.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/ExecutorWithTimeGenerator.java index bfb8ea543747..d0c5b62b8871 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/ExecutorWithTimeGenerator.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/ExecutorWithTimeGenerator.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.query.executor; import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata; @@ -77,7 +78,7 @@ public DataSetWithTimeGenerator execute(QueryExpression queryExpression) throws Path selectedPath = selectedPathIterator.next(); List chunkMetadataList = metadataQuerier.getChunkMetaDataList(selectedPath); - if (chunkMetadataList.size() != 0) { + if (!chunkMetadataList.isEmpty()) { dataTypes.add(chunkMetadataList.get(0).getDataType()); if (cachedValue) { readersOfSelectedSeries.add(null); @@ -100,7 +101,7 @@ public static List markFilterdPaths( IExpression expression, List selectedPaths, boolean hasOrNode) { List cached = new ArrayList<>(); if (hasOrNode) { - for (Path ignored : selectedPaths) { + for (int i = 0; i < selectedPaths.size(); i++) { cached.add(false); } return cached; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/QueryExecutor.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/QueryExecutor.java index ea85712ad695..24e07c2cfeaf 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/QueryExecutor.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/QueryExecutor.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.query.executor; import org.apache.iotdb.tsfile.read.expression.QueryExpression; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/TsFileExecutor.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/TsFileExecutor.java index a530cb3dc012..08160ef6969b 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/TsFileExecutor.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/TsFileExecutor.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.query.executor; import org.apache.iotdb.tsfile.exception.filter.QueryFilterOptimizationException; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/TimeGenerator.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/TimeGenerator.java index 344e56415ade..8e50c363e38b 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/TimeGenerator.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/TimeGenerator.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.query.timegenerator; import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/TsFileTimeGenerator.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/TsFileTimeGenerator.java index 25241ccdf6bc..40229282afd9 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/TsFileTimeGenerator.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/TsFileTimeGenerator.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.query.timegenerator; import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/AndNode.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/AndNode.java index eff83b014d9a..ca1a26dc86e9 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/AndNode.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/AndNode.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.query.timegenerator.node; import java.io.IOException; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/LeafNode.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/LeafNode.java index a0b9d6995165..46de8daf7a64 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/LeafNode.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/LeafNode.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.query.timegenerator.node; import org.apache.iotdb.tsfile.read.common.BatchData; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/Node.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/Node.java index bacc7eddf589..ab27ccb82c07 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/Node.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/Node.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.query.timegenerator.node; import java.io.IOException; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/NodeType.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/NodeType.java index 9f6ff864ecc9..d5f9a9056ec4 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/NodeType.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/NodeType.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.query.timegenerator.node; /** Type of the node. */ diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/OrNode.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/OrNode.java index a133cbbb183f..490768edec2c 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/OrNode.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/OrNode.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.query.timegenerator.node; import java.io.IOException; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IAlignedPageReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IAlignedPageReader.java index 662c5c734626..5b590e3b2a6b 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IAlignedPageReader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IAlignedPageReader.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.reader; import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IBatchReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IBatchReader.java index 0be65aa4abe7..0af0d4724523 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IBatchReader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IBatchReader.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.reader; import org.apache.iotdb.tsfile.read.common.BatchData; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IChunkReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IChunkReader.java index 9103f7b2705e..7c0b144018de 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IChunkReader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IChunkReader.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.reader; import org.apache.iotdb.tsfile.read.common.BatchData; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IPageReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IPageReader.java index 149428a36900..ac09b4cb9e6b 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IPageReader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IPageReader.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.reader; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IPointReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IPointReader.java index 3fdeeda4cff3..d29d70d063b4 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IPointReader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IPointReader.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.reader; import org.apache.iotdb.tsfile.read.TimeValuePair; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/LocalTsFileInput.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/LocalTsFileInput.java index afb1520d011d..168fdd59fb4c 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/LocalTsFileInput.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/LocalTsFileInput.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.reader; import org.slf4j.Logger; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/TsFileInput.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/TsFileInput.java index b2e9fc0c47a8..14e3848e66d5 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/TsFileInput.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/TsFileInput.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.reader; import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AlignedChunkReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AlignedChunkReader.java index f4ada76d4a1c..86bd53f5616f 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AlignedChunkReader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AlignedChunkReader.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.reader.chunk; import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor; @@ -70,19 +71,18 @@ public class AlignedChunkReader implements IChunkReader { * Constructor of ChunkReader without deserializing chunk into page. This is used for fast * compaction. */ - public AlignedChunkReader(Chunk timeChunk, List valueChunkList) throws IOException { + public AlignedChunkReader(Chunk timeChunk, List valueChunkList) { this.filter = null; this.timeChunkDataBuffer = timeChunk.getData(); this.valueDeleteIntervalList = new ArrayList<>(); this.timeChunkHeader = timeChunk.getHeader(); this.timeUnCompressor = IUnCompressor.getUnCompressor(timeChunkHeader.getCompressionType()); this.currentTimestamp = Long.MIN_VALUE; - List valueChunkStatisticsList = new ArrayList<>(); + valueChunkList.forEach( chunk -> { valueChunkHeaderList.add(chunk == null ? null : chunk.getHeader()); valueChunkDataBufferList.add(chunk == null ? null : chunk.getData()); - valueChunkStatisticsList.add(chunk == null ? null : chunk.getChunkStatistic()); valueDeleteIntervalList.add(chunk == null ? null : chunk.getDeleteIntervalList()); }); } @@ -424,7 +424,9 @@ public BatchData nextPageData() throws IOException { } @Override - public void close() throws IOException {} + public void close() throws IOException { + // do nothing + } @Override public List loadPageReaderList() { diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/ChunkReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/ChunkReader.java index 6840a477b398..1feaeffc8a40 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/ChunkReader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/ChunkReader.java @@ -271,7 +271,9 @@ public TsBlock readPageData(PageHeader pageHeader, ByteBuffer compressedPageData } @Override - public void close() {} + public void close() { + // do nothing + } public ChunkHeader getChunkHeader() { return chunkHeader; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/AlignedPageReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/AlignedPageReader.java index 5f4566c8cb93..8064db9748fe 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/AlignedPageReader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/AlignedPageReader.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.reader.page; import org.apache.iotdb.tsfile.encoding.decoder.Decoder; @@ -57,6 +58,7 @@ public class AlignedPageReader implements IPageReader, IAlignedPageReader { private static final int MASK = 0x80; + @SuppressWarnings("squid:S107") public AlignedPageReader( PageHeader timePageHeader, ByteBuffer timePageData, diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/PageReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/PageReader.java index 7aea525e76c0..d01705adc125 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/PageReader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/PageReader.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.reader.page; import org.apache.iotdb.tsfile.encoding.decoder.Decoder; @@ -351,7 +352,9 @@ public boolean isModified() { } @Override - public void initTsBlockBuilder(List dataTypes) {} + public void initTsBlockBuilder(List dataTypes) { + // do nothing + } protected boolean isDeleted(long timestamp) { while (deleteIntervalList != null && deleteCursor < deleteIntervalList.size()) { diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/TimePageReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/TimePageReader.java index fc05e2b0ba23..daa7cfad4f99 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/TimePageReader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/TimePageReader.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.reader.page; import org.apache.iotdb.tsfile.encoding.decoder.Decoder; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/ValuePageReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/ValuePageReader.java index 9d388feef73f..79e923c97f04 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/ValuePageReader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/ValuePageReader.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.reader.page; import org.apache.iotdb.tsfile.encoding.decoder.Decoder; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/AbstractFileSeriesReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/AbstractFileSeriesReader.java index a3a720b766c8..24ff3fdb390a 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/AbstractFileSeriesReader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/AbstractFileSeriesReader.java @@ -40,7 +40,7 @@ public abstract class AbstractFileSeriesReader implements IBatchReader { protected Filter filter; /** constructor of FileSeriesReader. */ - public AbstractFileSeriesReader( + protected AbstractFileSeriesReader( IChunkLoader chunkLoader, List chunkMetadataList, Filter filter) { this.chunkLoader = chunkLoader; this.chunkMetadataList = chunkMetadataList; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/FileSeriesReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/FileSeriesReader.java index 9318839760d8..222cc59a5c9b 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/FileSeriesReader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/FileSeriesReader.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.reader.series; import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/FileSeriesReaderByTimestamp.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/FileSeriesReaderByTimestamp.java index 68376a1fa0dc..c9e1ee88a121 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/FileSeriesReaderByTimestamp.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/FileSeriesReaderByTimestamp.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.read.reader.series; import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/PaginationController.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/PaginationController.java index 96e7075f19a8..108fa0d0a5be 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/PaginationController.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/PaginationController.java @@ -74,7 +74,8 @@ public void consumeLimit(long rowCount) { public TsBlock applyTsBlock(TsBlock resultTsBlock) { - int fromIndex = 0, length = resultTsBlock.getPositionCount(); + int fromIndex = 0; + int length = resultTsBlock.getPositionCount(); if (hasCurOffset()) { fromIndex = (int) Math.min(curOffset, length); length -= fromIndex; diff --git a/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/ReaderTest.java b/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/ReaderTest.java index 8d8d4488741f..99a5c558e8f2 100644 --- a/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/ReaderTest.java +++ b/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/ReaderTest.java @@ -111,10 +111,9 @@ public void readWithFilterTest() throws IOException { metadataQuerierByFile.getChunkMetaDataList(new Path("d1", "s1", true)); Filter filter = - new FilterFactory() - .or( - FilterFactory.and(TimeFilter.gt(1480563570029L), TimeFilter.lt(1480563570033L)), - FilterFactory.and(ValueFilter.gtEq(9520331), ValueFilter.ltEq(9520361))); + FilterFactory.or( + FilterFactory.and(TimeFilter.gt(1480563570029L), TimeFilter.lt(1480563570033L)), + FilterFactory.and(ValueFilter.gtEq(9520331), ValueFilter.ltEq(9520361))); SingleSeriesExpression singleSeriesExp = new SingleSeriesExpression(new Path("d1", "s1", true), filter); AbstractFileSeriesReader seriesReader =