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

jiangtian pushed a commit to branch removeTsFIleModule_v4
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/removeTsFIleModule_v4 by this 
push:
     new 776615531d3 adapt to IDeviceId
776615531d3 is described below

commit 776615531d37812c5838d191537d4f05960abe37
Author: Tian Jiang <[email protected]>
AuthorDate: Fri Apr 19 18:43:28 2024 +0800

    adapt to IDeviceId
---
 .../iotdb/db/pipe/event/common/row/PipeRow.java    |  8 +-
 .../db/pipe/event/common/row/PipeRowCollector.java |  1 +
 .../tablet/TabletInsertionDataContainer.java       |  3 +-
 .../tsfile/TsFileInsertionDataTabletIterator.java  |  1 +
 .../db/pipe/resource/memory/PipeMemoryManager.java |  4 +-
 .../protocol/thrift/impl/ClientRPCServiceImpl.java |  3 +-
 .../common/schematree/DeviceSchemaInfo.java        |  2 +
 .../fragment/FragmentInstanceContext.java          |  2 +-
 .../operator/process/DeviceViewIntoOperator.java   |  2 +-
 .../execution/operator/process/IntoOperator.java   |  2 +-
 .../execution/operator/source/FileLoaderUtils.java |  3 +-
 .../db/queryengine/plan/analyze/Analysis.java      |  6 +-
 .../queryengine/plan/analyze/AnalyzeVisitor.java   |  4 +-
 .../plan/analyze/ExpressionAnalyzer.java           |  2 +-
 .../plan/analyze/LoadTsfileAnalyzer.java           |  7 +-
 .../schema/DeviceUsingTemplateSchemaCache.java     |  2 +-
 .../plan/analyze/schema/ClusterSchemaFetcher.java  |  1 +
 .../plan/planner/LogicalPlanBuilder.java           |  9 ++-
 .../plan/planner/LogicalPlanVisitor.java           |  4 +-
 .../plan/planner/OperatorTreeGenerator.java        |  6 +-
 .../node/metedata/write/AlterTimeSeriesNode.java   |  2 +-
 .../node/metedata/write/CreateTimeSeriesNode.java  |  2 +-
 .../metedata/write/view/CreateLogicalViewNode.java |  2 +-
 .../plan/node/source/AlignedLastQueryScanNode.java |  2 +-
 .../plan/node/source/AlignedSeriesScanNode.java    |  2 +-
 .../schemaengine/schemaregion/utils/MetaUtils.java | 11 +--
 .../db/storageengine/dataregion/DataRegion.java    |  2 +-
 .../impl/ReadPointCompactionPerformer.java         |  5 +-
 .../readchunk/SingleSeriesCompactionExecutor.java  |  5 +-
 .../compaction/io/CompactionTsFileReader.java      |  2 +-
 .../memtable/AlignedReadOnlyMemChunk.java          |  4 +-
 .../dataregion/modification/Modification.java      |  2 +-
 .../apache/iotdb/db/tools/TsFileSelfCheckTool.java | 38 +++++-----
 .../apache/iotdb/db/tools/TsFileSketchTool.java    | 88 ++++++++++++----------
 .../db/trigger/executor/TriggerFireVisitor.java    |  1 +
 35 files changed, 130 insertions(+), 110 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeRow.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeRow.java
index 0296935e7bb..c1a6680803f 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeRow.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeRow.java
@@ -27,7 +27,7 @@ import org.apache.tsfile.common.conf.TSFileConfig;
 import org.apache.tsfile.enums.TSDataType;
 import org.apache.tsfile.read.common.Path;
 import org.apache.tsfile.utils.BitMap;
-import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.util.Arrays;
 import java.util.List;
@@ -38,7 +38,7 @@ public class PipeRow implements Row {
 
   protected final String deviceId;
   protected final boolean isAligned;
-  protected final MeasurementSchema[] measurementSchemaList;
+  protected final IMeasurementSchema[] measurementSchemaList;
 
   protected final long[] timestampColumn;
   protected final TSDataType[] valueColumnTypes;
@@ -51,7 +51,7 @@ public class PipeRow implements Row {
       int rowIndex,
       String deviceId,
       boolean isAligned,
-      MeasurementSchema[] measurementSchemaList,
+      IMeasurementSchema[] measurementSchemaList,
       long[] timestampColumn,
       TSDataType[] valueColumnTypes,
       Object[] valueColumns,
@@ -179,7 +179,7 @@ public class PipeRow implements Row {
     return isAligned;
   }
 
-  public MeasurementSchema[] getMeasurementSchemaList() {
+  public IMeasurementSchema[] getMeasurementSchemaList() {
     return measurementSchemaList;
   }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeRowCollector.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeRowCollector.java
index 85606f1200a..c2bbe4c22b4 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeRowCollector.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeRowCollector.java
@@ -29,6 +29,7 @@ import 
org.apache.iotdb.pipe.api.event.dml.insertion.TabletInsertionEvent;
 import org.apache.iotdb.pipe.api.exception.PipeException;
 
 import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.util.ArrayList;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tablet/TabletInsertionDataContainer.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tablet/TabletInsertionDataContainer.java
index f45b0f5226d..5b4edc43740 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tablet/TabletInsertionDataContainer.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tablet/TabletInsertionDataContainer.java
@@ -37,6 +37,7 @@ import org.apache.tsfile.utils.Binary;
 import org.apache.tsfile.utils.BitMap;
 import org.apache.tsfile.write.UnSupportedDataTypeException;
 import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.slf4j.Logger;
@@ -63,7 +64,7 @@ public class TabletInsertionDataContainer {
 
   private String deviceId;
   private boolean isAligned;
-  private MeasurementSchema[] measurementSchemaList;
+  private IMeasurementSchema[] measurementSchemaList;
   private String[] columnNameStringList;
 
   private long[] timestampColumn;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/TsFileInsertionDataTabletIterator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/TsFileInsertionDataTabletIterator.java
index 9a9e45f3314..f64b1fb353a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/TsFileInsertionDataTabletIterator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/TsFileInsertionDataTabletIterator.java
@@ -32,6 +32,7 @@ import org.apache.tsfile.read.expression.IExpression;
 import org.apache.tsfile.read.expression.QueryExpression;
 import org.apache.tsfile.read.query.dataset.QueryDataSet;
 import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.io.IOException;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/memory/PipeMemoryManager.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/memory/PipeMemoryManager.java
index d88f76c009a..927ad06466a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/memory/PipeMemoryManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/memory/PipeMemoryManager.java
@@ -27,7 +27,7 @@ import org.apache.iotdb.db.pipe.agent.PipeAgent;
 import org.apache.tsfile.enums.TSDataType;
 import org.apache.tsfile.utils.Binary;
 import org.apache.tsfile.write.record.Tablet;
-import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -199,7 +199,7 @@ public class PipeMemoryManager {
     final List<IMeasurementSchema> timeseries = tablet.getSchemas();
     if (timeseries != null) {
       for (int column = 0; column < timeseries.size(); column++) {
-        final MeasurementSchema measurementSchema = timeseries.get(column);
+        final IMeasurementSchema measurementSchema = timeseries.get(column);
         if (measurementSchema == null) {
           continue;
         }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
index fb8fc40ba46..736b9d07255 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
@@ -173,6 +173,7 @@ import org.apache.tsfile.block.column.Column;
 import org.apache.tsfile.common.conf.TSFileConfig;
 import org.apache.tsfile.common.conf.TSFileDescriptor;
 import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.IDeviceID.Factory;
 import org.apache.tsfile.read.TimeValuePair;
 import org.apache.tsfile.read.common.block.TsBlock;
 import org.apache.tsfile.read.common.block.TsBlockBuilder;
@@ -696,7 +697,7 @@ public class ClientRPCServiceImpl implements 
IClientRPCServiceWithHandler {
     if (isAligned) {
       path =
           new AlignedPath(
-              device,
+              Factory.DEFAULT_FACTORY.create(device),
               Collections.singletonList(measurement),
               Collections.singletonList(measurementSchema));
       operator =
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/DeviceSchemaInfo.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/DeviceSchemaInfo.java
index 38652b0ce7a..a0969eeda14 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/DeviceSchemaInfo.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/DeviceSchemaInfo.java
@@ -23,6 +23,8 @@ import org.apache.iotdb.commons.conf.IoTDBConstant;
 import org.apache.iotdb.commons.path.MeasurementPath;
 import org.apache.iotdb.commons.path.PartialPath;
 
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java
index ba1bd5a33e3..8ab980828d4 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java
@@ -352,7 +352,7 @@ public class FragmentInstanceContext extends QueryContext {
       Set<String> selectedDeviceIdSet = new HashSet<>();
       for (PartialPath path : sourcePaths) {
         pathList.add(path);
-        selectedDeviceIdSet.add(path.getIDeviceID());
+        selectedDeviceIdSet.add(path.getIDeviceID().toString());
       }
 
       this.sharedQueryDataSource =
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/DeviceViewIntoOperator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/DeviceViewIntoOperator.java
index ea3c990e19e..c7e2e9be5be 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/DeviceViewIntoOperator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/DeviceViewIntoOperator.java
@@ -170,7 +170,7 @@ public class DeviceViewIntoOperator extends 
AbstractIntoOperator {
           new Binary(sourceTargetPathPair.right.toString(), 
TSFileConfig.STRING_CHARSET));
       columnBuilders[3].writeInt(
           findWritten(
-              sourceTargetPathPair.right.getIDeviceID(),
+              sourceTargetPathPair.right.getIDeviceID().toString(),
               sourceTargetPathPair.right.getMeasurement()));
       resultTsBlockBuilder.declarePosition();
     }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/IntoOperator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/IntoOperator.java
index 913227a3433..1207afbf0d0 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/IntoOperator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/IntoOperator.java
@@ -113,7 +113,7 @@ public class IntoOperator extends AbstractIntoOperator {
           new Binary(sourceTargetPathPair.right.toString(), 
TSFileConfig.STRING_CHARSET));
       columnBuilders[2].writeInt(
           findWritten(
-              sourceTargetPathPair.right.getIDeviceID(),
+              sourceTargetPathPair.right.getIDeviceID().toString(),
               sourceTargetPathPair.right.getMeasurement()));
       resultTsBlockBuilder.declarePosition();
     }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java
index 2ecbaf476e0..8b229367829 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java
@@ -36,7 +36,6 @@ import 
org.apache.tsfile.file.metadata.AlignedTimeSeriesMetadata;
 import org.apache.tsfile.file.metadata.IChunkMetadata;
 import org.apache.tsfile.file.metadata.IDeviceID;
 import org.apache.tsfile.file.metadata.ITimeSeriesMetadata;
-import org.apache.tsfile.file.metadata.PlainDeviceID;
 import org.apache.tsfile.file.metadata.TimeseriesMetadata;
 import org.apache.tsfile.read.controller.IChunkLoader;
 import org.apache.tsfile.read.filter.basic.Filter;
@@ -96,7 +95,7 @@ public class FileLoaderUtils {
                     resource.getTsFilePath(),
                     new TimeSeriesMetadataCache.TimeSeriesMetadataCacheKey(
                         resource.getTsFileID(),
-                        new PlainDeviceID(seriesPath.getIDeviceID()),
+                        seriesPath.getIDeviceID(),
                         seriesPath.getMeasurement()),
                     allSensors,
                     resource.getTimeIndexType() != 1,
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/Analysis.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/Analysis.java
index ba47b63fbf7..0c40b224987 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/Analysis.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/Analysis.java
@@ -311,13 +311,13 @@ public class Analysis implements IAnalysis {
 
   public List<TRegionReplicaSet> getPartitionInfo(PartialPath seriesPath, 
Filter timefilter) {
     return dataPartition.getDataRegionReplicaSetWithTimeFilter(
-        seriesPath.getIDeviceID(), timefilter);
+        seriesPath.getIDeviceID().toString(), timefilter);
   }
 
   public TRegionReplicaSet getPartitionInfo(
       PartialPath seriesPath, TTimePartitionSlot tTimePartitionSlot) {
     return dataPartition
-        .getDataRegionReplicaSet(seriesPath.getIDeviceID(), tTimePartitionSlot)
+        .getDataRegionReplicaSet(seriesPath.getIDeviceID().toString(), 
tTimePartitionSlot)
         .get(0);
   }
 
@@ -327,7 +327,7 @@ public class Analysis implements IAnalysis {
    */
   public List<List<TTimePartitionSlot>> getTimePartitionRange(
       PartialPath seriesPath, Filter timefilter) {
-    return dataPartition.getTimePartitionRange(seriesPath.getIDeviceID(), 
timefilter);
+    return 
dataPartition.getTimePartitionRange(seriesPath.getIDeviceID().toString(), 
timefilter);
   }
 
   public List<TRegionReplicaSet> getPartitionInfo(String deviceName, Filter 
globalTimeFilter) {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
index 5e13c41eb8b..4f3b697fab4 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
@@ -3045,11 +3045,11 @@ public class AnalyzeVisitor extends 
StatementVisitor<Analysis, MPPQueryContext>
           if (logicalViewSchema.isWritable()) {
             sourcePathOfAliasSeries = 
logicalViewSchema.getSourcePathIfWritable();
             deletePatternSet.add(sourcePathOfAliasSeries);
-            
deduplicatedDevicePaths.add(sourcePathOfAliasSeries.getIDeviceID());
+            
deduplicatedDevicePaths.add(sourcePathOfAliasSeries.getIDeviceID().toString());
           }
           deletePatternSet.remove(measurementPath);
         } else {
-          deduplicatedDevicePaths.add(measurementPath.getIDeviceID());
+          
deduplicatedDevicePaths.add(measurementPath.getIDeviceID().toString());
         }
       }
       deleteDataStatement.setPathList(new ArrayList<>(deletePatternSet));
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/ExpressionAnalyzer.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/ExpressionAnalyzer.java
index 4b7e7b2e0b8..7a97274f7ff 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/ExpressionAnalyzer.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/ExpressionAnalyzer.java
@@ -544,7 +544,7 @@ public class ExpressionAnalyzer {
       throw new IllegalArgumentException(
           "unsupported expression type for source expression: " + 
expression.getExpressionType());
     }
-    return ((TimeSeriesOperand) expression).getPath().getIDeviceID();
+    return ((TimeSeriesOperand) 
expression).getPath().getIDeviceID().toString();
   }
 
   public static Expression getMeasurementExpression(Expression expression, 
Analysis analysis) {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/LoadTsfileAnalyzer.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/LoadTsfileAnalyzer.java
index eff172ff036..ac349fbd5af 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/LoadTsfileAnalyzer.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/LoadTsfileAnalyzer.java
@@ -76,6 +76,7 @@ import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.apache.tsfile.read.TsFileSequenceReader;
 import org.apache.tsfile.read.TsFileSequenceReaderTimeseriesMetadataIterator;
 import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -550,7 +551,7 @@ public class LoadTsfileAnalyzer {
             schemaTree.searchDeviceSchemaInfo(
                 new PartialPath(device),
                 tsfileTimeseriesSchemas.stream()
-                    .map(MeasurementSchema::getMeasurementId)
+                    .map(IMeasurementSchema::getMeasurementId)
                     .collect(Collectors.toList()));
 
         if (iotdbDeviceSchemaInfo == null) {
@@ -577,8 +578,8 @@ public class LoadTsfileAnalyzer {
         final List<IMeasurementSchema> iotdbTimeseriesSchemas =
             iotdbDeviceSchemaInfo.getMeasurementSchemaList();
         for (int i = 0, n = iotdbTimeseriesSchemas.size(); i < n; i++) {
-          final MeasurementSchema tsFileSchema = 
tsfileTimeseriesSchemas.get(i);
-          final MeasurementSchema iotdbSchema = iotdbTimeseriesSchemas.get(i);
+          final IMeasurementSchema tsFileSchema = 
tsfileTimeseriesSchemas.get(i);
+          final IMeasurementSchema iotdbSchema = iotdbTimeseriesSchemas.get(i);
           if (iotdbSchema == null) {
             throw new VerifyMetadataException(
                 String.format(
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/DeviceUsingTemplateSchemaCache.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/DeviceUsingTemplateSchemaCache.java
index 4a09b7ac7b8..3529c26049e 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/DeviceUsingTemplateSchemaCache.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/DeviceUsingTemplateSchemaCache.java
@@ -201,7 +201,7 @@ public class DeviceUsingTemplateSchemaCache {
   public void invalidateCache(List<PartialPath> partialPathList) {
     for (PartialPath path : partialPathList) {
       for (PartialPath key : cache.asMap().keySet()) {
-        if (key.startsWith(path.getIDeviceID())) {
+        if (key.startsWith(path.getIDeviceID().toString())) {
           cache.invalidate(key);
         }
       }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ClusterSchemaFetcher.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ClusterSchemaFetcher.java
index db14449597f..3b5715fbd29 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ClusterSchemaFetcher.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ClusterSchemaFetcher.java
@@ -39,6 +39,7 @@ import org.apache.tsfile.enums.TSDataType;
 import org.apache.tsfile.file.metadata.enums.CompressionType;
 import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanBuilder.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanBuilder.java
index 7d6ba0e88f3..fc5e0c6d707 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanBuilder.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanBuilder.java
@@ -105,6 +105,7 @@ import 
org.apache.iotdb.db.utils.columngenerator.parameter.SlidingTimeColumnGene
 
 import org.apache.commons.lang3.Validate;
 import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.IDeviceID.Factory;
 import org.apache.tsfile.utils.Pair;
 import org.apache.tsfile.write.schema.IMeasurementSchema;
 
@@ -244,7 +245,7 @@ public class LogicalPlanBuilder {
               (sourceExpression.isViewExpression()
                   ? sourceExpression.getViewPath()
                   : ((TimeSeriesOperand) sourceExpression).getPath());
-      String outputDevice = outputPath.getIDeviceID();
+      String outputDevice = outputPath.getIDeviceID().toString();
       outputPathToSourceExpressionMap
           .computeIfAbsent(
               outputDevice,
@@ -540,7 +541,8 @@ public class LogicalPlanBuilder {
         PartialPath path = ts.getPath();
         Pair<List<String>, List<IMeasurementSchema>> pair =
             map.computeIfAbsent(
-                path.getIDeviceID(), k -> new Pair<>(new ArrayList<>(), new 
ArrayList<>()));
+                path.getIDeviceID().toString(),
+                k -> new Pair<>(new ArrayList<>(), new ArrayList<>()));
         pair.left.add(path.getMeasurement());
         try {
           pair.right.add(path.getMeasurementSchema());
@@ -554,7 +556,8 @@ public class LogicalPlanBuilder {
         Pair<List<String>, List<IMeasurementSchema>> pair = entry.getValue();
         AlignedPath alignedPath = null;
         try {
-          alignedPath = new AlignedPath(device, pair.left, pair.right);
+          alignedPath =
+              new AlignedPath(Factory.DEFAULT_FACTORY.create(device), 
pair.left, pair.right);
         } catch (IllegalPathException e) {
           throw new RuntimeException(e);
         }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanVisitor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanVisitor.java
index 8f6cb556766..30daa2f7894 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanVisitor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanVisitor.java
@@ -424,8 +424,8 @@ public class LogicalPlanVisitor extends 
StatementVisitor<PlanNode, MPPQueryConte
               return true;
             }
             if (StringUtils.isEmpty(alignedDeviceId)) {
-              alignedDeviceId = ts.getPath().getIDeviceID();
-            } else if 
(!alignedDeviceId.equalsIgnoreCase(ts.getPath().getIDeviceID())) {
+              alignedDeviceId = ts.getPath().getIDeviceID().toString();
+            } else if 
(!alignedDeviceId.equalsIgnoreCase(ts.getPath().getIDeviceID().toString())) {
               // count_time from only one aligned device can use 
AlignedSeriesAggScan
               return true;
             }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
index da0a7bd9667..3fa7ff5dba6 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
@@ -327,7 +327,7 @@ public class OperatorTreeGenerator extends 
PlanVisitor<Operator, LocalExecutionP
 
     SeriesScanOptions.Builder scanOptionsBuilder = 
getSeriesScanOptionsBuilder(node, context);
     scanOptionsBuilder.withAllSensors(
-        context.getAllSensors(seriesPath.getIDeviceID(), 
seriesPath.getMeasurement()));
+        context.getAllSensors(seriesPath.getIDeviceID().toString(), 
seriesPath.getMeasurement()));
     scanOptionsBuilder.withPushDownLimit(node.getPushDownLimit());
     scanOptionsBuilder.withPushDownOffset(node.getPushDownOffset());
 
@@ -547,7 +547,7 @@ public class OperatorTreeGenerator extends 
PlanVisitor<Operator, LocalExecutionP
 
     SeriesScanOptions.Builder scanOptionsBuilder = 
getSeriesScanOptionsBuilder(node, context);
     scanOptionsBuilder.withAllSensors(
-        context.getAllSensors(seriesPath.getIDeviceID(), 
seriesPath.getMeasurement()));
+        context.getAllSensors(seriesPath.getIDeviceID().toString(), 
seriesPath.getMeasurement()));
 
     OperatorContext operatorContext =
         context
@@ -2573,7 +2573,7 @@ public class OperatorTreeGenerator extends 
PlanVisitor<Operator, LocalExecutionP
 
     SeriesScanOptions.Builder scanOptionsBuilder = new 
SeriesScanOptions.Builder();
     scanOptionsBuilder.withAllSensors(
-        context.getAllSensors(seriesPath.getIDeviceID(), 
seriesPath.getMeasurement()));
+        context.getAllSensors(seriesPath.getIDeviceID().toString(), 
seriesPath.getMeasurement()));
     scanOptionsBuilder.withGlobalTimeFilter(context.getGlobalTimeFilter());
 
     SeriesAggregationScanOperator seriesAggregationScanOperator =
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/AlterTimeSeriesNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/AlterTimeSeriesNode.java
index 3f684a3e8fa..9eef306f3c4 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/AlterTimeSeriesNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/AlterTimeSeriesNode.java
@@ -375,7 +375,7 @@ public class AlterTimeSeriesNode extends WritePlanNode {
   @Override
   public List<WritePlanNode> splitByPartition(Analysis analysis) {
     TRegionReplicaSet regionReplicaSet =
-        
analysis.getSchemaPartitionInfo().getSchemaRegionReplicaSet(path.getIDeviceID());
+        
analysis.getSchemaPartitionInfo().getSchemaRegionReplicaSet(path.getIDeviceID().toString());
     setRegionReplicaSet(regionReplicaSet);
     return ImmutableList.of(this);
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateTimeSeriesNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateTimeSeriesNode.java
index 4da869b71b9..c455bc75dea 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateTimeSeriesNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateTimeSeriesNode.java
@@ -388,7 +388,7 @@ public class CreateTimeSeriesNode extends WritePlanNode 
implements ICreateTimeSe
   @Override
   public List<WritePlanNode> splitByPartition(Analysis analysis) {
     TRegionReplicaSet regionReplicaSet =
-        
analysis.getSchemaPartitionInfo().getSchemaRegionReplicaSet(path.getIDeviceID());
+        
analysis.getSchemaPartitionInfo().getSchemaRegionReplicaSet(path.getIDeviceID().toString());
     setRegionReplicaSet(regionReplicaSet);
     return ImmutableList.of(this);
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/view/CreateLogicalViewNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/view/CreateLogicalViewNode.java
index 8d5f6248718..7885d20ae23 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/view/CreateLogicalViewNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/view/CreateLogicalViewNode.java
@@ -228,7 +228,7 @@ public class CreateLogicalViewNode extends WritePlanNode 
implements ICreateLogic
       TRegionReplicaSet regionReplicaSet =
           analysis
               .getSchemaPartitionInfo()
-              .getSchemaRegionReplicaSet(entry.getKey().getIDeviceID());
+              
.getSchemaRegionReplicaSet(entry.getKey().getIDeviceID().toString());
 
       // create a map if the key(regionReplicaSet) is not exists,
       // then put this entry into this map(from regionReplicaSet to this entry)
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedLastQueryScanNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedLastQueryScanNode.java
index 5d7769f0849..687af64c3ca 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedLastQueryScanNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedLastQueryScanNode.java
@@ -220,7 +220,7 @@ public class AlignedLastQueryScanNode extends 
LastSeriesSourceNode {
       return outputViewPath;
     }
     if (seriesPath.getMeasurementList().size() > 1) {
-      return seriesPath.getIDeviceID();
+      return seriesPath.getIDeviceID().toString();
     }
     return seriesPath.transformToPartialPath().getFullPath();
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesScanNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesScanNode.java
index f26e3e03897..bc7a18934c4 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesScanNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesScanNode.java
@@ -126,7 +126,7 @@ public class AlignedSeriesScanNode extends 
SeriesScanSourceNode {
   @Override
   public List<String> getOutputColumnNames() {
     List<String> outputColumnNames = new ArrayList<>();
-    String deviceName = alignedPath.getIDeviceID();
+    String deviceName = alignedPath.getIDeviceID().toString();
     for (String measurement : alignedPath.getMeasurementList()) {
       outputColumnNames.add(deviceName.concat(TsFileConstant.PATH_SEPARATOR + 
measurement));
     }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/MetaUtils.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/MetaUtils.java
index ed83eef4620..b3234c4bdd8 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/MetaUtils.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/MetaUtils.java
@@ -91,7 +91,8 @@ public class MetaUtils {
         result.add(measurementPath);
         alignedPath = null;
       } else {
-        if (alignedPath == null || 
!alignedPath.equals(measurementPath.getIDeviceID())) {
+        if (alignedPath == null
+            || 
!alignedPath.getIDeviceID().equals(measurementPath.getIDeviceID())) {
           alignedPath = new AlignedPath(measurementPath);
           result.add(alignedPath);
         } else {
@@ -140,7 +141,7 @@ public class MetaUtils {
       if (!measurementPath.isUnderAlignedEntity()) {
         result.add(measurementPath);
       } else {
-        String deviceName = measurementPath.getIDeviceID();
+        String deviceName = measurementPath.getIDeviceID().toString();
         if (!deviceToAlignedPathMap.containsKey(deviceName)) {
           AlignedPath alignedPath = new AlignedPath(measurementPath);
           deviceToAlignedPathMap.put(deviceName, alignedPath);
@@ -235,10 +236,10 @@ public class MetaUtils {
       } else if (((MeasurementPath) seriesPath).isUnderAlignedEntity()) {
         // for without value filter
         List<Integer> indexes = pathToAggrIndexesMap.remove(seriesPath);
-        AlignedPath groupPath = temp.get(seriesPath.getIDeviceID());
+        AlignedPath groupPath = temp.get(seriesPath.getIDeviceID().toString());
         if (groupPath == null) {
           groupPath = new AlignedPath((MeasurementPath) seriesPath);
-          temp.put(seriesPath.getIDeviceID(), groupPath);
+          temp.put(seriesPath.getIDeviceID().toString(), groupPath);
           alignedPathToAggrIndexesMap
               .computeIfAbsent(groupPath, key -> new ArrayList<>())
               .add(indexes);
@@ -266,7 +267,7 @@ public class MetaUtils {
             .addAll(pathToAggregations.get(path));
       } else {
         deviceToAlignedPathsMap
-            .computeIfAbsent(path.getIDeviceID(), key -> new ArrayList<>())
+            .computeIfAbsent(path.getIDeviceID().toString(), key -> new 
ArrayList<>())
             .add(measurementPath);
       }
     }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
index 191baf40a70..8de831064a2 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
@@ -2066,7 +2066,7 @@ public class DataRegion implements IDataRegionForQuery {
             return true;
           }
         }
-        if (databaseName.contentEquals(device.getIDeviceID())) {
+        if (databaseName.contentEquals(device.getIDeviceID().toString())) {
           return false;
         }
         Pair<Long, Long> startAndEndTime =
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/ReadPointCompactionPerformer.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/ReadPointCompactionPerformer.java
index 4d3e776084a..eb8930c5925 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/ReadPointCompactionPerformer.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/ReadPointCompactionPerformer.java
@@ -44,7 +44,6 @@ import 
org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 
 import org.apache.tsfile.common.constant.TsFileConstant;
 import org.apache.tsfile.file.metadata.IDeviceID;
-import org.apache.tsfile.file.metadata.PlainDeviceID;
 import org.apache.tsfile.read.common.block.TsBlock;
 import org.apache.tsfile.read.reader.IPointReader;
 import org.apache.tsfile.utils.Pair;
@@ -252,9 +251,7 @@ public class ReadPointCompactionPerformer
       throws IllegalPathException {
     PartialPath seriesPath;
     if (isAlign) {
-      seriesPath =
-          new AlignedPath(
-              ((PlainDeviceID) deviceId).toStringID(), measurementIds, 
measurementSchemas);
+      seriesPath = new AlignedPath(deviceId, measurementIds, 
measurementSchemas);
     } else {
       seriesPath = new MeasurementPath(deviceId, measurementIds.get(0), 
measurementSchemas.get(0));
     }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/SingleSeriesCompactionExecutor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/SingleSeriesCompactionExecutor.java
index d0d9dd498ee..b7c7485fcd1 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/SingleSeriesCompactionExecutor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/SingleSeriesCompactionExecutor.java
@@ -29,7 +29,6 @@ import 
org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.tsfile.file.header.ChunkHeader;
 import org.apache.tsfile.file.metadata.ChunkMetadata;
 import org.apache.tsfile.file.metadata.IDeviceID;
-import org.apache.tsfile.file.metadata.PlainDeviceID;
 import org.apache.tsfile.read.TimeValuePair;
 import org.apache.tsfile.read.TsFileSequenceReader;
 import org.apache.tsfile.read.common.Chunk;
@@ -80,7 +79,7 @@ public class SingleSeriesCompactionExecutor {
       LinkedList<Pair<TsFileSequenceReader, List<ChunkMetadata>>> 
readerAndChunkMetadataList,
       CompactionTsFileWriter fileWriter,
       TsFileResource targetResource) {
-    this.device = new PlainDeviceID(series.getIDeviceID());
+    this.device = series.getIDeviceID();
     this.series = series;
     this.readerAndChunkMetadataList = readerAndChunkMetadataList;
     this.fileWriter = fileWriter;
@@ -98,7 +97,7 @@ public class SingleSeriesCompactionExecutor {
       CompactionTsFileWriter fileWriter,
       TsFileResource targetResource,
       CompactionTaskSummary summary) {
-    this.device = new PlainDeviceID(series.getIDeviceID());
+    this.device = series.getIDeviceID();
     this.series = series;
     this.readerAndChunkMetadataList = readerAndChunkMetadataList;
     this.fileWriter = fileWriter;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileReader.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileReader.java
index ceda1516b98..eca51d64e4c 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileReader.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileReader.java
@@ -221,7 +221,7 @@ public class CompactionTsFileReader extends 
TsFileSequenceReader {
       } else {
         // internal measurement node
         MetadataIndexNode nextLayerMeasurementNode =
-            MetadataIndexNode.deserializeFrom(nextBuffer, false);
+            getDeserializeContext().deserializeMetadataIndexNode(nextBuffer, 
false);
         timeseriesMetadataOffsetMap.putAll(
             getTimeseriesMetadataAndOffsetByDevice(
                 nextLayerMeasurementNode, excludedMeasurementIds, 
needChunkMetadata));
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedReadOnlyMemChunk.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedReadOnlyMemChunk.java
index add7c3163d5..eedba72efd7 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedReadOnlyMemChunk.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedReadOnlyMemChunk.java
@@ -75,7 +75,7 @@ public class AlignedReadOnlyMemChunk extends ReadOnlyMemChunk 
{
     // Time chunk
     Statistics timeStatistics = Statistics.getStatsByType(TSDataType.VECTOR);
     IChunkMetadata timeChunkMetadata =
-        new ChunkMetadata(timeChunkName, TSDataType.VECTOR, 0, timeStatistics);
+        new ChunkMetadata(timeChunkName, TSDataType.VECTOR, null, null, 0, 
timeStatistics);
     List<IChunkMetadata> valueChunkMetadataList = new ArrayList<>();
     // Update time chunk
     for (int row = 0; row < tsBlock.getPositionCount(); row++) {
@@ -141,7 +141,7 @@ public class AlignedReadOnlyMemChunk extends 
ReadOnlyMemChunk {
       if (valueStatistics.getCount() > 0) {
         IChunkMetadata valueChunkMetadata =
             new ChunkMetadata(
-                valueChunkNames.get(column), dataTypes.get(column), 0, 
valueStatistics);
+                valueChunkNames.get(column), dataTypes.get(column), null, 
null, 0, valueStatistics);
         valueChunkMetadataList.add(valueChunkMetadata);
         valueStatistics.setEmpty(false);
       } else {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/Modification.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/Modification.java
index 9bf2ec1d206..d2ee0985b42 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/Modification.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/Modification.java
@@ -45,7 +45,7 @@ public abstract class Modification {
   }
 
   public String getDevice() {
-    return path.getIDeviceID();
+    return path.getIDeviceID().toString();
   }
 
   public String getMeasurement() {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileSelfCheckTool.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileSelfCheckTool.java
index 60f81b8a229..285be543994 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileSelfCheckTool.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileSelfCheckTool.java
@@ -145,7 +145,8 @@ public class TsFileSelfCheckTool {
           }
           boolean currentChildLevelIsDevice = 
MetadataIndexNodeType.INTERNAL_DEVICE.equals(type);
           MetadataIndexNode metadataIndexNode =
-              MetadataIndexNode.deserializeFrom(buffer, 
currentChildLevelIsDevice);
+              getDeserializeContext()
+                  .deserializeMetadataIndexNode(buffer, 
currentChildLevelIsDevice);
           int metadataIndexListSize = metadataIndexNode.getChildren().size();
           for (int i = 0; i < metadataIndexListSize; i++) {
             long endOffset = metadataIndexNode.getEndOffset();
@@ -174,25 +175,28 @@ public class TsFileSelfCheckTool {
       if (tsFileMetaData == null) {
         readFileMetadata();
       }
-      MetadataIndexNode metadataIndexNode = tsFileMetaData.getMetadataIndex();
       Map<Long, Pair<Path, TimeseriesMetadata>> timeseriesMetadataMap = new 
TreeMap<>();
-      List<IMetadataIndexEntry> metadataIndexEntryList = 
metadataIndexNode.getChildren();
-      for (int i = 0; i < metadataIndexEntryList.size(); i++) {
-        IMetadataIndexEntry metadataIndexEntry = metadataIndexEntryList.get(i);
-        long endOffset = tsFileMetaData.getMetadataIndex().getEndOffset();
-        if (i != metadataIndexEntryList.size() - 1) {
-          endOffset = metadataIndexEntryList.get(i + 1).getOffset();
+      for (MetadataIndexNode metadataIndexNode :
+          tsFileMetaData.getTableMetadataIndexNodeMap().values()) {
+        List<IMetadataIndexEntry> metadataIndexEntryList = 
metadataIndexNode.getChildren();
+        for (int i = 0; i < metadataIndexEntryList.size(); i++) {
+          IMetadataIndexEntry metadataIndexEntry = 
metadataIndexEntryList.get(i);
+          long endOffset = metadataIndexNode.getEndOffset();
+          if (i != metadataIndexEntryList.size() - 1) {
+            endOffset = metadataIndexEntryList.get(i + 1).getOffset();
+          }
+          ByteBuffer buffer = readData(metadataIndexEntry.getOffset(), 
endOffset);
+          generateMetadataIndexWithOffset(
+              metadataIndexEntry.getOffset(),
+              metadataIndexEntry,
+              buffer,
+              null,
+              metadataIndexNode.getNodeType(),
+              timeseriesMetadataMap,
+              false);
         }
-        ByteBuffer buffer = readData(metadataIndexEntry.getOffset(), 
endOffset);
-        generateMetadataIndexWithOffset(
-            metadataIndexEntry.getOffset(),
-            metadataIndexEntry,
-            buffer,
-            null,
-            metadataIndexNode.getNodeType(),
-            timeseriesMetadataMap,
-            false);
       }
+
       return timeseriesMetadataMap;
     }
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileSketchTool.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileSketchTool.java
index 00416063558..a7d4c70a531 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileSketchTool.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileSketchTool.java
@@ -115,7 +115,7 @@ public class TsFileSketchTool {
     printChunk(allChunkGroupMetadata);
 
     // metadata begins
-    if (tsFileMetaData.getMetadataIndex().getChildren().isEmpty()) {
+    if (tsFileMetaData.getTableMetadataIndexNodeMap().isEmpty()) {
       printlnBoth(pw, String.format("%20s", reader.getFileMetadataPos() - 1) + 
"|\t[marker] 2");
     } else {
       printlnBoth(
@@ -126,29 +126,30 @@ public class TsFileSketchTool {
     Map<Long, Pair<Path, TimeseriesMetadata>> timeseriesMetadataMap =
         reader.getAllTimeseriesMetadataWithOffset();
 
-    // get all IndexOfTimerseriesIndex (excluding the root node in 
TsFileMetadata)
-    MetadataIndexNode metadataIndexNode = tsFileMetaData.getMetadataIndex();
+    // get all IndexOfTimerseriesIndex (excluding the root node in 
TsFileMetadata
     TreeMap<Long, MetadataIndexNode> metadataIndexNodeMap = new TreeMap<>();
     List<String> treeOutputStringBuffer = new ArrayList<>();
-    loadIndexTree(metadataIndexNode, metadataIndexNodeMap, 
treeOutputStringBuffer, 0);
-
-    // iterate timeseriesMetadataMap and metadataIndexNodeMap to print info in 
increasing order of
-    // position
-    Iterator<Entry<Long, Pair<Path, TimeseriesMetadata>>> ite1 =
-        timeseriesMetadataMap.entrySet().iterator();
-    Iterator<Entry<Long, MetadataIndexNode>> ite2 = 
metadataIndexNodeMap.entrySet().iterator();
-    Entry<Long, Pair<Path, TimeseriesMetadata>> value1 = (ite1.hasNext() ? 
ite1.next() : null);
-    Entry<Long, MetadataIndexNode> value2 = (ite2.hasNext() ? ite2.next() : 
null);
-    while (value1 != null || value2 != null) {
-      if (value2 == null || (value1 != null && 
value1.getKey().compareTo(value2.getKey()) <= 0)) {
-        printTimeseriesIndex(value1.getKey(), value1.getValue());
-        value1 = (ite1.hasNext() ? ite1.next() : null);
-      } else {
-        printIndexOfTimerseriesIndex(value2.getKey(), value2.getValue());
-        value2 = (ite2.hasNext() ? ite2.next() : null);
+    for (MetadataIndexNode metadataIndexNode :
+        tsFileMetaData.getTableMetadataIndexNodeMap().values()) {
+      loadIndexTree(metadataIndexNode, metadataIndexNodeMap, 
treeOutputStringBuffer, 0);
+
+      // iterate timeseriesMetadataMap and metadataIndexNodeMap to print info 
in increasing order of
+      // position
+      Iterator<Entry<Long, Pair<Path, TimeseriesMetadata>>> ite1 =
+          timeseriesMetadataMap.entrySet().iterator();
+      Iterator<Entry<Long, MetadataIndexNode>> ite2 = 
metadataIndexNodeMap.entrySet().iterator();
+      Entry<Long, Pair<Path, TimeseriesMetadata>> value1 = (ite1.hasNext() ? 
ite1.next() : null);
+      Entry<Long, MetadataIndexNode> value2 = (ite2.hasNext() ? ite2.next() : 
null);
+      while (value1 != null || value2 != null) {
+        if (value2 == null || (value1 != null && 
value1.getKey().compareTo(value2.getKey()) <= 0)) {
+          printTimeseriesIndex(value1.getKey(), value1.getValue());
+          value1 = (ite1.hasNext() ? ite1.next() : null);
+        } else {
+          printIndexOfTimerseriesIndex(value2.getKey(), value2.getValue());
+          value2 = (ite2.hasNext() ? ite2.next() : null);
+        }
       }
     }
-
     // print TsFile Metadata
     printTsFileMetadata(tsFileMetaData);
 
@@ -177,8 +178,9 @@ public class TsFileSketchTool {
       printlnBoth(pw, splitStr + " [TsFileMetadata] begins");
 
       // metadataIndex
-      MetadataIndexNode rootNode = tsFileMetaData.getMetadataIndex();
-      printIndexOfTimerseriesIndex(reader.getFileMetadataPos(), rootNode);
+      for (MetadataIndexNode rootNode : 
tsFileMetaData.getTableMetadataIndexNodeMap().values()) {
+        printIndexOfTimerseriesIndex(reader.getFileMetadataPos(), rootNode);
+      }
 
       // metaOffset
       printlnBoth(
@@ -545,7 +547,8 @@ public class TsFileSketchTool {
           }
           boolean currentChildLevelIsDevice = 
MetadataIndexNodeType.INTERNAL_DEVICE.equals(type);
           MetadataIndexNode metadataIndexNode =
-              MetadataIndexNode.deserializeFrom(buffer, 
currentChildLevelIsDevice);
+              getDeserializeContext()
+                  .deserializeMetadataIndexNode(buffer, 
currentChildLevelIsDevice);
           int metadataIndexListSize = metadataIndexNode.getChildren().size();
           for (int i = 0; i < metadataIndexListSize; i++) {
             long endOffset = metadataIndexNode.getEndOffset();
@@ -620,7 +623,8 @@ public class TsFileSketchTool {
           }
           boolean isDeviceLevel = 
MetadataIndexNodeType.INTERNAL_DEVICE.equals(type);
           MetadataIndexNode metadataIndexNode =
-              
MetadataIndexNode.deserializeFrom(tsFileInput.wrapAsInputStream(), 
isDeviceLevel);
+              getDeserializeContext()
+                  
.deserializeMetadataIndexNode(tsFileInput.wrapAsInputStream(), isDeviceLevel);
           int metadataIndexListSize = metadataIndexNode.getChildren().size();
           for (int i = 0; i < metadataIndexListSize; i++) {
             long endOffset = metadataIndexNode.getEndOffset();
@@ -647,25 +651,29 @@ public class TsFileSketchTool {
       if (tsFileMetaData == null) {
         readFileMetadata();
       }
-      MetadataIndexNode metadataIndexNode = tsFileMetaData.getMetadataIndex();
+
       Map<Long, Pair<Path, TimeseriesMetadata>> timeseriesMetadataMap = new 
TreeMap<>();
-      List<IMetadataIndexEntry> metadataIndexEntryList = 
metadataIndexNode.getChildren();
-      for (int i = 0; i < metadataIndexEntryList.size(); i++) {
-        IMetadataIndexEntry metadataIndexEntry = metadataIndexEntryList.get(i);
-        long endOffset = tsFileMetaData.getMetadataIndex().getEndOffset();
-        if (i != metadataIndexEntryList.size() - 1) {
-          endOffset = metadataIndexEntryList.get(i + 1).getOffset();
+      for (MetadataIndexNode metadataIndexNode :
+          tsFileMetaData.getTableMetadataIndexNodeMap().values()) {
+        List<IMetadataIndexEntry> metadataIndexEntryList = 
metadataIndexNode.getChildren();
+        for (int i = 0; i < metadataIndexEntryList.size(); i++) {
+          IMetadataIndexEntry metadataIndexEntry = 
metadataIndexEntryList.get(i);
+          long endOffset = metadataIndexNode.getEndOffset();
+          if (i != metadataIndexEntryList.size() - 1) {
+            endOffset = metadataIndexEntryList.get(i + 1).getOffset();
+          }
+          ByteBuffer buffer = readData(metadataIndexEntry.getOffset(), 
endOffset);
+          generateMetadataIndexWithOffset(
+              metadataIndexEntry.getOffset(),
+              metadataIndexEntry,
+              buffer,
+              null,
+              metadataIndexNode.getNodeType(),
+              timeseriesMetadataMap,
+              false);
         }
-        ByteBuffer buffer = readData(metadataIndexEntry.getOffset(), 
endOffset);
-        generateMetadataIndexWithOffset(
-            metadataIndexEntry.getOffset(),
-            metadataIndexEntry,
-            buffer,
-            null,
-            metadataIndexNode.getNodeType(),
-            timeseriesMetadataMap,
-            false);
       }
+
       return timeseriesMetadataMap;
     }
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/trigger/executor/TriggerFireVisitor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/trigger/executor/TriggerFireVisitor.java
index 6e73aa2e258..9fc5e21b7a4 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/trigger/executor/TriggerFireVisitor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/trigger/executor/TriggerFireVisitor.java
@@ -52,6 +52,7 @@ import org.apache.iotdb.trigger.api.enums.TriggerEvent;
 import org.apache.thrift.TException;
 import org.apache.tsfile.utils.BitMap;
 import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

Reply via email to