Remove tsfile module from IoTDB Project

diff --git a/example/flink/pom.xml b/example/flink/pom.xml
index 1c1c0a6..8215b4e 100644
--- a/example/flink/pom.xml
+++ b/example/flink/pom.xml
@@ -43,9 +43,9 @@
             </exclusions>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>${project.version}</version>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/example/flink/src/main/java/org/apache/iotdb/flink/FlinkIoTDBSink.java b/example/flink/src/main/java/org/apache/iotdb/flink/FlinkIoTDBSink.java
index 2469f1c..91adae8 100644
--- a/example/flink/src/main/java/org/apache/iotdb/flink/FlinkIoTDBSink.java
+++ b/example/flink/src/main/java/org/apache/iotdb/flink/FlinkIoTDBSink.java
@@ -19,13 +19,13 @@
 package org.apache.iotdb.flink;
 
 import org.apache.iotdb.flink.options.IoTDBSinkOptions;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
 import com.google.common.collect.Lists;
 import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
 import org.apache.flink.streaming.api.functions.source.SourceFunction;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 
 import java.security.SecureRandom;
 import java.util.HashMap;
diff --git a/example/flink/src/main/java/org/apache/iotdb/flink/FlinkIoTDBSource.java b/example/flink/src/main/java/org/apache/iotdb/flink/FlinkIoTDBSource.java
index 175b96d..4341d11 100644
--- a/example/flink/src/main/java/org/apache/iotdb/flink/FlinkIoTDBSource.java
+++ b/example/flink/src/main/java/org/apache/iotdb/flink/FlinkIoTDBSource.java
@@ -23,12 +23,12 @@
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.session.Session;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
 
 import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
+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.read.common.RowRecord;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/example/flink/src/main/java/org/apache/iotdb/flink/FlinkTsFileBatchSink.java b/example/flink/src/main/java/org/apache/iotdb/flink/FlinkTsFileBatchSink.java
index e2fddb5..8e9c68b 100644
--- a/example/flink/src/main/java/org/apache/iotdb/flink/FlinkTsFileBatchSink.java
+++ b/example/flink/src/main/java/org/apache/iotdb/flink/FlinkTsFileBatchSink.java
@@ -20,12 +20,6 @@
 
 import org.apache.iotdb.flink.tsfile.RowTSRecordConverter;
 import org.apache.iotdb.flink.tsfile.TSRecordOutputFormat;
-import org.apache.iotdb.tsfile.common.constant.QueryConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
 
 import org.apache.flink.api.common.typeinfo.TypeInformation;
 import org.apache.flink.api.common.typeinfo.Types;
@@ -34,6 +28,12 @@
 import org.apache.flink.api.java.tuple.Tuple7;
 import org.apache.flink.api.java.typeutils.RowTypeInfo;
 import org.apache.flink.types.Row;
+import org.apache.tsfile.common.constant.QueryConstant;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.Schema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/flink/src/main/java/org/apache/iotdb/flink/FlinkTsFileBatchSource.java b/example/flink/src/main/java/org/apache/iotdb/flink/FlinkTsFileBatchSource.java
index fae6997..439f320 100644
--- a/example/flink/src/main/java/org/apache/iotdb/flink/FlinkTsFileBatchSource.java
+++ b/example/flink/src/main/java/org/apache/iotdb/flink/FlinkTsFileBatchSource.java
@@ -20,9 +20,6 @@
 
 import org.apache.iotdb.flink.tsfile.RowRowRecordParser;
 import org.apache.iotdb.flink.tsfile.TsFileInputFormat;
-import org.apache.iotdb.tsfile.common.constant.QueryConstant;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
 
 import org.apache.flink.api.common.typeinfo.TypeInformation;
 import org.apache.flink.api.common.typeinfo.Types;
@@ -30,6 +27,9 @@
 import org.apache.flink.api.java.ExecutionEnvironment;
 import org.apache.flink.api.java.typeutils.RowTypeInfo;
 import org.apache.flink.types.Row;
+import org.apache.tsfile.common.constant.QueryConstant;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.read.expression.QueryExpression;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/flink/src/main/java/org/apache/iotdb/flink/FlinkTsFileStreamSink.java b/example/flink/src/main/java/org/apache/iotdb/flink/FlinkTsFileStreamSink.java
index 8146ce1..9155f18 100644
--- a/example/flink/src/main/java/org/apache/iotdb/flink/FlinkTsFileStreamSink.java
+++ b/example/flink/src/main/java/org/apache/iotdb/flink/FlinkTsFileStreamSink.java
@@ -20,12 +20,6 @@
 
 import org.apache.iotdb.flink.tsfile.RowTSRecordConverter;
 import org.apache.iotdb.flink.tsfile.TSRecordOutputFormat;
-import org.apache.iotdb.tsfile.common.constant.QueryConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
 
 import org.apache.flink.api.common.typeinfo.TypeInformation;
 import org.apache.flink.api.common.typeinfo.Types;
@@ -34,6 +28,12 @@
 import org.apache.flink.streaming.api.datastream.DataStream;
 import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
 import org.apache.flink.types.Row;
+import org.apache.tsfile.common.constant.QueryConstant;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.Schema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/flink/src/main/java/org/apache/iotdb/flink/FlinkTsFileStreamSource.java b/example/flink/src/main/java/org/apache/iotdb/flink/FlinkTsFileStreamSource.java
index 330705e..7890142 100644
--- a/example/flink/src/main/java/org/apache/iotdb/flink/FlinkTsFileStreamSource.java
+++ b/example/flink/src/main/java/org/apache/iotdb/flink/FlinkTsFileStreamSource.java
@@ -20,9 +20,6 @@
 
 import org.apache.iotdb.flink.tsfile.RowRowRecordParser;
 import org.apache.iotdb.flink.tsfile.TsFileInputFormat;
-import org.apache.iotdb.tsfile.common.constant.QueryConstant;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
 
 import org.apache.flink.api.common.typeinfo.TypeInformation;
 import org.apache.flink.api.common.typeinfo.Types;
@@ -30,6 +27,9 @@
 import org.apache.flink.streaming.api.datastream.DataStream;
 import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
 import org.apache.flink.types.Row;
+import org.apache.tsfile.common.constant.QueryConstant;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.read.expression.QueryExpression;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/flink/src/main/java/org/apache/iotdb/flink/TsFileUtils.java b/example/flink/src/main/java/org/apache/iotdb/flink/TsFileUtils.java
index 6016182..4a4de7e 100644
--- a/example/flink/src/main/java/org/apache/iotdb/flink/TsFileUtils.java
+++ b/example/flink/src/main/java/org/apache/iotdb/flink/TsFileUtils.java
@@ -18,22 +18,21 @@
 
 package org.apache.iotdb.flink;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.TsFileReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.TsFileReader;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.read.common.RowRecord;
+import org.apache.tsfile.read.expression.QueryExpression;
+import org.apache.tsfile.read.query.dataset.QueryDataSet;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.record.datapoint.LongDataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.Schema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSMRWriteExample.java b/example/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSMRWriteExample.java
index 674a8b7..61e3357 100644
--- a/example/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSMRWriteExample.java
+++ b/example/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSMRWriteExample.java
@@ -20,13 +20,6 @@
 package org.apache.iotdb.hadoop.tsfile;
 
 import org.apache.iotdb.hadoop.tsfile.record.HDFSTSRecord;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.DoubleDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
 
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
@@ -39,6 +32,13 @@
 import org.apache.hadoop.mapreduce.Job;
 import org.apache.hadoop.mapreduce.Mapper;
 import org.apache.hadoop.mapreduce.Reducer;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.record.datapoint.DoubleDataPoint;
+import org.apache.tsfile.write.record.datapoint.LongDataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.Schema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -64,14 +64,14 @@
     // add measurements into file schema (all with INT64 data type)
     for (int i = 0; i < 2; i++) {
       schema.registerTimeseries(
-          new org.apache.iotdb.tsfile.read.common.Path(Constant.DEVICE_1),
+          new org.apache.tsfile.read.common.Path(Constant.DEVICE_1),
           new MeasurementSchema(
               Constant.SENSOR_PREFIX + (i + 1), TSDataType.INT64, TSEncoding.TS_2DIFF));
     }
 
     for (int i = 2; i < sensorNum; i++) {
       schema.registerTimeseries(
-          new org.apache.iotdb.tsfile.read.common.Path(Constant.DEVICE_1),
+          new org.apache.tsfile.read.common.Path(Constant.DEVICE_1),
           new MeasurementSchema(
               Constant.SENSOR_PREFIX + (i + 1), TSDataType.DOUBLE, TSEncoding.TS_2DIFF));
     }
diff --git a/example/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TsFileHelper.java b/example/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TsFileHelper.java
index 03d54c3..6f43a77 100644
--- a/example/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TsFileHelper.java
+++ b/example/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TsFileHelper.java
@@ -19,15 +19,14 @@
 
 package org.apache.iotdb.hadoop.tsfile;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.Schema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TsFileWriteToHDFS.java b/example/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TsFileWriteToHDFS.java
index 4bbf4b4..1b15c5c 100644
--- a/example/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TsFileWriteToHDFS.java
+++ b/example/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TsFileWriteToHDFS.java
@@ -19,19 +19,18 @@
 
 package org.apache.iotdb.hadoop.tsfile;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.fileSystem.FSType;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
+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.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.fileSystem.FSType;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.record.datapoint.LongDataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/kafka/src/main/java/org/apache/iotdb/kafka/Consumer.java b/example/kafka/src/main/java/org/apache/iotdb/kafka/Consumer.java
index 9771b85..1e09e09 100644
--- a/example/kafka/src/main/java/org/apache/iotdb/kafka/Consumer.java
+++ b/example/kafka/src/main/java/org/apache/iotdb/kafka/Consumer.java
@@ -22,13 +22,13 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.pool.SessionPool;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
 import org.apache.kafka.clients.consumer.ConsumerConfig;
 import org.apache.kafka.clients.consumer.KafkaConsumer;
 import org.apache.kafka.common.serialization.StringDeserializer;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/kafka/src/main/java/org/apache/iotdb/kafka/ConsumerThread.java b/example/kafka/src/main/java/org/apache/iotdb/kafka/ConsumerThread.java
index 93752ac..deddee5 100644
--- a/example/kafka/src/main/java/org/apache/iotdb/kafka/ConsumerThread.java
+++ b/example/kafka/src/main/java/org/apache/iotdb/kafka/ConsumerThread.java
@@ -22,11 +22,11 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.pool.SessionPool;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 import org.apache.kafka.clients.consumer.ConsumerRecord;
 import org.apache.kafka.clients.consumer.ConsumerRecords;
 import org.apache.kafka.clients.consumer.KafkaConsumer;
+import org.apache.tsfile.enums.TSDataType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/pipe-count-point-processor/pom.xml b/example/pipe-count-point-processor/pom.xml
index 9a0573b..c487ea1 100644
--- a/example/pipe-count-point-processor/pom.xml
+++ b/example/pipe-count-point-processor/pom.xml
@@ -47,9 +47,9 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>${project.version}</version>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>common</artifactId>
+            <version>${tsfile.version}</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>
diff --git a/example/pipe-count-point-processor/src/main/java/org/apache/iotdb/CountPointProcessor.java b/example/pipe-count-point-processor/src/main/java/org/apache/iotdb/CountPointProcessor.java
index 766c1ce..838090e 100644
--- a/example/pipe-count-point-processor/src/main/java/org/apache/iotdb/CountPointProcessor.java
+++ b/example/pipe-count-point-processor/src/main/java/org/apache/iotdb/CountPointProcessor.java
@@ -29,9 +29,10 @@
 import org.apache.iotdb.pipe.api.customizer.parameter.PipeParameters;
 import org.apache.iotdb.pipe.api.event.Event;
 import org.apache.iotdb.pipe.api.event.dml.insertion.TabletInsertionEvent;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.util.Collections;
 import java.util.concurrent.atomic.AtomicLong;
diff --git a/example/pom.xml b/example/pom.xml
index 520600c..e3ed350 100644
--- a/example/pom.xml
+++ b/example/pom.xml
@@ -33,7 +33,6 @@
         <module>kafka</module>
         <module>rocketmq</module>
         <module>session</module>
-        <module>tsfile</module>
         <module>jdbc</module>
         <module>hadoop</module>
         <module>flink</module>
diff --git a/example/pulsar/src/main/java/org/apache/iotdb/pulsar/PulsarConsumer.java b/example/pulsar/src/main/java/org/apache/iotdb/pulsar/PulsarConsumer.java
index b48217e..54adbb3 100644
--- a/example/pulsar/src/main/java/org/apache/iotdb/pulsar/PulsarConsumer.java
+++ b/example/pulsar/src/main/java/org/apache/iotdb/pulsar/PulsarConsumer.java
@@ -22,15 +22,15 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.pool.SessionPool;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
 import org.apache.pulsar.client.api.Consumer;
 import org.apache.pulsar.client.api.KeySharedPolicy;
 import org.apache.pulsar.client.api.PulsarClient;
 import org.apache.pulsar.client.api.PulsarClientException;
 import org.apache.pulsar.client.api.SubscriptionType;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/pulsar/src/main/java/org/apache/iotdb/pulsar/PulsarConsumerThread.java b/example/pulsar/src/main/java/org/apache/iotdb/pulsar/PulsarConsumerThread.java
index aa871a0..fce2baa 100644
--- a/example/pulsar/src/main/java/org/apache/iotdb/pulsar/PulsarConsumerThread.java
+++ b/example/pulsar/src/main/java/org/apache/iotdb/pulsar/PulsarConsumerThread.java
@@ -22,11 +22,11 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.pool.SessionPool;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 import org.apache.pulsar.client.api.Consumer;
 import org.apache.pulsar.client.api.Message;
 import org.apache.pulsar.client.api.Messages;
+import org.apache.tsfile.enums.TSDataType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/rabbitmq/src/main/java/org/apache/iotdb/rabbitmq/RabbitMQConsumer.java b/example/rabbitmq/src/main/java/org/apache/iotdb/rabbitmq/RabbitMQConsumer.java
index 5c21258..f8f93c3 100644
--- a/example/rabbitmq/src/main/java/org/apache/iotdb/rabbitmq/RabbitMQConsumer.java
+++ b/example/rabbitmq/src/main/java/org/apache/iotdb/rabbitmq/RabbitMQConsumer.java
@@ -22,15 +22,15 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.Session;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
 import com.rabbitmq.client.AMQP;
 import com.rabbitmq.client.BuiltinExchangeType;
 import com.rabbitmq.client.Channel;
 import com.rabbitmq.client.DefaultConsumer;
 import com.rabbitmq.client.Envelope;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/rocketmq/src/main/java/org/apache/iotdb/rocketmq/RocketMQConsumer.java b/example/rocketmq/src/main/java/org/apache/iotdb/rocketmq/RocketMQConsumer.java
index 336a2c7..4d45858 100644
--- a/example/rocketmq/src/main/java/org/apache/iotdb/rocketmq/RocketMQConsumer.java
+++ b/example/rocketmq/src/main/java/org/apache/iotdb/rocketmq/RocketMQConsumer.java
@@ -22,9 +22,6 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.Session;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
 import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
 import org.apache.rocketmq.client.consumer.listener.ConsumeOrderlyStatus;
@@ -32,6 +29,9 @@
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
 import org.apache.rocketmq.common.message.MessageExt;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/schema/pom.xml b/example/schema/pom.xml
index c1e5f18..1ac5536 100644
--- a/example/schema/pom.xml
+++ b/example/schema/pom.xml
@@ -35,9 +35,9 @@
             <version>1.3.13</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
             <scope>compile</scope>
         </dependency>
     </dependencies>
diff --git a/example/schema/src/main/java/org/apache/iotdb/schema/PathCheckExample.java b/example/schema/src/main/java/org/apache/iotdb/schema/PathCheckExample.java
index 8e8d154..5c2eea3 100644
--- a/example/schema/src/main/java/org/apache/iotdb/schema/PathCheckExample.java
+++ b/example/schema/src/main/java/org/apache/iotdb/schema/PathCheckExample.java
@@ -19,9 +19,8 @@
 
 package org.apache.iotdb.schema;
 
-import org.apache.iotdb.tsfile.exception.PathParseException;
-import org.apache.iotdb.tsfile.read.common.parser.PathNodesGenerator;
-
+import org.apache.tsfile.exception.PathParseException;
+import org.apache.tsfile.read.common.parser.PathNodesGenerator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/session/src/main/java/org/apache/iotdb/AlignedTimeseriesSessionExample.java b/example/session/src/main/java/org/apache/iotdb/AlignedTimeseriesSessionExample.java
index fc0b212..1bded66 100644
--- a/example/session/src/main/java/org/apache/iotdb/AlignedTimeseriesSessionExample.java
+++ b/example/session/src/main/java/org/apache/iotdb/AlignedTimeseriesSessionExample.java
@@ -26,12 +26,13 @@
 import org.apache.iotdb.session.Session;
 import org.apache.iotdb.session.template.InternalNode;
 import org.apache.iotdb.session.template.MeasurementNode;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+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.BitMap;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.io.IOException;
 import java.security.SecureRandom;
diff --git a/example/session/src/main/java/org/apache/iotdb/DataMigrationExample.java b/example/session/src/main/java/org/apache/iotdb/DataMigrationExample.java
index 13805b9..6743124 100644
--- a/example/session/src/main/java/org/apache/iotdb/DataMigrationExample.java
+++ b/example/session/src/main/java/org/apache/iotdb/DataMigrationExample.java
@@ -25,10 +25,10 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.pool.SessionPool;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/session/src/main/java/org/apache/iotdb/HybridTimeseriesSessionExample.java b/example/session/src/main/java/org/apache/iotdb/HybridTimeseriesSessionExample.java
index df5cd56..79b6f89 100644
--- a/example/session/src/main/java/org/apache/iotdb/HybridTimeseriesSessionExample.java
+++ b/example/session/src/main/java/org/apache/iotdb/HybridTimeseriesSessionExample.java
@@ -23,10 +23,10 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.Session;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/session/src/main/java/org/apache/iotdb/SessionConcurrentExample.java b/example/session/src/main/java/org/apache/iotdb/SessionConcurrentExample.java
index e44654b..1aa3a96 100644
--- a/example/session/src/main/java/org/apache/iotdb/SessionConcurrentExample.java
+++ b/example/session/src/main/java/org/apache/iotdb/SessionConcurrentExample.java
@@ -24,12 +24,12 @@
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.Session;
 import org.apache.iotdb.session.template.MeasurementNode;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/session/src/main/java/org/apache/iotdb/SessionExample.java b/example/session/src/main/java/org/apache/iotdb/SessionExample.java
index d5f4045..0daec08 100644
--- a/example/session/src/main/java/org/apache/iotdb/SessionExample.java
+++ b/example/session/src/main/java/org/apache/iotdb/SessionExample.java
@@ -29,14 +29,15 @@
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.session.Session;
 import org.apache.iotdb.session.template.MeasurementNode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.common.conf.TSFileConfig;
+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.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/example/session/src/main/java/org/apache/iotdb/SessionPoolExample.java b/example/session/src/main/java/org/apache/iotdb/SessionPoolExample.java
index 1857b71..578a82d 100644
--- a/example/session/src/main/java/org/apache/iotdb/SessionPoolExample.java
+++ b/example/session/src/main/java/org/apache/iotdb/SessionPoolExample.java
@@ -24,8 +24,8 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.pool.SessionPool;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/session/src/main/java/org/apache/iotdb/SyntaxConventionRelatedExample.java b/example/session/src/main/java/org/apache/iotdb/SyntaxConventionRelatedExample.java
index 7cdd338..5831eea 100644
--- a/example/session/src/main/java/org/apache/iotdb/SyntaxConventionRelatedExample.java
+++ b/example/session/src/main/java/org/apache/iotdb/SyntaxConventionRelatedExample.java
@@ -25,10 +25,10 @@
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.session.Session;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/session/src/main/java/org/apache/iotdb/TabletExample.java b/example/session/src/main/java/org/apache/iotdb/TabletExample.java
index ce116cc..2b2d595 100644
--- a/example/session/src/main/java/org/apache/iotdb/TabletExample.java
+++ b/example/session/src/main/java/org/apache/iotdb/TabletExample.java
@@ -20,10 +20,11 @@
 package org.apache.iotdb;
 
 import org.apache.iotdb.session.Session;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.io.BufferedReader;
 import java.io.FileReader;
diff --git a/example/trigger/src/main/java/org/apache/iotdb/trigger/LoggerTrigger.java b/example/trigger/src/main/java/org/apache/iotdb/trigger/LoggerTrigger.java
index 1ee403f..f1b5730 100644
--- a/example/trigger/src/main/java/org/apache/iotdb/trigger/LoggerTrigger.java
+++ b/example/trigger/src/main/java/org/apache/iotdb/trigger/LoggerTrigger.java
@@ -20,11 +20,11 @@
 package org.apache.iotdb.trigger;
 
 import org.apache.iotdb.trigger.api.Trigger;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/trigger/src/main/java/org/apache/iotdb/trigger/StatisticsUpdaterTrigger.java b/example/trigger/src/main/java/org/apache/iotdb/trigger/StatisticsUpdaterTrigger.java
index 8c3c023..6d9f260 100644
--- a/example/trigger/src/main/java/org/apache/iotdb/trigger/StatisticsUpdaterTrigger.java
+++ b/example/trigger/src/main/java/org/apache/iotdb/trigger/StatisticsUpdaterTrigger.java
@@ -27,10 +27,10 @@
 import org.apache.iotdb.trigger.api.Trigger;
 import org.apache.iotdb.trigger.api.TriggerAttributes;
 import org.apache.iotdb.trigger.api.enums.FailureStrategy;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.record.Tablet;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.record.Tablet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/example/tsfile/pom.xml b/example/tsfile/pom.xml
deleted file mode 100644
index 5c8b9cc..0000000
--- a/example/tsfile/pom.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-examples</artifactId>
-        <version>1.3.2-SNAPSHOT</version>
-    </parent>
-    <artifactId>tsfile-example</artifactId>
-    <name>IoTDB: Example: TSFile</name>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>tsfile</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
-</project>
diff --git a/example/tsfile/readme.md b/example/tsfile/readme.md
deleted file mode 100644
index 46b8895..0000000
--- a/example/tsfile/readme.md
+++ /dev/null
@@ -1,84 +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.
-
--->
-
-# Function
-```
-The example is to show how to write and read a TsFile File.
-```
-# Usage
-## Dependencies with Maven
-
-```
-<dependencies>
-    <dependency>
-        <groupId>org.apache.iotdb</groupId>
-        <artifactId>tsfile</artifactId>
-     	  <version>1.0.0</version>
-    </dependency>
-</dependencies>
-```
-
-
-## Run TsFileWrite.java
-
-
-  This class is to show how to write a TsFile. It provided two ways:
-  
-   The first one is using a JSON string for measurement(s). The JSON string is an array of JSON 
-   objects(schema). The object must include the *measurement_id*, *datatype*, *encoding*, and 
-   *compressor*. 
-   
-   An example JSON string is provided in the comments in 
-   the method
-   
-        public static void tsFileWriteWithJson() throws IOException,WriteProcessException
-   It uses this interface
-   
-        public void addMeasurementByJson(JSONObject measurement) throws WriteProcessException  
-   An alternative way is to add these measurements directly(manually) by the second interface: 
-   
-         public void addMeasurement(MeasurementSchema measurementSchema) throws WriteProcessException
-   
-   The method
-   
-         public static void tsFileWriteDirect() throws IOException,WriteProcessException
-   shows how to use that interface.
-   
-   Note that the measurements in the two methods are the same therefore there output TsFile should also be identical.
-
-
-  
-## Run TsFileRead.java
-
- This class is to show how to read TsFile file named "testDirect.tsfile".
- 
- The TsFile file "testDirect.tsfile" is generated from class TsFileWrite.
- 
- It generates the same TsFile(testDirect.tsfile and testWithJson.tsfile) file by two different ways
- 
- Run TsFileWrite to generate the testDirect.tsfile first
- 
-## Run TsFileSequenceRead.java
-
-  This class is to show the structure of a TsFile.
-
-### Notice 
-  For detail, please refer to https://github.com/apache/iotdb/blob/master/tsfile/README.md.
diff --git a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/Constant.java b/example/tsfile/src/main/java/org/apache/iotdb/tsfile/Constant.java
deleted file mode 100644
index 3218470..0000000
--- a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/Constant.java
+++ /dev/null
@@ -1,33 +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;
-
-public class Constant {
-
-  private Constant() {}
-
-  static final String SENSOR_1 = "sensor_1";
-  static final String SENSOR_2 = "sensor_2";
-  static final String SENSOR_3 = "sensor_3";
-
-  static final String DEVICE_PREFIX = "device_";
-  static final String DEVICE_1 = "root.sg.device_1";
-  static final String DEVICE_2 = "root.sg.device_2";
-}
diff --git a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileForceAppendWrite.java b/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileForceAppendWrite.java
deleted file mode 100644
index a165cce..0000000
--- a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileForceAppendWrite.java
+++ /dev/null
@@ -1,124 +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;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.ForceAppendTsFileWriter;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-
-public class TsFileForceAppendWrite {
-
-  private static final Logger LOGGER = LoggerFactory.getLogger(TsFileForceAppendWrite.class);
-
-  public static void main(String[] args) throws IOException {
-    String path = "test.tsfile";
-    File f = FSFactoryProducer.getFSFactory().getFile(path);
-    if (f.exists()) {
-      Files.delete(f.toPath());
-    }
-
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-
-      // add measurements into file schema
-      for (int i = 0; i < 4; i++) {
-        tsFileWriter.registerTimeseries(
-            new Path(Constant.DEVICE_PREFIX + i),
-            new MeasurementSchema(Constant.SENSOR_1, TSDataType.INT64, TSEncoding.RLE));
-        tsFileWriter.registerTimeseries(
-            new Path(Constant.DEVICE_PREFIX + i),
-            new MeasurementSchema(Constant.SENSOR_2, TSDataType.INT64, TSEncoding.RLE));
-        tsFileWriter.registerTimeseries(
-            new Path(Constant.DEVICE_PREFIX + i),
-            new MeasurementSchema(Constant.SENSOR_3, TSDataType.INT64, TSEncoding.RLE));
-      }
-
-      // construct TSRecord
-      for (int i = 0; i < 100; i++) {
-        TSRecord tsRecord = new TSRecord(i, Constant.DEVICE_PREFIX + (i % 4));
-        DataPoint dPoint1 = new LongDataPoint(Constant.SENSOR_1, i);
-        DataPoint dPoint2 = new LongDataPoint(Constant.SENSOR_2, i);
-        DataPoint dPoint3 = new LongDataPoint(Constant.SENSOR_3, i);
-        tsRecord.addTuple(dPoint1);
-        tsRecord.addTuple(dPoint2);
-        tsRecord.addTuple(dPoint3);
-
-        // write TSRecord
-        tsFileWriter.write(tsRecord);
-      }
-    } catch (Exception e) {
-      LOGGER.error("meet error in TsFileWrite ", e);
-    }
-
-    // open the closed file with ForceAppendTsFileWriter
-
-    try (ForceAppendTsFileWriter fwriter = new ForceAppendTsFileWriter(f)) {
-      fwriter.doTruncate();
-      write(fwriter);
-    } catch (Exception e) {
-      LOGGER.error("ForceAppendTsFileWriter truncate or write error ", e);
-    }
-  }
-
-  private static void write(ForceAppendTsFileWriter fwriter) {
-    try (TsFileWriter tsFileWriter1 = new TsFileWriter(fwriter)) {
-      // add measurements into file schema
-      for (int i = 0; i < 4; i++) {
-        tsFileWriter1.registerTimeseries(
-            new Path(Constant.DEVICE_PREFIX + i),
-            new MeasurementSchema(Constant.SENSOR_1, TSDataType.INT64, TSEncoding.RLE));
-        tsFileWriter1.registerTimeseries(
-            new Path(Constant.DEVICE_PREFIX + i),
-            new MeasurementSchema(Constant.SENSOR_2, TSDataType.INT64, TSEncoding.RLE));
-        tsFileWriter1.registerTimeseries(
-            new Path(Constant.DEVICE_PREFIX + i),
-            new MeasurementSchema(Constant.SENSOR_3, TSDataType.INT64, TSEncoding.RLE));
-      }
-      // construct TSRecord
-      for (int i = 100; i < 120; i++) {
-        TSRecord tsRecord = new TSRecord(i, Constant.DEVICE_PREFIX + (i % 4));
-        DataPoint dPoint1 = new LongDataPoint(Constant.SENSOR_1, i);
-        DataPoint dPoint2 = new LongDataPoint(Constant.SENSOR_2, i);
-        DataPoint dPoint3 = new LongDataPoint(Constant.SENSOR_3, i);
-        tsRecord.addTuple(dPoint1);
-        tsRecord.addTuple(dPoint2);
-        tsRecord.addTuple(dPoint3);
-
-        // write TSRecord
-        tsFileWriter1.write(tsRecord);
-      }
-    } catch (Exception e) {
-      LOGGER.error("meet error in TsFileWrite ", e);
-    }
-  }
-}
diff --git a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileRead.java b/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileRead.java
deleted file mode 100644
index d664db4..0000000
--- a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileRead.java
+++ /dev/null
@@ -1,106 +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;
-
-import org.apache.iotdb.tsfile.read.TsFileReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.ArrayList;
-
-import static org.apache.iotdb.tsfile.Constant.DEVICE_1;
-import static org.apache.iotdb.tsfile.Constant.SENSOR_1;
-import static org.apache.iotdb.tsfile.Constant.SENSOR_2;
-import static org.apache.iotdb.tsfile.Constant.SENSOR_3;
-
-/**
- * The class is to show how to read TsFile file named "test.tsfile". The TsFile file "test.tsfile"
- * is generated from class TsFileWriteWithTSRecord or TsFileWriteWithTablet. Run
- * TsFileWriteWithTSRecord or TsFileWriteWithTablet to generate the test.tsfile first
- */
-public class TsFileRead {
-
-  private static final Logger LOGGER = LoggerFactory.getLogger(TsFileRead.class);
-
-  private static void queryAndPrint(
-      ArrayList<Path> paths, TsFileReader readTsFile, IExpression statement) throws IOException {
-    QueryExpression queryExpression = QueryExpression.create(paths, statement);
-    QueryDataSet queryDataSet = readTsFile.query(queryExpression);
-    while (queryDataSet.hasNext()) {
-      String next = queryDataSet.next().toString();
-      LOGGER.info(next);
-    }
-    LOGGER.info("----------------");
-  }
-
-  public static void main(String[] args) throws IOException {
-
-    // file path
-    String path = "test.tsfile";
-
-    // create reader and get the readTsFile interface
-    try (TsFileSequenceReader reader = new TsFileSequenceReader(path);
-        TsFileReader readTsFile = new TsFileReader(reader)) {
-
-      // use these paths(all measurements) for all the queries
-      ArrayList<Path> paths = new ArrayList<>();
-      paths.add(new Path(DEVICE_1, SENSOR_1, true));
-      paths.add(new Path(DEVICE_1, SENSOR_2, true));
-      paths.add(new Path(DEVICE_1, SENSOR_3, true));
-
-      // no filter, should select 1 2 3 4 6 7 8
-      queryAndPrint(paths, readTsFile, null);
-
-      // time filter : 4 <= time <= 10, should select 4 6 7 8
-      IExpression timeFilter =
-          BinaryExpression.and(
-              new GlobalTimeExpression(TimeFilterApi.gtEq(4L)),
-              new GlobalTimeExpression(TimeFilterApi.ltEq(10L)));
-      queryAndPrint(paths, readTsFile, timeFilter);
-
-      // value filter : device_1.sensor_2 <= 20, should select 1 2 4 6 7
-      IExpression valueFilter =
-          new SingleSeriesExpression(new Path(DEVICE_1, SENSOR_2, true), ValueFilterApi.ltEq(20L));
-      queryAndPrint(paths, readTsFile, valueFilter);
-
-      // time filter : 4 <= time <= 10, value filter : device_1.sensor_3 >= 20, should select 4 7 8
-      timeFilter =
-          BinaryExpression.and(
-              new GlobalTimeExpression(TimeFilterApi.gtEq(4L)),
-              new GlobalTimeExpression(TimeFilterApi.ltEq(10L)));
-      valueFilter =
-          new SingleSeriesExpression(new Path(DEVICE_1, SENSOR_3, true), ValueFilterApi.gtEq(20L));
-      IExpression finalFilter = BinaryExpression.and(timeFilter, valueFilter);
-      queryAndPrint(paths, readTsFile, finalFilter);
-    }
-  }
-}
diff --git a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileSequenceRead.java b/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileSequenceRead.java
deleted file mode 100644
index 62ba2d1..0000000
--- a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileSequenceRead.java
+++ /dev/null
@@ -1,205 +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;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkGroupHeader;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.reader.page.PageReader;
-import org.apache.iotdb.tsfile.read.reader.page.TimePageReader;
-import org.apache.iotdb.tsfile.read.reader.page.ValuePageReader;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-/** This tool is used to read TsFile sequentially, including nonAligned or aligned timeseries. */
-public class TsFileSequenceRead {
-  // if you wanna print detailed datas in pages, then turn it true.
-  private static boolean printDetail = false;
-  public static final String POINT_IN_PAGE = "\t\tpoints in the page: ";
-
-  @SuppressWarnings({
-    "squid:S3776",
-    "squid:S106"
-  }) // Suppress high Cognitive Complexity and Standard outputs warning
-  public static void main(String[] args) throws IOException {
-    String filename = "test.tsfile";
-    if (args.length >= 1) {
-      filename = args[0];
-    }
-    try (TsFileSequenceReader reader = new TsFileSequenceReader(filename)) {
-      System.out.println(
-          "file length: " + FSFactoryProducer.getFSFactory().getFile(filename).length());
-      System.out.println("file magic head: " + reader.readHeadMagic());
-      System.out.println("file magic tail: " + reader.readTailMagic());
-      System.out.println("Level 1 metadata position: " + reader.getFileMetadataPos());
-      System.out.println("Level 1 metadata size: " + reader.getTsFileMetadataSize());
-      // Sequential reading of one ChunkGroup now follows this order:
-      // first the CHUNK_GROUP_HEADER, then SeriesChunks (headers and data) in one ChunkGroup
-      // Because we do not know how many chunks a ChunkGroup may have, we should read one byte (the
-      // marker) ahead and judge accordingly.
-      reader.position((long) TSFileConfig.MAGIC_STRING.getBytes().length + 1);
-      System.out.println("position: " + reader.position());
-      List<long[]> timeBatch = new ArrayList<>();
-      int pageIndex = 0;
-      byte marker;
-      while ((marker = reader.readMarker()) != MetaMarker.SEPARATOR) {
-        switch (marker) {
-          case MetaMarker.CHUNK_HEADER:
-          case MetaMarker.TIME_CHUNK_HEADER:
-          case MetaMarker.VALUE_CHUNK_HEADER:
-          case MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER:
-          case MetaMarker.ONLY_ONE_PAGE_TIME_CHUNK_HEADER:
-          case MetaMarker.ONLY_ONE_PAGE_VALUE_CHUNK_HEADER:
-            System.out.println("\t[Chunk]");
-            System.out.println("\tchunk type: " + marker);
-            System.out.println("\tposition: " + reader.position());
-            ChunkHeader header = reader.readChunkHeader(marker);
-            System.out.println("\tMeasurement: " + header.getMeasurementID());
-            if (header.getDataSize() == 0) {
-              // empty value chunk
-              System.out.println("\t-- Empty Chunk ");
-              break;
-            }
-            System.out.println(
-                "\tChunk Size: " + (header.getDataSize() + header.getSerializedSize()));
-            Decoder defaultTimeDecoder =
-                Decoder.getDecoderByType(
-                    TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder()),
-                    TSDataType.INT64);
-            Decoder valueDecoder =
-                Decoder.getDecoderByType(header.getEncodingType(), header.getDataType());
-            int dataSize = header.getDataSize();
-            pageIndex = 0;
-            if (header.getDataType() == TSDataType.VECTOR) {
-              timeBatch.clear();
-            }
-            while (dataSize > 0) {
-              valueDecoder.reset();
-              System.out.println(
-                  "\t\t[Page" + pageIndex + "]\n \t\tPage head position: " + reader.position());
-              PageHeader pageHeader =
-                  reader.readPageHeader(
-                      header.getDataType(),
-                      (header.getChunkType() & 0x3F) == MetaMarker.CHUNK_HEADER);
-              System.out.println("\t\tPage data position: " + reader.position());
-              ByteBuffer pageData = reader.readPage(pageHeader, header.getCompressionType());
-              System.out.println(
-                  "\t\tUncompressed page data size: " + pageHeader.getUncompressedSize());
-              System.out.println(
-                  "\t\tCompressed page data size: " + pageHeader.getCompressedSize());
-              if ((header.getChunkType() & TsFileConstant.TIME_COLUMN_MASK)
-                  == TsFileConstant.TIME_COLUMN_MASK) { // Time Chunk
-                TimePageReader timePageReader =
-                    new TimePageReader(pageHeader, pageData, defaultTimeDecoder);
-                timeBatch.add(timePageReader.getNextTimeBatch());
-                System.out.println(POINT_IN_PAGE + timeBatch.get(pageIndex).length);
-                if (printDetail) {
-                  for (int i = 0; i < timeBatch.get(pageIndex).length; i++) {
-                    System.out.println("\t\t\ttime: " + timeBatch.get(pageIndex)[i]);
-                  }
-                }
-              } else if ((header.getChunkType() & TsFileConstant.VALUE_COLUMN_MASK)
-                  == TsFileConstant.VALUE_COLUMN_MASK) { // Value Chunk
-                ValuePageReader valuePageReader =
-                    new ValuePageReader(pageHeader, pageData, header.getDataType(), valueDecoder);
-                TsPrimitiveType[] valueBatch =
-                    valuePageReader.nextValueBatch(timeBatch.get(pageIndex));
-                if (valueBatch.length == 0) {
-                  System.out.println("\t\t-- Empty Page ");
-                } else {
-                  System.out.println(POINT_IN_PAGE + valueBatch.length);
-                }
-                if (printDetail) {
-                  for (TsPrimitiveType batch : valueBatch) {
-                    System.out.println("\t\t\tvalue: " + batch);
-                  }
-                }
-              } else { // NonAligned Chunk
-                PageReader pageReader =
-                    new PageReader(
-                        pageData, header.getDataType(), valueDecoder, defaultTimeDecoder);
-                BatchData batchData = pageReader.getAllSatisfiedPageData();
-                if (header.getChunkType() == MetaMarker.CHUNK_HEADER) {
-                  System.out.println(POINT_IN_PAGE + pageHeader.getNumOfValues());
-                } else {
-                  System.out.println(POINT_IN_PAGE + batchData.length());
-                }
-                if (printDetail) {
-                  while (batchData.hasCurrent()) {
-                    System.out.println(
-                        "\t\t\ttime, value: "
-                            + batchData.currentTime()
-                            + ", "
-                            + batchData.currentValue());
-                    batchData.next();
-                  }
-                }
-              }
-              pageIndex++;
-              dataSize -= pageHeader.getSerializedPageSize();
-            }
-            break;
-          case MetaMarker.CHUNK_GROUP_HEADER:
-            System.out.println("[Chunk Group]");
-            System.out.println("Chunk Group Header position: " + reader.position());
-            ChunkGroupHeader chunkGroupHeader = reader.readChunkGroupHeader();
-            System.out.println("device: " + chunkGroupHeader.getDeviceID());
-            break;
-          case MetaMarker.OPERATION_INDEX_RANGE:
-            reader.readPlanIndex();
-            System.out.println("minPlanIndex: " + reader.getMinPlanIndex());
-            System.out.println("maxPlanIndex: " + reader.getMaxPlanIndex());
-            break;
-          default:
-            MetaMarker.handleUnexpectedMarker(marker);
-        }
-      }
-      System.out.println("[Metadata]");
-      for (IDeviceID device : reader.getAllDevices()) {
-        Map<String, List<ChunkMetadata>> seriesMetaData = reader.readChunkMetadataInDevice(device);
-        System.out.printf(
-            "\t[Device]Device %s, Number of Measurements %d%n", device, seriesMetaData.size());
-        for (Map.Entry<String, List<ChunkMetadata>> serie : seriesMetaData.entrySet()) {
-          System.out.println("\t\tMeasurement:" + serie.getKey());
-          for (ChunkMetadata chunkMetadata : serie.getValue()) {
-            System.out.println("\t\tFile offset:" + chunkMetadata.getOffsetOfChunkHeader());
-          }
-        }
-      }
-    }
-  }
-}
diff --git a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteAlignedWithTSRecord.java b/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteAlignedWithTSRecord.java
deleted file mode 100644
index 0a38aa8..0000000
--- a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteAlignedWithTSRecord.java
+++ /dev/null
@@ -1,97 +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;
-
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.apache.iotdb.tsfile.Constant.DEVICE_1;
-import static org.apache.iotdb.tsfile.Constant.SENSOR_1;
-import static org.apache.iotdb.tsfile.Constant.SENSOR_2;
-import static org.apache.iotdb.tsfile.Constant.SENSOR_3;
-
-public class TsFileWriteAlignedWithTSRecord {
-  private static final Logger logger =
-      LoggerFactory.getLogger(TsFileWriteAlignedWithTSRecord.class);
-
-  public static void main(String[] args) throws IOException {
-    File f = FSFactoryProducer.getFSFactory().getFile("alignedRecord.tsfile");
-    if (f.exists()) {
-      try {
-        Files.delete(f.toPath());
-      } catch (IOException e) {
-        throw new IOException("can not delete " + f.getAbsolutePath());
-      }
-    }
-
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-      List<MeasurementSchema> measurementSchemas = new ArrayList<>();
-      measurementSchemas.add(new MeasurementSchema(SENSOR_1, TSDataType.INT64, TSEncoding.RLE));
-      measurementSchemas.add(new MeasurementSchema(SENSOR_2, TSDataType.INT64, TSEncoding.RLE));
-      measurementSchemas.add(new MeasurementSchema(SENSOR_3, TSDataType.INT64, TSEncoding.RLE));
-
-      // register timeseries
-      tsFileWriter.registerAlignedTimeseries(new Path(DEVICE_1), measurementSchemas);
-
-      // example1
-      writeAligned(tsFileWriter, DEVICE_1, measurementSchemas, 1000000, 0, 0);
-    } catch (WriteProcessException e) {
-      logger.error("write TSRecord failed", e);
-    }
-  }
-
-  private static void writeAligned(
-      TsFileWriter tsFileWriter,
-      String deviceId,
-      List<MeasurementSchema> schemas,
-      long rowSize,
-      long startTime,
-      long startValue)
-      throws IOException, WriteProcessException {
-    for (long time = startTime; time < rowSize + startTime; time++) {
-      // construct TsRecord
-      TSRecord tsRecord = new TSRecord(time, deviceId);
-      for (IMeasurementSchema schema : schemas) {
-        DataPoint dPoint = new LongDataPoint(schema.getMeasurementId(), startValue++);
-        tsRecord.addTuple(dPoint);
-      }
-      // write
-      tsFileWriter.writeAligned(tsRecord);
-    }
-  }
-}
diff --git a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteAlignedWithTablet.java b/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteAlignedWithTablet.java
deleted file mode 100644
index 88b70ea..0000000
--- a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteAlignedWithTablet.java
+++ /dev/null
@@ -1,149 +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;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.apache.iotdb.tsfile.Constant.DEVICE_1;
-import static org.apache.iotdb.tsfile.Constant.DEVICE_2;
-import static org.apache.iotdb.tsfile.Constant.SENSOR_1;
-import static org.apache.iotdb.tsfile.Constant.SENSOR_2;
-import static org.apache.iotdb.tsfile.Constant.SENSOR_3;
-
-public class TsFileWriteAlignedWithTablet {
-  private static final Logger LOGGER = LoggerFactory.getLogger(TsFileWriteAlignedWithTablet.class);
-
-  public static void main(String[] args) throws IOException {
-    File f = FSFactoryProducer.getFSFactory().getFile("alignedTablet.tsfile");
-    if (f.exists()) {
-      try {
-        Files.delete(f.toPath());
-      } catch (IOException e) {
-        throw new IOException("can not delete " + f.getAbsolutePath());
-      }
-    }
-
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-      List<MeasurementSchema> measurementSchemas = new ArrayList<>();
-      measurementSchemas.add(new MeasurementSchema(SENSOR_1, TSDataType.TEXT, TSEncoding.PLAIN));
-      measurementSchemas.add(new MeasurementSchema(SENSOR_2, TSDataType.TEXT, TSEncoding.PLAIN));
-      measurementSchemas.add(new MeasurementSchema(SENSOR_3, TSDataType.TEXT, TSEncoding.PLAIN));
-
-      // register align timeseries
-      tsFileWriter.registerAlignedTimeseries(new Path(DEVICE_1), measurementSchemas);
-
-      // example 1
-      writeAlignedWithTablet(tsFileWriter, DEVICE_1, measurementSchemas, 200000, 0, 0);
-
-      writeNonAlignedWithTablet(tsFileWriter); // write nonAligned timeseries
-    } catch (WriteProcessException e) {
-      LOGGER.error("write Tablet failed", e);
-    }
-  }
-
-  private static void writeAlignedWithTablet(
-      TsFileWriter tsFileWriter,
-      String deviceId,
-      List<MeasurementSchema> schemas,
-      long rowNum,
-      long startTime,
-      long startValue)
-      throws IOException, WriteProcessException {
-    Tablet tablet = new Tablet(deviceId, schemas);
-    long[] timestamps = tablet.timestamps;
-    Object[] values = tablet.values;
-    long sensorNum = schemas.size();
-
-    for (long r = 0; r < rowNum; r++, startValue++) {
-      int row = tablet.rowSize++;
-      timestamps[row] = startTime++;
-      for (int i = 0; i < sensorNum; i++) {
-        Binary[] textSensor = (Binary[]) values[i];
-        textSensor[row] = new Binary("testString.........", TSFileConfig.STRING_CHARSET);
-      }
-      // write
-      if (tablet.rowSize == tablet.getMaxRowNumber()) {
-        tsFileWriter.writeAligned(tablet);
-        tablet.reset();
-      }
-    }
-    // write
-    if (tablet.rowSize != 0) {
-      tsFileWriter.writeAligned(tablet);
-      tablet.reset();
-    }
-  }
-
-  private static void writeNonAlignedWithTablet(TsFileWriter tsFileWriter)
-      throws WriteProcessException, IOException {
-    // register nonAlign timeseries
-    tsFileWriter.registerTimeseries(
-        new Path(DEVICE_2), new MeasurementSchema(SENSOR_1, TSDataType.INT64, TSEncoding.RLE));
-    tsFileWriter.registerTimeseries(
-        new Path(DEVICE_2), new MeasurementSchema(SENSOR_2, TSDataType.INT64, TSEncoding.RLE));
-    // construct Tablet
-    List<MeasurementSchema> measurementSchemas = new ArrayList<>();
-    measurementSchemas.add(new MeasurementSchema(SENSOR_1, TSDataType.INT64, TSEncoding.RLE));
-    measurementSchemas.add(new MeasurementSchema(SENSOR_2, TSDataType.INT64, TSEncoding.RLE));
-    Tablet tablet = new Tablet(DEVICE_2, measurementSchemas);
-    long[] timestamps = tablet.timestamps;
-    Object[] values = tablet.values;
-    int rowNum = 100;
-    int sensorNum = measurementSchemas.size();
-    long timestamp = 1;
-    long value = 1000000L;
-    for (int r = 0; r < rowNum; r++, value++) {
-      int row = tablet.rowSize++;
-      timestamps[row] = timestamp++;
-      for (int i = 0; i < sensorNum; i++) {
-        long[] sensor = (long[]) values[i];
-        sensor[row] = value;
-      }
-      // write
-      if (tablet.rowSize == tablet.getMaxRowNumber()) {
-        tsFileWriter.write(tablet);
-        tablet.reset();
-      }
-    }
-    // write
-    if (tablet.rowSize != 0) {
-      tsFileWriter.write(tablet);
-      tablet.reset();
-    }
-  }
-}
diff --git a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteWithTSRecord.java b/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteWithTSRecord.java
deleted file mode 100644
index 9a81e8d..0000000
--- a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteWithTSRecord.java
+++ /dev/null
@@ -1,99 +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;
-
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.apache.iotdb.tsfile.Constant.DEVICE_1;
-import static org.apache.iotdb.tsfile.Constant.SENSOR_1;
-import static org.apache.iotdb.tsfile.Constant.SENSOR_2;
-import static org.apache.iotdb.tsfile.Constant.SENSOR_3;
-
-/**
- * An example of writing data with TSRecord to TsFile It uses the interface: public void
- * addMeasurement(MeasurementSchema measurementSchema) throws WriteProcessException
- */
-public class TsFileWriteWithTSRecord {
-  private static final Logger LOGGER = LoggerFactory.getLogger(TsFileWriteWithTSRecord.class);
-
-  public static void main(String[] args) {
-    try {
-      String path = "Record.tsfile";
-      File f = FSFactoryProducer.getFSFactory().getFile(path);
-      if (f.exists()) {
-        Files.delete(f.toPath());
-      }
-
-      try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-        List<MeasurementSchema> schemas = new ArrayList<>();
-        schemas.add(new MeasurementSchema(SENSOR_1, TSDataType.INT64, TSEncoding.RLE));
-        schemas.add(new MeasurementSchema(SENSOR_2, TSDataType.INT64, TSEncoding.RLE));
-        schemas.add(new MeasurementSchema(SENSOR_3, TSDataType.INT64, TSEncoding.RLE));
-
-        // register timeseries
-        tsFileWriter.registerTimeseries(new Path(DEVICE_1), schemas);
-
-        // example1
-        write(tsFileWriter, DEVICE_1, schemas, 10000, 0, 0);
-      }
-    } catch (Exception e) {
-      LOGGER.error("TsFileWriteWithTSRecord meet error", e);
-    }
-  }
-
-  private static void write(
-      TsFileWriter tsFileWriter,
-      String deviceId,
-      List<MeasurementSchema> schemas,
-      long rowSize,
-      long startTime,
-      long startValue)
-      throws IOException, WriteProcessException {
-    for (long time = startTime; time < rowSize + startTime; time++) {
-      // construct TsRecord
-      TSRecord tsRecord = new TSRecord(time, deviceId);
-      for (IMeasurementSchema schema : schemas) {
-        DataPoint dPoint = new LongDataPoint(schema.getMeasurementId(), startValue++);
-        tsRecord.addTuple(dPoint);
-      }
-      // write
-      tsFileWriter.write(tsRecord);
-    }
-  }
-}
diff --git a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteWithTablet.java b/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteWithTablet.java
deleted file mode 100644
index 74c6c17..0000000
--- a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteWithTablet.java
+++ /dev/null
@@ -1,109 +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;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.apache.iotdb.tsfile.Constant.DEVICE_1;
-import static org.apache.iotdb.tsfile.Constant.SENSOR_1;
-import static org.apache.iotdb.tsfile.Constant.SENSOR_2;
-import static org.apache.iotdb.tsfile.Constant.SENSOR_3;
-
-/** An example of writing data with Tablet to TsFile */
-public class TsFileWriteWithTablet {
-
-  private static final Logger LOGGER = LoggerFactory.getLogger(TsFileWriteWithTablet.class);
-
-  public static void main(String[] args) {
-    try {
-      String path = "Tablet.tsfile";
-      File f = FSFactoryProducer.getFSFactory().getFile(path);
-      if (f.exists()) {
-        Files.delete(f.toPath());
-      }
-
-      try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-        List<MeasurementSchema> measurementSchemas = new ArrayList<>();
-        measurementSchemas.add(new MeasurementSchema(SENSOR_1, TSDataType.TEXT, TSEncoding.PLAIN));
-        measurementSchemas.add(new MeasurementSchema(SENSOR_2, TSDataType.TEXT, TSEncoding.PLAIN));
-        measurementSchemas.add(new MeasurementSchema(SENSOR_3, TSDataType.TEXT, TSEncoding.PLAIN));
-
-        // register nonAligned timeseries
-        tsFileWriter.registerTimeseries(new Path(DEVICE_1), measurementSchemas);
-
-        // example 1
-        writeWithTablet(tsFileWriter, DEVICE_1, measurementSchemas, 10000, 0, 0);
-      }
-    } catch (Exception e) {
-      LOGGER.error("meet error in TsFileWrite with tablet", e);
-    }
-  }
-
-  private static void writeWithTablet(
-      TsFileWriter tsFileWriter,
-      String deviceId,
-      List<MeasurementSchema> schemas,
-      long rowNum,
-      long startTime,
-      long startValue)
-      throws IOException, WriteProcessException {
-    Tablet tablet = new Tablet(deviceId, schemas);
-    long[] timestamps = tablet.timestamps;
-    Object[] values = tablet.values;
-    long sensorNum = schemas.size();
-
-    for (long r = 0; r < rowNum; r++, startValue++) {
-      int row = tablet.rowSize++;
-      timestamps[row] = startTime++;
-      for (int i = 0; i < sensorNum; i++) {
-        Binary[] textSensor = (Binary[]) values[i];
-        textSensor[row] = new Binary("testString.........", TSFileConfig.STRING_CHARSET);
-      }
-      // write
-      if (tablet.rowSize == tablet.getMaxRowNumber()) {
-        tsFileWriter.write(tablet);
-        tablet.reset();
-      }
-    }
-    // write
-    if (tablet.rowSize != 0) {
-      tsFileWriter.write(tablet);
-      tablet.reset();
-    }
-  }
-}
diff --git a/example/udf/src/main/java/org/apache/iotdb/udf/UDAFExample.java b/example/udf/src/main/java/org/apache/iotdb/udf/UDAFExample.java
index 5d7a95d..b2b9bec 100644
--- a/example/udf/src/main/java/org/apache/iotdb/udf/UDAFExample.java
+++ b/example/udf/src/main/java/org/apache/iotdb/udf/UDAFExample.java
@@ -19,9 +19,6 @@
 
 package org.apache.iotdb.udf;
 
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.utils.BitMap;
 import org.apache.iotdb.udf.api.State;
 import org.apache.iotdb.udf.api.UDAF;
 import org.apache.iotdb.udf.api.customizer.config.UDAFConfigurations;
@@ -31,6 +28,10 @@
 import org.apache.iotdb.udf.api.type.Type;
 import org.apache.iotdb.udf.api.utils.ResultValue;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+
 import java.nio.ByteBuffer;
 
 /** This is an internal example of the UDAF implementation. */
diff --git a/integration-test/import-control.xml b/integration-test/import-control.xml
index 17594de..587c4c2 100644
--- a/integration-test/import-control.xml
+++ b/integration-test/import-control.xml
@@ -60,7 +60,7 @@
         <allow class="org.apache.iotdb.commons.path.PartialPath"/>
         <allow class="org.apache.iotdb.commons.path.PathPatternTree"/>
         <allow class="org.apache.iotdb.commons.path.PathDeserializeUtil"/>
-        <allow class="org.apache.iotdb.tsfile.utils.PublicBAOS"/>
+        <allow class="org.apache.tsfile.utils.PublicBAOS"/>
         <allow class="org.apache.iotdb.commons.exception.IllegalPathException"/>
         <allow class="org.apache.commons.codec.digest.DigestUtils"/>
         <allow class="org.apache.iotdb.commons.trigger.service.TriggerExecutableManager"/>
@@ -88,7 +88,7 @@
         <allow class="org.apache.iotdb.db.protocol.thrift.OperationType"/>
         <allow class="org.apache.iotdb.db.it.utils.AlignedWriteUtil"/>
         <allow class="org.apache.iotdb.commons.cluster.NodeStatus"/>
-        <allow class="org.apache.iotdb.tsfile.common.constant.TsFileConstant"/>
+        <allow class="org.apache.tsfile.common.constant.TsFileConstant"/>
         <allow class="org.apache.iotdb.service.rpc.thrift.TSConnectionInfoResp"/>
         <allow class="org.apache.iotdb.service.rpc.thrift.TSConnectionType"/>
         <allow class="org.apache.iotdb.common.rpc.thrift.TAggregationType"/>
diff --git a/integration-test/pom.xml b/integration-test/pom.xml
index 95fe392..79bd8ae 100644
--- a/integration-test/pom.xml
+++ b/integration-test/pom.xml
@@ -115,9 +115,9 @@
             <version>1.3.2-SNAPSHOT</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/Adder.java b/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/Adder.java
index bf43997..3d33d49 100644
--- a/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/Adder.java
+++ b/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/Adder.java
@@ -19,7 +19,6 @@
 
 package org.apache.iotdb.db.query.udf.example;
 
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -29,6 +28,7 @@
 import org.apache.iotdb.udf.api.customizer.strategy.RowByRowAccessStrategy;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/TwoSumBlock.java b/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/TwoSumBlock.java
index eddb9b4..0b06193 100644
--- a/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/TwoSumBlock.java
+++ b/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/TwoSumBlock.java
@@ -19,8 +19,6 @@
 
 package org.apache.iotdb.db.query.udf.example;
 
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.customizer.config.UDTFConfigurations;
 import org.apache.iotdb.udf.api.customizer.parameter.UDFParameterValidator;
@@ -28,6 +26,9 @@
 import org.apache.iotdb.udf.api.customizer.strategy.MappableRowByRowAccessStrategy;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+
 public class TwoSumBlock implements UDTF {
   private Type type;
 
diff --git a/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFAvg.java b/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFAvg.java
index 52a80c5..a17905e 100644
--- a/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFAvg.java
+++ b/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFAvg.java
@@ -19,9 +19,6 @@
 
 package org.apache.iotdb.db.query.udf.example;
 
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.utils.BitMap;
 import org.apache.iotdb.udf.api.State;
 import org.apache.iotdb.udf.api.UDAF;
 import org.apache.iotdb.udf.api.customizer.config.UDAFConfigurations;
@@ -31,6 +28,10 @@
 import org.apache.iotdb.udf.api.type.Type;
 import org.apache.iotdb.udf.api.utils.ResultValue;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+
 import java.nio.ByteBuffer;
 
 public class UDAFAvg implements UDAF {
diff --git a/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFCount.java b/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFCount.java
index bddd6da..7be1459 100644
--- a/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFCount.java
+++ b/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFCount.java
@@ -19,8 +19,6 @@
 
 package org.apache.iotdb.db.query.udf.example;
 
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.utils.BitMap;
 import org.apache.iotdb.udf.api.State;
 import org.apache.iotdb.udf.api.UDAF;
 import org.apache.iotdb.udf.api.customizer.config.UDAFConfigurations;
@@ -29,6 +27,9 @@
 import org.apache.iotdb.udf.api.type.Type;
 import org.apache.iotdb.udf.api.utils.ResultValue;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.utils.BitMap;
+
 import java.nio.ByteBuffer;
 
 public class UDAFCount implements UDAF {
diff --git a/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFSum.java b/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFSum.java
index 8b86cef..087dc65 100644
--- a/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFSum.java
+++ b/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFSum.java
@@ -19,9 +19,6 @@
 
 package org.apache.iotdb.db.query.udf.example;
 
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.utils.BitMap;
 import org.apache.iotdb.udf.api.State;
 import org.apache.iotdb.udf.api.UDAF;
 import org.apache.iotdb.udf.api.customizer.config.UDAFConfigurations;
@@ -31,6 +28,10 @@
 import org.apache.iotdb.udf.api.type.Type;
 import org.apache.iotdb.udf.api.utils.ResultValue;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+
 import java.nio.ByteBuffer;
 
 public class UDAFSum implements UDAF {
diff --git a/integration-test/src/main/java/org/apache/iotdb/db/trigger/example/TriggerFireTimesCounter.java b/integration-test/src/main/java/org/apache/iotdb/db/trigger/example/TriggerFireTimesCounter.java
index 30c5805..2ddfbb1 100644
--- a/integration-test/src/main/java/org/apache/iotdb/db/trigger/example/TriggerFireTimesCounter.java
+++ b/integration-test/src/main/java/org/apache/iotdb/db/trigger/example/TriggerFireTimesCounter.java
@@ -21,8 +21,8 @@
 
 import org.apache.iotdb.trigger.api.Trigger;
 import org.apache.iotdb.trigger.api.TriggerAttributes;
-import org.apache.iotdb.tsfile.write.record.Tablet;
 
+import org.apache.tsfile.write.record.Tablet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/EnvUtils.java b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/EnvUtils.java
index d23a091..8b08edc 100644
--- a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/EnvUtils.java
+++ b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/EnvUtils.java
@@ -20,9 +20,9 @@
 package org.apache.iotdb.it.env.cluster;
 
 import org.apache.iotdb.it.framework.IoTDBTestLogger;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import org.apache.commons.lang3.SystemUtils;
+import org.apache.tsfile.utils.Pair;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/env/Cluster1Env.java b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/env/Cluster1Env.java
index 20f22e0..cffc25a 100644
--- a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/env/Cluster1Env.java
+++ b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/env/Cluster1Env.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.it.env.cluster.env;
 
 import org.apache.iotdb.it.env.cluster.EnvUtils;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 public class Cluster1Env extends AbstractEnv {
 
diff --git a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/env/MultiClusterEnv.java b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/env/MultiClusterEnv.java
index 8eecd4e..1eb05cb 100644
--- a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/env/MultiClusterEnv.java
+++ b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/env/MultiClusterEnv.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.it.env.cluster.env;
 
 import org.apache.iotdb.it.env.cluster.EnvUtils;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 public class MultiClusterEnv extends AbstractEnv {
 
diff --git a/integration-test/src/main/java/org/apache/iotdb/it/utils/TsFileGenerator.java b/integration-test/src/main/java/org/apache/iotdb/it/utils/TsFileGenerator.java
index 0b95e99..31f6fec 100644
--- a/integration-test/src/main/java/org/apache/iotdb/it/utils/TsFileGenerator.java
+++ b/integration-test/src/main/java/org/apache/iotdb/it/utils/TsFileGenerator.java
@@ -23,15 +23,15 @@
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.storageengine.dataregion.modification.Deletion;
 import org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/integration-test/src/main/java/org/apache/iotdb/itbase/constant/TestConstant.java b/integration-test/src/main/java/org/apache/iotdb/itbase/constant/TestConstant.java
index cf2f51a..18fd6fa 100644
--- a/integration-test/src/main/java/org/apache/iotdb/itbase/constant/TestConstant.java
+++ b/integration-test/src/main/java/org/apache/iotdb/itbase/constant/TestConstant.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.itbase.constant;
 
 import org.apache.iotdb.db.queryengine.common.header.ColumnHeaderConstant;
-import org.apache.iotdb.tsfile.utils.FilePathUtils;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
+
+import org.apache.tsfile.utils.FilePathUtils;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
 
 import java.io.File;
 
diff --git a/integration-test/src/test/java/org/apache/iotdb/confignode/it/utils/ConfigNodeTestUtils.java b/integration-test/src/test/java/org/apache/iotdb/confignode/it/utils/ConfigNodeTestUtils.java
index dfe6a13..7c6719e 100644
--- a/integration-test/src/test/java/org/apache/iotdb/confignode/it/utils/ConfigNodeTestUtils.java
+++ b/integration-test/src/test/java/org/apache/iotdb/confignode/it/utils/ConfigNodeTestUtils.java
@@ -41,8 +41,8 @@
 import org.apache.iotdb.it.env.cluster.node.ConfigNodeWrapper;
 import org.apache.iotdb.it.env.cluster.node.DataNodeWrapper;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Assert;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/IOTDBLoadTsFileIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/IOTDBLoadTsFileIT.java
index 774c82e..0a3a44e 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/IOTDBLoadTsFileIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/IOTDBLoadTsFileIT.java
@@ -27,11 +27,11 @@
 import org.apache.iotdb.itbase.category.ClusterIT;
 import org.apache.iotdb.itbase.category.LocalStandaloneIT;
 import org.apache.iotdb.jdbc.IoTDBSQLException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBPartialInsertionIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBPartialInsertionIT.java
index 18bee17..074da68 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBPartialInsertionIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBPartialInsertionIT.java
@@ -24,13 +24,13 @@
 import org.apache.iotdb.it.framework.IoTDBTestRunner;
 import org.apache.iotdb.itbase.category.ClusterIT;
 import org.apache.iotdb.itbase.category.LocalStandaloneIT;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.read.common.RowRecord;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBRepairDataIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBRepairDataIT.java
index 49f5816..550b0d7 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBRepairDataIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBRepairDataIT.java
@@ -23,12 +23,12 @@
 import org.apache.iotdb.it.env.EnvFactory;
 import org.apache.iotdb.it.framework.IoTDBTestRunner;
 import org.apache.iotdb.itbase.category.LocalStandaloneIT;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectIntoIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectIntoIT.java
index 995464e..0f8ca0d 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectIntoIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectIntoIT.java
@@ -23,8 +23,8 @@
 import org.apache.iotdb.it.framework.IoTDBTestRunner;
 import org.apache.iotdb.itbase.category.ClusterIT;
 import org.apache.iotdb.itbase.category.LocalStandaloneIT;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java b/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java
index b930693..176d015 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java
@@ -28,8 +28,8 @@
 import org.apache.iotdb.itbase.env.BaseEnv;
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
 
+import org.apache.tsfile.read.common.RowRecord;
 import org.junit.Assert;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/integration-test/src/test/java/org/apache/iotdb/flink/it/Utils.java b/integration-test/src/test/java/org/apache/iotdb/flink/it/Utils.java
index a5b12bf..87e39b6 100644
--- a/integration-test/src/test/java/org/apache/iotdb/flink/it/Utils.java
+++ b/integration-test/src/test/java/org/apache/iotdb/flink/it/Utils.java
@@ -21,7 +21,8 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.Session;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/integration-test/src/test/java/org/apache/iotdb/pipe/it/autocreate/IoTDBPipeNullValueIT.java b/integration-test/src/test/java/org/apache/iotdb/pipe/it/autocreate/IoTDBPipeNullValueIT.java
index 1522bc7..4d86fd5 100644
--- a/integration-test/src/test/java/org/apache/iotdb/pipe/it/autocreate/IoTDBPipeNullValueIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/pipe/it/autocreate/IoTDBPipeNullValueIT.java
@@ -30,11 +30,11 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionAlignedInsertIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionAlignedInsertIT.java
index b4b8389..1bf996f 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionAlignedInsertIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionAlignedInsertIT.java
@@ -26,11 +26,11 @@
 import org.apache.iotdb.itbase.category.LocalStandaloneIT;
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.RowRecord;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionComplexIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionComplexIT.java
index ca7904d..55c9373 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionComplexIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionComplexIT.java
@@ -29,13 +29,13 @@
 import org.apache.iotdb.itbase.category.LocalStandaloneIT;
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.read.common.Field;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionDisableMemControlIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionDisableMemControlIT.java
index b38e59f..98d9f81 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionDisableMemControlIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionDisableMemControlIT.java
@@ -25,15 +25,15 @@
 import org.apache.iotdb.itbase.category.ClusterIT;
 import org.apache.iotdb.itbase.category.LocalStandaloneIT;
 import org.apache.iotdb.rpc.StatementExecutionException;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+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.read.common.RowRecord;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Ignore;
diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionInsertNullIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionInsertNullIT.java
index 2ecaccd..f101a83 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionInsertNullIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionInsertNullIT.java
@@ -26,12 +26,12 @@
 import org.apache.iotdb.itbase.category.LocalStandaloneIT;
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
 
+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.read.common.Field;
+import org.apache.tsfile.read.common.RowRecord;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionInsertWithTriggerExecutionIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionInsertWithTriggerExecutionIT.java
index 608d21e..ab48259 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionInsertWithTriggerExecutionIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionInsertWithTriggerExecutionIT.java
@@ -25,12 +25,12 @@
 import org.apache.iotdb.itbase.category.ClusterIT;
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSchemaTemplateIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSchemaTemplateIT.java
index 66cd2d6..b943df6 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSchemaTemplateIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSchemaTemplateIT.java
@@ -30,12 +30,12 @@
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.session.template.MeasurementNode;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
 import org.apache.iotdb.util.AbstractSchemaIT;
 
+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.read.common.RowRecord;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSimpleIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSimpleIT.java
index 040cda7..e9c1d05 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSimpleIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSimpleIT.java
@@ -31,19 +31,19 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.common.constant.TsFileConstant;
+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.read.common.Field;
+import org.apache.tsfile.read.common.RowRecord;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSyntaxConventionIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSyntaxConventionIT.java
index 439244f..1f4369f 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSyntaxConventionIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSyntaxConventionIT.java
@@ -29,14 +29,14 @@
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.session.template.MeasurementNode;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.Binary;
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/SessionIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/SessionIT.java
index 0fc27e1..84e42a4 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/SessionIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/SessionIT.java
@@ -25,15 +25,15 @@
 import org.apache.iotdb.itbase.category.ClusterIT;
 import org.apache.iotdb.itbase.category.LocalStandaloneIT;
 import org.apache.iotdb.rpc.StatementExecutionException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.read.common.RowRecord;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/pool/SessionPoolIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/pool/SessionPoolIT.java
index ef11420..d8fb9bb 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/pool/SessionPoolIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/pool/SessionPoolIT.java
@@ -29,8 +29,8 @@
 import org.apache.iotdb.itbase.env.BaseNodeWrapper;
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/integration-test/src/test/java/org/apache/iotdb/subscription/it/dual/IoTDBSubscriptionConsumerGroupIT.java b/integration-test/src/test/java/org/apache/iotdb/subscription/it/dual/IoTDBSubscriptionConsumerGroupIT.java
index d5f2d09..bff5080 100644
--- a/integration-test/src/test/java/org/apache/iotdb/subscription/it/dual/IoTDBSubscriptionConsumerGroupIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/subscription/it/dual/IoTDBSubscriptionConsumerGroupIT.java
@@ -32,9 +32,9 @@
 import org.apache.iotdb.session.subscription.SubscriptionPullConsumer;
 import org.apache.iotdb.session.subscription.SubscriptionSessionDataSet;
 import org.apache.iotdb.session.subscription.SubscriptionSessionDataSets;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.read.common.RowRecord;
+import org.apache.tsfile.utils.Pair;
 import org.awaitility.Awaitility;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/integration-test/src/test/java/org/apache/iotdb/subscription/it/dual/IoTDBSubscriptionTopicIT.java b/integration-test/src/test/java/org/apache/iotdb/subscription/it/dual/IoTDBSubscriptionTopicIT.java
index 42fb88a..929c657 100644
--- a/integration-test/src/test/java/org/apache/iotdb/subscription/it/dual/IoTDBSubscriptionTopicIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/subscription/it/dual/IoTDBSubscriptionTopicIT.java
@@ -28,8 +28,8 @@
 import org.apache.iotdb.session.subscription.SubscriptionPullConsumer;
 import org.apache.iotdb.session.subscription.SubscriptionSession;
 import org.apache.iotdb.session.subscription.SubscriptionSessionDataSets;
-import org.apache.iotdb.tsfile.write.record.Tablet;
 
+import org.apache.tsfile.write.record.Tablet;
 import org.awaitility.Awaitility;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
diff --git a/integration-test/src/test/resources/logback-test.xml b/integration-test/src/test/resources/logback-test.xml
index 281d666..95a4d1c 100644
--- a/integration-test/src/test/resources/logback-test.xml
+++ b/integration-test/src/test/resources/logback-test.xml
@@ -52,7 +52,7 @@
     <logger name="org.apache.iotdb.db.service.RPCService" level="INFO"/>
     <logger name="org.apache.iotdb.db.service.MQTTService" level="INFO"/>
     <logger name="org.apache.iotdb.db.conf.IoTDBDescriptor" level="WARN"/>
-    <logger name="org.apache.iotdb.tsfile.common.conf.TSFileDescriptor" level="WARN"/>
+    <logger name="org.apache.tsfile.common.conf.TSFileDescriptor" level="WARN"/>
     <logger name="DETAILED_FAILURE_QUERY_TRACE" level="ERROR"/>
     <root level="INFO">
         <appender-ref ref="stdout"/>
diff --git a/iotdb-api/common-api/pom.xml b/iotdb-api/common-api/pom.xml
deleted file mode 100644
index 362f8f6..0000000
--- a/iotdb-api/common-api/pom.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>iotdb-api</artifactId>
-        <groupId>org.apache.iotdb</groupId>
-        <version>1.3.2-SNAPSHOT</version>
-    </parent>
-    <artifactId>common-api</artifactId>
-    <name>IoTDB: API: Common API</name>
-    <profiles>
-        <profile>
-            <id>get-jar-with-dependencies</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-assembly-plugin</artifactId>
-                        <configuration>
-                            <descriptorRefs>
-                                <descriptorRef>jar-with-dependencies</descriptorRef>
-                            </descriptorRefs>
-                        </configuration>
-                        <executions>
-                            <execution>
-                                <id>make-assembly</id>
-                                <!-- bind to the packaging phase -->
-                                <goals>
-                                    <goal>single</goal>
-                                </goals>
-                                <!-- this is used for inheritance merges -->
-                                <phase>package</phase>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-</project>
diff --git a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/exception/write/UnSupportedDataTypeException.java b/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/exception/write/UnSupportedDataTypeException.java
deleted file mode 100644
index 8d8f253..0000000
--- a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/exception/write/UnSupportedDataTypeException.java
+++ /dev/null
@@ -1,31 +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.exception.write;
-
-public class UnSupportedDataTypeException extends RuntimeException {
-
-  public UnSupportedDataTypeException(String message) {
-    super("Unsupported dataType: " + message);
-  }
-
-  public UnSupportedDataTypeException(String message, Throwable e) {
-    super(message + e.getMessage());
-  }
-}
diff --git a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/file/metadata/enums/TSDataType.java b/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/file/metadata/enums/TSDataType.java
deleted file mode 100644
index 8c5ffc7..0000000
--- a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/file/metadata/enums/TSDataType.java
+++ /dev/null
@@ -1,193 +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.file.metadata.enums;
-
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-
-import java.io.DataOutputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.ByteBuffer;
-
-public enum TSDataType {
-  /** BOOLEAN. */
-  BOOLEAN((byte) 0),
-
-  /** INT32. */
-  INT32((byte) 1),
-
-  /** INT64. */
-  INT64((byte) 2),
-
-  /** FLOAT. */
-  FLOAT((byte) 3),
-
-  /** DOUBLE. */
-  DOUBLE((byte) 4),
-
-  /** TEXT. */
-  TEXT((byte) 5),
-
-  /** VECTOR. */
-  VECTOR((byte) 6),
-
-  /** UNKNOWN. */
-  UNKNOWN((byte) 7);
-
-  private final byte type;
-
-  TSDataType(byte type) {
-    this.type = type;
-  }
-
-  /**
-   * give an integer to return a data type.
-   *
-   * @param type -param to judge enum type
-   * @return -enum type
-   */
-  public static TSDataType deserialize(byte type) {
-    return getTsDataType(type);
-  }
-
-  public byte getType() {
-    return type;
-  }
-
-  public static TSDataType getTsDataType(byte type) {
-    switch (type) {
-      case 0:
-        return TSDataType.BOOLEAN;
-      case 1:
-        return TSDataType.INT32;
-      case 2:
-        return TSDataType.INT64;
-      case 3:
-        return TSDataType.FLOAT;
-      case 4:
-        return TSDataType.DOUBLE;
-      case 5:
-        return TSDataType.TEXT;
-      case 6:
-        return TSDataType.VECTOR;
-      case 7:
-        return TSDataType.UNKNOWN;
-      default:
-        throw new IllegalArgumentException("Invalid input: " + type);
-    }
-  }
-
-  public static TSDataType deserializeFrom(ByteBuffer buffer) {
-    return deserialize(buffer.get());
-  }
-
-  public static TSDataType deserializeFrom(InputStream stream) throws IOException {
-    return deserialize((byte) stream.read());
-  }
-
-  public static int getSerializedSize() {
-    return Byte.BYTES;
-  }
-
-  public void serializeTo(ByteBuffer byteBuffer) {
-    byteBuffer.put(serialize());
-  }
-
-  public void serializeTo(DataOutputStream outputStream) throws IOException {
-    outputStream.write(serialize());
-  }
-
-  public void serializeTo(FileOutputStream outputStream) throws IOException {
-    outputStream.write(serialize());
-  }
-
-  public int getDataTypeSize() {
-    switch (this) {
-      case BOOLEAN:
-        return 1;
-      case INT32:
-      case FLOAT:
-        return 4;
-        // For text: return the size of reference here
-      case TEXT:
-      case INT64:
-      case DOUBLE:
-      case VECTOR:
-        return 8;
-      default:
-        throw new UnSupportedDataTypeException(this.toString());
-    }
-  }
-
-  /**
-   * get type byte.
-   *
-   * @return byte number
-   */
-  public byte serialize() {
-    return type;
-  }
-
-  /**
-   * numeric datatype judgement.
-   *
-   * @return whether it is a numeric datatype
-   * @throws UnSupportedDataTypeException when meets unSupported DataType
-   */
-  public boolean isNumeric() {
-    switch (this) {
-      case INT32:
-      case INT64:
-      case FLOAT:
-      case DOUBLE:
-        return true;
-        // For text: return the size of reference here
-      case BOOLEAN:
-      case TEXT:
-      case VECTOR:
-        return false;
-      default:
-        throw new UnSupportedDataTypeException(this.toString());
-    }
-  }
-
-  /**
-   * comparable datatype judgement.
-   *
-   * @return whether it is a comparable datatype
-   * @throws UnSupportedDataTypeException when meets unSupported DataType
-   */
-  public boolean isComparable() {
-    switch (this) {
-      case INT32:
-      case INT64:
-      case FLOAT:
-      case DOUBLE:
-      case TEXT:
-      case BOOLEAN:
-        return true;
-      case VECTOR:
-        return false;
-      default:
-        throw new UnSupportedDataTypeException(this.toString());
-    }
-  }
-}
diff --git a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilderStatus.java b/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilderStatus.java
deleted file mode 100644
index 02cbd9d..0000000
--- a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilderStatus.java
+++ /dev/null
@@ -1,70 +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 org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilderStatus;
-
-public class TsBlockBuilderStatus {
-
-  private final int maxTsBlockSizeInBytes;
-
-  private long currentSize;
-
-  public TsBlockBuilderStatus(int maxTsBlockSizeInBytes) {
-    this.maxTsBlockSizeInBytes = maxTsBlockSizeInBytes;
-  }
-
-  public ColumnBuilderStatus createColumnBuilderStatus() {
-    return new ColumnBuilderStatus(this);
-  }
-
-  public int getMaxTsBlockSizeInBytes() {
-    return maxTsBlockSizeInBytes;
-  }
-
-  public boolean isEmpty() {
-    return currentSize == 0;
-  }
-
-  public boolean isFull() {
-    return currentSize >= maxTsBlockSizeInBytes;
-  }
-
-  public void addBytes(int bytes) {
-    if (bytes < 0) {
-      throw new IllegalArgumentException("bytes cannot be negative");
-    }
-    currentSize += bytes;
-  }
-
-  public long getSizeInBytes() {
-    return currentSize;
-  }
-
-  @Override
-  public String toString() {
-    return "TsBlockBuilderStatus{"
-        + "maxTsBlockSizeInBytes="
-        + maxTsBlockSizeInBytes
-        + ", currentSize="
-        + currentSize
-        + '}';
-  }
-}
diff --git a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/Column.java b/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/Column.java
deleted file mode 100644
index 5cc8385..0000000
--- a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/Column.java
+++ /dev/null
@@ -1,155 +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.column;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-public interface Column {
-
-  /** Get the data type. */
-  TSDataType getDataType();
-
-  /** Get the encoding for this column. */
-  ColumnEncoding getEncoding();
-
-  /** Gets a boolean at {@code position}. */
-  default boolean getBoolean(int position) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Gets a little endian int at {@code position}. */
-  default int getInt(int position) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Gets a little endian long at {@code position}. */
-  default long getLong(int position) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Gets a float at {@code position}. */
-  default float getFloat(int position) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Gets a double at {@code position}. */
-  default double getDouble(int position) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Gets a Binary at {@code position}. */
-  default Binary getBinary(int position) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Gets an Object at {@code position}. */
-  default Object getObject(int position) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Gets the boolean array. */
-  default boolean[] getBooleans() {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Gets the little endian int array. */
-  default int[] getInts() {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Gets the little endian long array. */
-  default long[] getLongs() {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Gets the float array. */
-  default float[] getFloats() {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Gets the double array. */
-  default double[] getDoubles() {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Gets the Binary list. */
-  default Binary[] getBinaries() {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Gets the Object array. */
-  default Object[] getObjects() {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Gets a TsPrimitiveType at {@code position}. */
-  default TsPrimitiveType getTsPrimitiveType(int position) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /**
-   * Is it possible the column may have a null value? If false, the column cannot contain a null,
-   * but if true, the column may or may not have a null.
-   */
-  boolean mayHaveNull();
-
-  /**
-   * Is the specified position null?
-   *
-   * @throws IllegalArgumentException if this position is not valid. The method may return false
-   *     without throwing exception when there are no nulls in the block, even if the position is
-   *     invalid
-   */
-  boolean isNull(int position);
-
-  /** Returns the array to determine whether each position of the column is null or not. */
-  boolean[] isNull();
-
-  /** Returns the number of positions in this block. */
-  int getPositionCount();
-
-  /**
-   * Returns the retained size of this column in memory, including over-allocations. This method is
-   * called from the inner most execution loop and must be fast.
-   */
-  long getRetainedSizeInBytes();
-
-  /**
-   * Returns a column starting at the specified position and extends for the specified length. The
-   * specified region must be entirely contained within this column.
-   *
-   * <p>The region can be a view over this column. If this column is released, the region column may
-   * also be released. If the region column is released, this block may also be released.
-   */
-  Column getRegion(int positionOffset, int length);
-
-  /**
-   * This method will create a temporary view of origin column, which will reuse the array of column
-   * but with different array offset.
-   */
-  Column subColumn(int fromIndex);
-
-  /** reverse the column */
-  void reverse();
-
-  int getInstanceSize();
-}
diff --git a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnBuilder.java b/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnBuilder.java
deleted file mode 100644
index 14b946d..0000000
--- a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnBuilder.java
+++ /dev/null
@@ -1,106 +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.column;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-public interface ColumnBuilder {
-
-  /** Write a boolean to the current entry; */
-  default ColumnBuilder writeBoolean(boolean value) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Write an int to the current entry; */
-  default ColumnBuilder writeInt(int value) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Write a long to the current entry; */
-  default ColumnBuilder writeLong(long value) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Write a float to the current entry; */
-  default ColumnBuilder writeFloat(float value) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Write a double to the current entry; */
-  default ColumnBuilder writeDouble(double value) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Write a Binary to the current entry; */
-  default ColumnBuilder writeBinary(Binary value) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Write a TsPrimitiveType sequences to the current entry; */
-  default ColumnBuilder writeTsPrimitiveType(TsPrimitiveType value) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Write an Object to the current entry, which should be the corresponding type; */
-  default ColumnBuilder writeObject(Object value) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /**
-   * Write value at index of passing column
-   *
-   * <p>Caller should make sure that value at index is not null
-   *
-   * @param column source column whose type should be same as ColumnBuilder
-   * @param index index of source column to read from
-   */
-  ColumnBuilder write(Column column, int index);
-
-  /** Appends a null value to the block. */
-  ColumnBuilder appendNull();
-
-  /** Appends nullCount null value to the block. */
-  default ColumnBuilder appendNull(int nullCount) {
-    for (int i = 0; i < nullCount; i++) {
-      appendNull();
-    }
-    return this;
-  }
-
-  /** Builds the block. This method can be called multiple times. */
-  Column build();
-
-  /** Get the data type. */
-  TSDataType getDataType();
-
-  /**
-   * Returns the retained size of this column in memory, including over-allocations. This method is
-   * called from the inner most execution loop and must be fast.
-   */
-  long getRetainedSizeInBytes();
-
-  /**
-   * Creates a new column builder of the same type based on the current usage statistics of this
-   * column builder.
-   */
-  ColumnBuilder newColumnBuilderLike(ColumnBuilderStatus columnBuilderStatus);
-}
diff --git a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnBuilderStatus.java b/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnBuilderStatus.java
deleted file mode 100644
index a3a5e7b..0000000
--- a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnBuilderStatus.java
+++ /dev/null
@@ -1,91 +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.column;
-
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilderStatus;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-
-import static java.lang.String.format;
-import static java.util.Objects.requireNonNull;
-
-public class ColumnBuilderStatus {
-
-  public static final long INSTANCE_SIZE = deepInstanceSize(ColumnBuilderStatus.class);
-
-  private final TsBlockBuilderStatus tsBlockBuilderStatus;
-
-  private int currentSize;
-
-  public ColumnBuilderStatus(TsBlockBuilderStatus tsBlockBuilderStatus) {
-    this.tsBlockBuilderStatus =
-        requireNonNull(tsBlockBuilderStatus, "tsBlockBuilderStatus must not be null");
-  }
-
-  public int getMaxTsBlockSizeInBytes() {
-    return tsBlockBuilderStatus.getMaxTsBlockSizeInBytes();
-  }
-
-  public void addBytes(int bytes) {
-    currentSize += bytes;
-    tsBlockBuilderStatus.addBytes(bytes);
-  }
-
-  @Override
-  public String toString() {
-    return "ColumnBuilderStatus{" + ", currentSize=" + currentSize + '}';
-  }
-
-  /**
-   * Computes the size of an instance of this class assuming that all reference fields are non-null
-   */
-  private static long deepInstanceSize(Class<?> clazz) {
-    if (clazz.isArray()) {
-      throw new IllegalArgumentException(
-          format(
-              "Cannot determine size of %s because it contains an array", clazz.getSimpleName()));
-    }
-    if (clazz.isInterface()) {
-      throw new IllegalArgumentException(format("%s is an interface", clazz.getSimpleName()));
-    }
-    if (Modifier.isAbstract(clazz.getModifiers())) {
-      throw new IllegalArgumentException(format("%s is abstract", clazz.getSimpleName()));
-    }
-    if (!clazz.getSuperclass().equals(Object.class)) {
-      throw new IllegalArgumentException(
-          format(
-              "Cannot determine size of a subclass. %s extends from %s",
-              clazz.getSimpleName(), clazz.getSuperclass().getSimpleName()));
-    }
-
-    long size = RamUsageEstimator.shallowSizeOf(clazz);
-    for (Field field : clazz.getDeclaredFields()) {
-      // if the field is not static and is a reference field and it's not synthetic
-      if (!Modifier.isStatic(field.getModifiers())
-          && !field.getType().isPrimitive()
-          && !field.isSynthetic()) {
-        size += deepInstanceSize(field.getType());
-      }
-    }
-    return size;
-  }
-}
diff --git a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnEncoding.java b/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnEncoding.java
deleted file mode 100644
index f8008ae..0000000
--- a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnEncoding.java
+++ /dev/null
@@ -1,68 +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.column;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-public enum ColumnEncoding {
-  /** BOOLEAN. */
-  BYTE_ARRAY((byte) 0),
-  /** INT32, FLOAT */
-  INT32_ARRAY((byte) 1),
-  /** INT64, DOUBLE. */
-  INT64_ARRAY((byte) 2),
-  /** TEXT. */
-  BINARY_ARRAY((byte) 3),
-  /** All data types. */
-  RLE((byte) 4);
-
-  private final byte value;
-
-  ColumnEncoding(byte value) {
-    this.value = value;
-  }
-
-  public static ColumnEncoding deserializeFrom(ByteBuffer buffer) {
-    return getColumnEncoding(buffer.get());
-  }
-
-  public void serializeTo(DataOutputStream stream) throws IOException {
-    stream.writeByte(value);
-  }
-
-  private static ColumnEncoding getColumnEncoding(byte value) {
-    switch (value) {
-      case 0:
-        return BYTE_ARRAY;
-      case 1:
-        return INT32_ARRAY;
-      case 2:
-        return INT64_ARRAY;
-      case 3:
-        return BINARY_ARRAY;
-      case 4:
-        return RLE;
-      default:
-        throw new IllegalArgumentException("Invalid value: " + value);
-    }
-  }
-}
diff --git a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/utils/Accountable.java b/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/utils/Accountable.java
deleted file mode 100644
index db6c2a4..0000000
--- a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/utils/Accountable.java
+++ /dev/null
@@ -1,25 +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.utils;
-
-public interface Accountable {
-  /** Return the memory usage of this object in bytes. Negative values are illegal. */
-  long ramBytesUsed();
-}
diff --git a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/utils/Binary.java b/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/utils/Binary.java
deleted file mode 100644
index cd000c8..0000000
--- a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/utils/Binary.java
+++ /dev/null
@@ -1,122 +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.utils;
-
-import java.io.Serializable;
-import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-
-/**
- * Override compareTo() and equals() function to Binary class. This class is used to accept Java
- * String type
- */
-public class Binary implements Comparable<Binary>, Serializable {
-
-  private static final long serialVersionUID = 6394197743397020735L;
-  public static final Binary EMPTY_VALUE = new Binary(new byte[0]);
-
-  private byte[] values;
-
-  /** if the bytes v is modified, the modification is visible to this binary. */
-  public Binary(byte[] v) {
-    this.values = v;
-  }
-
-  public Binary(String s, Charset charset) {
-    this.values = (s == null) ? null : s.getBytes(charset);
-  }
-
-  @Override
-  public int compareTo(Binary other) {
-    if (other == null) {
-      if (this.values == null) {
-        return 0;
-      } else {
-        return 1;
-      }
-    }
-
-    // copied from StringLatin1.compareT0
-    int len1 = getLength();
-    int len2 = other.getLength();
-    int lim = Math.min(len1, len2);
-    for (int k = 0; k < lim; k++) {
-      if (this.values[k] != other.values[k]) {
-        return getChar(values, k) - getChar(other.values, k);
-      }
-    }
-    return len1 - len2;
-  }
-
-  // avoid overflow
-  private char getChar(byte[] val, int index) {
-    return (char) (val[index] & 0xff);
-  }
-
-  @Override
-  public boolean equals(Object other) {
-    if (this == other) {
-      return true;
-    }
-    if (other == null) {
-      return false;
-    }
-    if (getClass() != other.getClass()) {
-      return false;
-    }
-
-    return compareTo((Binary) other) == 0;
-  }
-
-  @Override
-  public int hashCode() {
-    return Arrays.hashCode(values);
-  }
-
-  /**
-   * get length.
-   *
-   * @return length
-   */
-  public int getLength() {
-    if (this.values == null) {
-      return -1;
-    }
-    return this.values.length;
-  }
-
-  public String getStringValue(Charset charset) {
-    return new String(this.values, charset);
-  }
-
-  @Override
-  public String toString() {
-    // use UTF_8 by default since toString do not provide parameter
-    return getStringValue(StandardCharsets.UTF_8);
-  }
-
-  public byte[] getValues() {
-    return values;
-  }
-
-  public void setValues(byte[] values) {
-    this.values = values;
-  }
-}
diff --git a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/utils/BitMap.java b/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/utils/BitMap.java
deleted file mode 100644
index 8092e28..0000000
--- a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/utils/BitMap.java
+++ /dev/null
@@ -1,194 +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.utils;
-
-import java.util.Arrays;
-import java.util.Objects;
-
-public class BitMap {
-  private static final byte[] BIT_UTIL = new byte[] {1, 2, 4, 8, 16, 32, 64, -128};
-  private static final byte[] UNMARK_BIT_UTIL =
-      new byte[] {
-        (byte) 0XFE, // 11111110
-        (byte) 0XFD, // 11111101
-        (byte) 0XFB, // 11111011
-        (byte) 0XF7, // 11110111
-        (byte) 0XEF, // 11101111
-        (byte) 0XDF, // 11011111
-        (byte) 0XBF, // 10111111
-        (byte) 0X7F // 01111111
-      };
-
-  private final byte[] bits;
-  private final int size;
-
-  /** Initialize a BitMap with given size. */
-  public BitMap(int size) {
-    this.size = size;
-    bits = new byte[size / Byte.SIZE + 1];
-    Arrays.fill(bits, (byte) 0);
-  }
-
-  /** Initialize a BitMap with given size and bytes. */
-  public BitMap(int size, byte[] bits) {
-    this.size = size;
-    this.bits = bits;
-  }
-
-  public byte[] getByteArray() {
-    return this.bits;
-  }
-
-  public int getSize() {
-    return this.size;
-  }
-
-  /** returns the value of the bit with the specified index. */
-  public boolean isMarked(int position) {
-    return (bits[position / Byte.SIZE] & BIT_UTIL[position % Byte.SIZE]) != 0;
-  }
-
-  /** mark as 1 at all positions. */
-  public void markAll() {
-    Arrays.fill(bits, (byte) 0XFF);
-  }
-
-  /** mark as 1 at the given bit position. */
-  public void mark(int position) {
-    bits[position / Byte.SIZE] |= BIT_UTIL[position % Byte.SIZE];
-  }
-
-  /** mark as 0 at all positions. */
-  public void reset() {
-    Arrays.fill(bits, (byte) 0);
-  }
-
-  public void unmark(int position) {
-    bits[position / Byte.SIZE] &= UNMARK_BIT_UTIL[position % Byte.SIZE];
-  }
-
-  /** whether all bits are zero, i.e., no Null value */
-  public boolean isAllUnmarked() {
-    int j;
-    for (j = 0; j < size / Byte.SIZE; j++) {
-      if (bits[j] != (byte) 0) {
-        return false;
-      }
-    }
-    for (j = 0; j < size % Byte.SIZE; j++) {
-      if ((bits[size / Byte.SIZE] & BIT_UTIL[j]) != 0) {
-        return false;
-      }
-    }
-    return true;
-  }
-
-  /** whether all bits are one, i.e., all are Null */
-  public boolean isAllMarked() {
-    int j;
-    for (j = 0; j < size / Byte.SIZE; j++) {
-      if (bits[j] != (byte) 0XFF) {
-        return false;
-      }
-    }
-    for (j = 0; j < size % Byte.SIZE; j++) {
-      if ((bits[size / Byte.SIZE] & BIT_UTIL[j]) == 0) {
-        return false;
-      }
-    }
-    return true;
-  }
-
-  @Override
-  public String toString() {
-    StringBuilder res = new StringBuilder();
-    for (int i = 0; i < size; i++) {
-      res.append(isMarked(i) ? 1 : 0);
-    }
-    return res.toString();
-  }
-
-  @Override
-  public int hashCode() {
-    int result = Objects.hash(size);
-    result = 31 * result + Arrays.hashCode(bits);
-    return result;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (obj == this) {
-      return true;
-    }
-    if (obj == null) {
-      return false;
-    }
-    if (!(obj instanceof BitMap)) {
-      return false;
-    }
-    BitMap other = (BitMap) obj;
-    return this.size == other.size && Arrays.equals(this.bits, other.bits);
-  }
-
-  @Override
-  public BitMap clone() {
-    byte[] cloneBytes = new byte[this.bits.length];
-    System.arraycopy(this.bits, 0, cloneBytes, 0, this.bits.length);
-    return new BitMap(this.size, cloneBytes);
-  }
-
-  /**
-   * Copies a bitmap from the specified source bitmap, beginning at the specified position, to the
-   * specified position of the destination bitmap. A subsequence of bits are copied from the source
-   * bitmap referenced by src to the destination bitmap referenced by dest. The number of bits
-   * copied is equal to the length argument. The bits at positions srcPos through srcPos+length-1 in
-   * the source bitmap are copied into positions destPos through destPos+length-1, respectively, of
-   * the destination bitmap.
-   *
-   * @param src the source bitmap.
-   * @param srcPos starting position in the source bitmap.
-   * @param dest the destination bitmap.
-   * @param destPos starting position in the destination bitmap.
-   * @param length the number of bits to be copied.
-   * @throws IndexOutOfBoundsException if copying would cause access of data outside bitmap bounds.
-   */
-  public static void copyOfRange(BitMap src, int srcPos, BitMap dest, int destPos, int length) {
-    if (srcPos + length > src.size) {
-      throw new IndexOutOfBoundsException(
-          (srcPos + length - 1) + " is out of src range " + src.size);
-    } else if (destPos + length > dest.size) {
-      throw new IndexOutOfBoundsException(
-          (destPos + length - 1) + " is out of dest range " + dest.size);
-    }
-    for (int i = 0; i < length; ++i) {
-      if (src.isMarked(srcPos + i)) {
-        dest.mark(destPos + i);
-      } else {
-        dest.unmark(destPos + i);
-      }
-    }
-  }
-
-  public BitMap getRegion(int positionOffset, int length) {
-    BitMap newBitMap = new BitMap(length);
-    copyOfRange(this, positionOffset, newBitMap, 0, length);
-    return newBitMap;
-  }
-}
diff --git a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/utils/Constants.java b/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/utils/Constants.java
deleted file mode 100644
index fad8af1..0000000
--- a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/utils/Constants.java
+++ /dev/null
@@ -1,100 +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.utils;
-
-import java.util.StringTokenizer;
-
-/**
- * This class is copied from apache lucene, version 8.4.0. Estimates the size(memory representation)
- * of Java objects. <a
- * href="https://github.com/LuXugang/Lucene-7.x-9.x/blob/master/solr-8.4.0/lucene/core/src/java/org/apache/lucene/util/Constants.java">Constants.java</a>
- * Some useful constants.
- */
-public final class Constants {
-
-  private Constants() {} // can't construct
-
-  /** JVM vendor info. */
-  public static final String JVM_VENDOR = System.getProperty("java.vm.vendor");
-
-  public static final String JVM_VERSION = System.getProperty("java.vm.version");
-  public static final String JVM_NAME = System.getProperty("java.vm.name");
-  public static final String JVM_SPEC_VERSION = System.getProperty("java.specification.version");
-
-  /** The value of <tt>System.getProperty("java.version")</tt>. * */
-  public static final String JAVA_VERSION = System.getProperty("java.version");
-
-  /** The value of <tt>System.getProperty("os.name")</tt>. * */
-  public static final String OS_NAME = System.getProperty("os.name");
-  /** True iff running on Linux. */
-  public static final boolean LINUX = OS_NAME.startsWith("Linux");
-  /** True iff running on Windows. */
-  public static final boolean WINDOWS = OS_NAME.startsWith("Windows");
-  /** True iff running on SunOS. */
-  public static final boolean SUN_OS = OS_NAME.startsWith("SunOS");
-  /** True iff running on Mac OS X */
-  public static final boolean MAC_OS_X = OS_NAME.startsWith("Mac OS X");
-  /** True iff running on FreeBSD */
-  public static final boolean FREE_BSD = OS_NAME.startsWith("FreeBSD");
-
-  public static final String OS_ARCH = System.getProperty("os.arch");
-  public static final String OS_VERSION = System.getProperty("os.version");
-  public static final String JAVA_VENDOR = System.getProperty("java.vendor");
-
-  private static final int JVM_MAJOR_VERSION;
-  private static final int JVM_MINOR_VERSION;
-
-  /** True iff running on a 64bit JVM */
-  public static final boolean JRE_IS_64BIT;
-
-  static {
-    final StringTokenizer st = new StringTokenizer(JVM_SPEC_VERSION, ".");
-    JVM_MAJOR_VERSION = Integer.parseInt(st.nextToken());
-    if (st.hasMoreTokens()) {
-      JVM_MINOR_VERSION = Integer.parseInt(st.nextToken());
-    } else {
-      JVM_MINOR_VERSION = 0;
-    }
-    boolean is64Bit = false;
-    String datamodel = null;
-    try {
-      datamodel = System.getProperty("sun.arch.data.model");
-      if (datamodel != null) {
-        is64Bit = datamodel.contains("64");
-      }
-    } catch (SecurityException ex) {
-    }
-    if (datamodel == null) {
-      if (OS_ARCH != null && OS_ARCH.contains("64")) {
-        is64Bit = true;
-      } else {
-        is64Bit = false;
-      }
-    }
-    JRE_IS_64BIT = is64Bit;
-  }
-
-  public static final boolean JRE_IS_MINIMUM_JAVA8 =
-      JVM_MAJOR_VERSION > 1 || (JVM_MAJOR_VERSION == 1 && JVM_MINOR_VERSION >= 8);
-  public static final boolean JRE_IS_MINIMUM_JAVA9 =
-      JVM_MAJOR_VERSION > 1 || (JVM_MAJOR_VERSION == 1 && JVM_MINOR_VERSION >= 9);
-  public static final boolean JRE_IS_MINIMUM_JAVA11 =
-      JVM_MAJOR_VERSION > 1 || (JVM_MAJOR_VERSION == 1 && JVM_MINOR_VERSION >= 11);
-}
diff --git a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/utils/RamUsageEstimator.java b/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/utils/RamUsageEstimator.java
deleted file mode 100644
index 5a2b44d..0000000
--- a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/utils/RamUsageEstimator.java
+++ /dev/null
@@ -1,576 +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.utils;
-
-import java.lang.reflect.Array;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.text.DecimalFormat;
-import java.text.DecimalFormatSymbols;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.IdentityHashMap;
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * This class is copied from apache lucene, version 8.4.0. Estimates the size(memory representation)
- * of Java objects. <a
- * href="https://github.com/LuXugang/Lucene-7.x-9.x/blob/master/solr-8.4.0/lucene/core/src/java/org/apache/lucene/util/RamUsageEstimator.java">RamUsageEstimator.java</a>
- * Estimates the size (memory representation) of Java objects.
- *
- * <p>This class uses assumptions that were discovered for the Hotspot virtual machine. If you use a
- * non-OpenJDK/Oracle-based JVM, the measurements may be slightly wrong.
- *
- * @see #shallowSizeOf(Object)
- * @see #shallowSizeOfInstance(Class)
- */
-public final class RamUsageEstimator {
-
-  /** One kilobyte bytes. */
-  public static final long ONE_KB = 1024;
-
-  /** One megabyte bytes. */
-  public static final long ONE_MB = ONE_KB * ONE_KB;
-
-  /** One gigabyte bytes. */
-  public static final long ONE_GB = ONE_KB * ONE_MB;
-
-  /** No instantiation. */
-  private RamUsageEstimator() {}
-
-  /** True, iff compressed references (oops) are enabled by this JVM */
-  public static final boolean COMPRESSED_REFS_ENABLED;
-
-  /** Number of bytes this JVM uses to represent an object reference. */
-  public static final int NUM_BYTES_OBJECT_REF;
-
-  /** Number of bytes to represent an object header (no fields, no alignments). */
-  public static final int NUM_BYTES_OBJECT_HEADER;
-
-  /** Number of bytes to represent an array header (no content, but with alignments). */
-  public static final int NUM_BYTES_ARRAY_HEADER;
-
-  /**
-   * A constant specifying the object alignment boundary inside the JVM. Objects will always take a
-   * full multiple of this constant, possibly wasting some space.
-   */
-  public static final int NUM_BYTES_OBJECT_ALIGNMENT;
-
-  /**
-   * Approximate memory usage that we assign to all unknown queries - this maps roughly to a
-   * BooleanQuery with a couple term clauses.
-   */
-  public static final int QUERY_DEFAULT_RAM_BYTES_USED = 1024;
-
-  /**
-   * Approximate memory usage that we assign to all unknown objects - this maps roughly to a few
-   * primitive fields and a couple short String-s.
-   */
-  public static final int UNKNOWN_DEFAULT_RAM_BYTES_USED = 256;
-
-  /** Sizes of primitive classes. */
-  public static final Map<Class<?>, Integer> primitiveSizes;
-
-  static {
-    Map<Class<?>, Integer> primitiveSizesMap = new IdentityHashMap<>();
-    primitiveSizesMap.put(boolean.class, 1);
-    primitiveSizesMap.put(byte.class, 1);
-    primitiveSizesMap.put(char.class, Character.BYTES);
-    primitiveSizesMap.put(short.class, Short.BYTES);
-    primitiveSizesMap.put(int.class, Integer.BYTES);
-    primitiveSizesMap.put(float.class, Float.BYTES);
-    primitiveSizesMap.put(double.class, Double.BYTES);
-    primitiveSizesMap.put(long.class, Long.BYTES);
-
-    primitiveSizes = Collections.unmodifiableMap(primitiveSizesMap);
-  }
-
-  /** JVMs typically cache small longs. This tries to find out what the range is. */
-  static final long LONG_CACHE_MIN_VALUE, LONG_CACHE_MAX_VALUE;
-
-  static final int LONG_SIZE, STRING_SIZE;
-
-  /** For testing only */
-  static final boolean JVM_IS_HOTSPOT_64BIT;
-
-  static final String MANAGEMENT_FACTORY_CLASS = "java.lang.management.ManagementFactory";
-  static final String HOTSPOT_BEAN_CLASS = "com.sun.management.HotSpotDiagnosticMXBean";
-
-  // Initialize constants and try to collect information about the JVM internals.
-  static {
-    if (Constants.JRE_IS_64BIT) {
-      // Try to get compressed oops and object alignment (the default seems to be 8 on Hotspot);
-      // (this only works on 64 bit, on 32 bits the alignment and reference size is fixed):
-      boolean compressedOops = false;
-      int objectAlignment = 8;
-      boolean isHotspot = false;
-      try {
-        final Class<?> beanClazz = Class.forName(HOTSPOT_BEAN_CLASS);
-        // we use reflection for this, because the management factory is not part
-        // of Java 8's compact profile:
-        final Object hotSpotBean =
-            Class.forName(MANAGEMENT_FACTORY_CLASS)
-                .getMethod("getPlatformMXBean", Class.class)
-                .invoke(null, beanClazz);
-        if (hotSpotBean != null) {
-          isHotspot = true;
-          final Method getVMOptionMethod = beanClazz.getMethod("getVMOption", String.class);
-          try {
-            final Object vmOption = getVMOptionMethod.invoke(hotSpotBean, "UseCompressedOops");
-            compressedOops =
-                Boolean.parseBoolean(
-                    vmOption.getClass().getMethod("getValue").invoke(vmOption).toString());
-          } catch (ReflectiveOperationException | RuntimeException e) {
-            isHotspot = false;
-          }
-          try {
-            final Object vmOption = getVMOptionMethod.invoke(hotSpotBean, "ObjectAlignmentInBytes");
-            objectAlignment =
-                Integer.parseInt(
-                    vmOption.getClass().getMethod("getValue").invoke(vmOption).toString());
-          } catch (ReflectiveOperationException | RuntimeException e) {
-            isHotspot = false;
-          }
-        }
-      } catch (ReflectiveOperationException | RuntimeException e) {
-        isHotspot = false;
-      }
-      JVM_IS_HOTSPOT_64BIT = isHotspot;
-      COMPRESSED_REFS_ENABLED = compressedOops;
-      NUM_BYTES_OBJECT_ALIGNMENT = objectAlignment;
-      // reference size is 4, if we have compressed oops:
-      NUM_BYTES_OBJECT_REF = COMPRESSED_REFS_ENABLED ? 4 : 8;
-      // "best guess" based on reference size:
-      NUM_BYTES_OBJECT_HEADER = 8 + NUM_BYTES_OBJECT_REF;
-      // array header is NUM_BYTES_OBJECT_HEADER + NUM_BYTES_INT, but aligned (object alignment):
-      NUM_BYTES_ARRAY_HEADER = (int) alignObjectSize(NUM_BYTES_OBJECT_HEADER + Integer.BYTES);
-    } else {
-      JVM_IS_HOTSPOT_64BIT = false;
-      COMPRESSED_REFS_ENABLED = false;
-      NUM_BYTES_OBJECT_ALIGNMENT = 8;
-      NUM_BYTES_OBJECT_REF = 4;
-      NUM_BYTES_OBJECT_HEADER = 8;
-      // For 32 bit JVMs, no extra alignment of array header:
-      NUM_BYTES_ARRAY_HEADER = NUM_BYTES_OBJECT_HEADER + Integer.BYTES;
-    }
-
-    // get min/max value of cached Long class instances:
-    long longCacheMinValue = 0;
-    while (longCacheMinValue > Long.MIN_VALUE
-        && Long.valueOf(longCacheMinValue - 1) == Long.valueOf(longCacheMinValue - 1)) {
-      longCacheMinValue -= 1;
-    }
-    long longCacheMaxValue = -1;
-    while (longCacheMaxValue < Long.MAX_VALUE
-        && Long.valueOf(longCacheMaxValue + 1) == Long.valueOf(longCacheMaxValue + 1)) {
-      longCacheMaxValue += 1;
-    }
-    LONG_CACHE_MIN_VALUE = longCacheMinValue;
-    LONG_CACHE_MAX_VALUE = longCacheMaxValue;
-    LONG_SIZE = (int) shallowSizeOfInstance(Long.class);
-    STRING_SIZE = (int) shallowSizeOfInstance(String.class);
-  }
-
-  /** Approximate memory usage that we assign to a Hashtable / HashMap entry. */
-  public static final long HASHTABLE_RAM_BYTES_PER_ENTRY =
-      2
-          * NUM_BYTES_OBJECT_REF // key + value
-          * 2; // hash tables need to be oversized to avoid collisions, assume 2x capacity
-
-  /** Approximate memory usage that we assign to a LinkedHashMap entry. */
-  public static final long LINKED_HASHTABLE_RAM_BYTES_PER_ENTRY =
-      HASHTABLE_RAM_BYTES_PER_ENTRY + 2 * NUM_BYTES_OBJECT_REF; // previous & next references
-
-  /** Aligns an object size to be the next multiple of {@link #NUM_BYTES_OBJECT_ALIGNMENT}. */
-  public static long alignObjectSize(long size) {
-    size += NUM_BYTES_OBJECT_ALIGNMENT - 1L;
-    return size - (size % NUM_BYTES_OBJECT_ALIGNMENT);
-  }
-
-  /**
-   * Return the size of the provided {@link Long} object, returning 0 if it is cached by the JVM and
-   * its shallow size otherwise.
-   */
-  public static long sizeOf(Long value) {
-    if (value >= LONG_CACHE_MIN_VALUE && value <= LONG_CACHE_MAX_VALUE) {
-      return 0;
-    }
-    return LONG_SIZE;
-  }
-
-  /** Returns the size in bytes of the byte[] object. */
-  public static long sizeOf(byte[] arr) {
-    return arr == null ? 0 : alignObjectSize((long) NUM_BYTES_ARRAY_HEADER + arr.length);
-  }
-
-  /** Returns the size in bytes of the boolean[] object. */
-  public static long sizeOf(boolean[] arr) {
-    return arr == null ? 0 : alignObjectSize((long) NUM_BYTES_ARRAY_HEADER + arr.length);
-  }
-
-  /** Returns the size in bytes of the char[] object. */
-  public static long sizeOf(char[] arr) {
-    return arr == null
-        ? 0
-        : alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Character.BYTES * arr.length);
-  }
-
-  /** Returns the size in bytes of the short[] object. */
-  public static long sizeOf(short[] arr) {
-    return arr == null
-        ? 0
-        : alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Short.BYTES * arr.length);
-  }
-
-  /** Returns the size in bytes of the int[] object. */
-  public static long sizeOf(int[] arr) {
-    return arr == null
-        ? 0
-        : alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Integer.BYTES * arr.length);
-  }
-
-  /** Returns the size in bytes of the float[] object. */
-  public static long sizeOf(float[] arr) {
-    return arr == null
-        ? 0
-        : alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Float.BYTES * arr.length);
-  }
-
-  /** Returns the size in bytes of the long[] object. */
-  public static long sizeOf(long[] arr) {
-    return arr == null
-        ? 0
-        : alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Long.BYTES * arr.length);
-  }
-
-  /** Returns the size in bytes of the double[] object. */
-  public static long sizeOf(double[] arr) {
-    return arr == null
-        ? 0
-        : alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Double.BYTES * arr.length);
-  }
-
-  /** Returns the size in bytes of the String[] object. */
-  public static long sizeOf(String[] arr) {
-    long size = shallowSizeOf(arr);
-    for (String s : arr) {
-      if (s == null) {
-        continue;
-      }
-      size += sizeOf(s);
-    }
-    return size;
-  }
-
-  /** Recurse only into immediate descendants. */
-  public static final int MAX_DEPTH = 1;
-
-  /**
-   * Returns the size in bytes of a Map object, including sizes of its keys and values, supplying
-   * {@link #UNKNOWN_DEFAULT_RAM_BYTES_USED} when object type is not well known. This method
-   * recurses up to {@link #MAX_DEPTH}.
-   */
-  public static long sizeOfMap(Map<?, ?> map) {
-    return sizeOfMap(map, 0, UNKNOWN_DEFAULT_RAM_BYTES_USED);
-  }
-
-  /**
-   * Returns the size in bytes of a Map object, including sizes of its keys and values, supplying
-   * default object size when object type is not well known. This method recurses up to {@link
-   * #MAX_DEPTH}.
-   */
-  public static long sizeOfMap(Map<?, ?> map, long defSize) {
-    return sizeOfMap(map, 0, defSize);
-  }
-
-  private static long sizeOfMap(Map<?, ?> map, int depth, long defSize) {
-    if (map == null) {
-      return 0;
-    }
-    long size = shallowSizeOf(map);
-    if (depth > MAX_DEPTH) {
-      return size;
-    }
-    long sizeOfEntry = -1;
-    for (Map.Entry<?, ?> entry : map.entrySet()) {
-      if (sizeOfEntry == -1) {
-        sizeOfEntry = shallowSizeOf(entry);
-      }
-      size += sizeOfEntry;
-      size += sizeOfObject(entry.getKey(), depth, defSize);
-      size += sizeOfObject(entry.getValue(), depth, defSize);
-    }
-    return alignObjectSize(size);
-  }
-
-  /**
-   * Returns the size in bytes of a Collection object, including sizes of its values, supplying
-   * {@link #UNKNOWN_DEFAULT_RAM_BYTES_USED} when object type is not well known. This method
-   * recurses up to {@link #MAX_DEPTH}.
-   */
-  public static long sizeOfCollection(Collection<?> collection) {
-    return sizeOfCollection(collection, 0, UNKNOWN_DEFAULT_RAM_BYTES_USED);
-  }
-
-  /**
-   * Returns the size in bytes of a Collection object, including sizes of its values, supplying
-   * default object size when object type is not well known. This method recurses up to {@link
-   * #MAX_DEPTH}.
-   */
-  public static long sizeOfCollection(Collection<?> collection, long defSize) {
-    return sizeOfCollection(collection, 0, defSize);
-  }
-
-  private static long sizeOfCollection(Collection<?> collection, int depth, long defSize) {
-    if (collection == null) {
-      return 0;
-    }
-    long size = shallowSizeOf(collection);
-    if (depth > MAX_DEPTH) {
-      return size;
-    }
-    // assume array-backed collection and add per-object references
-    size += NUM_BYTES_ARRAY_HEADER + (long) collection.size() * NUM_BYTES_OBJECT_REF;
-    for (Object o : collection) {
-      size += sizeOfObject(o, depth, defSize);
-    }
-    return alignObjectSize(size);
-  }
-
-  /**
-   * Best effort attempt to estimate the size in bytes of an undetermined object. Known types will
-   * be estimated according to their formulas, and all other object sizes will be estimated as
-   * {@link #UNKNOWN_DEFAULT_RAM_BYTES_USED}.
-   */
-  public static long sizeOfObject(Object o) {
-    return sizeOfObject(o, 0, UNKNOWN_DEFAULT_RAM_BYTES_USED);
-  }
-
-  /**
-   * Best effort attempt to estimate the size in bytes of an undetermined object. Known types will
-   * be estimated according to their formulas, and all other object sizes will be estimated using
-   * {@link #shallowSizeOf(Object)}, or using the supplied <code>defSize</code> parameter if its
-   * value is greater than 0.
-   */
-  public static long sizeOfObject(Object o, long defSize) {
-    return sizeOfObject(o, 0, defSize);
-  }
-
-  private static long sizeOfObject(Object o, int depth, long defSize) {
-    if (o == null) {
-      return 0;
-    }
-    long size;
-    if (o instanceof Accountable) {
-      size = ((Accountable) o).ramBytesUsed();
-    } else if (o instanceof String) {
-      size = sizeOf((String) o);
-    } else if (o instanceof boolean[]) {
-      size = sizeOf((boolean[]) o);
-    } else if (o instanceof byte[]) {
-      size = sizeOf((byte[]) o);
-    } else if (o instanceof char[]) {
-      size = sizeOf((char[]) o);
-    } else if (o instanceof double[]) {
-      size = sizeOf((double[]) o);
-    } else if (o instanceof float[]) {
-      size = sizeOf((float[]) o);
-    } else if (o instanceof int[]) {
-      size = sizeOf((int[]) o);
-    } else if (o instanceof Long) {
-      size = sizeOf((Long) o);
-    } else if (o instanceof long[]) {
-      size = sizeOf((long[]) o);
-    } else if (o instanceof short[]) {
-      size = sizeOf((short[]) o);
-    } else if (o instanceof String[]) {
-      size = sizeOf((String[]) o);
-    } else if (o instanceof Map) {
-      size = sizeOfMap((Map) o, ++depth, defSize);
-    } else if (o instanceof Collection) {
-      size = sizeOfCollection((Collection) o, ++depth, defSize);
-    } else {
-      if (defSize > 0) {
-        size = defSize;
-      } else {
-        size = shallowSizeOf(o);
-      }
-    }
-    return size;
-  }
-
-  /** Returns the size in bytes of the String object. */
-  public static long sizeOf(String s) {
-    if (s == null) {
-      return 0;
-    }
-    // may not be true in Java 9+ and CompactStrings - but we have no way to determine this
-
-    // char[] + hashCode
-    long size = STRING_SIZE + (long) NUM_BYTES_ARRAY_HEADER + (long) Character.BYTES * s.length();
-    return alignObjectSize(size);
-  }
-
-  /** Returns the shallow size in bytes of the Object[] object. */
-  // Use this method instead of #shallowSizeOf(Object) to avoid costly reflection
-  public static long shallowSizeOf(Object[] arr) {
-    return arr == null
-        ? 0
-        : alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) NUM_BYTES_OBJECT_REF * arr.length);
-  }
-
-  /**
-   * Estimates a "shallow" memory usage of the given object. For arrays, this will be the memory
-   * taken by array storage (no subreferences will be followed). For objects, this will be the
-   * memory taken by the fields.
-   *
-   * <p>JVM object alignments are also applied.
-   */
-  public static long shallowSizeOf(Object obj) {
-    if (obj == null) {
-      return 0;
-    }
-    final Class<?> clz = obj.getClass();
-    if (clz.isArray()) {
-      return shallowSizeOfArray(obj);
-    } else {
-      return shallowSizeOfInstance(clz);
-    }
-  }
-
-  /**
-   * Returns the shallow instance size in bytes an instance of the given class would occupy. This
-   * works with all conventional classes and primitive types, but not with arrays (the size then
-   * depends on the number of elements and varies from object to object).
-   *
-   * @see #shallowSizeOf(Object)
-   * @throws IllegalArgumentException if {@code clazz} is an array class.
-   */
-  public static long shallowSizeOfInstance(Class<?> clazz) {
-    if (clazz.isArray()) {
-      throw new IllegalArgumentException("This method does not work with array classes.");
-    }
-    if (clazz.isPrimitive()) {
-      return primitiveSizes.get(clazz);
-    }
-
-    long size = NUM_BYTES_OBJECT_HEADER;
-
-    // Walk type hierarchy
-    for (; clazz != null; clazz = clazz.getSuperclass()) {
-      final Field[] fields =
-          AccessController.doPrivileged((PrivilegedAction<Field[]>) clazz::getDeclaredFields);
-      for (Field f : fields) {
-        if (!Modifier.isStatic(f.getModifiers())) {
-          size = adjustForField(size, f);
-        }
-      }
-    }
-    return alignObjectSize(size);
-  }
-
-  /** Return shallow size of any <code>array</code>. */
-  private static long shallowSizeOfArray(Object array) {
-    long size = NUM_BYTES_ARRAY_HEADER;
-    final int len = Array.getLength(array);
-    if (len > 0) {
-      Class<?> arrayElementClazz = array.getClass().getComponentType();
-      if (arrayElementClazz.isPrimitive()) {
-        size += (long) len * primitiveSizes.get(arrayElementClazz);
-      } else {
-        size += (long) NUM_BYTES_OBJECT_REF * len;
-      }
-    }
-    return alignObjectSize(size);
-  }
-
-  /**
-   * This method returns the maximum representation size of an object. <code>sizeSoFar</code> is the
-   * object's size measured so far. <code>f</code> is the field being probed.
-   *
-   * <p>The returned offset will be the maximum of whatever was measured so far and <code>f</code>
-   * field's offset and representation size (unaligned).
-   */
-  static long adjustForField(long sizeSoFar, final Field f) {
-    final Class<?> type = f.getType();
-    final int fsize = type.isPrimitive() ? primitiveSizes.get(type) : NUM_BYTES_OBJECT_REF;
-    // TODO: No alignments based on field type/ subclass fields alignments?
-    return sizeSoFar + fsize;
-  }
-
-  /** Returns <code>size</code> in human-readable units (GB, MB, KB or bytes). */
-  public static String humanReadableUnits(long bytes) {
-    return humanReadableUnits(
-        bytes, new DecimalFormat("0.#", DecimalFormatSymbols.getInstance(Locale.ROOT)));
-  }
-
-  /** Returns <code>size</code> in human-readable units (GB, MB, KB or bytes). */
-  public static String humanReadableUnits(long bytes, DecimalFormat df) {
-    if (bytes / ONE_GB > 0) {
-      return df.format((float) bytes / ONE_GB) + " GB";
-    } else if (bytes / ONE_MB > 0) {
-      return df.format((float) bytes / ONE_MB) + " MB";
-    } else if (bytes / ONE_KB > 0) {
-      return df.format((float) bytes / ONE_KB) + " KB";
-    } else {
-      return bytes + " bytes";
-    }
-  }
-
-  public static long sizeOfBooleanArray(int length) {
-    return alignObjectSize((long) NUM_BYTES_ARRAY_HEADER + length);
-  }
-
-  public static long sizeOfByteArray(int length) {
-    return alignObjectSize((long) NUM_BYTES_ARRAY_HEADER + length);
-  }
-
-  public static long sizeOfShortArray(int length) {
-    return alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Short.BYTES * length);
-  }
-
-  public static long sizeOfCharArray(int length) {
-    return alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Character.BYTES * length);
-  }
-
-  public static long sizeOfIntArray(int length) {
-    return alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Integer.BYTES * length);
-  }
-
-  public static long sizeOfLongArray(int length) {
-    return alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Long.BYTES * length);
-  }
-
-  public static long sizeOfFloatArray(int length) {
-    return alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Float.BYTES * length);
-  }
-
-  public static long sizeOfDoubleArray(int length) {
-    return alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Double.BYTES * length);
-  }
-
-  public static long sizeOfObjectArray(int length) {
-    return alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) NUM_BYTES_OBJECT_REF * length);
-  }
-}
diff --git a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/utils/TsPrimitiveType.java b/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/utils/TsPrimitiveType.java
deleted file mode 100644
index 42d8c96..0000000
--- a/iotdb-api/common-api/src/main/java/org/apache/iotdb/tsfile/utils/TsPrimitiveType.java
+++ /dev/null
@@ -1,695 +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.utils;
-
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-
-import java.io.Serializable;
-import java.util.Arrays;
-
-public abstract class TsPrimitiveType implements Serializable {
-
-  /**
-   * get tsPrimitiveType by resultDataType.
-   *
-   * @param dataType given TsDataType
-   */
-  public static TsPrimitiveType getByType(TSDataType dataType) {
-    switch (dataType) {
-      case BOOLEAN:
-        return new TsPrimitiveType.TsBoolean();
-      case INT32:
-        return new TsPrimitiveType.TsInt();
-      case INT64:
-        return new TsPrimitiveType.TsLong();
-      case FLOAT:
-        return new TsPrimitiveType.TsFloat();
-      case DOUBLE:
-        return new TsPrimitiveType.TsDouble();
-      case TEXT:
-        return new TsPrimitiveType.TsBinary();
-      case VECTOR:
-        return new TsPrimitiveType.TsVector();
-      default:
-        throw new UnSupportedDataTypeException("Unsupported data type:" + dataType);
-    }
-  }
-
-  /**
-   * get tsPrimitiveType by resultDataType and initial value.
-   *
-   * @param dataType given TsDataType
-   * @param v initial value
-   */
-  public static TsPrimitiveType getByType(TSDataType dataType, Object v) {
-    switch (dataType) {
-      case BOOLEAN:
-        return new TsPrimitiveType.TsBoolean((boolean) v);
-      case INT32:
-        return new TsPrimitiveType.TsInt((int) v);
-      case INT64:
-        return new TsPrimitiveType.TsLong((long) v);
-      case FLOAT:
-        return new TsPrimitiveType.TsFloat((float) v);
-      case DOUBLE:
-        return new TsPrimitiveType.TsDouble((double) v);
-      case TEXT:
-        return new TsPrimitiveType.TsBinary((Binary) v);
-      case VECTOR:
-        return new TsPrimitiveType.TsVector((TsPrimitiveType[]) v);
-      default:
-        throw new UnSupportedDataTypeException("Unsupported data type:" + dataType);
-    }
-  }
-
-  public boolean getBoolean() {
-    throw new UnsupportedOperationException("getBoolean() is not supported for current sub-class");
-  }
-
-  public int getInt() {
-    throw new UnsupportedOperationException("getInt() is not supported for current sub-class");
-  }
-
-  public long getLong() {
-    throw new UnsupportedOperationException("getLong() is not supported for current sub-class");
-  }
-
-  public float getFloat() {
-    throw new UnsupportedOperationException("getFloat() is not supported for current sub-class");
-  }
-
-  public double getDouble() {
-    throw new UnsupportedOperationException("getDouble() is not supported for current sub-class");
-  }
-
-  public Binary getBinary() {
-    throw new UnsupportedOperationException("getBinary() is not supported for current sub-class");
-  }
-
-  public TsPrimitiveType[] getVector() {
-    throw new UnsupportedOperationException("getVector() is not supported for current sub-class");
-  }
-
-  public void setBoolean(boolean val) {
-    throw new UnsupportedOperationException("setBoolean() is not supported for current sub-class");
-  }
-
-  public void setInt(int val) {
-    throw new UnsupportedOperationException("setInt() is not supported for current sub-class");
-  }
-
-  public void setLong(long val) {
-    throw new UnsupportedOperationException("setLong() is not supported for current sub-class");
-  }
-
-  public void setFloat(float val) {
-    throw new UnsupportedOperationException("setFloat() is not supported for current sub-class");
-  }
-
-  public void setDouble(double val) {
-    throw new UnsupportedOperationException("setDouble() is not supported for current sub-class");
-  }
-
-  public void setBinary(Binary val) {
-    throw new UnsupportedOperationException("setBinary() is not supported for current sub-class");
-  }
-
-  public void setVector(TsPrimitiveType[] val) {
-    throw new UnsupportedOperationException("setVector() is not supported for current sub-class");
-  }
-
-  public abstract void setObject(Object val);
-
-  public abstract void reset();
-
-  /**
-   * get the size of one instance of current class.
-   *
-   * @return size of one instance of current class
-   */
-  public abstract int getSize();
-
-  public abstract Object getValue();
-
-  public abstract String getStringValue();
-
-  public abstract TSDataType getDataType();
-
-  @Override
-  public String toString() {
-    return getStringValue();
-  }
-
-  @Override
-  public boolean equals(Object object) {
-    return (object instanceof TsPrimitiveType)
-        && (((TsPrimitiveType) object).getValue().equals(getValue()));
-  }
-
-  @Override
-  public int hashCode() {
-    return getValue().hashCode();
-  }
-
-  public static class TsBoolean extends TsPrimitiveType {
-
-    private boolean value;
-
-    public TsBoolean() {}
-
-    public TsBoolean(boolean value) {
-      this.value = value;
-    }
-
-    @Override
-    public boolean getBoolean() {
-      return value;
-    }
-
-    @Override
-    public void setBoolean(boolean val) {
-      this.value = val;
-    }
-
-    @Override
-    public void setObject(Object val) {
-      if (val instanceof Boolean) {
-        setBoolean((Boolean) val);
-        return;
-      }
-      throw new UnSupportedDataTypeException("TsBoolean can only be set Boolean value");
-    }
-
-    @Override
-    public void reset() {
-      value = false;
-    }
-
-    @Override
-    public int getSize() {
-      return 4 + 1;
-    }
-
-    @Override
-    public Object getValue() {
-      return getBoolean();
-    }
-
-    @Override
-    public String getStringValue() {
-      return String.valueOf(value);
-    }
-
-    @Override
-    public TSDataType getDataType() {
-      return TSDataType.BOOLEAN;
-    }
-
-    @Override
-    public int hashCode() {
-      return Boolean.hashCode(value);
-    }
-
-    @Override
-    public boolean equals(Object anObject) {
-      if (this == anObject) {
-        return true;
-      }
-      if (anObject instanceof TsBoolean) {
-        TsBoolean anotherTs = (TsBoolean) anObject;
-        return value == anotherTs.value;
-      }
-      return false;
-    }
-  }
-
-  public static class TsInt extends TsPrimitiveType {
-
-    private int value;
-
-    public TsInt() {}
-
-    public TsInt(int value) {
-      this.value = value;
-    }
-
-    @Override
-    public int getInt() {
-      return value;
-    }
-
-    @Override
-    public void setInt(int val) {
-      this.value = val;
-    }
-
-    @Override
-    public void setObject(Object val) {
-      if (val instanceof Integer) {
-        setInt((Integer) val);
-        return;
-      }
-      throw new UnSupportedDataTypeException("TsInt can only be set Integer value");
-    }
-
-    @Override
-    public void reset() {
-      value = 0;
-    }
-
-    @Override
-    public int getSize() {
-      return 4 + 4;
-    }
-
-    @Override
-    public Object getValue() {
-      return getInt();
-    }
-
-    @Override
-    public String getStringValue() {
-      return String.valueOf(value);
-    }
-
-    @Override
-    public TSDataType getDataType() {
-      return TSDataType.INT32;
-    }
-
-    @Override
-    public int hashCode() {
-      return Integer.hashCode(value);
-    }
-
-    @Override
-    public boolean equals(Object anObject) {
-      if (this == anObject) {
-        return true;
-      }
-      if (anObject instanceof TsInt) {
-        TsInt anotherTs = (TsInt) anObject;
-        return value == anotherTs.value;
-      }
-      return false;
-    }
-  }
-
-  public static class TsLong extends TsPrimitiveType {
-
-    private long value;
-
-    public TsLong() {}
-
-    public TsLong(long value) {
-      this.value = value;
-    }
-
-    @Override
-    public long getLong() {
-      return value;
-    }
-
-    @Override
-    public void setLong(long val) {
-      this.value = val;
-    }
-
-    @Override
-    public void setObject(Object val) {
-      if (val instanceof Long) {
-        setLong((Long) val);
-        return;
-      }
-      throw new UnSupportedDataTypeException("TsLong can only be set Long value");
-    }
-
-    @Override
-    public void reset() {
-      value = 0;
-    }
-
-    @Override
-    public int getSize() {
-      return 4 + 8;
-    }
-
-    @Override
-    public String getStringValue() {
-      return String.valueOf(value);
-    }
-
-    @Override
-    public TSDataType getDataType() {
-      return TSDataType.INT64;
-    }
-
-    @Override
-    public Object getValue() {
-      return getLong();
-    }
-
-    @Override
-    public int hashCode() {
-      return Long.hashCode(value);
-    }
-
-    @Override
-    public boolean equals(Object anObject) {
-      if (this == anObject) {
-        return true;
-      }
-      if (anObject instanceof TsLong) {
-        TsLong anotherTs = (TsLong) anObject;
-        return value == anotherTs.value;
-      }
-      return false;
-    }
-  }
-
-  public static class TsFloat extends TsPrimitiveType {
-
-    private float value;
-
-    public TsFloat() {}
-
-    public TsFloat(float value) {
-      this.value = value;
-    }
-
-    @Override
-    public float getFloat() {
-      return value;
-    }
-
-    @Override
-    public void setFloat(float val) {
-      this.value = val;
-    }
-
-    @Override
-    public void setObject(Object val) {
-      if (val instanceof Float) {
-        setFloat((Float) val);
-        return;
-      }
-      throw new UnSupportedDataTypeException("TsFloat can only be set float value");
-    }
-
-    @Override
-    public void reset() {
-      value = 0;
-    }
-
-    @Override
-    public int getSize() {
-      return 4 + 4;
-    }
-
-    @Override
-    public Object getValue() {
-      return getFloat();
-    }
-
-    @Override
-    public String getStringValue() {
-      return String.valueOf(value);
-    }
-
-    @Override
-    public TSDataType getDataType() {
-      return TSDataType.FLOAT;
-    }
-
-    @Override
-    public int hashCode() {
-      return Float.hashCode(value);
-    }
-
-    @Override
-    public boolean equals(Object anObject) {
-      if (this == anObject) {
-        return true;
-      }
-      if (anObject instanceof TsFloat) {
-        TsFloat anotherTs = (TsFloat) anObject;
-        return value == anotherTs.value;
-      }
-      return false;
-    }
-  }
-
-  public static class TsDouble extends TsPrimitiveType {
-
-    private double value;
-
-    public TsDouble() {}
-
-    public TsDouble(double value) {
-      this.value = value;
-    }
-
-    @Override
-    public double getDouble() {
-      return value;
-    }
-
-    @Override
-    public void setDouble(double val) {
-      this.value = val;
-    }
-
-    @Override
-    public void setObject(Object val) {
-      if (val instanceof Double) {
-        setDouble((Double) val);
-        return;
-      }
-      throw new UnSupportedDataTypeException("TsDouble can only be set Double value");
-    }
-
-    @Override
-    public void reset() {
-      value = 0.0;
-    }
-
-    @Override
-    public int getSize() {
-      return 4 + 8;
-    }
-
-    @Override
-    public Object getValue() {
-      return getDouble();
-    }
-
-    @Override
-    public String getStringValue() {
-      return String.valueOf(value);
-    }
-
-    @Override
-    public TSDataType getDataType() {
-      return TSDataType.DOUBLE;
-    }
-
-    @Override
-    public int hashCode() {
-      return Double.hashCode(value);
-    }
-
-    @Override
-    public boolean equals(Object anObject) {
-      if (this == anObject) {
-        return true;
-      }
-      if (anObject instanceof TsDouble) {
-        TsDouble anotherTs = (TsDouble) anObject;
-        return value == anotherTs.value;
-      }
-      return false;
-    }
-  }
-
-  public static class TsBinary extends TsPrimitiveType {
-
-    private Binary value;
-
-    public TsBinary() {}
-
-    public TsBinary(Binary value) {
-      this.value = value;
-    }
-
-    @Override
-    public Binary getBinary() {
-      return value;
-    }
-
-    @Override
-    public void setBinary(Binary val) {
-      this.value = val;
-    }
-
-    @Override
-    public void setObject(Object val) {
-      if (val instanceof Binary) {
-        setBinary((Binary) val);
-        return;
-      }
-      throw new UnSupportedDataTypeException("TsBinary can only be set Binary value");
-    }
-
-    @Override
-    public void reset() {
-      value = null;
-    }
-
-    @Override
-    public int getSize() {
-      return 4 + 4 + value.getLength();
-    }
-
-    @Override
-    public Object getValue() {
-      return getBinary();
-    }
-
-    @Override
-    public String getStringValue() {
-      return String.valueOf(value);
-    }
-
-    @Override
-    public TSDataType getDataType() {
-      return TSDataType.TEXT;
-    }
-
-    @Override
-    public int hashCode() {
-      return value.hashCode();
-    }
-
-    @Override
-    public boolean equals(Object anObject) {
-      if (this == anObject) {
-        return true;
-      }
-      if (anObject instanceof TsBinary) {
-        TsBinary anotherTs = (TsBinary) anObject;
-        return value.equals(anotherTs.value);
-      }
-      return false;
-    }
-  }
-
-  public static class TsVector extends TsPrimitiveType {
-
-    private TsPrimitiveType[] values;
-
-    public TsVector() {}
-
-    public TsVector(TsPrimitiveType[] values) {
-      this.values = values;
-    }
-
-    @Override
-    public TsPrimitiveType[] getVector() {
-      return values;
-    }
-
-    @Override
-    public void setVector(TsPrimitiveType[] vals) {
-      this.values = vals;
-    }
-
-    @Override
-    public void setObject(Object val) {
-      if (val instanceof TsPrimitiveType[]) {
-        setVector((TsPrimitiveType[]) val);
-        return;
-      }
-      throw new UnSupportedDataTypeException("TsVector can only be set TsPrimitiveType[] value");
-    }
-
-    @Override
-    public void reset() {
-      values = null;
-    }
-
-    @Override
-    public int getSize() {
-      int size = 0;
-      for (TsPrimitiveType type : values) {
-        if (type != null) {
-          size += type.getSize();
-        }
-      }
-      // object header + array object header
-      return 4 + 4 + size;
-    }
-
-    @Override
-    public Object getValue() {
-      return getVector();
-    }
-
-    @Override
-    public String getStringValue() {
-      StringBuilder builder = new StringBuilder("[");
-      builder.append(values[0] == null ? "null" : values[0].getStringValue());
-      for (int i = 1; i < values.length; i++) {
-        builder.append(", ").append(values[i] == null ? "null" : values[i].getStringValue());
-      }
-      builder.append("]");
-      return builder.toString();
-    }
-
-    @Override
-    public TSDataType getDataType() {
-      return TSDataType.VECTOR;
-    }
-
-    @Override
-    public int hashCode() {
-      return Arrays.hashCode(values);
-    }
-
-    @Override
-    public boolean equals(Object anObject) {
-      if (this == anObject) {
-        return true;
-      }
-      if (anObject instanceof TsVector) {
-        TsVector anotherTs = (TsVector) anObject;
-        if (anotherTs.values.length != this.values.length) {
-          return false;
-        }
-        for (int i = 0; i < this.values.length; i++) {
-          if (!values[i].equals(anotherTs.values[i])) {
-            return false;
-          }
-        }
-        return true;
-      }
-      return false;
-    }
-  }
-}
diff --git a/iotdb-api/pipe-api/pom.xml b/iotdb-api/pipe-api/pom.xml
index 83775f8..10944b6 100644
--- a/iotdb-api/pipe-api/pom.xml
+++ b/iotdb-api/pipe-api/pom.xml
@@ -30,9 +30,9 @@
     <name>IoTDB: API: Pipe API</name>
     <dependencies>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>
diff --git a/iotdb-api/pipe-api/src/main/java/org/apache/iotdb/pipe/api/access/Row.java b/iotdb-api/pipe-api/src/main/java/org/apache/iotdb/pipe/api/access/Row.java
index e98968b..b3c1342 100644
--- a/iotdb-api/pipe-api/src/main/java/org/apache/iotdb/pipe/api/access/Row.java
+++ b/iotdb-api/pipe-api/src/main/java/org/apache/iotdb/pipe/api/access/Row.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.pipe.api.exception.PipeParameterNotValidException;
 import org.apache.iotdb.pipe.api.type.Binary;
 import org.apache.iotdb.pipe.api.type.Type;
-import org.apache.iotdb.tsfile.read.common.Path;
+
+import org.apache.tsfile.read.common.Path;
 
 import java.util.List;
 
diff --git a/iotdb-api/pipe-api/src/main/java/org/apache/iotdb/pipe/api/event/dml/insertion/TabletInsertionEvent.java b/iotdb-api/pipe-api/src/main/java/org/apache/iotdb/pipe/api/event/dml/insertion/TabletInsertionEvent.java
index 22729e0..6e1575a 100644
--- a/iotdb-api/pipe-api/src/main/java/org/apache/iotdb/pipe/api/event/dml/insertion/TabletInsertionEvent.java
+++ b/iotdb-api/pipe-api/src/main/java/org/apache/iotdb/pipe/api/event/dml/insertion/TabletInsertionEvent.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.pipe.api.access.Row;
 import org.apache.iotdb.pipe.api.collector.RowCollector;
 import org.apache.iotdb.pipe.api.event.Event;
-import org.apache.iotdb.tsfile.write.record.Tablet;
+
+import org.apache.tsfile.write.record.Tablet;
 
 import java.util.function.BiConsumer;
 
diff --git a/iotdb-api/pom.xml b/iotdb-api/pom.xml
index 15a345d..3744f1f 100644
--- a/iotdb-api/pom.xml
+++ b/iotdb-api/pom.xml
@@ -30,7 +30,6 @@
     <packaging>pom</packaging>
     <name>IoTDB: API</name>
     <modules>
-        <module>common-api</module>
         <module>external-api</module>
         <module>pipe-api</module>
         <module>trigger-api</module>
diff --git a/iotdb-api/trigger-api/pom.xml b/iotdb-api/trigger-api/pom.xml
index 8292ed5..88cb4ed 100644
--- a/iotdb-api/trigger-api/pom.xml
+++ b/iotdb-api/trigger-api/pom.xml
@@ -30,9 +30,9 @@
     <name>IoTDB: API: Trigger API</name>
     <dependencies>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
         </dependency>
     </dependencies>
     <profiles>
diff --git a/iotdb-api/trigger-api/src/main/java/org/apache/iotdb/trigger/api/Trigger.java b/iotdb-api/trigger-api/src/main/java/org/apache/iotdb/trigger/api/Trigger.java
index e693dcc..753fe8b 100644
--- a/iotdb-api/trigger-api/src/main/java/org/apache/iotdb/trigger/api/Trigger.java
+++ b/iotdb-api/trigger-api/src/main/java/org/apache/iotdb/trigger/api/Trigger.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.trigger.api;
 
 import org.apache.iotdb.trigger.api.enums.FailureStrategy;
-import org.apache.iotdb.tsfile.write.record.Tablet;
+
+import org.apache.tsfile.write.record.Tablet;
 
 public interface Trigger {
 
diff --git a/iotdb-api/trigger-api/src/main/java/org/apache/iotdb/trigger/api/enums/FailureStrategy.java b/iotdb-api/trigger-api/src/main/java/org/apache/iotdb/trigger/api/enums/FailureStrategy.java
index 7f32f7c..18d9478 100644
--- a/iotdb-api/trigger-api/src/main/java/org/apache/iotdb/trigger/api/enums/FailureStrategy.java
+++ b/iotdb-api/trigger-api/src/main/java/org/apache/iotdb/trigger/api/enums/FailureStrategy.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.trigger.api.enums;
 
 import org.apache.iotdb.trigger.api.Trigger;
-import org.apache.iotdb.tsfile.write.record.Tablet;
+
+import org.apache.tsfile.write.record.Tablet;
 
 /**
  * Type of FailureStrategy indicates what will happen when a trigger failed to do {@link
diff --git a/iotdb-api/udf-api/pom.xml b/iotdb-api/udf-api/pom.xml
index fcb22d6..d11ae4d 100644
--- a/iotdb-api/udf-api/pom.xml
+++ b/iotdb-api/udf-api/pom.xml
@@ -30,9 +30,9 @@
     <name>IoTDB: API: UDF API</name>
     <dependencies>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>common</artifactId>
+            <version>${tsfile.version}</version>
         </dependency>
     </dependencies>
     <profiles>
diff --git a/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/UDAF.java b/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/UDAF.java
index 4e8869b..6cd71f8 100644
--- a/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/UDAF.java
+++ b/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/UDAF.java
@@ -19,12 +19,13 @@
 
 package org.apache.iotdb.udf.api;
 
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.utils.BitMap;
 import org.apache.iotdb.udf.api.customizer.config.UDAFConfigurations;
 import org.apache.iotdb.udf.api.customizer.parameter.UDFParameters;
 import org.apache.iotdb.udf.api.utils.ResultValue;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.utils.BitMap;
+
 public interface UDAF extends UDF {
   void beforeStart(UDFParameters parameters, UDAFConfigurations configurations);
 
diff --git a/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/UDTF.java b/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/UDTF.java
index 39ed5c6..002e174 100644
--- a/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/UDTF.java
+++ b/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/UDTF.java
@@ -19,9 +19,6 @@
 
 package org.apache.iotdb.udf.api;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.access.RowWindow;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -34,6 +31,10 @@
 import org.apache.iotdb.udf.api.customizer.strategy.SlidingTimeWindowAccessStrategy;
 import org.apache.iotdb.udf.api.utils.RowImpl;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+
 /**
  * User-defined Time-series Generating Function (UDTF)
  *
diff --git a/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/utils/ResultValue.java b/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/utils/ResultValue.java
index a65bdf0..8e27cb3 100644
--- a/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/utils/ResultValue.java
+++ b/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/utils/ResultValue.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.udf.api.utils;
 
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.utils.Binary;
 
 public class ResultValue {
   private ColumnBuilder builder;
diff --git a/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/utils/RowImpl.java b/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/utils/RowImpl.java
index 6540814..b54dc15 100644
--- a/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/utils/RowImpl.java
+++ b/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/utils/RowImpl.java
@@ -19,11 +19,12 @@
 
 package org.apache.iotdb.udf.api.utils;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.type.Binary;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.enums.TSDataType;
+
 public class RowImpl implements Row {
 
   private final TSDataType[] dataTypes;
@@ -69,7 +70,7 @@
 
   @Override
   public Binary getBinary(int columnIndex) {
-    return transformToUDFBinary((org.apache.iotdb.tsfile.utils.Binary) rowRecord[columnIndex]);
+    return transformToUDFBinary((org.apache.tsfile.utils.Binary) rowRecord[columnIndex]);
   }
 
   @Override
@@ -96,7 +97,7 @@
     this.rowRecord = rowRecord;
   }
 
-  public static Binary transformToUDFBinary(org.apache.iotdb.tsfile.utils.Binary binary) {
+  public static Binary transformToUDFBinary(org.apache.tsfile.utils.Binary binary) {
     return binary == null ? null : new Binary(binary.getValues());
   }
 
diff --git a/iotdb-client/cli/pom.xml b/iotdb-client/cli/pom.xml
index 9e14c62..c8451aa 100644
--- a/iotdb-client/cli/pom.xml
+++ b/iotdb-client/cli/pom.xml
@@ -70,14 +70,14 @@
             <version>1.3.2-SNAPSHOT</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>common</artifactId>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ExportData.java b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ExportData.java
index bae7195..69c342c 100644
--- a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ExportData.java
+++ b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ExportData.java
@@ -29,10 +29,6 @@
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.Session;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
 
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
@@ -44,6 +40,10 @@
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.thrift.TException;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.Field;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.read.common.RowRecord;
 import org.jline.reader.LineReader;
 
 import java.io.BufferedReader;
diff --git a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ExportTsFile.java b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ExportTsFile.java
index 7eb1239..6949142 100644
--- a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ExportTsFile.java
+++ b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ExportTsFile.java
@@ -28,17 +28,6 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.Session;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
@@ -47,6 +36,17 @@
 import org.apache.commons.cli.Option;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.common.Field;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.read.common.RowRecord;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.jline.reader.LineReader;
 
 import java.io.BufferedReader;
diff --git a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ImportData.java b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ImportData.java
index 5e33f95..8d1b353 100644
--- a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ImportData.java
+++ b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ImportData.java
@@ -31,10 +31,6 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.Session;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
 
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
@@ -47,6 +43,10 @@
 import org.apache.commons.csv.CSVRecord;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.thrift.annotation.Nullable;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.Field;
+import org.apache.tsfile.read.common.RowRecord;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -74,12 +74,12 @@
 import java.util.stream.Stream;
 
 import static org.apache.iotdb.jdbc.Config.IOTDB_ERROR_PREFIX;
-import static org.apache.iotdb.tsfile.file.metadata.enums.TSDataType.BOOLEAN;
-import static org.apache.iotdb.tsfile.file.metadata.enums.TSDataType.DOUBLE;
-import static org.apache.iotdb.tsfile.file.metadata.enums.TSDataType.FLOAT;
-import static org.apache.iotdb.tsfile.file.metadata.enums.TSDataType.INT32;
-import static org.apache.iotdb.tsfile.file.metadata.enums.TSDataType.INT64;
-import static org.apache.iotdb.tsfile.file.metadata.enums.TSDataType.TEXT;
+import static org.apache.tsfile.enums.TSDataType.BOOLEAN;
+import static org.apache.tsfile.enums.TSDataType.DOUBLE;
+import static org.apache.tsfile.enums.TSDataType.FLOAT;
+import static org.apache.tsfile.enums.TSDataType.INT32;
+import static org.apache.tsfile.enums.TSDataType.INT64;
+import static org.apache.tsfile.enums.TSDataType.TEXT;
 
 public class ImportData extends AbstractDataTool {
 
diff --git a/iotdb-client/cli/src/test/resources/logback.xml b/iotdb-client/cli/src/test/resources/logback.xml
index df71a20..3c1e4f6 100644
--- a/iotdb-client/cli/src/test/resources/logback.xml
+++ b/iotdb-client/cli/src/test/resources/logback.xml
@@ -115,7 +115,7 @@
             <level>DEBUG</level>
         </filter>
     </appender>
-    <!--<logger name="org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl level="debug" />-->
+    <!--<logger name="org.apache.tsfile.write.chunk.ChunkWriterImpl level="debug" />-->
     <root level="ERROR">
         <appender-ref ref="FILEERROR"/>
     </root>
diff --git a/iotdb-client/isession/pom.xml b/iotdb-client/isession/pom.xml
index 44dbe96..c6f1393 100644
--- a/iotdb-client/isession/pom.xml
+++ b/iotdb-client/isession/pom.xml
@@ -35,14 +35,14 @@
             <version>1.3.2-SNAPSHOT</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>common</artifactId>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/ISession.java b/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/ISession.java
index 9176dbd..3324d5d 100644
--- a/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/ISession.java
+++ b/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/ISession.java
@@ -28,12 +28,12 @@
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.service.rpc.thrift.TSBackupConfigurationResp;
 import org.apache.iotdb.service.rpc.thrift.TSConnectionInfoResp;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.record.Tablet;
 
 import org.apache.thrift.TException;
+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.write.record.Tablet;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/ISessionDataSet.java b/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/ISessionDataSet.java
index be77a22..d620675 100644
--- a/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/ISessionDataSet.java
+++ b/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/ISessionDataSet.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.isession;
 
-import org.apache.iotdb.tsfile.read.common.RowRecord;
+import org.apache.tsfile.read.common.RowRecord;
 
 import java.util.List;
 
diff --git a/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/SessionDataSet.java b/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/SessionDataSet.java
index f927f6d..89f058d 100644
--- a/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/SessionDataSet.java
+++ b/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/SessionDataSet.java
@@ -23,12 +23,12 @@
 import org.apache.iotdb.rpc.IoTDBRpcDataSet;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.service.rpc.thrift.IClientRPCService;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.Field;
+import org.apache.tsfile.read.common.RowRecord;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.nio.ByteBuffer;
 import java.sql.Timestamp;
diff --git a/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/pool/ISessionPool.java b/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/pool/ISessionPool.java
index f2a9d42..090fb8e 100644
--- a/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/pool/ISessionPool.java
+++ b/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/pool/ISessionPool.java
@@ -27,10 +27,11 @@
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.service.rpc.thrift.TSBackupConfigurationResp;
 import org.apache.iotdb.service.rpc.thrift.TSConnectionInfoResp;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.record.Tablet;
+
+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.write.record.Tablet;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/pool/SessionDataSetWrapper.java b/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/pool/SessionDataSetWrapper.java
index de36ee1..77f347b 100644
--- a/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/pool/SessionDataSetWrapper.java
+++ b/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/pool/SessionDataSetWrapper.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.isession.SessionDataSet;
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
+
+import org.apache.tsfile.read.common.RowRecord;
 
 import java.util.List;
 
diff --git a/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/template/Template.java b/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/template/Template.java
index 7751ad3..90171c7 100644
--- a/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/template/Template.java
+++ b/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/template/Template.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.isession.template;
 
 import org.apache.iotdb.rpc.StatementExecutionException;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/iotdb-client/jdbc/pom.xml b/iotdb-client/jdbc/pom.xml
index 7fdbd09..bd9bf10 100644
--- a/iotdb-client/jdbc/pom.xml
+++ b/iotdb-client/jdbc/pom.xml
@@ -46,14 +46,14 @@
             <version>1.3.2-SNAPSHOT</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>common</artifactId>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/GroupedLSBWatermarkEncoder.java b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/GroupedLSBWatermarkEncoder.java
index b781d12..fb286e7 100644
--- a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/GroupedLSBWatermarkEncoder.java
+++ b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/GroupedLSBWatermarkEncoder.java
@@ -19,11 +19,10 @@
 
 package org.apache.iotdb.jdbc;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-
 import org.apache.thrift.EncodingUtils;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.Field;
+import org.apache.tsfile.read.common.RowRecord;
 
 import java.math.BigInteger;
 import java.security.MessageDigest;
diff --git a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBDatabaseMetadata.java b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBDatabaseMetadata.java
index 6bd5b23..e2db05d 100644
--- a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBDatabaseMetadata.java
+++ b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBDatabaseMetadata.java
@@ -24,15 +24,15 @@
 import org.apache.iotdb.service.rpc.thrift.IClientRPCService;
 import org.apache.iotdb.service.rpc.thrift.TSFetchMetadataReq;
 import org.apache.iotdb.service.rpc.thrift.TSFetchMetadataResp;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TsBlockSerde;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.thrift.TException;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TsBlockSerde;
+import org.apache.tsfile.utils.Binary;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java
index 5b7eaa9..facfaed 100644
--- a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java
+++ b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java
@@ -26,12 +26,12 @@
 import org.apache.iotdb.service.rpc.thrift.TSFetchResultsResp;
 import org.apache.iotdb.service.rpc.thrift.TSQueryNonAlignDataSet;
 import org.apache.iotdb.service.rpc.thrift.TSTracingInfo;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.nio.ByteBuffer;
 import java.sql.SQLException;
diff --git a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBPreparedStatement.java b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBPreparedStatement.java
index 6b7bd8e..6cc0db3 100644
--- a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBPreparedStatement.java
+++ b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBPreparedStatement.java
@@ -20,10 +20,10 @@
 package org.apache.iotdb.jdbc;
 
 import org.apache.iotdb.service.rpc.thrift.IClientRPCService.Iface;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.utils.Binary;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/WatermarkEncoder.java b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/WatermarkEncoder.java
index 615f8a4..4547d20 100644
--- a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/WatermarkEncoder.java
+++ b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/WatermarkEncoder.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.jdbc;
 
-import org.apache.iotdb.tsfile.read.common.RowRecord;
+import org.apache.tsfile.read.common.RowRecord;
 
 public interface WatermarkEncoder {
   int encodeInt(int value, long time);
diff --git a/iotdb-client/jdbc/src/test/java/org/apache/iotdb/jdbc/IoTDBJDBCResultSetTest.java b/iotdb-client/jdbc/src/test/java/org/apache/iotdb/jdbc/IoTDBJDBCResultSetTest.java
index ede07f9..e69c767 100644
--- a/iotdb-client/jdbc/src/test/java/org/apache/iotdb/jdbc/IoTDBJDBCResultSetTest.java
+++ b/iotdb-client/jdbc/src/test/java/org/apache/iotdb/jdbc/IoTDBJDBCResultSetTest.java
@@ -29,10 +29,10 @@
 import org.apache.iotdb.service.rpc.thrift.TSFetchMetadataResp;
 import org.apache.iotdb.service.rpc.thrift.TSFetchResultsReq;
 import org.apache.iotdb.service.rpc.thrift.TSFetchResultsResp;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TsBlockSerde;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TsBlockSerde;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-client/service-rpc/pom.xml b/iotdb-client/service-rpc/pom.xml
index e66f399..f91a0b2 100644
--- a/iotdb-client/service-rpc/pom.xml
+++ b/iotdb-client/service-rpc/pom.xml
@@ -36,9 +36,9 @@
     </properties>
     <dependencies>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>${project.version}</version>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>common</artifactId>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
@@ -46,9 +46,9 @@
             <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
             <!-- we want to reduce the size of JDBC -->
             <exclusions>
                 <exclusion>
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java
index 52dbb2c..8c7d8fc 100644
--- a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java
+++ b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java
@@ -25,12 +25,12 @@
 import org.apache.iotdb.service.rpc.thrift.TSFetchResultsReq;
 import org.apache.iotdb.service.rpc.thrift.TSFetchResultsResp;
 import org.apache.iotdb.service.rpc.thrift.TSQueryDataSet;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.nio.ByteBuffer;
 import java.nio.charset.StandardCharsets;
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java
index 6ff111e..eb92120 100644
--- a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java
+++ b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java
@@ -24,13 +24,13 @@
 import org.apache.iotdb.service.rpc.thrift.TSCloseOperationReq;
 import org.apache.iotdb.service.rpc.thrift.TSFetchResultsReq;
 import org.apache.iotdb.service.rpc.thrift.TSFetchResultsResp;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.TsBlockSerde;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.TsBlockSerde;
+import org.apache.tsfile.utils.Binary;
 
 import java.nio.ByteBuffer;
 import java.sql.Timestamp;
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/ConsumerConfig.java b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/ConsumerConfig.java
index 7915e1e..976ad9c 100644
--- a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/ConsumerConfig.java
+++ b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/ConsumerConfig.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.rpc.subscription.config;
 
 import org.apache.iotdb.pipe.api.customizer.parameter.PipeParameters;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/TopicConfig.java b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/TopicConfig.java
index 8e1fc70..330d129 100644
--- a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/TopicConfig.java
+++ b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/TopicConfig.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.rpc.subscription.config;
 
 import org.apache.iotdb.pipe.api.customizer.parameter.PipeParameters;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/EnrichedTablets.java b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/EnrichedTablets.java
index 9bcae95..d020e17 100644
--- a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/EnrichedTablets.java
+++ b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/EnrichedTablets.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.rpc.subscription.payload;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.record.Tablet;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.record.Tablet;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeCommitReq.java b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeCommitReq.java
index 89c844c..91446df 100644
--- a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeCommitReq.java
+++ b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeCommitReq.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.rpc.subscription.payload.request;
 
 import org.apache.iotdb.service.rpc.thrift.TPipeSubscribeReq;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeHandshakeReq.java b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeHandshakeReq.java
index f0dc2d1..800794a 100644
--- a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeHandshakeReq.java
+++ b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeHandshakeReq.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.rpc.subscription.config.ConsumerConfig;
 import org.apache.iotdb.service.rpc.thrift.TPipeSubscribeReq;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
+
+import org.apache.tsfile.utils.PublicBAOS;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribePollReq.java b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribePollReq.java
index 0188633..a614644 100644
--- a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribePollReq.java
+++ b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribePollReq.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.rpc.subscription.payload.request;
 
 import org.apache.iotdb.service.rpc.thrift.TPipeSubscribeReq;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeSubscribeReq.java b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeSubscribeReq.java
index 53bc708..eb3b90e 100644
--- a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeSubscribeReq.java
+++ b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeSubscribeReq.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.rpc.subscription.payload.request;
 
 import org.apache.iotdb.service.rpc.thrift.TPipeSubscribeReq;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeUnsubscribeReq.java b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeUnsubscribeReq.java
index 0fa729b..2de93a5 100644
--- a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeUnsubscribeReq.java
+++ b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeUnsubscribeReq.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.rpc.subscription.payload.request;
 
 import org.apache.iotdb.service.rpc.thrift.TPipeSubscribeReq;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeHandshakeResp.java b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeHandshakeResp.java
index 932c88a..58d7bae 100644
--- a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeHandshakeResp.java
+++ b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeHandshakeResp.java
@@ -23,8 +23,9 @@
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.service.rpc.thrift.TPipeSubscribeResp;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribePollResp.java b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribePollResp.java
index 0d1ed4e..d0bc8cc 100644
--- a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribePollResp.java
+++ b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribePollResp.java
@@ -24,8 +24,9 @@
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.rpc.subscription.payload.EnrichedTablets;
 import org.apache.iotdb.service.rpc.thrift.TPipeSubscribeResp;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
+
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.PublicBAOS;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-client/session/pom.xml b/iotdb-client/session/pom.xml
index d43ca10..82b24c3 100644
--- a/iotdb-client/session/pom.xml
+++ b/iotdb-client/session/pom.xml
@@ -50,14 +50,14 @@
             <version>1.3.2-SNAPSHOT</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>common</artifactId>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
index b87d893..02be219 100644
--- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
+++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
@@ -60,18 +60,18 @@
 import org.apache.iotdb.session.template.TemplateQueryType;
 import org.apache.iotdb.session.util.SessionUtils;
 import org.apache.iotdb.session.util.ThreadUtils;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import org.apache.thrift.TException;
+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.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.Pair;
+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.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java
index 9936267..731172a 100644
--- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java
+++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java
@@ -64,13 +64,13 @@
 import org.apache.iotdb.service.rpc.thrift.TSSetTimeZoneReq;
 import org.apache.iotdb.service.rpc.thrift.TSUnsetSchemaTemplateReq;
 import org.apache.iotdb.session.util.SessionUtils;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import org.apache.thrift.TException;
 import org.apache.thrift.protocol.TBinaryProtocol;
 import org.apache.thrift.protocol.TCompactProtocol;
 import org.apache.thrift.transport.TTransport;
 import org.apache.thrift.transport.TTransportException;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java
index 6db8113..1f10b62 100644
--- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java
+++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java
@@ -37,12 +37,12 @@
 import org.apache.iotdb.session.NodesSupplier;
 import org.apache.iotdb.session.Session;
 import org.apache.iotdb.session.util.SessionUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.record.Tablet;
 
 import org.apache.thrift.TException;
+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.write.record.Tablet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSession.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSession.java
index c286c80..cb7c913 100644
--- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSession.java
+++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSession.java
@@ -30,8 +30,9 @@
 import org.apache.iotdb.session.SessionConnection;
 import org.apache.iotdb.session.subscription.model.Subscription;
 import org.apache.iotdb.session.subscription.model.Topic;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
+
+import org.apache.tsfile.read.common.Field;
+import org.apache.tsfile.read.common.RowRecord;
 
 import java.time.ZoneId;
 import java.util.HashSet;
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSessionDataSet.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSessionDataSet.java
index 0e08d2f..ff73fa4 100644
--- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSessionDataSet.java
+++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSessionDataSet.java
@@ -20,13 +20,14 @@
 package org.apache.iotdb.session.subscription;
 
 import org.apache.iotdb.isession.ISessionDataSet;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.Field;
+import org.apache.tsfile.read.common.RowRecord;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.util.ArrayList;
 import java.util.Iterator;
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSessionDataSets.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSessionDataSets.java
index 8763345..f2c74de 100644
--- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSessionDataSets.java
+++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSessionDataSets.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.session.subscription;
 
-import org.apache.iotdb.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.record.Tablet;
 
 import java.util.ArrayList;
 import java.util.Iterator;
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/template/MeasurementNode.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/template/MeasurementNode.java
index 3ce23d6..36d15c3 100644
--- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/template/MeasurementNode.java
+++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/template/MeasurementNode.java
@@ -20,10 +20,11 @@
 package org.apache.iotdb.session.template;
 
 import org.apache.iotdb.isession.template.TemplateNode;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+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.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java
index df13379..1520fe4 100644
--- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java
+++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java
@@ -22,15 +22,16 @@
 import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.UrlUtils;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
diff --git a/iotdb-client/session/src/test/java/org/apache/iotdb/session/SessionCacheLeaderTest.java b/iotdb-client/session/src/test/java/org/apache/iotdb/session/SessionCacheLeaderTest.java
index ef42f35..69a4580 100644
--- a/iotdb-client/session/src/test/java/org/apache/iotdb/session/SessionCacheLeaderTest.java
+++ b/iotdb-client/session/src/test/java/org/apache/iotdb/session/SessionCacheLeaderTest.java
@@ -31,10 +31,10 @@
 import org.apache.iotdb.service.rpc.thrift.TSInsertStringRecordsReq;
 import org.apache.iotdb.service.rpc.thrift.TSInsertTabletReq;
 import org.apache.iotdb.service.rpc.thrift.TSInsertTabletsReq;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-client/session/src/test/java/org/apache/iotdb/session/SessionTest.java b/iotdb-client/session/src/test/java/org/apache/iotdb/session/SessionTest.java
index 09e8f24..aec44fe 100644
--- a/iotdb-client/session/src/test/java/org/apache/iotdb/session/SessionTest.java
+++ b/iotdb-client/session/src/test/java/org/apache/iotdb/session/SessionTest.java
@@ -27,15 +27,15 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.service.rpc.thrift.TSQueryTemplateResp;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+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.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-client/session/src/test/java/org/apache/iotdb/session/TabletTest.java b/iotdb-client/session/src/test/java/org/apache/iotdb/session/TabletTest.java
index 31f3354..689ebab 100644
--- a/iotdb-client/session/src/test/java/org/apache/iotdb/session/TabletTest.java
+++ b/iotdb-client/session/src/test/java/org/apache/iotdb/session/TabletTest.java
@@ -19,11 +19,10 @@
 
 package org.apache.iotdb.session;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Test;
 
 import java.util.ArrayList;
diff --git a/iotdb-client/session/src/test/java/org/apache/iotdb/session/pool/SessionPoolExceptionTest.java b/iotdb-client/session/src/test/java/org/apache/iotdb/session/pool/SessionPoolExceptionTest.java
index b2a0749..cfe1a3f 100644
--- a/iotdb-client/session/src/test/java/org/apache/iotdb/session/pool/SessionPoolExceptionTest.java
+++ b/iotdb-client/session/src/test/java/org/apache/iotdb/session/pool/SessionPoolExceptionTest.java
@@ -24,13 +24,13 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.Session;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.BitMap;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.FixMethodOrder;
diff --git a/iotdb-client/session/src/test/java/org/apache/iotdb/session/pool/SessionPoolTest.java b/iotdb-client/session/src/test/java/org/apache/iotdb/session/pool/SessionPoolTest.java
index 6ffecc9..0ceea65 100644
--- a/iotdb-client/session/src/test/java/org/apache/iotdb/session/pool/SessionPoolTest.java
+++ b/iotdb-client/session/src/test/java/org/apache/iotdb/session/pool/SessionPoolTest.java
@@ -41,16 +41,16 @@
 import org.apache.iotdb.session.Session;
 import org.apache.iotdb.session.template.InternalNode;
 import org.apache.iotdb.session.template.MeasurementNode;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TsBlockSerde;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import org.apache.thrift.TException;
+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.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TsBlockSerde;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-client/session/src/test/java/org/apache/iotdb/session/util/SessionUtilsTest.java b/iotdb-client/session/src/test/java/org/apache/iotdb/session/util/SessionUtilsTest.java
index bc678a4..7fb93e4 100644
--- a/iotdb-client/session/src/test/java/org/apache/iotdb/session/util/SessionUtilsTest.java
+++ b/iotdb-client/session/src/test/java/org/apache/iotdb/session/util/SessionUtilsTest.java
@@ -21,14 +21,14 @@
 
 import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.rpc.IoTDBConnectionException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-connector/flink-iotdb-connector/pom.xml b/iotdb-connector/flink-iotdb-connector/pom.xml
index 90ff8b0..84c742c 100644
--- a/iotdb-connector/flink-iotdb-connector/pom.xml
+++ b/iotdb-connector/flink-iotdb-connector/pom.xml
@@ -40,14 +40,14 @@
             <version>1.3.2-SNAPSHOT</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>common</artifactId>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/DefaultIoTSerializationSchema.java b/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/DefaultIoTSerializationSchema.java
index c522b0c..7749519 100644
--- a/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/DefaultIoTSerializationSchema.java
+++ b/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/DefaultIoTSerializationSchema.java
@@ -18,7 +18,7 @@
 
 package org.apache.iotdb.flink;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/Event.java b/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/Event.java
index bc71f2b..dc0298a 100644
--- a/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/Event.java
+++ b/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/Event.java
@@ -18,7 +18,7 @@
 
 package org.apache.iotdb.flink;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.List;
 
diff --git a/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/IoTDBSink.java b/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/IoTDBSink.java
index b215021..5986e80 100644
--- a/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/IoTDBSink.java
+++ b/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/IoTDBSink.java
@@ -20,12 +20,12 @@
 
 import org.apache.iotdb.flink.options.IoTDBSinkOptions;
 import org.apache.iotdb.session.pool.SessionPool;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 import com.google.common.base.Preconditions;
 import org.apache.flink.configuration.Configuration;
 import org.apache.flink.streaming.api.functions.sink.RichSinkFunction;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.enums.TSDataType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/IoTDBSource.java b/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/IoTDBSource.java
index 264317c..8c51430 100644
--- a/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/IoTDBSource.java
+++ b/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/IoTDBSource.java
@@ -23,10 +23,10 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.Session;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
 
 import org.apache.flink.configuration.Configuration;
 import org.apache.flink.streaming.api.functions.source.RichSourceFunction;
+import org.apache.tsfile.read.common.RowRecord;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/options/IoTDBSinkOptions.java b/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/options/IoTDBSinkOptions.java
index 1a709b0..c2a6917 100644
--- a/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/options/IoTDBSinkOptions.java
+++ b/iotdb-connector/flink-iotdb-connector/src/main/java/org/apache/iotdb/flink/options/IoTDBSinkOptions.java
@@ -18,9 +18,9 @@
 
 package org.apache.iotdb.flink.options;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 
 import java.io.Serializable;
 import java.util.List;
diff --git a/iotdb-connector/flink-sql-iotdb-connector/pom.xml b/iotdb-connector/flink-sql-iotdb-connector/pom.xml
index adcd245..3dd69a4 100644
--- a/iotdb-connector/flink-sql-iotdb-connector/pom.xml
+++ b/iotdb-connector/flink-sql-iotdb-connector/pom.xml
@@ -51,14 +51,14 @@
             <version>1.3.2-SNAPSHOT</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>common</artifactId>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
diff --git a/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/client/IoTDBWebSocketClient.java b/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/client/IoTDBWebSocketClient.java
index bec3171..d36994d 100644
--- a/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/client/IoTDBWebSocketClient.java
+++ b/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/client/IoTDBWebSocketClient.java
@@ -21,8 +21,8 @@
 
 import org.apache.iotdb.flink.sql.function.IoTDBCDCSourceFunction;
 import org.apache.iotdb.flink.sql.wrapper.TabletWrapper;
-import org.apache.iotdb.tsfile.write.record.Tablet;
 
+import org.apache.tsfile.write.record.Tablet;
 import org.java_websocket.client.WebSocketClient;
 import org.java_websocket.handshake.ServerHandshake;
 import org.slf4j.Logger;
diff --git a/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/common/Utils.java b/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/common/Utils.java
index 03d1f33..e60e682 100644
--- a/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/common/Utils.java
+++ b/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/common/Utils.java
@@ -19,12 +19,6 @@
 package org.apache.iotdb.flink.sql.common;
 
 import org.apache.iotdb.flink.sql.exception.UnsupportedDataTypeException;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.NullFieldException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import org.apache.flink.api.java.tuple.Tuple2;
 import org.apache.flink.table.api.DataTypes;
@@ -32,6 +26,12 @@
 import org.apache.flink.table.data.RowData;
 import org.apache.flink.table.data.StringData;
 import org.apache.flink.table.types.DataType;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.NullFieldException;
+import org.apache.tsfile.read.common.Field;
+import org.apache.tsfile.read.common.RowRecord;
+import org.apache.tsfile.utils.Binary;
 
 import javax.annotation.Nullable;
 
diff --git a/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/function/IoTDBBoundedScanFunction.java b/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/function/IoTDBBoundedScanFunction.java
index d8a49e7..f5f181c 100644
--- a/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/function/IoTDBBoundedScanFunction.java
+++ b/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/function/IoTDBBoundedScanFunction.java
@@ -26,8 +26,6 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.Session;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
 
 import org.apache.flink.api.common.io.DefaultInputSplitAssigner;
 import org.apache.flink.api.common.io.RichInputFormat;
@@ -40,6 +38,8 @@
 import org.apache.flink.core.io.InputSplitAssigner;
 import org.apache.flink.table.data.RowData;
 import org.apache.flink.table.types.DataType;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.RowRecord;
 
 import java.util.Arrays;
 import java.util.List;
diff --git a/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/function/IoTDBCDCSourceFunction.java b/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/function/IoTDBCDCSourceFunction.java
index c05bbe5..c355171 100644
--- a/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/function/IoTDBCDCSourceFunction.java
+++ b/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/function/IoTDBCDCSourceFunction.java
@@ -28,12 +28,6 @@
 import org.apache.iotdb.flink.sql.wrapper.TabletWrapper;
 import org.apache.iotdb.isession.SessionDataSet;
 import org.apache.iotdb.session.Session;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import org.apache.flink.api.java.tuple.Tuple2;
 import org.apache.flink.configuration.Configuration;
@@ -42,6 +36,12 @@
 import org.apache.flink.table.data.GenericRowData;
 import org.apache.flink.table.data.RowData;
 import org.apache.flink.table.types.DataType;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.RowRecord;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.java_websocket.client.WebSocketClient;
 import org.java_websocket.enums.ReadyState;
 import org.slf4j.Logger;
diff --git a/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/function/IoTDBLookupFunction.java b/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/function/IoTDBLookupFunction.java
index 1c9afa6..2053846 100644
--- a/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/function/IoTDBLookupFunction.java
+++ b/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/function/IoTDBLookupFunction.java
@@ -26,9 +26,6 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.Session;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
 
 import com.google.common.cache.Cache;
 import com.google.common.cache.CacheBuilder;
@@ -39,6 +36,9 @@
 import org.apache.flink.table.functions.FunctionContext;
 import org.apache.flink.table.functions.TableFunction;
 import org.apache.flink.table.types.DataType;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.Field;
+import org.apache.tsfile.read.common.RowRecord;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/function/IoTDBSinkFunction.java b/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/function/IoTDBSinkFunction.java
index ac90546..f32729d 100644
--- a/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/function/IoTDBSinkFunction.java
+++ b/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/function/IoTDBSinkFunction.java
@@ -25,7 +25,6 @@
 import org.apache.iotdb.flink.sql.exception.IllegalIoTDBPathException;
 import org.apache.iotdb.flink.sql.wrapper.SchemaWrapper;
 import org.apache.iotdb.session.Session;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.flink.api.java.tuple.Tuple2;
@@ -35,6 +34,7 @@
 import org.apache.flink.table.data.RowData;
 import org.apache.flink.table.types.DataType;
 import org.apache.flink.types.RowKind;
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/wrapper/TabletWrapper.java b/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/wrapper/TabletWrapper.java
index 4ef0838..eabce70 100644
--- a/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/wrapper/TabletWrapper.java
+++ b/iotdb-connector/flink-sql-iotdb-connector/src/main/java/org/apache/iotdb/flink/sql/wrapper/TabletWrapper.java
@@ -19,7 +19,8 @@
 package org.apache.iotdb.flink.sql.wrapper;
 
 import org.apache.iotdb.flink.sql.client.IoTDBWebSocketClient;
-import org.apache.iotdb.tsfile.write.record.Tablet;
+
+import org.apache.tsfile.write.record.Tablet;
 
 public class TabletWrapper {
   private final long commitId;
diff --git a/iotdb-connector/flink-tsfile-connector/pom.xml b/iotdb-connector/flink-tsfile-connector/pom.xml
index 6c68fe5..572fea7 100644
--- a/iotdb-connector/flink-tsfile-connector/pom.xml
+++ b/iotdb-connector/flink-tsfile-connector/pom.xml
@@ -30,14 +30,14 @@
     <name>IoTDB: Connector: Apache Flink TSFile</name>
     <dependencies>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>common</artifactId>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
             <exclusions>
                 <!--
                     We need the flink-shaded-zookeeper-3 dependency for some shaded classes.
diff --git a/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/RowRecordParser.java b/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/RowRecordParser.java
index 70ffba3..8dcdc0b 100644
--- a/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/RowRecordParser.java
+++ b/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/RowRecordParser.java
@@ -19,9 +19,8 @@
 
 package org.apache.iotdb.flink.tsfile;
 
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-
 import org.apache.flink.api.java.typeutils.ResultTypeQueryable;
+import org.apache.tsfile.read.common.RowRecord;
 
 import java.io.Serializable;
 
diff --git a/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/RowRowRecordParser.java b/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/RowRowRecordParser.java
index 67d60e2..a6910b0 100644
--- a/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/RowRowRecordParser.java
+++ b/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/RowRowRecordParser.java
@@ -19,15 +19,14 @@
 
 package org.apache.iotdb.flink.tsfile;
 
-import org.apache.iotdb.tsfile.common.constant.QueryConstant;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-
 import org.apache.flink.api.common.typeinfo.TypeInformation;
 import org.apache.flink.api.java.typeutils.ResultTypeQueryable;
 import org.apache.flink.api.java.typeutils.RowTypeInfo;
 import org.apache.flink.types.Row;
+import org.apache.tsfile.common.constant.QueryConstant;
+import org.apache.tsfile.read.common.Field;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.read.common.RowRecord;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/RowTSRecordConverter.java b/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/RowTSRecordConverter.java
index 6420c2b..f856a2f 100644
--- a/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/RowTSRecordConverter.java
+++ b/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/RowTSRecordConverter.java
@@ -19,23 +19,22 @@
 
 package org.apache.iotdb.flink.tsfile;
 
-import org.apache.iotdb.tsfile.common.constant.QueryConstant;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.BooleanDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.DoubleDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.StringDataPoint;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
 import org.apache.flink.api.java.typeutils.RowTypeInfo;
 import org.apache.flink.types.Row;
 import org.apache.flink.util.Collector;
+import org.apache.tsfile.common.constant.QueryConstant;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.BooleanDataPoint;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.record.datapoint.DoubleDataPoint;
+import org.apache.tsfile.write.record.datapoint.FloatDataPoint;
+import org.apache.tsfile.write.record.datapoint.IntDataPoint;
+import org.apache.tsfile.write.record.datapoint.LongDataPoint;
+import org.apache.tsfile.write.record.datapoint.StringDataPoint;
+import org.apache.tsfile.write.schema.Schema;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/TSRecordConverter.java b/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/TSRecordConverter.java
index 8ca33fd..564d381 100644
--- a/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/TSRecordConverter.java
+++ b/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/TSRecordConverter.java
@@ -19,10 +19,9 @@
 
 package org.apache.iotdb.flink.tsfile;
 
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
 import org.apache.flink.util.Collector;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.schema.Schema;
 
 import java.io.Serializable;
 
diff --git a/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/TSRecordOutputFormat.java b/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/TSRecordOutputFormat.java
index c64b045..b2070a3 100644
--- a/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/TSRecordOutputFormat.java
+++ b/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/TSRecordOutputFormat.java
@@ -19,13 +19,12 @@
 
 package org.apache.iotdb.flink.tsfile;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
 import org.apache.flink.util.Collector;
 import org.apache.flink.util.FlinkRuntimeException;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.schema.Schema;
 
 import java.io.IOException;
 
diff --git a/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/TsFileInputFormat.java b/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/TsFileInputFormat.java
index 47e97aa..d7c87e2 100644
--- a/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/TsFileInputFormat.java
+++ b/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/TsFileInputFormat.java
@@ -21,14 +21,6 @@
 
 import org.apache.iotdb.flink.tsfile.util.TSFileConfigUtil;
 import org.apache.iotdb.hadoop.fileSystem.HDFSInput;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.TsFileReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.read.reader.LocalTsFileInput;
-import org.apache.iotdb.tsfile.read.reader.TsFileInput;
 
 import org.apache.flink.api.common.io.FileInputFormat;
 import org.apache.flink.api.common.typeinfo.TypeInformation;
@@ -39,6 +31,14 @@
 import org.apache.flink.core.fs.Path;
 import org.apache.flink.runtime.util.HadoopUtils;
 import org.apache.flink.util.FlinkRuntimeException;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.read.TsFileReader;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.RowRecord;
+import org.apache.tsfile.read.expression.QueryExpression;
+import org.apache.tsfile.read.query.dataset.QueryDataSet;
+import org.apache.tsfile.read.reader.LocalTsFileInput;
+import org.apache.tsfile.read.reader.TsFileInput;
 
 import javax.annotation.Nullable;
 
diff --git a/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/TsFileOutputFormat.java b/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/TsFileOutputFormat.java
index 106e0ef..a9597ae 100644
--- a/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/TsFileOutputFormat.java
+++ b/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/TsFileOutputFormat.java
@@ -21,17 +21,17 @@
 
 import org.apache.iotdb.flink.tsfile.util.TSFileConfigUtil;
 import org.apache.iotdb.hadoop.fileSystem.HDFSOutput;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-import org.apache.iotdb.tsfile.write.writer.LocalTsFileOutput;
-import org.apache.iotdb.tsfile.write.writer.TsFileOutput;
 
 import org.apache.flink.api.common.io.FileOutputFormat;
 import org.apache.flink.core.fs.Path;
 import org.apache.flink.runtime.util.HadoopUtils;
 import org.apache.flink.util.Preconditions;
 import org.apache.hadoop.conf.Configuration;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.schema.Schema;
+import org.apache.tsfile.write.writer.LocalTsFileOutput;
+import org.apache.tsfile.write.writer.TsFileOutput;
 
 import javax.annotation.Nullable;
 
diff --git a/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/util/TSFileConfigUtil.java b/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/util/TSFileConfigUtil.java
index e147390..535ff74 100644
--- a/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/util/TSFileConfigUtil.java
+++ b/iotdb-connector/flink-tsfile-connector/src/main/java/org/apache/iotdb/flink/tsfile/util/TSFileConfigUtil.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.flink.tsfile.util;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
 
 /** Utils of setting global TSFileConfig. */
 public class TSFileConfigUtil {
diff --git a/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/tsfile/RowTsFileConnectorTestBase.java b/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/tsfile/RowTsFileConnectorTestBase.java
index 5140337..e7aef2a 100644
--- a/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/tsfile/RowTsFileConnectorTestBase.java
+++ b/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/tsfile/RowTsFileConnectorTestBase.java
@@ -20,14 +20,14 @@
 package org.apache.iotdb.flink.tsfile;
 
 import org.apache.iotdb.flink.util.TsFileWriteUtil;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.constant.QueryConstant;
-import org.apache.iotdb.tsfile.read.common.Path;
 
 import org.apache.flink.api.common.typeinfo.TypeInformation;
 import org.apache.flink.api.common.typeinfo.Types;
 import org.apache.flink.api.java.typeutils.RowTypeInfo;
 import org.apache.flink.util.FileUtils;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.common.constant.QueryConstant;
+import org.apache.tsfile.read.common.Path;
 import org.junit.After;
 import org.junit.Before;
 
diff --git a/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/tsfile/RowTsFileInputFormatTest.java b/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/tsfile/RowTsFileInputFormatTest.java
index 91a0126..4eed08a 100644
--- a/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/tsfile/RowTsFileInputFormatTest.java
+++ b/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/tsfile/RowTsFileInputFormatTest.java
@@ -19,12 +19,11 @@
 
 package org.apache.iotdb.flink.tsfile;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-
 import org.apache.flink.api.common.ExecutionConfig;
 import org.apache.flink.configuration.Configuration;
 import org.apache.flink.core.fs.FileInputSplit;
 import org.apache.flink.types.Row;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
 import org.junit.Test;
 
 import java.io.IOException;
diff --git a/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/tsfile/RowTsFileInputFormatTestBase.java b/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/tsfile/RowTsFileInputFormatTestBase.java
index 0b7ce83..ca44ae8 100644
--- a/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/tsfile/RowTsFileInputFormatTestBase.java
+++ b/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/tsfile/RowTsFileInputFormatTestBase.java
@@ -20,9 +20,9 @@
 package org.apache.iotdb.flink.tsfile;
 
 import org.apache.iotdb.flink.util.TsFileWriteUtil;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
 
 import org.apache.flink.types.Row;
+import org.apache.tsfile.read.expression.QueryExpression;
 import org.junit.Before;
 
 import java.io.File;
diff --git a/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/tsfile/RowTsFileOutputFormatTestBase.java b/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/tsfile/RowTsFileOutputFormatTestBase.java
index a35b7f3..c2b31d4 100644
--- a/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/tsfile/RowTsFileOutputFormatTestBase.java
+++ b/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/tsfile/RowTsFileOutputFormatTestBase.java
@@ -19,21 +19,20 @@
 
 package org.apache.iotdb.flink.tsfile;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.ExecutionEnvironment;
 import org.apache.flink.api.java.tuple.Tuple7;
 import org.apache.flink.types.Row;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TsFileReader;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.read.common.RowRecord;
+import org.apache.tsfile.read.expression.QueryExpression;
+import org.apache.tsfile.read.query.dataset.QueryDataSet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.Schema;
 import org.junit.Before;
 
 import java.io.IOException;
diff --git a/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/util/TSFileConfigUtilCompletenessTest.java b/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/util/TSFileConfigUtilCompletenessTest.java
index 5189faf..738fd67 100644
--- a/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/util/TSFileConfigUtilCompletenessTest.java
+++ b/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/util/TSFileConfigUtilCompletenessTest.java
@@ -19,8 +19,7 @@
 
 package org.apache.iotdb.flink.util;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-
+import org.apache.tsfile.common.conf.TSFileConfig;
 import org.junit.Test;
 
 import java.lang.reflect.Method;
diff --git a/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/util/TsFileWriteUtil.java b/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/util/TsFileWriteUtil.java
index c38ade4..adc03d8 100644
--- a/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/util/TsFileWriteUtil.java
+++ b/iotdb-connector/flink-tsfile-connector/src/test/java/org/apache/iotdb/flink/util/TsFileWriteUtil.java
@@ -19,15 +19,15 @@
 
 package org.apache.iotdb.flink.util;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.record.datapoint.FloatDataPoint;
+import org.apache.tsfile.write.record.datapoint.IntDataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.Schema;
 
 import java.io.File;
 
diff --git a/iotdb-connector/grafana-connector/pom.xml b/iotdb-connector/grafana-connector/pom.xml
index 1a53619..8d8bf70 100644
--- a/iotdb-connector/grafana-connector/pom.xml
+++ b/iotdb-connector/grafana-connector/pom.xml
@@ -38,9 +38,9 @@
     </properties>
     <dependencies>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
diff --git a/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/controller/DatabaseConnectController.java b/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/controller/DatabaseConnectController.java
index 06f3729..01ccb56 100644
--- a/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/controller/DatabaseConnectController.java
+++ b/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/controller/DatabaseConnectController.java
@@ -18,7 +18,6 @@
  */
 package org.apache.iotdb.web.grafana.controller;
 
-import org.apache.iotdb.tsfile.utils.Pair;
 import org.apache.iotdb.web.grafana.bean.TimeValues;
 import org.apache.iotdb.web.grafana.service.DatabaseConnectService;
 
@@ -26,6 +25,7 @@
 import com.google.gson.GsonBuilder;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonObject;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/dao/BasicDao.java b/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/dao/BasicDao.java
index b24e536..077bb50 100644
--- a/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/dao/BasicDao.java
+++ b/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/dao/BasicDao.java
@@ -18,9 +18,10 @@
  */
 package org.apache.iotdb.web.grafana.dao;
 
-import org.apache.iotdb.tsfile.utils.Pair;
 import org.apache.iotdb.web.grafana.bean.TimeValues;
 
+import org.apache.tsfile.utils.Pair;
+
 import java.time.ZonedDateTime;
 import java.util.List;
 
diff --git a/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/dao/impl/BasicDaoImpl.java b/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/dao/impl/BasicDaoImpl.java
index 587b5a8..851ce9d 100644
--- a/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/dao/impl/BasicDaoImpl.java
+++ b/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/dao/impl/BasicDaoImpl.java
@@ -18,10 +18,10 @@
  */
 package org.apache.iotdb.web.grafana.dao.impl;
 
-import org.apache.iotdb.tsfile.utils.Pair;
 import org.apache.iotdb.web.grafana.bean.TimeValues;
 import org.apache.iotdb.web.grafana.dao.BasicDao;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/service/DatabaseConnectService.java b/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/service/DatabaseConnectService.java
index 8244b43..1c18991 100644
--- a/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/service/DatabaseConnectService.java
+++ b/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/service/DatabaseConnectService.java
@@ -18,9 +18,10 @@
  */
 package org.apache.iotdb.web.grafana.service;
 
-import org.apache.iotdb.tsfile.utils.Pair;
 import org.apache.iotdb.web.grafana.bean.TimeValues;
 
+import org.apache.tsfile.utils.Pair;
+
 import java.time.ZonedDateTime;
 import java.util.List;
 
diff --git a/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/service/impl/DatabaseConnectServiceImpl.java b/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/service/impl/DatabaseConnectServiceImpl.java
index 31ccf7e..6d7af5d 100644
--- a/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/service/impl/DatabaseConnectServiceImpl.java
+++ b/iotdb-connector/grafana-connector/src/main/java/org/apache/iotdb/web/grafana/service/impl/DatabaseConnectServiceImpl.java
@@ -18,11 +18,11 @@
  */
 package org.apache.iotdb.web.grafana.service.impl;
 
-import org.apache.iotdb.tsfile.utils.Pair;
 import org.apache.iotdb.web.grafana.bean.TimeValues;
 import org.apache.iotdb.web.grafana.dao.BasicDao;
 import org.apache.iotdb.web.grafana.service.DatabaseConnectService;
 
+import org.apache.tsfile.utils.Pair;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
diff --git a/iotdb-connector/hadoop/pom.xml b/iotdb-connector/hadoop/pom.xml
index 0123aa2..19a14c8 100644
--- a/iotdb-connector/hadoop/pom.xml
+++ b/iotdb-connector/hadoop/pom.xml
@@ -35,14 +35,14 @@
     </properties>
     <dependencies>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>common</artifactId>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
diff --git a/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/fileSystem/HDFSConfUtil.java b/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/fileSystem/HDFSConfUtil.java
index 2907efd..b3c945f 100644
--- a/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/fileSystem/HDFSConfUtil.java
+++ b/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/fileSystem/HDFSConfUtil.java
@@ -19,13 +19,12 @@
 
 package org.apache.iotdb.hadoop.fileSystem;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.fileSystem.FSType;
-
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.security.UserGroupInformation;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.fileSystem.FSType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/fileSystem/HDFSInput.java b/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/fileSystem/HDFSInput.java
index 5c0940d..c0dc363 100644
--- a/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/fileSystem/HDFSInput.java
+++ b/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/fileSystem/HDFSInput.java
@@ -18,13 +18,12 @@
  */
 package org.apache.iotdb.hadoop.fileSystem;
 
-import org.apache.iotdb.tsfile.read.reader.TsFileInput;
-
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.ChecksumFileSystem;
 import org.apache.hadoop.fs.FSDataInputStream;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
+import org.apache.tsfile.read.reader.TsFileInput;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/fileSystem/HDFSOutput.java b/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/fileSystem/HDFSOutput.java
index aea0f72..f8cd287 100644
--- a/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/fileSystem/HDFSOutput.java
+++ b/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/fileSystem/HDFSOutput.java
@@ -18,12 +18,11 @@
  */
 package org.apache.iotdb.hadoop.fileSystem;
 
-import org.apache.iotdb.tsfile.write.writer.TsFileOutput;
-
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FSDataOutputStream;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
+import org.apache.tsfile.write.writer.TsFileOutput;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/IReaderSet.java b/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/IReaderSet.java
index 5c7abae..90738cb 100644
--- a/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/IReaderSet.java
+++ b/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/IReaderSet.java
@@ -18,7 +18,7 @@
  */
 package org.apache.iotdb.hadoop.tsfile;
 
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.TsFileSequenceReader;
 
 import java.util.List;
 
diff --git a/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSFInputFormat.java b/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSFInputFormat.java
index 9ca1141..f38cc08 100644
--- a/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSFInputFormat.java
+++ b/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSFInputFormat.java
@@ -41,7 +41,7 @@
 import java.util.List;
 import java.util.stream.Collectors;
 
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.TSFILE_SUFFIX;
+import static org.apache.tsfile.common.constant.TsFileConstant.TSFILE_SUFFIX;
 
 public class TSFInputFormat extends FileInputFormat<NullWritable, MapWritable> {
 
diff --git a/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSFOutputFormat.java b/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSFOutputFormat.java
index dabe710..88aa818 100644
--- a/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSFOutputFormat.java
+++ b/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSFOutputFormat.java
@@ -19,13 +19,13 @@
 package org.apache.iotdb.hadoop.tsfile;
 
 import org.apache.iotdb.hadoop.tsfile.record.HDFSTSRecord;
-import org.apache.iotdb.tsfile.write.schema.Schema;
 
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.io.NullWritable;
 import org.apache.hadoop.mapreduce.RecordWriter;
 import org.apache.hadoop.mapreduce.TaskAttemptContext;
 import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
+import org.apache.tsfile.write.schema.Schema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSFRecordReader.java b/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSFRecordReader.java
index ceaa96b..49bcf86 100644
--- a/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSFRecordReader.java
+++ b/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSFRecordReader.java
@@ -19,14 +19,6 @@
 package org.apache.iotdb.hadoop.tsfile;
 
 import org.apache.iotdb.hadoop.fileSystem.HDFSInput;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.TsFileReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
 
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.io.BooleanWritable;
@@ -40,6 +32,14 @@
 import org.apache.hadoop.mapreduce.InputSplit;
 import org.apache.hadoop.mapreduce.RecordReader;
 import org.apache.hadoop.mapreduce.TaskAttemptContext;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.read.TsFileReader;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Field;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.read.common.RowRecord;
+import org.apache.tsfile.read.expression.QueryExpression;
+import org.apache.tsfile.read.query.dataset.QueryDataSet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSFRecordWriter.java b/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSFRecordWriter.java
index 1be6659..356f57a 100644
--- a/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSFRecordWriter.java
+++ b/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/TSFRecordWriter.java
@@ -20,14 +20,14 @@
 
 import org.apache.iotdb.hadoop.fileSystem.HDFSOutput;
 import org.apache.iotdb.hadoop.tsfile.record.HDFSTSRecord;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.schema.Schema;
 
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.io.NullWritable;
 import org.apache.hadoop.mapreduce.RecordWriter;
 import org.apache.hadoop.mapreduce.TaskAttemptContext;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.schema.Schema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/record/HDFSTSRecord.java b/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/record/HDFSTSRecord.java
index 9cdcef0..21173b5 100644
--- a/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/record/HDFSTSRecord.java
+++ b/iotdb-connector/hadoop/src/main/java/org/apache/iotdb/hadoop/tsfile/record/HDFSTSRecord.java
@@ -18,20 +18,19 @@
  */
 package org.apache.iotdb.hadoop.tsfile.record;
 
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.StringContainer;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.BooleanDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.DoubleDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.StringDataPoint;
-
 import org.apache.hadoop.io.Writable;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.StringContainer;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.BooleanDataPoint;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.record.datapoint.DoubleDataPoint;
+import org.apache.tsfile.write.record.datapoint.FloatDataPoint;
+import org.apache.tsfile.write.record.datapoint.IntDataPoint;
+import org.apache.tsfile.write.record.datapoint.LongDataPoint;
+import org.apache.tsfile.write.record.datapoint.StringDataPoint;
 
 import java.io.DataInput;
 import java.io.DataOutput;
diff --git a/iotdb-connector/hadoop/src/test/java/org/apache/iotdb/hadoop/tsfile/TSFHadoopTest.java b/iotdb-connector/hadoop/src/test/java/org/apache/iotdb/hadoop/tsfile/TSFHadoopTest.java
index 3307ec0..88040fe 100644
--- a/iotdb-connector/hadoop/src/test/java/org/apache/iotdb/hadoop/tsfile/TSFHadoopTest.java
+++ b/iotdb-connector/hadoop/src/test/java/org/apache/iotdb/hadoop/tsfile/TSFHadoopTest.java
@@ -20,9 +20,6 @@
 
 import org.apache.iotdb.hadoop.fileSystem.HDFSInput;
 import org.apache.iotdb.hadoop.tsfile.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.fileSystem.FSType;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
 
 import org.apache.hadoop.io.BooleanWritable;
 import org.apache.hadoop.io.DoubleWritable;
@@ -35,6 +32,9 @@
 import org.apache.hadoop.mapreduce.Job;
 import org.apache.hadoop.mapreduce.TaskAttemptID;
 import org.apache.hadoop.mapreduce.task.TaskAttemptContextImpl;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.fileSystem.FSType;
+import org.apache.tsfile.read.TsFileSequenceReader;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-connector/hadoop/src/test/java/org/apache/iotdb/hadoop/tsfile/TsFileTestHelper.java b/iotdb-connector/hadoop/src/test/java/org/apache/iotdb/hadoop/tsfile/TsFileTestHelper.java
index 4f28087..3e80c36 100644
--- a/iotdb-connector/hadoop/src/test/java/org/apache/iotdb/hadoop/tsfile/TsFileTestHelper.java
+++ b/iotdb-connector/hadoop/src/test/java/org/apache/iotdb/hadoop/tsfile/TsFileTestHelper.java
@@ -18,15 +18,14 @@
  */
 package org.apache.iotdb.hadoop.tsfile;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.Schema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-connector/hive-connector/pom.xml b/iotdb-connector/hive-connector/pom.xml
index 55b7405..28fba4a 100644
--- a/iotdb-connector/hive-connector/pom.xml
+++ b/iotdb-connector/hive-connector/pom.xml
@@ -39,15 +39,15 @@
             <version>1.3.2-SNAPSHOT</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>common</artifactId>
+            <version>${tsfile.version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
diff --git a/iotdb-connector/hive-connector/src/main/java/org/apache/iotdb/hive/TSFHiveRecordReader.java b/iotdb-connector/hive-connector/src/main/java/org/apache/iotdb/hive/TSFHiveRecordReader.java
index 8447907..b99869b 100644
--- a/iotdb-connector/hive-connector/src/main/java/org/apache/iotdb/hive/TSFHiveRecordReader.java
+++ b/iotdb-connector/hive-connector/src/main/java/org/apache/iotdb/hive/TSFHiveRecordReader.java
@@ -21,10 +21,6 @@
 import org.apache.iotdb.hadoop.tsfile.IReaderSet;
 import org.apache.iotdb.hadoop.tsfile.TSFInputSplit;
 import org.apache.iotdb.hadoop.tsfile.TSFRecordReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
 
 import org.apache.hadoop.io.MapWritable;
 import org.apache.hadoop.io.NullWritable;
@@ -32,6 +28,10 @@
 import org.apache.hadoop.mapred.InputSplit;
 import org.apache.hadoop.mapred.JobConf;
 import org.apache.hadoop.mapred.RecordReader;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Field;
+import org.apache.tsfile.read.common.RowRecord;
+import org.apache.tsfile.read.query.dataset.QueryDataSet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-connector/hive-connector/src/main/java/org/apache/iotdb/hive/TSFHiveRecordWriter.java b/iotdb-connector/hive-connector/src/main/java/org/apache/iotdb/hive/TSFHiveRecordWriter.java
index d3b58de..86f6ae8 100644
--- a/iotdb-connector/hive-connector/src/main/java/org/apache/iotdb/hive/TSFHiveRecordWriter.java
+++ b/iotdb-connector/hive-connector/src/main/java/org/apache/iotdb/hive/TSFHiveRecordWriter.java
@@ -20,14 +20,14 @@
 
 import org.apache.iotdb.hadoop.fileSystem.HDFSOutput;
 import org.apache.iotdb.hadoop.tsfile.record.HDFSTSRecord;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.schema.Schema;
 
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
 import org.apache.hadoop.io.Writable;
 import org.apache.hadoop.mapred.JobConf;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.schema.Schema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-connector/hive-connector/src/test/java/org/apache/iotdb/hive/TSFHiveInputFormatTest.java b/iotdb-connector/hive-connector/src/test/java/org/apache/iotdb/hive/TSFHiveInputFormatTest.java
index 031a1b5..596af69 100644
--- a/iotdb-connector/hive-connector/src/test/java/org/apache/iotdb/hive/TSFHiveInputFormatTest.java
+++ b/iotdb-connector/hive-connector/src/test/java/org/apache/iotdb/hive/TSFHiveInputFormatTest.java
@@ -20,8 +20,6 @@
 
 import org.apache.iotdb.hadoop.tsfile.TSFInputSplit;
 import org.apache.iotdb.hive.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.fileSystem.FSType;
 
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.io.MapWritable;
@@ -30,6 +28,8 @@
 import org.apache.hadoop.mapred.JobConf;
 import org.apache.hadoop.mapred.RecordReader;
 import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.fileSystem.FSType;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-connector/hive-connector/src/test/java/org/apache/iotdb/hive/TSFHiveRecordReaderTest.java b/iotdb-connector/hive-connector/src/test/java/org/apache/iotdb/hive/TSFHiveRecordReaderTest.java
index 92c20e2..77f25f4 100644
--- a/iotdb-connector/hive-connector/src/test/java/org/apache/iotdb/hive/TSFHiveRecordReaderTest.java
+++ b/iotdb-connector/hive-connector/src/test/java/org/apache/iotdb/hive/TSFHiveRecordReaderTest.java
@@ -20,8 +20,6 @@
 
 import org.apache.iotdb.hadoop.tsfile.TSFInputSplit;
 import org.apache.iotdb.hive.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.fileSystem.FSType;
 
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.io.LongWritable;
@@ -29,6 +27,8 @@
 import org.apache.hadoop.io.NullWritable;
 import org.apache.hadoop.io.Text;
 import org.apache.hadoop.mapred.JobConf;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.fileSystem.FSType;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-connector/hive-connector/src/test/java/org/apache/iotdb/hive/TsFileTestHelper.java b/iotdb-connector/hive-connector/src/test/java/org/apache/iotdb/hive/TsFileTestHelper.java
index d74c268..ccd8747 100644
--- a/iotdb-connector/hive-connector/src/test/java/org/apache/iotdb/hive/TsFileTestHelper.java
+++ b/iotdb-connector/hive-connector/src/test/java/org/apache/iotdb/hive/TsFileTestHelper.java
@@ -18,16 +18,15 @@
  */
 package org.apache.iotdb.hive;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
+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.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.Schema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-connector/spark-iotdb-connector/pom.xml b/iotdb-connector/spark-iotdb-connector/pom.xml
index d9fec13..412f6e2 100644
--- a/iotdb-connector/spark-iotdb-connector/pom.xml
+++ b/iotdb-connector/spark-iotdb-connector/pom.xml
@@ -54,9 +54,9 @@
             <version>1.3.2-SNAPSHOT</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>common</artifactId>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
diff --git a/iotdb-connector/spark-iotdb-connector/src/main/scala/org/apache/iotdb/spark/db/DataFrameTools.scala b/iotdb-connector/spark-iotdb-connector/src/main/scala/org/apache/iotdb/spark/db/DataFrameTools.scala
index f77e828..38a3316 100644
--- a/iotdb-connector/spark-iotdb-connector/src/main/scala/org/apache/iotdb/spark/db/DataFrameTools.scala
+++ b/iotdb-connector/spark-iotdb-connector/src/main/scala/org/apache/iotdb/spark/db/DataFrameTools.scala
@@ -20,8 +20,8 @@
 package org.apache.iotdb.spark.db
 
 import org.apache.iotdb.session.Session
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType.{BOOLEAN, DOUBLE, FLOAT, INT32, INT64, TEXT}
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType
+import org.apache.tsfile.enums.TSDataType.{BOOLEAN, DOUBLE, FLOAT, INT32, INT64, TEXT}
+import org.apache.tsfile.enums.TSDataType
 import org.apache.spark.sql.{DataFrame, Row}
 
 import java.util
diff --git a/iotdb-connector/spark-tsfile/pom.xml b/iotdb-connector/spark-tsfile/pom.xml
index 2ff7b90..3a8094c 100644
--- a/iotdb-connector/spark-tsfile/pom.xml
+++ b/iotdb-connector/spark-tsfile/pom.xml
@@ -30,14 +30,14 @@
     <name>IoTDB: Connector: Apache Spark TSFile</name>
     <dependencies>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>common</artifactId>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/io/TsFileOutputFormat.java b/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/io/TsFileOutputFormat.java
index 28113a8..ce5f534 100644
--- a/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/io/TsFileOutputFormat.java
+++ b/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/io/TsFileOutputFormat.java
@@ -18,14 +18,13 @@
  */
 package org.apache.iotdb.spark.tsfile.io;
 
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.io.NullWritable;
 import org.apache.hadoop.mapreduce.RecordWriter;
 import org.apache.hadoop.mapreduce.TaskAttemptContext;
 import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.schema.Schema;
 
 import java.io.IOException;
 
diff --git a/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/io/TsFileRecordWriter.java b/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/io/TsFileRecordWriter.java
index 6c20b0e..69ee90d 100644
--- a/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/io/TsFileRecordWriter.java
+++ b/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/io/TsFileRecordWriter.java
@@ -19,15 +19,15 @@
 package org.apache.iotdb.spark.tsfile.io;
 
 import org.apache.iotdb.hadoop.fileSystem.HDFSOutput;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.schema.Schema;
 
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.io.NullWritable;
 import org.apache.hadoop.mapreduce.RecordWriter;
 import org.apache.hadoop.mapreduce.TaskAttemptContext;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.schema.Schema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/qp/Executor.java b/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/qp/Executor.java
index e61ef03..6643630 100755
--- a/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/qp/Executor.java
+++ b/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/qp/Executor.java
@@ -18,10 +18,9 @@
  */
 package org.apache.iotdb.spark.tsfile.qp;
 
-import org.apache.iotdb.tsfile.read.TsFileReader;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-
+import org.apache.tsfile.read.TsFileReader;
+import org.apache.tsfile.read.expression.QueryExpression;
+import org.apache.tsfile.read.query.dataset.QueryDataSet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/qp/QueryProcessor.java b/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/qp/QueryProcessor.java
index c9f7ba6..666dead 100755
--- a/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/qp/QueryProcessor.java
+++ b/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/qp/QueryProcessor.java
@@ -28,7 +28,8 @@
 import org.apache.iotdb.spark.tsfile.qp.optimizer.MergeSingleFilterOptimizer;
 import org.apache.iotdb.spark.tsfile.qp.optimizer.PhysicalOptimizer;
 import org.apache.iotdb.spark.tsfile.qp.optimizer.RemoveNotOptimizer;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
+
+import org.apache.tsfile.read.TsFileSequenceReader;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/qp/common/FilterOperator.java b/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/qp/common/FilterOperator.java
index eb43b27..2fa5104 100755
--- a/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/qp/common/FilterOperator.java
+++ b/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/qp/common/FilterOperator.java
@@ -18,7 +18,7 @@
  */
 package org.apache.iotdb.spark.tsfile.qp.common;
 
-import org.apache.iotdb.tsfile.utils.StringContainer;
+import org.apache.tsfile.utils.StringContainer;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/qp/optimizer/PhysicalOptimizer.java b/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/qp/optimizer/PhysicalOptimizer.java
index a41c7d1..735d1aa 100755
--- a/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/qp/optimizer/PhysicalOptimizer.java
+++ b/iotdb-connector/spark-tsfile/src/main/java/org/apache/iotdb/spark/tsfile/qp/optimizer/PhysicalOptimizer.java
@@ -23,10 +23,11 @@
 import org.apache.iotdb.spark.tsfile.qp.common.SQLConstant;
 import org.apache.iotdb.spark.tsfile.qp.common.SingleQuery;
 import org.apache.iotdb.spark.tsfile.qp.common.TSQueryPlan;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.utils.Pair;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/Converter.scala b/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/Converter.scala
index ba5b6c4..f3df0b8 100644
--- a/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/Converter.scala
+++ b/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/Converter.scala
@@ -19,9 +19,9 @@
 
 package org.apache.iotdb.spark.tsfile
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType
+import org.apache.tsfile.enums.TSDataType
 import java.util
-import org.apache.iotdb.tsfile.read.common.Field
+import org.apache.tsfile.read.common.Field
 import org.apache.spark.sql.sources._
 import org.apache.spark.sql.types._
 
diff --git a/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/DefaultSource.scala b/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/DefaultSource.scala
index 018435a..bc87fb0 100755
--- a/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/DefaultSource.scala
+++ b/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/DefaultSource.scala
@@ -25,11 +25,11 @@
 import org.apache.iotdb.hadoop.fileSystem.HDFSInput
 import org.apache.iotdb.spark.tsfile.DefaultSource.SerializableConfiguration
 import org.apache.iotdb.spark.tsfile.qp.Executor
-import org.apache.iotdb.tsfile.common.constant.QueryConstant
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID
-import org.apache.iotdb.tsfile.read.common.Field
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet
-import org.apache.iotdb.tsfile.read.{TsFileReader, TsFileSequenceReader}
+import org.apache.tsfile.common.constant.QueryConstant
+import org.apache.tsfile.file.metadata.PlainDeviceID
+import org.apache.tsfile.read.common.Field
+import org.apache.tsfile.read.query.dataset.QueryDataSet
+import org.apache.tsfile.read.{TsFileReader, TsFileSequenceReader}
 import org.apache.spark.TaskContext
 import org.apache.spark.sql.SparkSession
 import org.apache.spark.sql.catalyst.InternalRow
@@ -187,7 +187,7 @@
                 rowBuffer(index) = deviceName
               }
               else {
-                val pos = paths.indexOf(new org.apache.iotdb.tsfile.read.common.Path(deviceName,
+                val pos = paths.indexOf(new org.apache.tsfile.read.common.Path(deviceName,
                   field.name, true))
                 var curField: Field = null
                 if (pos != -1) {
@@ -239,7 +239,7 @@
               if (field.name == QueryConstant.RESERVED_TIME) {
                 rowBuffer(index) = curRecord.getTimestamp
               } else {
-                val pos = paths.indexOf(new org.apache.iotdb.tsfile.read.common.Path(field.name, true))
+                val pos = paths.indexOf(new org.apache.tsfile.read.common.Path(field.name, true))
                 var curField: Field = null
                 if (pos != -1) {
                   curField = fields.get(pos)
diff --git a/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/NarrowConverter.scala b/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/NarrowConverter.scala
index 25e2c2f..262557a 100644
--- a/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/NarrowConverter.scala
+++ b/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/NarrowConverter.scala
@@ -24,17 +24,18 @@
 import org.apache.iotdb.hadoop.fileSystem.HDFSInput
 import org.apache.iotdb.spark.tsfile.qp.QueryProcessor
 import org.apache.iotdb.spark.tsfile.qp.common.{BasicOperator, FilterOperator, SQLConstant, TSQueryPlan}
-import org.apache.iotdb.tsfile.common.constant.QueryConstant
-import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata
-import org.apache.iotdb.tsfile.file.metadata.enums.{TSDataType, TSEncoding}
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader
-import org.apache.iotdb.tsfile.read.common.Path
-import org.apache.iotdb.tsfile.read.expression.impl.{BinaryExpression, GlobalTimeExpression, SingleSeriesExpression}
-import org.apache.iotdb.tsfile.read.expression.{IExpression, QueryExpression}
-import org.apache.iotdb.tsfile.read.filter.factory.{TimeFilterApi, ValueFilterApi}
-import org.apache.iotdb.tsfile.write.record.TSRecord
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint
-import org.apache.iotdb.tsfile.write.schema.{MeasurementSchema, Schema}
+import org.apache.tsfile.common.constant.QueryConstant
+import org.apache.tsfile.file.metadata.TsFileMetadata
+import org.apache.tsfile.enums.TSDataType
+import org.apache.tsfile.file.metadata.enums.TSEncoding
+import org.apache.tsfile.read.TsFileSequenceReader
+import org.apache.tsfile.read.common.Path
+import org.apache.tsfile.read.expression.impl.{BinaryExpression, GlobalTimeExpression, SingleSeriesExpression}
+import org.apache.tsfile.read.expression.{IExpression, QueryExpression}
+import org.apache.tsfile.read.filter.factory.{TimeFilterApi, ValueFilterApi}
+import org.apache.tsfile.write.record.TSRecord
+import org.apache.tsfile.write.record.datapoint.DataPoint
+import org.apache.tsfile.write.schema.{MeasurementSchema, Schema}
 import org.apache.spark.sql.catalyst.InternalRow
 import org.apache.spark.sql.sources._
 import org.apache.spark.sql.types._
diff --git a/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/NarrowTsFileOutputWriter.scala b/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/NarrowTsFileOutputWriter.scala
index 5346f2d..ea7b02a 100644
--- a/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/NarrowTsFileOutputWriter.scala
+++ b/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/NarrowTsFileOutputWriter.scala
@@ -22,7 +22,7 @@
 import org.apache.hadoop.io.NullWritable
 import org.apache.hadoop.mapreduce.{RecordWriter, TaskAttemptContext}
 import org.apache.iotdb.spark.tsfile.io.TsFileOutputFormat
-import org.apache.iotdb.tsfile.write.record.TSRecord
+import org.apache.tsfile.write.record.TSRecord
 import org.apache.spark.sql.catalyst.InternalRow
 import org.apache.spark.sql.execution.datasources.OutputWriter
 import org.apache.spark.sql.types._
diff --git a/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/Transformer.scala b/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/Transformer.scala
index 1c1fcb2..a9a7c17 100644
--- a/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/Transformer.scala
+++ b/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/Transformer.scala
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.spark.tsfile
 
-import org.apache.iotdb.tsfile.common.constant.QueryConstant
+import org.apache.tsfile.common.constant.QueryConstant
 import org.apache.spark.sql.types._
 import org.apache.spark.sql.{SparkSession, _}
 
diff --git a/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/WideConverter.scala b/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/WideConverter.scala
index 6a63a3c..712a65e 100755
--- a/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/WideConverter.scala
+++ b/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/WideConverter.scala
@@ -24,19 +24,20 @@
 import org.apache.hadoop.conf.Configuration
 import org.apache.hadoop.fs.FileStatus
 import org.apache.iotdb.hadoop.fileSystem.HDFSInput
-import org.apache.iotdb.tsfile.common.constant.QueryConstant
-import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata
-import org.apache.iotdb.tsfile.file.metadata.enums.{TSDataType, TSEncoding}
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader
-import org.apache.iotdb.tsfile.read.common.Path
-import org.apache.iotdb.tsfile.read.expression.impl.{BinaryExpression, GlobalTimeExpression, SingleSeriesExpression}
-import org.apache.iotdb.tsfile.read.expression.{IExpression, QueryExpression}
-import org.apache.iotdb.tsfile.read.filter.factory.{TimeFilterApi, ValueFilterApi}
-import org.apache.iotdb.tsfile.utils.Binary
-import org.apache.iotdb.tsfile.write.record.TSRecord
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint
-import org.apache.iotdb.tsfile.write.schema.{IMeasurementSchema, MeasurementSchema, Schema}
+import org.apache.tsfile.common.constant.QueryConstant
+import org.apache.tsfile.file.metadata.TsFileMetadata
+import org.apache.tsfile.enums.TSDataType
+import org.apache.tsfile.file.metadata.enums.TSEncoding
+import org.apache.tsfile.common.conf.TSFileConfig
+import org.apache.tsfile.read.TsFileSequenceReader
+import org.apache.tsfile.read.common.Path
+import org.apache.tsfile.read.expression.impl.{BinaryExpression, GlobalTimeExpression, SingleSeriesExpression}
+import org.apache.tsfile.read.expression.{IExpression, QueryExpression}
+import org.apache.tsfile.read.filter.factory.{TimeFilterApi, ValueFilterApi}
+import org.apache.tsfile.utils.Binary
+import org.apache.tsfile.write.record.TSRecord
+import org.apache.tsfile.write.record.datapoint.DataPoint
+import org.apache.tsfile.write.schema.{IMeasurementSchema, MeasurementSchema, Schema}
 import org.apache.spark.sql.catalyst.InternalRow
 import org.apache.spark.sql.sources._
 import org.apache.spark.sql.types._
@@ -138,7 +139,7 @@
       val measurementIds = reader.getAllMeasurements.keySet()
       requiredSchema.foreach(f => {
         if (!QueryConstant.RESERVED_TIME.equals(f.name)) {
-          val path = new org.apache.iotdb.tsfile.read.common.Path(f.name, true)
+          val path = new org.apache.tsfile.read.common.Path(f.name, true)
           if (devices.contains(path.getDevice) && measurementIds.contains(path.getMeasurement)) {
             queriedSchema = queriedSchema.add(f)
           }
@@ -160,10 +161,10 @@
     */
   def toQueryExpression(schema: StructType, filters: Seq[Filter]): QueryExpression = {
     //get paths from schema
-    val paths = new util.ArrayList[org.apache.iotdb.tsfile.read.common.Path]
+    val paths = new util.ArrayList[org.apache.tsfile.read.common.Path]
     schema.foreach(f => {
       if (!QueryConstant.RESERVED_TIME.equals(f.name)) { // the time field is excluded
-        paths.add(new org.apache.iotdb.tsfile.read.common.Path(f.name, true))
+        paths.add(new org.apache.tsfile.read.common.Path(f.name, true))
       }
     })
 
diff --git a/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/WideTsFileOutputWriter.scala b/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/WideTsFileOutputWriter.scala
index 34f1f84..da21a7e 100644
--- a/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/WideTsFileOutputWriter.scala
+++ b/iotdb-connector/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/WideTsFileOutputWriter.scala
@@ -22,7 +22,7 @@
 import org.apache.hadoop.io.NullWritable
 import org.apache.hadoop.mapreduce.{RecordWriter, TaskAttemptContext}
 import org.apache.iotdb.spark.tsfile.io.TsFileOutputFormat
-import org.apache.iotdb.tsfile.write.record.TSRecord
+import org.apache.tsfile.write.record.TSRecord
 import org.apache.spark.sql.catalyst.InternalRow
 import org.apache.spark.sql.execution.datasources.OutputWriter
 import org.apache.spark.sql.types._
diff --git a/iotdb-connector/spark-tsfile/src/test/scala/org/apache/iotdb/spark/tool/TsFileExample.java b/iotdb-connector/spark-tsfile/src/test/scala/org/apache/iotdb/spark/tool/TsFileExample.java
index dd7088d..68fabb9 100644
--- a/iotdb-connector/spark-tsfile/src/test/scala/org/apache/iotdb/spark/tool/TsFileExample.java
+++ b/iotdb-connector/spark-tsfile/src/test/scala/org/apache/iotdb/spark/tool/TsFileExample.java
@@ -19,18 +19,18 @@
 package org.apache.iotdb.spark.tool;
 
 import java.io.File;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.BooleanDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.StringDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.BooleanDataPoint;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.record.datapoint.FloatDataPoint;
+import org.apache.tsfile.write.record.datapoint.StringDataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 /** Write an example TsFile as shown in README. */
 public class TsFileExample {
diff --git a/iotdb-connector/spark-tsfile/src/test/scala/org/apache/iotdb/spark/tool/TsFileWriteTool.java b/iotdb-connector/spark-tsfile/src/test/scala/org/apache/iotdb/spark/tool/TsFileWriteTool.java
index 7ae98c3..42fc3a1 100644
--- a/iotdb-connector/spark-tsfile/src/test/scala/org/apache/iotdb/spark/tool/TsFileWriteTool.java
+++ b/iotdb-connector/spark-tsfile/src/test/scala/org/apache/iotdb/spark/tool/TsFileWriteTool.java
@@ -19,20 +19,20 @@
 package org.apache.iotdb.spark.tool;
 
 import java.io.File;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.BooleanDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.StringDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.BooleanDataPoint;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.record.datapoint.FloatDataPoint;
+import org.apache.tsfile.write.record.datapoint.IntDataPoint;
+import org.apache.tsfile.write.record.datapoint.StringDataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.Schema;
 
 /** An example of writing data to TsFile */
 public class TsFileWriteTool {
diff --git a/iotdb-connector/spark-tsfile/src/test/scala/org/apache/iotdb/spark/tsfile/ConverterTest.scala b/iotdb-connector/spark-tsfile/src/test/scala/org/apache/iotdb/spark/tsfile/ConverterTest.scala
index 87a7a6d..7a89c4f 100644
--- a/iotdb-connector/spark-tsfile/src/test/scala/org/apache/iotdb/spark/tsfile/ConverterTest.scala
+++ b/iotdb-connector/spark-tsfile/src/test/scala/org/apache/iotdb/spark/tsfile/ConverterTest.scala
@@ -28,12 +28,12 @@
 import org.apache.iotdb.hadoop.fileSystem.HDFSInput
 import org.apache.iotdb.spark.constant.TestConstant
 import org.apache.iotdb.spark.tool.TsFileWriteTool
-import org.apache.iotdb.tsfile.common.constant.QueryConstant
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader
-import org.apache.iotdb.tsfile.read.common.Field
-import org.apache.iotdb.tsfile.utils.Binary
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType
+import org.apache.tsfile.common.constant.QueryConstant
+import org.apache.tsfile.read.TsFileSequenceReader
+import org.apache.tsfile.read.common.Field
+import org.apache.tsfile.utils.Binary
+import org.apache.tsfile.common.conf.TSFileConfig
+import org.apache.tsfile.enums.TSDataType
 import org.apache.spark.sql.SparkSession
 import org.apache.spark.sql.catalyst.InternalRow
 import org.apache.spark.sql.catalyst.expressions.GenericInternalRow
diff --git a/iotdb-connector/spark-tsfile/src/test/scala/org/apache/iotdb/spark/tsfile/TSFileSuit.scala b/iotdb-connector/spark-tsfile/src/test/scala/org/apache/iotdb/spark/tsfile/TSFileSuit.scala
index a802e97..030392a 100644
--- a/iotdb-connector/spark-tsfile/src/test/scala/org/apache/iotdb/spark/tsfile/TSFileSuit.scala
+++ b/iotdb-connector/spark-tsfile/src/test/scala/org/apache/iotdb/spark/tsfile/TSFileSuit.scala
@@ -24,8 +24,8 @@
 import org.apache.iotdb.hadoop.fileSystem.HDFSInput
 import org.apache.iotdb.spark.constant.TestConstant
 import org.apache.iotdb.spark.tool.TsFileWriteTool
-import org.apache.iotdb.tsfile.common.constant.QueryConstant
-import org.apache.iotdb.tsfile.read.{TsFileSequenceReader, common}
+import org.apache.tsfile.common.constant.QueryConstant
+import org.apache.tsfile.read.{TsFileSequenceReader, common}
 import org.apache.spark.sql.SparkSession
 import org.apache.spark.sql.types._
 import org.junit.Assert
diff --git a/iotdb-core/confignode/pom.xml b/iotdb-core/confignode/pom.xml
index b1ed2eb..1e00733 100644
--- a/iotdb-core/confignode/pom.xml
+++ b/iotdb-core/confignode/pom.xml
@@ -35,9 +35,9 @@
     </properties>
     <dependencies>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>common</artifactId>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
@@ -95,9 +95,9 @@
             <version>1.3.2-SNAPSHOT</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlan.java
index 17a08c1..e2c6a5e 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlan.java
@@ -130,8 +130,8 @@
 import org.apache.iotdb.confignode.consensus.request.write.trigger.UpdateTriggerStateInTablePlan;
 import org.apache.iotdb.confignode.consensus.request.write.trigger.UpdateTriggersOnTransferNodesPlan;
 import org.apache.iotdb.consensus.common.request.IConsensusRequest;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/auth/AuthorPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/auth/AuthorPlan.java
index b27f79b..9edba89 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/auth/AuthorPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/auth/AuthorPlan.java
@@ -26,8 +26,8 @@
 import org.apache.iotdb.commons.utils.BasicStructureSerDeUtil;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/function/GetUDFJarPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/function/GetUDFJarPlan.java
index 18db24e..09baafd 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/function/GetUDFJarPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/function/GetUDFJarPlan.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/partition/CountTimeSlotListPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/partition/CountTimeSlotListPlan.java
index 7f1f237..acf7c97 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/partition/CountTimeSlotListPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/partition/CountTimeSlotListPlan.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.commons.utils.ThriftCommonsSerDeUtils;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/partition/GetSeriesSlotListPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/partition/GetSeriesSlotListPlan.java
index cb605d2..832a9b8 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/partition/GetSeriesSlotListPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/partition/GetSeriesSlotListPlan.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/partition/GetTimeSlotListPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/partition/GetTimeSlotListPlan.java
index a494cd3..1b6f881 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/partition/GetTimeSlotListPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/partition/GetTimeSlotListPlan.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.commons.utils.ThriftCommonsSerDeUtils;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/pipe/plugin/GetPipePluginJarPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/pipe/plugin/GetPipePluginJarPlan.java
index 6495a32..4b5b215 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/pipe/plugin/GetPipePluginJarPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/pipe/plugin/GetPipePluginJarPlan.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/region/GetRegionIdPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/region/GetRegionIdPlan.java
index 9c158d1..00797a1 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/region/GetRegionIdPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/region/GetRegionIdPlan.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.commons.utils.ThriftCommonsSerDeUtils;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/region/GetRegionInfoListPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/region/GetRegionInfoListPlan.java
index d40ddfe..f302fb0 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/region/GetRegionInfoListPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/region/GetRegionInfoListPlan.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
 import org.apache.iotdb.confignode.rpc.thrift.TShowRegionReq;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/template/CheckTemplateSettablePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/template/CheckTemplateSettablePlan.java
index 8af9a7d..df6a44c 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/template/CheckTemplateSettablePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/template/CheckTemplateSettablePlan.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/template/GetPathsSetTemplatePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/template/GetPathsSetTemplatePlan.java
index dfb05a7..e96d4d7 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/template/GetPathsSetTemplatePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/template/GetPathsSetTemplatePlan.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.commons.path.PathPatternTree;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/template/GetSchemaTemplatePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/template/GetSchemaTemplatePlan.java
index f5607c4..627dfa9 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/template/GetSchemaTemplatePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/template/GetSchemaTemplatePlan.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/template/GetTemplateSetInfoPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/template/GetTemplateSetInfoPlan.java
index 6c83c05..a63e5ca 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/template/GetTemplateSetInfoPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/template/GetTemplateSetInfoPlan.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.commons.path.PathDeserializeUtil;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/trigger/GetTriggerJarPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/trigger/GetTriggerJarPlan.java
index c3e56e9..09addc0 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/trigger/GetTriggerJarPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/trigger/GetTriggerJarPlan.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/trigger/GetTriggerLocationPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/trigger/GetTriggerLocationPlan.java
index c8bc72f..5973925 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/trigger/GetTriggerLocationPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/trigger/GetTriggerLocationPlan.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/trigger/GetTriggerTablePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/trigger/GetTriggerTablePlan.java
index 3576684..a1af864 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/trigger/GetTriggerTablePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/trigger/GetTriggerTablePlan.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/confignode/ApplyConfigNodePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/confignode/ApplyConfigNodePlan.java
index ff674f5..68556ec 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/confignode/ApplyConfigNodePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/confignode/ApplyConfigNodePlan.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.commons.utils.ThriftConfigNodeSerDeUtils;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/confignode/RemoveConfigNodePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/confignode/RemoveConfigNodePlan.java
index 8d8a466..ad3b2f8 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/confignode/RemoveConfigNodePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/confignode/RemoveConfigNodePlan.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.commons.utils.ThriftConfigNodeSerDeUtils;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/confignode/UpdateClusterIdPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/confignode/UpdateClusterIdPlan.java
index 85ce130..1ee05fe 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/confignode/UpdateClusterIdPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/confignode/UpdateClusterIdPlan.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/confignode/UpdateVersionInfoPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/confignode/UpdateVersionInfoPlan.java
index 3a562f1..62f2cc7 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/confignode/UpdateVersionInfoPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/confignode/UpdateVersionInfoPlan.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
 import org.apache.iotdb.confignode.rpc.thrift.TNodeVersionInfo;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/cq/ActiveCQPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/cq/ActiveCQPlan.java
index 5346db2..e488ac2 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/cq/ActiveCQPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/cq/ActiveCQPlan.java
@@ -20,9 +20,9 @@
 package org.apache.iotdb.confignode.consensus.request.write.cq;
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/cq/AddCQPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/cq/AddCQPlan.java
index 3cde530..0aae9e2 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/cq/AddCQPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/cq/AddCQPlan.java
@@ -22,9 +22,9 @@
 import org.apache.iotdb.commons.utils.ThriftCommonsSerDeUtils;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.rpc.thrift.TCreateCQReq;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/cq/DropCQPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/cq/DropCQPlan.java
index 966b179..5c90136 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/cq/DropCQPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/cq/DropCQPlan.java
@@ -20,9 +20,9 @@
 package org.apache.iotdb.confignode.consensus.request.write.cq;
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/cq/UpdateCQLastExecTimePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/cq/UpdateCQLastExecTimePlan.java
index 98dd9b3..51a8358 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/cq/UpdateCQLastExecTimePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/cq/UpdateCQLastExecTimePlan.java
@@ -20,9 +20,9 @@
 package org.apache.iotdb.confignode.consensus.request.write.cq;
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/database/AdjustMaxRegionGroupNumPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/database/AdjustMaxRegionGroupNumPlan.java
index a19b276..c6dbd60 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/database/AdjustMaxRegionGroupNumPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/database/AdjustMaxRegionGroupNumPlan.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/function/CreateFunctionPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/function/CreateFunctionPlan.java
index bfdd387..ad199c2 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/function/CreateFunctionPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/function/CreateFunctionPlan.java
@@ -22,8 +22,9 @@
 import org.apache.iotdb.commons.udf.UDFInformation;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/function/DropFunctionPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/function/DropFunctionPlan.java
index 8f84eaf..a4ecc63 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/function/DropFunctionPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/function/DropFunctionPlan.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeactivateTemplatePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeactivateTemplatePlan.java
index f7ed002..cf9afa0 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeactivateTemplatePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeactivateTemplatePlan.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeleteLogicalViewPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeleteLogicalViewPlan.java
index 12bbe93..0db5952 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeleteLogicalViewPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeleteLogicalViewPlan.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeleteTimeSeriesPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeleteTimeSeriesPlan.java
index fd91830..d97346f 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeleteTimeSeriesPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeleteTimeSeriesPlan.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeUnsetSchemaTemplatePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeUnsetSchemaTemplatePlan.java
index 5396b0e..cc3b0f1 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeUnsetSchemaTemplatePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeUnsetSchemaTemplatePlan.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
 import org.apache.iotdb.confignode.consensus.request.write.template.UnsetSchemaTemplatePlan;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/plugin/CreatePipePluginPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/plugin/CreatePipePluginPlan.java
index ce49842..ea4c986 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/plugin/CreatePipePluginPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/plugin/CreatePipePluginPlan.java
@@ -22,8 +22,9 @@
 import org.apache.iotdb.commons.pipe.plugin.meta.PipePluginMeta;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/plugin/DropPipePluginPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/plugin/DropPipePluginPlan.java
index ba4bc29..7a7c7e3 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/plugin/DropPipePluginPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/plugin/DropPipePluginPlan.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/runtime/PipeHandleLeaderChangePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/runtime/PipeHandleLeaderChangePlan.java
index d93f1df..2d52ceb 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/runtime/PipeHandleLeaderChangePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/runtime/PipeHandleLeaderChangePlan.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/task/OperateMultiplePipesPlanV2.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/task/OperateMultiplePipesPlanV2.java
index 0ebdf8c..c9ff9f5 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/task/OperateMultiplePipesPlanV2.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/task/OperateMultiplePipesPlanV2.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/task/SetPipeStatusPlanV2.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/task/SetPipeStatusPlanV2.java
index ca978d5..b3cdb04 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/task/SetPipeStatusPlanV2.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/task/SetPipeStatusPlanV2.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.commons.pipe.task.meta.PipeStatus;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/subscription/topic/AlterMultipleTopicsPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/subscription/topic/AlterMultipleTopicsPlan.java
index c02753d..d3dd664 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/subscription/topic/AlterMultipleTopicsPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/subscription/topic/AlterMultipleTopicsPlan.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/subscription/topic/DropTopicPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/subscription/topic/DropTopicPlan.java
index 1f89f6d..75642f9 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/subscription/topic/DropTopicPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/subscription/topic/DropTopicPlan.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/sync/SetPipeStatusPlanV1.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/sync/SetPipeStatusPlanV1.java
index 0f0472c..56c6e31 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/sync/SetPipeStatusPlanV1.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/sync/SetPipeStatusPlanV1.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.commons.sync.PipeStatus;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/CommitSetSchemaTemplatePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/CommitSetSchemaTemplatePlan.java
index 37ad3fa..9fa3333 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/CommitSetSchemaTemplatePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/CommitSetSchemaTemplatePlan.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/CreateSchemaTemplatePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/CreateSchemaTemplatePlan.java
index 51721bd..d2fa618 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/CreateSchemaTemplatePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/CreateSchemaTemplatePlan.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/DropSchemaTemplatePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/DropSchemaTemplatePlan.java
index 54850e6..af9ed99 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/DropSchemaTemplatePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/DropSchemaTemplatePlan.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/PreSetSchemaTemplatePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/PreSetSchemaTemplatePlan.java
index 4573ed5..afb7c06 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/PreSetSchemaTemplatePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/PreSetSchemaTemplatePlan.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/PreUnsetSchemaTemplatePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/PreUnsetSchemaTemplatePlan.java
index e20edc2..9477f69 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/PreUnsetSchemaTemplatePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/PreUnsetSchemaTemplatePlan.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.commons.path.PathDeserializeUtil;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/RollbackPreUnsetSchemaTemplatePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/RollbackPreUnsetSchemaTemplatePlan.java
index 41a364a..2d67ba5 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/RollbackPreUnsetSchemaTemplatePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/RollbackPreUnsetSchemaTemplatePlan.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.commons.path.PathDeserializeUtil;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/SetSchemaTemplatePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/SetSchemaTemplatePlan.java
index 969a47f..c18e5a2 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/SetSchemaTemplatePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/SetSchemaTemplatePlan.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/UnsetSchemaTemplatePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/UnsetSchemaTemplatePlan.java
index 9bfe38d..e573b4e 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/UnsetSchemaTemplatePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/template/UnsetSchemaTemplatePlan.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.commons.path.PathDeserializeUtil;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/AddTriggerInTablePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/AddTriggerInTablePlan.java
index 3211b9b..bf5ff4a 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/AddTriggerInTablePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/AddTriggerInTablePlan.java
@@ -22,8 +22,9 @@
 import org.apache.iotdb.commons.trigger.TriggerInformation;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/DeleteTriggerInTablePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/DeleteTriggerInTablePlan.java
index 2ff8be0..ea12801 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/DeleteTriggerInTablePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/DeleteTriggerInTablePlan.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/UpdateTriggerLocationPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/UpdateTriggerLocationPlan.java
index 51991bbf9..662e51a 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/UpdateTriggerLocationPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/UpdateTriggerLocationPlan.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.commons.utils.ThriftCommonsSerDeUtils;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/UpdateTriggerStateInTablePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/UpdateTriggerStateInTablePlan.java
index d98fd1b..ba159b9 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/UpdateTriggerStateInTablePlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/UpdateTriggerStateInTablePlan.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
 import org.apache.iotdb.confignode.rpc.thrift.TTriggerState;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/UpdateTriggersOnTransferNodesPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/UpdateTriggersOnTransferNodesPlan.java
index dc73f12..0b6ccf8 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/UpdateTriggersOnTransferNodesPlan.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/trigger/UpdateTriggersOnTransferNodesPlan.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.commons.utils.ThriftCommonsSerDeUtils;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/datanode/DataNodeRegisterResp.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/datanode/DataNodeRegisterResp.java
index 1dcc7ab..ef7d4f2 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/datanode/DataNodeRegisterResp.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/datanode/DataNodeRegisterResp.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.confignode.rpc.thrift.TRuntimeConfiguration;
 import org.apache.iotdb.consensus.common.DataSet;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
index 520e4dd..6e1a7aa 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
@@ -199,8 +199,8 @@
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferReq;
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferResp;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java
index d8a57d6..820b59c 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java
@@ -112,9 +112,9 @@
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/TriggerManager.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/TriggerManager.java
index cb49a37..0b4bb73 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/TriggerManager.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/TriggerManager.java
@@ -54,8 +54,8 @@
 import org.apache.iotdb.trigger.api.enums.FailureStrategy;
 import org.apache.iotdb.trigger.api.enums.TriggerEvent;
 import org.apache.iotdb.trigger.api.enums.TriggerType;
-import org.apache.iotdb.tsfile.utils.Binary;
 
+import org.apache.tsfile.utils.Binary;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/UDFManager.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/UDFManager.java
index 5e34a24..a84eb83 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/UDFManager.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/UDFManager.java
@@ -43,8 +43,8 @@
 import org.apache.iotdb.mpp.rpc.thrift.TDropFunctionInstanceReq;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Binary;
 
+import org.apache.tsfile.utils.Binary;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/PartitionBalancer.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/PartitionBalancer.java
index ccf2f5c..51bf521 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/PartitionBalancer.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/PartitionBalancer.java
@@ -34,8 +34,8 @@
 import org.apache.iotdb.confignode.manager.partition.PartitionManager;
 import org.apache.iotdb.confignode.manager.schema.ClusterSchemaManager;
 import org.apache.iotdb.confignode.rpc.thrift.TTimeSlotList;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RouteBalancer.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RouteBalancer.java
index e42b333..9516b25 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RouteBalancer.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RouteBalancer.java
@@ -51,8 +51,8 @@
 import org.apache.iotdb.mpp.rpc.thrift.TRegionLeaderChangeResp;
 import org.apache.iotdb.mpp.rpc.thrift.TRegionRouteReq;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/region/GreedyRegionGroupAllocator.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/region/GreedyRegionGroupAllocator.java
index 65388b9..d05a8ac 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/region/GreedyRegionGroupAllocator.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/region/GreedyRegionGroupAllocator.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.common.rpc.thrift.TDataNodeConfiguration;
 import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.HashMap;
 import java.util.List;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/router/priority/GreedyPriorityBalancer.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/router/priority/GreedyPriorityBalancer.java
index 187da77..6eacf6f 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/router/priority/GreedyPriorityBalancer.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/router/priority/GreedyPriorityBalancer.java
@@ -21,7 +21,8 @@
 import org.apache.iotdb.common.rpc.thrift.TConsensusGroupId;
 import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Comparator;
 import java.util.List;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/EventService.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/EventService.java
index b76a70d..ff9ca15 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/EventService.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/EventService.java
@@ -33,10 +33,10 @@
 import org.apache.iotdb.confignode.manager.load.subscriber.ConsensusGroupStatisticsChangeEvent;
 import org.apache.iotdb.confignode.manager.load.subscriber.NodeStatisticsChangeEvent;
 import org.apache.iotdb.confignode.manager.load.subscriber.RegionGroupStatisticsChangeEvent;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import com.google.common.eventbus.AsyncEventBus;
 import com.google.common.eventbus.EventBus;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/HeartbeatService.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/HeartbeatService.java
index 7eb6956..b65b304 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/HeartbeatService.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/HeartbeatService.java
@@ -38,8 +38,8 @@
 import org.apache.iotdb.confignode.manager.node.NodeManager;
 import org.apache.iotdb.confignode.rpc.thrift.TConfigNodeHeartbeatReq;
 import org.apache.iotdb.mpp.rpc.thrift.TDataNodeHeartbeatReq;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/subscriber/ConsensusGroupStatisticsChangeEvent.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/subscriber/ConsensusGroupStatisticsChangeEvent.java
index f1abf52..a305130 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/subscriber/ConsensusGroupStatisticsChangeEvent.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/subscriber/ConsensusGroupStatisticsChangeEvent.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.common.rpc.thrift.TConsensusGroupId;
 import org.apache.iotdb.confignode.manager.load.cache.consensus.ConsensusGroupStatistics;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Map;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/subscriber/NodeStatisticsChangeEvent.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/subscriber/NodeStatisticsChangeEvent.java
index dcc1744..11da0dc 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/subscriber/NodeStatisticsChangeEvent.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/subscriber/NodeStatisticsChangeEvent.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.confignode.manager.load.subscriber;
 
 import org.apache.iotdb.confignode.manager.load.cache.node.NodeStatistics;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Map;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/subscriber/RegionGroupStatisticsChangeEvent.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/subscriber/RegionGroupStatisticsChangeEvent.java
index 0eead7f..5c23c88 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/subscriber/RegionGroupStatisticsChangeEvent.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/subscriber/RegionGroupStatisticsChangeEvent.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.common.rpc.thrift.TConsensusGroupId;
 import org.apache.iotdb.confignode.manager.load.cache.region.RegionGroupStatistics;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Map;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
index 60db21b..500a6d8 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
@@ -89,8 +89,8 @@
 import org.apache.iotdb.mpp.rpc.thrift.TCreateSchemaRegionReq;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/connector/payload/PipeTransferConfigPlanReq.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/connector/payload/PipeTransferConfigPlanReq.java
index e518905..ee9140b 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/connector/payload/PipeTransferConfigPlanReq.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/connector/payload/PipeTransferConfigPlanReq.java
@@ -23,9 +23,10 @@
 import org.apache.iotdb.commons.pipe.connector.payload.thrift.request.PipeRequestType;
 import org.apache.iotdb.consensus.common.request.IConsensusRequest;
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferReq;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/connector/protocol/IoTDBConfigRegionConnector.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/connector/protocol/IoTDBConfigRegionConnector.java
index e516767..c48e29c 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/connector/protocol/IoTDBConfigRegionConnector.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/connector/protocol/IoTDBConfigRegionConnector.java
@@ -39,8 +39,8 @@
 import org.apache.iotdb.pipe.api.exception.PipeException;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferResp;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/coordinator/runtime/PipeLeaderChangeHandler.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/coordinator/runtime/PipeLeaderChangeHandler.java
index f590479..a3cb82e 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/coordinator/runtime/PipeLeaderChangeHandler.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/coordinator/runtime/PipeLeaderChangeHandler.java
@@ -29,7 +29,8 @@
 import org.apache.iotdb.confignode.manager.load.subscriber.IClusterStatusSubscriber;
 import org.apache.iotdb.confignode.manager.load.subscriber.NodeStatisticsChangeEvent;
 import org.apache.iotdb.confignode.manager.load.subscriber.RegionGroupStatisticsChangeEvent;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/event/PipeConfigRegionSnapshotEvent.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/event/PipeConfigRegionSnapshotEvent.java
index fd3b12b..e5e759d 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/event/PipeConfigRegionSnapshotEvent.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/event/PipeConfigRegionSnapshotEvent.java
@@ -26,8 +26,8 @@
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
 import org.apache.iotdb.confignode.manager.pipe.resource.snapshot.PipeConfigNodeSnapshotResourceManager;
 import org.apache.iotdb.confignode.persistence.schema.CNSnapshotFileType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/event/PipeConfigRegionWritePlanEvent.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/event/PipeConfigRegionWritePlanEvent.java
index d94b58e..52da0b2 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/event/PipeConfigRegionWritePlanEvent.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/event/PipeConfigRegionWritePlanEvent.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.commons.pipe.pattern.PipePattern;
 import org.apache.iotdb.commons.pipe.task.meta.PipeTaskMeta;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/extractor/ConfigRegionListeningQueue.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/extractor/ConfigRegionListeningQueue.java
index 48c7edd..9f76e2d 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/extractor/ConfigRegionListeningQueue.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/extractor/ConfigRegionListeningQueue.java
@@ -38,9 +38,9 @@
 import org.apache.iotdb.confignode.service.ConfigNode;
 import org.apache.iotdb.db.auth.AuthorityChecker;
 import org.apache.iotdb.pipe.api.event.Event;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java
index 8d26049..05be43d 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java
@@ -87,8 +87,8 @@
 import org.apache.iotdb.mpp.rpc.thrift.TUpdateTemplateReq;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ClusterInfo.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ClusterInfo.java
index a6513e5..aed3ee3 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ClusterInfo.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ClusterInfo.java
@@ -23,10 +23,10 @@
 import org.apache.iotdb.commons.snapshot.SnapshotProcessor;
 import org.apache.iotdb.confignode.consensus.request.write.confignode.UpdateClusterIdPlan;
 import org.apache.iotdb.rpc.RpcUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.thrift.TException;
 import org.apache.thrift.transport.TIOStreamTransport;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ProcedureInfo.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ProcedureInfo.java
index 8038290..44be057 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ProcedureInfo.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ProcedureInfo.java
@@ -33,10 +33,10 @@
 import org.apache.iotdb.confignode.procedure.store.ProcedureWAL;
 import org.apache.iotdb.consensus.exception.ConsensusException;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.thrift.TException;
 import org.apache.thrift.transport.TIOStreamTransport;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/TriggerInfo.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/TriggerInfo.java
index 85014ba..e324c6a 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/TriggerInfo.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/TriggerInfo.java
@@ -45,9 +45,9 @@
 import org.apache.iotdb.confignode.rpc.thrift.TTriggerState;
 import org.apache.iotdb.consensus.common.DataSet;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/UDFInfo.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/UDFInfo.java
index 5ab8172..51f9971 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/UDFInfo.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/UDFInfo.java
@@ -35,9 +35,9 @@
 import org.apache.iotdb.confignode.consensus.response.function.FunctionTableResp;
 import org.apache.iotdb.consensus.common.DataSet;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 import org.apache.iotdb.udf.api.exception.UDFManagementException;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/cq/CQInfo.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/cq/CQInfo.java
index bdd6b82..4c1225e 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/cq/CQInfo.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/cq/CQInfo.java
@@ -30,9 +30,9 @@
 import org.apache.iotdb.confignode.consensus.response.cq.ShowCQResp;
 import org.apache.iotdb.confignode.rpc.thrift.TCreateCQReq;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
index 99b4fe3..5e1543c 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
@@ -130,9 +130,9 @@
 import org.apache.iotdb.confignode.rpc.thrift.TShowRegionReq;
 import org.apache.iotdb.consensus.common.DataSet;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/node/NodeInfo.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/node/NodeInfo.java
index 3055e6f..1ba65aa 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/node/NodeInfo.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/node/NodeInfo.java
@@ -35,12 +35,12 @@
 import org.apache.iotdb.confignode.consensus.response.datanode.DataNodeConfigurationResp;
 import org.apache.iotdb.confignode.rpc.thrift.TNodeVersionInfo;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.thrift.TException;
 import org.apache.thrift.protocol.TBinaryProtocol;
 import org.apache.thrift.protocol.TProtocol;
 import org.apache.thrift.transport.TIOStreamTransport;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/DatabasePartitionTable.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/DatabasePartitionTable.java
index a2f07df..2683e28 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/DatabasePartitionTable.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/DatabasePartitionTable.java
@@ -32,11 +32,11 @@
 import org.apache.iotdb.confignode.rpc.thrift.TRegionInfo;
 import org.apache.iotdb.confignode.rpc.thrift.TShowRegionReq;
 import org.apache.iotdb.confignode.rpc.thrift.TTimeSlotList;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.thrift.TException;
 import org.apache.thrift.protocol.TProtocol;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java
index 0fd094b..2e4ac43 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java
@@ -64,13 +64,13 @@
 import org.apache.iotdb.consensus.common.DataSet;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.thrift.TException;
 import org.apache.thrift.protocol.TBinaryProtocol;
 import org.apache.thrift.protocol.TProtocol;
 import org.apache.thrift.transport.TIOStreamTransport;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/RegionGroup.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/RegionGroup.java
index f02b662..048ccab 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/RegionGroup.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/RegionGroup.java
@@ -22,10 +22,10 @@
 import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
 import org.apache.iotdb.common.rpc.thrift.TSeriesPartitionSlot;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.thrift.TException;
 import org.apache.thrift.protocol.TProtocol;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/maintainer/RegionCreateTask.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/maintainer/RegionCreateTask.java
index 8fd9833..2124662 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/maintainer/RegionCreateTask.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/maintainer/RegionCreateTask.java
@@ -24,10 +24,10 @@
 import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
 import org.apache.iotdb.commons.utils.ThriftCommonsSerDeUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.thrift.TException;
 import org.apache.thrift.protocol.TProtocol;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/maintainer/RegionDeleteTask.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/maintainer/RegionDeleteTask.java
index 3ef5c26..a4d5ce7 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/maintainer/RegionDeleteTask.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/maintainer/RegionDeleteTask.java
@@ -22,10 +22,10 @@
 import org.apache.iotdb.common.rpc.thrift.TConsensusGroupId;
 import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
 import org.apache.iotdb.commons.utils.ThriftCommonsSerDeUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.thrift.TException;
 import org.apache.thrift.protocol.TProtocol;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/maintainer/RegionMaintainTask.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/maintainer/RegionMaintainTask.java
index e40cce7..f1da004 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/maintainer/RegionMaintainTask.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/maintainer/RegionMaintainTask.java
@@ -21,10 +21,10 @@
 
 import org.apache.iotdb.common.rpc.thrift.TConsensusGroupId;
 import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.thrift.TException;
 import org.apache.thrift.protocol.TProtocol;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/quota/QuotaInfo.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/quota/QuotaInfo.java
index 1fa0b92..59b484d 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/quota/QuotaInfo.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/quota/QuotaInfo.java
@@ -30,9 +30,9 @@
 import org.apache.iotdb.confignode.consensus.request.write.quota.SetThrottleQuotaPlan;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/CNPhysicalPlanGenerator.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/CNPhysicalPlanGenerator.java
index cf6c000..c50a176 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/CNPhysicalPlanGenerator.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/CNPhysicalPlanGenerator.java
@@ -36,10 +36,10 @@
 import org.apache.iotdb.confignode.persistence.schema.mnode.IConfigMNode;
 import org.apache.iotdb.confignode.persistence.schema.mnode.factory.ConfigMNodeFactory;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ClusterSchemaInfo.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ClusterSchemaInfo.java
index 57102d7..55a3972 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ClusterSchemaInfo.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ClusterSchemaInfo.java
@@ -67,8 +67,8 @@
 import org.apache.iotdb.db.schemaengine.template.alter.TemplateExtendInfo;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ConfigMTree.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ConfigMTree.java
index 9f4a226..01c16f0 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ConfigMTree.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ConfigMTree.java
@@ -39,9 +39,9 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.traverser.collector.MNodeCollector;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.traverser.counter.DatabaseCounter;
 import org.apache.iotdb.db.schemaengine.schemaregion.utils.MetaFormatUtils;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ConfignodeSnapshotParser.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ConfignodeSnapshotParser.java
index d41b647..d102af5 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ConfignodeSnapshotParser.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ConfignodeSnapshotParser.java
@@ -22,8 +22,8 @@
 import org.apache.iotdb.commons.file.SystemFileFactory;
 import org.apache.iotdb.confignode.conf.ConfigNodeConfig;
 import org.apache.iotdb.confignode.conf.ConfigNodeDescriptor;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplatePreSetTable.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplatePreSetTable.java
index ed1e031..251100c 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplatePreSetTable.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplatePreSetTable.java
@@ -21,8 +21,8 @@
 
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplateTable.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplateTable.java
index e3411b1..6b9c2e8 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplateTable.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplateTable.java
@@ -24,14 +24,14 @@
 import org.apache.iotdb.db.exception.metadata.template.UndefinedTemplateException;
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.db.schemaengine.template.alter.TemplateExtendInfo;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+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.ReadWriteIOUtils;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/mnode/factory/ConfigMNodeFactory.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/mnode/factory/ConfigMNodeFactory.java
index cd19f87..1d353a2 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/mnode/factory/ConfigMNodeFactory.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/mnode/factory/ConfigMNodeFactory.java
@@ -26,7 +26,8 @@
 import org.apache.iotdb.confignode.persistence.schema.mnode.IConfigMNode;
 import org.apache.iotdb.confignode.persistence.schema.mnode.impl.ConfigBasicInternalMNode;
 import org.apache.iotdb.confignode.persistence.schema.mnode.impl.ConfigDatabaseMNode;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 @MNodeFactory
 public class ConfigMNodeFactory implements IMNodeFactory<IConfigMNode> {
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/env/ConfigNodeProcedureEnv.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/env/ConfigNodeProcedureEnv.java
index caa2538..0509b6f 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/env/ConfigNodeProcedureEnv.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/env/ConfigNodeProcedureEnv.java
@@ -83,9 +83,9 @@
 import org.apache.iotdb.mpp.rpc.thrift.TPushTopicMetaReq;
 import org.apache.iotdb.mpp.rpc.thrift.TPushTopicMetaResp;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.utils.Binary;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/cq/CreateCQProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/cq/CreateCQProcedure.java
index c0273fe..579f516 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/cq/CreateCQProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/cq/CreateCQProcedure.java
@@ -36,9 +36,9 @@
 import org.apache.iotdb.confignode.rpc.thrift.TCreateCQReq;
 import org.apache.iotdb.consensus.exception.ConsensusException;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/node/AddConfigNodeProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/node/AddConfigNodeProcedure.java
index c3cd834..160551b 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/node/AddConfigNodeProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/node/AddConfigNodeProcedure.java
@@ -27,8 +27,8 @@
 import org.apache.iotdb.confignode.procedure.state.AddConfigNodeState;
 import org.apache.iotdb.confignode.procedure.store.ProcedureType;
 import org.apache.iotdb.confignode.rpc.thrift.TNodeVersionInfo;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/AbstractOperatePipeProcedureV2.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/AbstractOperatePipeProcedureV2.java
index d83022f..477a99f 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/AbstractOperatePipeProcedureV2.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/AbstractOperatePipeProcedureV2.java
@@ -33,8 +33,8 @@
 import org.apache.iotdb.mpp.rpc.thrift.TPushPipeMetaResp;
 import org.apache.iotdb.pipe.api.exception.PipeException;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/plugin/CreatePipePluginProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/plugin/CreatePipePluginProcedure.java
index 067669a..53fc302 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/plugin/CreatePipePluginProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/plugin/CreatePipePluginProcedure.java
@@ -40,9 +40,9 @@
 import org.apache.iotdb.pipe.api.exception.PipeException;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/plugin/DropPipePluginProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/plugin/DropPipePluginProcedure.java
index faa975c..a69d2dc 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/plugin/DropPipePluginProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/plugin/DropPipePluginProcedure.java
@@ -35,8 +35,8 @@
 import org.apache.iotdb.pipe.api.exception.PipeException;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeHandleLeaderChangeProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeHandleLeaderChangeProcedure.java
index e81ec5f..0803aa2 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeHandleLeaderChangeProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeHandleLeaderChangeProcedure.java
@@ -30,9 +30,9 @@
 import org.apache.iotdb.consensus.exception.ConsensusException;
 import org.apache.iotdb.pipe.api.exception.PipeException;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeHandleMetaChangeProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeHandleMetaChangeProcedure.java
index daaecac..d777e34 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeHandleMetaChangeProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeHandleMetaChangeProcedure.java
@@ -29,8 +29,8 @@
 import org.apache.iotdb.consensus.exception.ConsensusException;
 import org.apache.iotdb.pipe.api.exception.PipeException;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/AlterPipeProcedureV2.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/AlterPipeProcedureV2.java
index a3b8e6f..3fa1d11 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/AlterPipeProcedureV2.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/AlterPipeProcedureV2.java
@@ -37,8 +37,8 @@
 import org.apache.iotdb.consensus.exception.ConsensusException;
 import org.apache.iotdb.pipe.api.exception.PipeException;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/CreatePipeProcedureV2.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/CreatePipeProcedureV2.java
index 9fc404b..3bd1c13 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/CreatePipeProcedureV2.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/CreatePipeProcedureV2.java
@@ -39,8 +39,8 @@
 import org.apache.iotdb.consensus.exception.ConsensusException;
 import org.apache.iotdb.pipe.api.exception.PipeException;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/DropPipeProcedureV2.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/DropPipeProcedureV2.java
index 2a8ab02..60d851a 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/DropPipeProcedureV2.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/DropPipeProcedureV2.java
@@ -29,8 +29,8 @@
 import org.apache.iotdb.consensus.exception.ConsensusException;
 import org.apache.iotdb.pipe.api.exception.PipeException;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/StartPipeProcedureV2.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/StartPipeProcedureV2.java
index 6992b7b..628935a 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/StartPipeProcedureV2.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/StartPipeProcedureV2.java
@@ -29,8 +29,8 @@
 import org.apache.iotdb.consensus.exception.ConsensusException;
 import org.apache.iotdb.pipe.api.exception.PipeException;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/StopPipeProcedureV2.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/StopPipeProcedureV2.java
index 38b5094..81a7073 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/StopPipeProcedureV2.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/StopPipeProcedureV2.java
@@ -29,8 +29,8 @@
 import org.apache.iotdb.consensus.exception.ConsensusException;
 import org.apache.iotdb.pipe.api.exception.PipeException;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/AlterLogicalViewProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/AlterLogicalViewProcedure.java
index 216a209..6667712 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/AlterLogicalViewProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/AlterLogicalViewProcedure.java
@@ -45,8 +45,8 @@
 import org.apache.iotdb.mpp.rpc.thrift.TAlterViewReq;
 import org.apache.iotdb.mpp.rpc.thrift.TInvalidateMatchedSchemaCacheReq;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeactivateTemplateProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeactivateTemplateProcedure.java
index 1205474..194e23d 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeactivateTemplateProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeactivateTemplateProcedure.java
@@ -49,8 +49,8 @@
 import org.apache.iotdb.mpp.rpc.thrift.TRollbackSchemaBlackListWithTemplateReq;
 import org.apache.iotdb.pipe.api.exception.PipeException;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeleteLogicalViewProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeleteLogicalViewProcedure.java
index 1b5671d..1a566ae 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeleteLogicalViewProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeleteLogicalViewProcedure.java
@@ -46,8 +46,8 @@
 import org.apache.iotdb.mpp.rpc.thrift.TRollbackViewSchemaBlackListReq;
 import org.apache.iotdb.pipe.api.exception.PipeException;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeleteTimeSeriesProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeleteTimeSeriesProcedure.java
index 2604458..f49827f 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeleteTimeSeriesProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeleteTimeSeriesProcedure.java
@@ -47,8 +47,8 @@
 import org.apache.iotdb.mpp.rpc.thrift.TRollbackSchemaBlackListReq;
 import org.apache.iotdb.pipe.api.exception.PipeException;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/SetTemplateProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/SetTemplateProcedure.java
index d842f54..ab8ac16 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/SetTemplateProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/SetTemplateProcedure.java
@@ -54,8 +54,8 @@
 import org.apache.iotdb.mpp.rpc.thrift.TCheckTimeSeriesExistenceResp;
 import org.apache.iotdb.mpp.rpc.thrift.TUpdateTemplateReq;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/UnsetTemplateProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/UnsetTemplateProcedure.java
index 498863b..e2d30f1 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/UnsetTemplateProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/UnsetTemplateProcedure.java
@@ -42,8 +42,8 @@
 import org.apache.iotdb.db.schemaengine.template.TemplateInternalRPCUtil;
 import org.apache.iotdb.mpp.rpc.thrift.TUpdateTemplateReq;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/AlterConsumerGroupProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/AlterConsumerGroupProcedure.java
index b21d901..981e051 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/AlterConsumerGroupProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/AlterConsumerGroupProcedure.java
@@ -32,8 +32,8 @@
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.rpc.subscription.exception.SubscriptionException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/CreateConsumerProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/CreateConsumerProcedure.java
index 7e9095c..d9c10f5 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/CreateConsumerProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/CreateConsumerProcedure.java
@@ -26,7 +26,8 @@
 import org.apache.iotdb.confignode.procedure.store.ProcedureType;
 import org.apache.iotdb.confignode.rpc.thrift.TCreateConsumerReq;
 import org.apache.iotdb.pipe.api.exception.PipeException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/DropConsumerProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/DropConsumerProcedure.java
index cf41abd..90baa1b 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/DropConsumerProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/DropConsumerProcedure.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.confignode.procedure.store.ProcedureType;
 import org.apache.iotdb.confignode.rpc.thrift.TCloseConsumerReq;
 import org.apache.iotdb.pipe.api.exception.PipeException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/subscription/CreateSubscriptionProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/subscription/CreateSubscriptionProcedure.java
index 86f4997..8710eec 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/subscription/CreateSubscriptionProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/subscription/CreateSubscriptionProcedure.java
@@ -41,8 +41,8 @@
 import org.apache.iotdb.consensus.exception.ConsensusException;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.rpc.subscription.exception.SubscriptionException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/subscription/DropSubscriptionProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/subscription/DropSubscriptionProcedure.java
index 7796939..efb5aa2 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/subscription/DropSubscriptionProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/subscription/DropSubscriptionProcedure.java
@@ -40,8 +40,8 @@
 import org.apache.iotdb.consensus.exception.ConsensusException;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.rpc.subscription.exception.SubscriptionException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/AlterTopicProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/AlterTopicProcedure.java
index 6df6f11..93380ed 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/AlterTopicProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/AlterTopicProcedure.java
@@ -31,8 +31,8 @@
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.rpc.subscription.exception.SubscriptionException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/CreateTopicProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/CreateTopicProcedure.java
index 3732875..ed3d59b 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/CreateTopicProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/CreateTopicProcedure.java
@@ -32,8 +32,8 @@
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.rpc.subscription.exception.SubscriptionException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/DropTopicProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/DropTopicProcedure.java
index b5b6e33..54c6e3e 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/DropTopicProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/DropTopicProcedure.java
@@ -29,8 +29,8 @@
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.rpc.subscription.exception.SubscriptionException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/AuthOperationProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/AuthOperationProcedure.java
index 14bb0a6..b3f1018 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/AuthOperationProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/AuthOperationProcedure.java
@@ -38,9 +38,9 @@
 import org.apache.iotdb.consensus.exception.ConsensusException;
 import org.apache.iotdb.mpp.rpc.thrift.TInvalidatePermissionCacheReq;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/CreatePipeProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/CreatePipeProcedure.java
index 2237fb3..be115e1 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/CreatePipeProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/CreatePipeProcedure.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.confignode.procedure.impl.pipe.task.CreatePipeProcedureV2;
 import org.apache.iotdb.confignode.procedure.store.ProcedureType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/DropPipeProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/DropPipeProcedure.java
index 94a186b..0fd1ab3 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/DropPipeProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/DropPipeProcedure.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.confignode.procedure.impl.pipe.task.DropPipeProcedureV2;
 import org.apache.iotdb.confignode.procedure.store.ProcedureType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/StartPipeProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/StartPipeProcedure.java
index 0e1c581..7513d23 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/StartPipeProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/StartPipeProcedure.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.confignode.procedure.env.ConfigNodeProcedureEnv;
 import org.apache.iotdb.confignode.procedure.impl.pipe.task.StartPipeProcedureV2;
 import org.apache.iotdb.confignode.procedure.store.ProcedureType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/StopPipeProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/StopPipeProcedure.java
index e99dcc9..02f3131 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/StopPipeProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/StopPipeProcedure.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.confignode.procedure.impl.pipe.task.StopPipeProcedureV2;
 import org.apache.iotdb.confignode.procedure.store.ProcedureType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/trigger/CreateTriggerProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/trigger/CreateTriggerProcedure.java
index 9f6d2b2..74f4112 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/trigger/CreateTriggerProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/trigger/CreateTriggerProcedure.java
@@ -37,9 +37,9 @@
 import org.apache.iotdb.consensus.exception.ConsensusException;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/trigger/DropTriggerProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/trigger/DropTriggerProcedure.java
index 18d3ddb..19bfcdc 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/trigger/DropTriggerProcedure.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/trigger/DropTriggerProcedure.java
@@ -32,8 +32,8 @@
 import org.apache.iotdb.confignode.rpc.thrift.TTriggerState;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/store/ProcedureWAL.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/store/ProcedureWAL.java
index c628806..d6ff7e4 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/store/ProcedureWAL.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/store/ProcedureWAL.java
@@ -21,8 +21,8 @@
 
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.confignode.procedure.Procedure;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
index efefa70..b6c5736 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
@@ -168,13 +168,13 @@
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.trigger.api.enums.FailureStrategy;
 import org.apache.iotdb.trigger.api.enums.TriggerEvent;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+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.Binary;
+import org.apache.tsfile.utils.Pair;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/manager/load/balancer/router/leader/LeaderBalancerComparisonTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/manager/load/balancer/router/leader/LeaderBalancerComparisonTest.java
index 182b5ed..fca962a 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/manager/load/balancer/router/leader/LeaderBalancerComparisonTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/manager/load/balancer/router/leader/LeaderBalancerComparisonTest.java
@@ -27,8 +27,8 @@
 import org.apache.iotdb.commons.cluster.RegionStatus;
 import org.apache.iotdb.confignode.manager.load.cache.node.NodeStatistics;
 import org.apache.iotdb.confignode.manager.load.cache.region.RegionStatistics;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/CNPhysicalPlanGeneratorTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/CNPhysicalPlanGeneratorTest.java
index 68d5cf3..5d0b5ca 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/CNPhysicalPlanGeneratorTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/CNPhysicalPlanGeneratorTest.java
@@ -37,10 +37,10 @@
 import org.apache.iotdb.confignode.persistence.schema.ClusterSchemaInfo;
 import org.apache.iotdb.confignode.rpc.thrift.TDatabaseSchema;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/PipeInfoTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/PipeInfoTest.java
index 113cccc..a697adc 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/PipeInfoTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/PipeInfoTest.java
@@ -31,11 +31,11 @@
 import org.apache.iotdb.confignode.consensus.request.write.pipe.task.DropPipePlanV2;
 import org.apache.iotdb.confignode.consensus.request.write.pipe.task.SetPipeStatusPlanV2;
 import org.apache.iotdb.confignode.persistence.pipe.PipeInfo;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.thrift.TException;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.utils.Binary;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/TriggerInfoTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/TriggerInfoTest.java
index 3a558de..96167b5 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/TriggerInfoTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/TriggerInfoTest.java
@@ -27,10 +27,10 @@
 import org.apache.iotdb.confignode.rpc.thrift.TTriggerState;
 import org.apache.iotdb.trigger.api.enums.FailureStrategy;
 import org.apache.iotdb.trigger.api.enums.TriggerEvent;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.thrift.TException;
+import org.apache.tsfile.utils.Binary;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/UDFInfoTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/UDFInfoTest.java
index 184b76a..708ea77 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/UDFInfoTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/UDFInfoTest.java
@@ -21,10 +21,10 @@
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.udf.UDFInformation;
 import org.apache.iotdb.confignode.consensus.request.write.function.CreateFunctionPlan;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.thrift.TException;
+import org.apache.tsfile.utils.Binary;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/schema/ClusterSchemaInfoTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/schema/ClusterSchemaInfoTest.java
index cb00cca..379ca7b 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/schema/ClusterSchemaInfoTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/schema/ClusterSchemaInfoTest.java
@@ -36,12 +36,12 @@
 import org.apache.iotdb.confignode.rpc.thrift.TDatabaseSchema;
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.db.schemaengine.template.TemplateInternalRPCUtil;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import org.apache.commons.io.FileUtils;
+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.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/schema/ConfigMTreeTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/schema/ConfigMTreeTest.java
index fe26086..cedec3b 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/schema/ConfigMTreeTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/schema/ConfigMTreeTest.java
@@ -24,8 +24,8 @@
 import org.apache.iotdb.commons.schema.node.role.IDatabaseMNode;
 import org.apache.iotdb.confignode.persistence.schema.mnode.IConfigMNode;
 import org.apache.iotdb.confignode.rpc.thrift.TDatabaseSchema;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/schema/TemplateTableTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/schema/TemplateTableTest.java
index be87f04..c4b8aab 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/schema/TemplateTableTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/schema/TemplateTableTest.java
@@ -22,11 +22,11 @@
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateCQProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateCQProcedureTest.java
index 809409c..9915b72 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateCQProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateCQProcedureTest.java
@@ -25,8 +25,8 @@
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
 import org.apache.iotdb.confignode.rpc.thrift.TCreateCQReq;
 import org.apache.iotdb.confignode.service.ConfigNode;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 import org.mockito.Mockito;
 
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateRegionGroupsProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateRegionGroupsProcedureTest.java
index b045032..6269953 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateRegionGroupsProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateRegionGroupsProcedureTest.java
@@ -28,8 +28,8 @@
 import org.apache.iotdb.confignode.procedure.impl.region.CreateRegionGroupsProcedure;
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
 import org.apache.iotdb.confignode.procedure.store.ProcedureType;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateTriggerProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateTriggerProcedureTest.java
index a19d29b..1b20b97 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateTriggerProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateTriggerProcedureTest.java
@@ -27,9 +27,9 @@
 import org.apache.iotdb.confignode.rpc.thrift.TTriggerState;
 import org.apache.iotdb.trigger.api.enums.FailureStrategy;
 import org.apache.iotdb.trigger.api.enums.TriggerEvent;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/DropTriggerProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/DropTriggerProcedureTest.java
index 5c712ed..a97a3bb 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/DropTriggerProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/DropTriggerProcedureTest.java
@@ -21,8 +21,8 @@
 
 import org.apache.iotdb.confignode.procedure.impl.trigger.DropTriggerProcedure;
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/AddConfigNodeProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/AddConfigNodeProcedureTest.java
index b6eaa31..682b478 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/AddConfigNodeProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/AddConfigNodeProcedureTest.java
@@ -23,8 +23,8 @@
 import org.apache.iotdb.commons.conf.IoTDBConstant;
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
 import org.apache.iotdb.confignode.rpc.thrift.TNodeVersionInfo;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/RemoveConfigNodeProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/RemoveConfigNodeProcedureTest.java
index 5935186..ca734a8 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/RemoveConfigNodeProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/RemoveConfigNodeProcedureTest.java
@@ -21,8 +21,8 @@
 import org.apache.iotdb.common.rpc.thrift.TConfigNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/RemoveDataNodeProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/RemoveDataNodeProcedureTest.java
index 64dc2a3..9633c3b 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/RemoveDataNodeProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/RemoveDataNodeProcedureTest.java
@@ -21,8 +21,8 @@
 import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/plugin/CreatePipePluginProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/plugin/CreatePipePluginProcedureTest.java
index 103ca79..8405f2d 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/plugin/CreatePipePluginProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/plugin/CreatePipePluginProcedureTest.java
@@ -21,9 +21,9 @@
 
 import org.apache.iotdb.commons.pipe.plugin.meta.PipePluginMeta;
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/plugin/DropPipePluginProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/plugin/DropPipePluginProcedureTest.java
index 6135aa0..c29f5bd 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/plugin/DropPipePluginProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/plugin/DropPipePluginProcedureTest.java
@@ -20,8 +20,8 @@
 package org.apache.iotdb.confignode.procedure.impl.pipe.plugin;
 
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/receiver/PipeEnrichedProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/receiver/PipeEnrichedProcedureTest.java
index 69426ae..36ca7e7 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/receiver/PipeEnrichedProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/receiver/PipeEnrichedProcedureTest.java
@@ -44,12 +44,12 @@
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.trigger.api.enums.FailureStrategy;
 import org.apache.iotdb.trigger.api.enums.TriggerEvent;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+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.Binary;
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeHandleLeaderChangeProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeHandleLeaderChangeProcedureTest.java
index fbf3c1d..b76e291 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeHandleLeaderChangeProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeHandleLeaderChangeProcedureTest.java
@@ -22,9 +22,9 @@
 import org.apache.iotdb.common.rpc.thrift.TConsensusGroupId;
 import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeHandleMetaChangeProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeHandleMetaChangeProcedureTest.java
index 303e464..0d259f7 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeHandleMetaChangeProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeHandleMetaChangeProcedureTest.java
@@ -20,8 +20,8 @@
 package org.apache.iotdb.confignode.procedure.impl.pipe.runtime;
 
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeMetaSyncProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeMetaSyncProcedureTest.java
index d3b0508..44b9628 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeMetaSyncProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/runtime/PipeMetaSyncProcedureTest.java
@@ -20,8 +20,8 @@
 package org.apache.iotdb.confignode.procedure.impl.pipe.runtime;
 
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/AlterPipeProcedureV2Test.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/AlterPipeProcedureV2Test.java
index f23d22a..1d53a1a 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/AlterPipeProcedureV2Test.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/AlterPipeProcedureV2Test.java
@@ -21,8 +21,8 @@
 
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
 import org.apache.iotdb.confignode.rpc.thrift.TAlterPipeReq;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/CreatePipeProcedureV2Test.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/CreatePipeProcedureV2Test.java
index 6f13eaa..6c095de 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/CreatePipeProcedureV2Test.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/CreatePipeProcedureV2Test.java
@@ -21,8 +21,8 @@
 
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
 import org.apache.iotdb.confignode.rpc.thrift.TCreatePipeReq;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/DropPipeProcedureV2Test.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/DropPipeProcedureV2Test.java
index 427d147..032288d 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/DropPipeProcedureV2Test.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/DropPipeProcedureV2Test.java
@@ -20,8 +20,8 @@
 package org.apache.iotdb.confignode.procedure.impl.pipe.task;
 
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/StartPipeProcedureV2Test.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/StartPipeProcedureV2Test.java
index 2f47718..4584d75 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/StartPipeProcedureV2Test.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/StartPipeProcedureV2Test.java
@@ -20,8 +20,8 @@
 package org.apache.iotdb.confignode.procedure.impl.pipe.task;
 
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/StopPipeProcedureV2Test.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/StopPipeProcedureV2Test.java
index c02417c..e6d676e 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/StopPipeProcedureV2Test.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/StopPipeProcedureV2Test.java
@@ -20,8 +20,8 @@
 package org.apache.iotdb.confignode.procedure.impl.pipe.task;
 
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/region/AddRegionPeerProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/region/AddRegionPeerProcedureTest.java
index 7836fb0..895bd64 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/region/AddRegionPeerProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/region/AddRegionPeerProcedureTest.java
@@ -24,8 +24,8 @@
 import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/region/RegionMigrateProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/region/RegionMigrateProcedureTest.java
index ec432e6..daae270 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/region/RegionMigrateProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/region/RegionMigrateProcedureTest.java
@@ -23,8 +23,8 @@
 import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/region/RemoveRegionPeerProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/region/RemoveRegionPeerProcedureTest.java
index 63c6133..56a8d00 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/region/RemoveRegionPeerProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/region/RemoveRegionPeerProcedureTest.java
@@ -24,8 +24,8 @@
 import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/schema/AlterLogicalViewProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/schema/AlterLogicalViewProcedureTest.java
index 0eedf58..6f690c4 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/schema/AlterLogicalViewProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/schema/AlterLogicalViewProcedureTest.java
@@ -24,8 +24,8 @@
 import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpression;
 import org.apache.iotdb.commons.schema.view.viewExpression.leaf.ConstantViewOperand;
 import org.apache.iotdb.confignode.procedure.store.ProcedureType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/schema/DeactivateTemplateProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/schema/DeactivateTemplateProcedureTest.java
index 1034fea..87efb7a 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/schema/DeactivateTemplateProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/schema/DeactivateTemplateProcedureTest.java
@@ -23,10 +23,10 @@
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.confignode.procedure.store.ProcedureType;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/schema/DeleteDatabaseProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/schema/DeleteDatabaseProcedureTest.java
index 7efac44..b12f49d 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/schema/DeleteDatabaseProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/schema/DeleteDatabaseProcedureTest.java
@@ -21,8 +21,8 @@
 
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
 import org.apache.iotdb.confignode.rpc.thrift.TDatabaseSchema;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/schema/UnsetTemplateProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/schema/UnsetTemplateProcedureTest.java
index 61d01bc..b288418 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/schema/UnsetTemplateProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/schema/UnsetTemplateProcedureTest.java
@@ -23,10 +23,10 @@
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.confignode.procedure.store.ProcedureType;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/CreateConsumerProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/CreateConsumerProcedureTest.java
index 357b743..826e778 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/CreateConsumerProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/CreateConsumerProcedureTest.java
@@ -23,8 +23,8 @@
 import org.apache.iotdb.commons.subscription.meta.consumer.ConsumerMeta;
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
 import org.apache.iotdb.confignode.rpc.thrift.TCreateConsumerReq;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/DropConsumerProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/DropConsumerProcedureTest.java
index 22b8fb3..6d9c16a 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/DropConsumerProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/DropConsumerProcedureTest.java
@@ -23,8 +23,8 @@
 import org.apache.iotdb.commons.subscription.meta.consumer.ConsumerMeta;
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
 import org.apache.iotdb.confignode.rpc.thrift.TCloseConsumerReq;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/runtime/ConsumerGroupMetaSyncProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/runtime/ConsumerGroupMetaSyncProcedureTest.java
index 07a693d..74cf390 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/runtime/ConsumerGroupMetaSyncProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/consumer/runtime/ConsumerGroupMetaSyncProcedureTest.java
@@ -20,8 +20,8 @@
 package org.apache.iotdb.confignode.procedure.impl.subscription.consumer.runtime;
 
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/subscription/CreateSubscriptionProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/subscription/CreateSubscriptionProcedureTest.java
index ca7bbd8..3305e58 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/subscription/CreateSubscriptionProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/subscription/CreateSubscriptionProcedureTest.java
@@ -28,8 +28,8 @@
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
 import org.apache.iotdb.confignode.rpc.thrift.TCreatePipeReq;
 import org.apache.iotdb.confignode.rpc.thrift.TSubscribeReq;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/subscription/DropSubscriptionProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/subscription/DropSubscriptionProcedureTest.java
index 2910c72..9519bf2 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/subscription/DropSubscriptionProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/subscription/DropSubscriptionProcedureTest.java
@@ -27,8 +27,8 @@
 import org.apache.iotdb.confignode.procedure.impl.subscription.topic.AlterTopicProcedure;
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
 import org.apache.iotdb.confignode.rpc.thrift.TUnsubscribeReq;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/AlterTopicProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/AlterTopicProcedureTest.java
index 05d889f..b943e4e 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/AlterTopicProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/AlterTopicProcedureTest.java
@@ -21,8 +21,8 @@
 
 import org.apache.iotdb.commons.subscription.meta.topic.TopicMeta;
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/CreateTopicProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/CreateTopicProcedureTest.java
index 2729886..f05e563 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/CreateTopicProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/CreateTopicProcedureTest.java
@@ -21,8 +21,8 @@
 
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
 import org.apache.iotdb.confignode.rpc.thrift.TCreateTopicReq;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/DropTopicProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/DropTopicProcedureTest.java
index 9af5e96..9b9e2fc 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/DropTopicProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/DropTopicProcedureTest.java
@@ -20,8 +20,8 @@
 package org.apache.iotdb.confignode.procedure.impl.subscription.topic;
 
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/runtime/TopicMetaSyncProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/runtime/TopicMetaSyncProcedureTest.java
index 0c5b213..c4bc9d6 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/runtime/TopicMetaSyncProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/subscription/topic/runtime/TopicMetaSyncProcedureTest.java
@@ -20,8 +20,8 @@
 package org.apache.iotdb.confignode.procedure.impl.subscription.topic.runtime;
 
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/AuthOperationProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/AuthOperationProcedureTest.java
index 03eb40f..78a1758 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/AuthOperationProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/AuthOperationProcedureTest.java
@@ -27,8 +27,8 @@
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
 import org.apache.iotdb.confignode.consensus.request.auth.AuthorPlan;
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/CreatePipeProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/CreatePipeProcedureTest.java
index d39a0f1..d607e5b 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/CreatePipeProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/CreatePipeProcedureTest.java
@@ -22,8 +22,8 @@
 import org.apache.iotdb.commons.sync.PipeStatus;
 import org.apache.iotdb.commons.sync.TsFilePipeInfo;
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/DropPipeProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/DropPipeProcedureTest.java
index a19e7c3..e4fe40a 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/DropPipeProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/DropPipeProcedureTest.java
@@ -20,8 +20,8 @@
 package org.apache.iotdb.confignode.procedure.impl.sync;
 
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/StartPipeProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/StartPipeProcedureTest.java
index 7d831e1..a40eaa6 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/StartPipeProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/StartPipeProcedureTest.java
@@ -22,8 +22,8 @@
 import org.apache.iotdb.commons.sync.PipeStatus;
 import org.apache.iotdb.commons.sync.TsFilePipeInfo;
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/StopPipeProcedureTest.java b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/StopPipeProcedureTest.java
index 37750bd..978fb9c 100644
--- a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/StopPipeProcedureTest.java
+++ b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/sync/StopPipeProcedureTest.java
@@ -22,8 +22,8 @@
 import org.apache.iotdb.commons.sync.PipeStatus;
 import org.apache.iotdb.commons.sync.TsFilePipeInfo;
 import org.apache.iotdb.confignode.procedure.store.ProcedureFactory;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Test;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/consensus/pom.xml b/iotdb-core/consensus/pom.xml
index e149e62..981f711 100644
--- a/iotdb-core/consensus/pom.xml
+++ b/iotdb-core/consensus/pom.xml
@@ -118,9 +118,9 @@
             <artifactId>jsr305</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git a/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/iot/ReplicateTest.java b/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/iot/ReplicateTest.java
index 6a63654..d758af6 100644
--- a/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/iot/ReplicateTest.java
+++ b/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/iot/ReplicateTest.java
@@ -31,9 +31,9 @@
 import org.apache.iotdb.consensus.exception.ConsensusException;
 import org.apache.iotdb.consensus.iot.util.TestEntry;
 import org.apache.iotdb.consensus.iot.util.TestStateMachine;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
 import org.apache.ratis.util.FileUtils;
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/iot/util/TestEntry.java b/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/iot/util/TestEntry.java
index 473244a..34680af 100644
--- a/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/iot/util/TestEntry.java
+++ b/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/iot/util/TestEntry.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.consensus.common.Peer;
 import org.apache.iotdb.consensus.common.request.IoTConsensusRequest;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
+
+import org.apache.tsfile.utils.PublicBAOS;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/pom.xml b/iotdb-core/datanode/pom.xml
index 7b9e0e6..b8ecee6 100644
--- a/iotdb-core/datanode/pom.xml
+++ b/iotdb-core/datanode/pom.xml
@@ -45,14 +45,14 @@
             <version>1.3.2-SNAPSHOT</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>common</artifactId>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/iotdb-core/datanode/src/main/codegen/templates/ModeAccumulator.ftl b/iotdb-core/datanode/src/main/codegen/templates/ModeAccumulator.ftl
index 3db85c7..497f164 100644
--- a/iotdb-core/datanode/src/main/codegen/templates/ModeAccumulator.ftl
+++ b/iotdb-core/datanode/src/main/codegen/templates/ModeAccumulator.ftl
@@ -28,14 +28,14 @@
 import com.google.common.collect.ImmutableList;
 import org.apache.commons.collections4.comparators.ComparatorChain;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
diff --git a/iotdb-core/datanode/src/main/codegen/templates/abstractVariationWindow.ftl b/iotdb-core/datanode/src/main/codegen/templates/abstractVariationWindow.ftl
index 629e871..e99edd9 100644
--- a/iotdb-core/datanode/src/main/codegen/templates/abstractVariationWindow.ftl
+++ b/iotdb-core/datanode/src/main/codegen/templates/abstractVariationWindow.ftl
@@ -24,9 +24,9 @@
     <@pp.changeOutputFile name="/org/apache/iotdb/db/queryengine/execution/operator/window/${className}.java" />
 package org.apache.iotdb.db.queryengine.execution.operator.window;
 
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
+import org.apache.tsfile.block.column.Column;
 <#if type.dataType == "Binary">
-import org.apache.iotdb.tsfile.utils.Binary;
+import org.apache.tsfile.utils.Binary;
 </#if>
 
 /*
diff --git a/iotdb-core/datanode/src/main/codegen/templates/constantFill.ftl b/iotdb-core/datanode/src/main/codegen/templates/constantFill.ftl
index a306915..f29663b 100644
--- a/iotdb-core/datanode/src/main/codegen/templates/constantFill.ftl
+++ b/iotdb-core/datanode/src/main/codegen/templates/constantFill.ftl
@@ -24,12 +24,12 @@
 package org.apache.iotdb.db.queryengine.execution.operator.process.fill.constant;
 
 import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFill;
-import org.apache.iotdb.tsfile.read.common.block.column.${type.column};
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.RunLengthEncodedColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.read.common.block.column.${type.column};
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.column.RunLengthEncodedColumn;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
 <#if type.dataType == "Binary">
-import org.apache.iotdb.tsfile.utils.Binary;
+import org.apache.tsfile.utils.Binary;
 </#if>
 
 import java.util.Optional;
diff --git a/iotdb-core/datanode/src/main/codegen/templates/linearFill.ftl b/iotdb-core/datanode/src/main/codegen/templates/linearFill.ftl
index 41ffcc9..5c4f823 100644
--- a/iotdb-core/datanode/src/main/codegen/templates/linearFill.ftl
+++ b/iotdb-core/datanode/src/main/codegen/templates/linearFill.ftl
@@ -24,9 +24,9 @@
   <@pp.changeOutputFile name="/org/apache/iotdb/db/queryengine/execution/operator/process/fill/linear/${className}.java" />
 package org.apache.iotdb.db.queryengine.execution.operator.process.fill.linear;
 
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.${type.column};
-import org.apache.iotdb.tsfile.read.common.block.column.${type.column}Builder;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.column.${type.column};
+import org.apache.tsfile.read.common.block.column.${type.column}Builder;
 
 
 import java.util.Optional;
diff --git a/iotdb-core/datanode/src/main/codegen/templates/previousFill.ftl b/iotdb-core/datanode/src/main/codegen/templates/previousFill.ftl
index 7d90da9..c7f3e73 100644
--- a/iotdb-core/datanode/src/main/codegen/templates/previousFill.ftl
+++ b/iotdb-core/datanode/src/main/codegen/templates/previousFill.ftl
@@ -26,13 +26,13 @@
 
 import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFill;
 import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFillFilter;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.${type.column};
-import org.apache.iotdb.tsfile.read.common.block.column.${type.column}Builder;
-import org.apache.iotdb.tsfile.read.common.block.column.RunLengthEncodedColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.column.${type.column};
+import org.apache.tsfile.read.common.block.column.${type.column}Builder;
+import org.apache.tsfile.read.common.block.column.RunLengthEncodedColumn;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
 <#if type.dataType == "Binary">
-  import org.apache.iotdb.tsfile.utils.Binary;
+  import org.apache.tsfile.utils.Binary;
 </#if>
 
 import java.util.Optional;
diff --git a/iotdb-core/datanode/src/main/codegen/templates/variationWindow.ftl b/iotdb-core/datanode/src/main/codegen/templates/variationWindow.ftl
index d961792..f1b6b0d 100644
--- a/iotdb-core/datanode/src/main/codegen/templates/variationWindow.ftl
+++ b/iotdb-core/datanode/src/main/codegen/templates/variationWindow.ftl
@@ -35,7 +35,7 @@
 
 package org.apache.iotdb.db.queryengine.execution.operator.window;
 
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
+import org.apache.tsfile.block.column.Column;
 
 public class ${className} extends AbstractVariation${dataType.dataType?cap_first}Window {
 
diff --git a/iotdb-core/datanode/src/main/codegen/templates/variationWindowManager.ftl b/iotdb-core/datanode/src/main/codegen/templates/variationWindowManager.ftl
index 751faac..6666874 100644
--- a/iotdb-core/datanode/src/main/codegen/templates/variationWindowManager.ftl
+++ b/iotdb-core/datanode/src/main/codegen/templates/variationWindowManager.ftl
@@ -36,11 +36,11 @@
 
 package org.apache.iotdb.db.queryengine.execution.operator.window;
 
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
 <#if dataType.dataType == "Binary">
-import org.apache.iotdb.tsfile.utils.Binary;
+import org.apache.tsfile.utils.Binary;
 </#if>
 
 /*
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/audit/AuditLogger.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/audit/AuditLogger.java
index 6ddcb5d..7c17b1b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/audit/AuditLogger.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/audit/AuditLogger.java
@@ -37,10 +37,10 @@
 import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
 import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertRowStatement;
 import org.apache.iotdb.rpc.IoTDBConnectionException;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/AuthorityChecker.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/AuthorityChecker.java
index de0c62b..d85606d3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/AuthorityChecker.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/AuthorityChecker.java
@@ -38,12 +38,12 @@
 import org.apache.iotdb.db.queryengine.plan.statement.Statement;
 import org.apache.iotdb.db.queryengine.plan.statement.sys.AuthorStatement;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index ac8a2ad..6da3272 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -44,13 +44,13 @@
 import org.apache.iotdb.rpc.BaseRpcTransportFactory;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.ZeroCopyRpcTransportFactory;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSType;
-import org.apache.iotdb.tsfile.utils.FSUtils;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSType;
+import org.apache.tsfile.utils.FSUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -67,7 +67,7 @@
 import java.util.regex.Pattern;
 
 import static org.apache.iotdb.commons.conf.IoTDBConstant.OBJECT_STORAGE_DIR;
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
+import static org.apache.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
 
 public class IoTDBConfig {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index f5cf2d8..aea79ce 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -56,12 +56,12 @@
 import org.apache.iotdb.metrics.utils.NodeType;
 import org.apache.iotdb.rpc.DeepCopyRpcTransportFactory;
 import org.apache.iotdb.rpc.ZeroCopyRpcTransportFactory;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSType;
-import org.apache.iotdb.tsfile.utils.FilePathUtils;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSType;
+import org.apache.tsfile.utils.FilePathUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBStartCheck.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBStartCheck.java
index e366ae8..42995ff 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBStartCheck.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBStartCheck.java
@@ -27,9 +27,9 @@
 import org.apache.iotdb.consensus.ConsensusFactory;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALMode;
 import org.apache.iotdb.db.storageengine.rescon.disk.DirectoryChecker;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.common.conf.TSFileConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/consensus/statemachine/schemaregion/SchemaExecutionVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/consensus/statemachine/schemaregion/SchemaExecutionVisitor.java
index 172b42a..d8b4ff6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/consensus/statemachine/schemaregion/SchemaExecutionVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/consensus/statemachine/schemaregion/SchemaExecutionVisitor.java
@@ -64,11 +64,11 @@
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+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.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/consensus/statemachine/schemaregion/SchemaRegionStateMachine.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/consensus/statemachine/schemaregion/SchemaRegionStateMachine.java
index 3044c08..ee88020 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/consensus/statemachine/schemaregion/SchemaRegionStateMachine.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/consensus/statemachine/schemaregion/SchemaRegionStateMachine.java
@@ -35,8 +35,8 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.ISchemaRegion;
 import org.apache.iotdb.db.tools.schema.SchemaRegionSnapshotParser;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/exception/metadata/DataTypeMismatchException.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/exception/metadata/DataTypeMismatchException.java
index 2d7c351..4482b64 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/exception/metadata/DataTypeMismatchException.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/exception/metadata/DataTypeMismatchException.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.exception.metadata;
 
 import org.apache.iotdb.commons.exception.MetadataException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 public class DataTypeMismatchException extends MetadataException {
   public DataTypeMismatchException(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/runtime/PipePeriodicalJobExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/runtime/PipePeriodicalJobExecutor.java
index 725c301..fb3c87d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/runtime/PipePeriodicalJobExecutor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/runtime/PipePeriodicalJobExecutor.java
@@ -26,8 +26,8 @@
 import org.apache.iotdb.commons.pipe.config.PipeConfig;
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.service.DataNode;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/client/IoTDBDataNodeSyncClientManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/client/IoTDBDataNodeSyncClientManager.java
index 2c346a1..e281555 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/client/IoTDBDataNodeSyncClientManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/client/IoTDBDataNodeSyncClientManager.java
@@ -27,8 +27,8 @@
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.pipe.connector.payload.evolvable.request.PipeTransferDataNodeHandshakeV1Req;
 import org.apache.iotdb.db.pipe.connector.payload.evolvable.request.PipeTransferDataNodeHandshakeV2Req;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/builder/PipeTransferBatchReqBuilder.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/builder/PipeTransferBatchReqBuilder.java
index 73d4005..f7a17f3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/builder/PipeTransferBatchReqBuilder.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/builder/PipeTransferBatchReqBuilder.java
@@ -30,9 +30,9 @@
 import org.apache.iotdb.pipe.api.customizer.parameter.PipeParameters;
 import org.apache.iotdb.pipe.api.event.Event;
 import org.apache.iotdb.pipe.api.event.dml.insertion.TabletInsertionEvent;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferPlanNodeReq.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferPlanNodeReq.java
index 9be2b31..9209473 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferPlanNodeReq.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferPlanNodeReq.java
@@ -24,9 +24,10 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferReq;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletBatchReq.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletBatchReq.java
index be17551..73e1d2b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletBatchReq.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletBatchReq.java
@@ -30,10 +30,11 @@
 import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertRowsStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertTabletStatement;
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferReq;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.record.Tablet;
+
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.record.Tablet;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletBinaryReq.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletBinaryReq.java
index adf1013..ae8da89 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletBinaryReq.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletBinaryReq.java
@@ -30,9 +30,10 @@
 import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertTabletStatement;
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.WALEntry;
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferReq;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletInsertNodeReq.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletInsertNodeReq.java
index 62f5ab2..88fe4d7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletInsertNodeReq.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletInsertNodeReq.java
@@ -29,9 +29,10 @@
 import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertRowStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertTabletStatement;
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferReq;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletRawReq.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletRawReq.java
index ae3449a..e2512fa 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletRawReq.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletRawReq.java
@@ -28,15 +28,15 @@
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferReq;
 import org.apache.iotdb.service.rpc.thrift.TSInsertTabletReq;
 import org.apache.iotdb.session.util.SessionUtils;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/legacy/DeletionPipeData.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/legacy/DeletionPipeData.java
index 463213a..2dde224 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/legacy/DeletionPipeData.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/legacy/DeletionPipeData.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.db.pipe.receiver.protocol.legacy.loader.DeletionLoader;
 import org.apache.iotdb.db.pipe.receiver.protocol.legacy.loader.ILoader;
 import org.apache.iotdb.db.storageengine.dataregion.modification.Deletion;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/legacy/TsFilePipeData.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/legacy/TsFilePipeData.java
index 87de0cd..e688e4c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/legacy/TsFilePipeData.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/legacy/TsFilePipeData.java
@@ -22,7 +22,8 @@
 
 import org.apache.iotdb.db.pipe.receiver.protocol.legacy.loader.ILoader;
 import org.apache.iotdb.db.pipe.receiver.protocol.legacy.loader.TsFileLoader;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/legacy/IoTDBLegacyPipeConnector.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/legacy/IoTDBLegacyPipeConnector.java
index 442a3c6..3f16d35 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/legacy/IoTDBLegacyPipeConnector.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/legacy/IoTDBLegacyPipeConnector.java
@@ -51,10 +51,10 @@
 import org.apache.iotdb.service.rpc.thrift.TSyncIdentityInfo;
 import org.apache.iotdb.service.rpc.thrift.TSyncTransportMetaInfo;
 import org.apache.iotdb.session.pool.SessionPool;
-import org.apache.iotdb.tsfile.write.record.Tablet;
 
 import org.apache.commons.lang3.NotImplementedException;
 import org.apache.thrift.TException;
+import org.apache.tsfile.write.record.Tablet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/opcua/OpcUaConnector.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/opcua/OpcUaConnector.java
index 0ee8b27..5efb800 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/opcua/OpcUaConnector.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/opcua/OpcUaConnector.java
@@ -29,12 +29,12 @@
 import org.apache.iotdb.pipe.api.event.Event;
 import org.apache.iotdb.pipe.api.event.dml.insertion.TabletInsertionEvent;
 import org.apache.iotdb.pipe.api.exception.PipeException;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.record.Tablet;
 
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.record.Tablet;
 import org.eclipse.milo.opcua.sdk.server.OpcUaServer;
 import org.eclipse.milo.opcua.sdk.server.model.nodes.objects.BaseEventTypeNode;
 import org.eclipse.milo.opcua.stack.core.Identifiers;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/thrift/sync/IoTDBDataNodeSyncConnector.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/thrift/sync/IoTDBDataNodeSyncConnector.java
index 679b121..378e6f7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/thrift/sync/IoTDBDataNodeSyncConnector.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/thrift/sync/IoTDBDataNodeSyncConnector.java
@@ -35,8 +35,8 @@
 import org.apache.iotdb.pipe.api.exception.PipeException;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferResp;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/thrift/sync/IoTDBDataRegionSyncConnector.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/thrift/sync/IoTDBDataRegionSyncConnector.java
index 766c5fc..7c19f9f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/thrift/sync/IoTDBDataRegionSyncConnector.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/thrift/sync/IoTDBDataRegionSyncConnector.java
@@ -45,8 +45,8 @@
 import org.apache.iotdb.pipe.api.exception.PipeException;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferResp;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/thrift/sync/IoTDBSchemaRegionConnector.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/thrift/sync/IoTDBSchemaRegionConnector.java
index aacf2e7..00ae986 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/thrift/sync/IoTDBSchemaRegionConnector.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/thrift/sync/IoTDBSchemaRegionConnector.java
@@ -33,8 +33,8 @@
 import org.apache.iotdb.pipe.api.exception.PipeException;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferResp;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/websocket/WebSocketConnectorServer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/websocket/WebSocketConnectorServer.java
index 4917874..441bc04 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/websocket/WebSocketConnectorServer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/websocket/WebSocketConnectorServer.java
@@ -24,10 +24,10 @@
 import org.apache.iotdb.db.pipe.event.common.tablet.PipeRawTabletInsertionEvent;
 import org.apache.iotdb.pipe.api.event.Event;
 import org.apache.iotdb.pipe.api.exception.PipeException;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
 
 import org.apache.commons.collections4.BidiMap;
 import org.apache.commons.collections4.bidimap.DualTreeBidiMap;
+import org.apache.tsfile.exception.NotImplementedException;
 import org.java_websocket.WebSocket;
 import org.java_websocket.handshake.ClientHandshake;
 import org.java_websocket.server.WebSocketServer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeBinaryTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeBinaryTransformer.java
index 70d4c36..990123c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeBinaryTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeBinaryTransformer.java
@@ -21,13 +21,13 @@
 
 public class PipeBinaryTransformer {
 
-  public static org.apache.iotdb.tsfile.utils.Binary transformToBinary(
+  public static org.apache.tsfile.utils.Binary transformToBinary(
       org.apache.iotdb.pipe.api.type.Binary binary) {
-    return binary == null ? null : new org.apache.iotdb.tsfile.utils.Binary(binary.getValues());
+    return binary == null ? null : new org.apache.tsfile.utils.Binary(binary.getValues());
   }
 
   public static org.apache.iotdb.pipe.api.type.Binary transformToPipeBinary(
-      org.apache.iotdb.tsfile.utils.Binary binary) {
+      org.apache.tsfile.utils.Binary binary) {
     return binary == null ? null : new org.apache.iotdb.pipe.api.type.Binary(binary.getValues());
   }
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeDataTypeTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeDataTypeTransformer.java
index 280062f..41ffd7f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeDataTypeTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeDataTypeTransformer.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.pipe.event.common.row;
 
 import org.apache.iotdb.pipe.api.type.Type;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeResetTabletRow.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeResetTabletRow.java
index ee0a5cb..763e3d4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeResetTabletRow.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/row/PipeResetTabletRow.java
@@ -19,10 +19,10 @@
 
 package org.apache.iotdb.db.pipe.event.common.row;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 /**
  * The pipe framework will reset a new {@link Tablet} when this kind of {@link PipeRow} is
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 eb87228..0296935 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
@@ -22,11 +22,12 @@
 import org.apache.iotdb.pipe.api.access.Row;
 import org.apache.iotdb.pipe.api.exception.PipeParameterNotValidException;
 import org.apache.iotdb.pipe.api.type.Type;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+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 java.util.Arrays;
 import java.util.List;
@@ -100,13 +101,13 @@
   @Override
   public org.apache.iotdb.pipe.api.type.Binary getBinary(int columnIndex) {
     return PipeBinaryTransformer.transformToPipeBinary(
-        ((org.apache.iotdb.tsfile.utils.Binary[]) valueColumns[columnIndex])[rowIndex]);
+        ((org.apache.tsfile.utils.Binary[]) valueColumns[columnIndex])[rowIndex]);
   }
 
   @Override
   public String getString(int columnIndex) {
-    final org.apache.iotdb.tsfile.utils.Binary binary =
-        ((org.apache.iotdb.tsfile.utils.Binary[]) valueColumns[columnIndex])[rowIndex];
+    final org.apache.tsfile.utils.Binary binary =
+        ((org.apache.tsfile.utils.Binary[]) valueColumns[columnIndex])[rowIndex];
     return binary == null ? null : binary.getStringValue(TSFileConfig.STRING_CHARSET);
   }
 
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 6080928..bf2d165 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
@@ -27,8 +27,9 @@
 import org.apache.iotdb.pipe.api.collector.RowCollector;
 import org.apache.iotdb.pipe.api.event.dml.insertion.TabletInsertionEvent;
 import org.apache.iotdb.pipe.api.exception.PipeException;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/schema/PipeSchemaRegionSnapshotEvent.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/schema/PipeSchemaRegionSnapshotEvent.java
index bef5f93..541f0d4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/schema/PipeSchemaRegionSnapshotEvent.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/schema/PipeSchemaRegionSnapshotEvent.java
@@ -26,8 +26,8 @@
 import org.apache.iotdb.db.pipe.resource.PipeResourceManager;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/schema/PipeSchemaRegionWritePlanEvent.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/schema/PipeSchemaRegionWritePlanEvent.java
index 96892c7..6e94438 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/schema/PipeSchemaRegionWritePlanEvent.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/schema/PipeSchemaRegionWritePlanEvent.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.commons.pipe.task.meta.PipeTaskMeta;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.nio.ByteBuffer;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tablet/PipeInsertNodeTabletInsertionEvent.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tablet/PipeInsertNodeTabletInsertionEvent.java
index 23bd0b4..c7821e4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tablet/PipeInsertNodeTabletInsertionEvent.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tablet/PipeInsertNodeTabletInsertionEvent.java
@@ -34,9 +34,9 @@
 import org.apache.iotdb.pipe.api.collector.RowCollector;
 import org.apache.iotdb.pipe.api.event.dml.insertion.TabletInsertionEvent;
 import org.apache.iotdb.pipe.api.exception.PipeException;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.write.record.Tablet;
 
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+import org.apache.tsfile.write.record.Tablet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tablet/PipeRawTabletInsertionEvent.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tablet/PipeRawTabletInsertionEvent.java
index 9ccf707..dccfd0e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tablet/PipeRawTabletInsertionEvent.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tablet/PipeRawTabletInsertionEvent.java
@@ -30,7 +30,8 @@
 import org.apache.iotdb.pipe.api.access.Row;
 import org.apache.iotdb.pipe.api.collector.RowCollector;
 import org.apache.iotdb.pipe.api.event.dml.insertion.TabletInsertionEvent;
-import org.apache.iotdb.tsfile.write.record.Tablet;
+
+import org.apache.tsfile.write.record.Tablet;
 
 import java.util.Objects;
 import java.util.function.BiConsumer;
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 0e13408..750a77d 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
@@ -31,13 +31,13 @@
 import org.apache.iotdb.pipe.api.access.Row;
 import org.apache.iotdb.pipe.api.collector.RowCollector;
 import org.apache.iotdb.pipe.api.event.dml.insertion.TabletInsertionEvent;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+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.MeasurementSchema;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/TsFileInsertionDataContainer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/TsFileInsertionDataContainer.java
index 0fc2462..1c1f0d0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/TsFileInsertionDataContainer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/TsFileInsertionDataContainer.java
@@ -30,19 +30,19 @@
 import org.apache.iotdb.db.pipe.resource.tsfile.PipeTsFileResourceManager;
 import org.apache.iotdb.pipe.api.event.dml.insertion.TabletInsertionEvent;
 import org.apache.iotdb.pipe.api.exception.PipeException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TsFileDeviceIterator;
-import org.apache.iotdb.tsfile.read.TsFileReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.record.Tablet;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.read.TsFileDeviceIterator;
+import org.apache.tsfile.read.TsFileReader;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.expression.IExpression;
+import org.apache.tsfile.read.expression.impl.BinaryExpression;
+import org.apache.tsfile.read.expression.impl.GlobalTimeExpression;
+import org.apache.tsfile.read.filter.factory.TimeFilterApi;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.record.Tablet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
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 908672c..1e028ae 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
@@ -21,17 +21,18 @@
 
 import org.apache.iotdb.commons.pipe.config.PipeConfig;
 import org.apache.iotdb.pipe.api.exception.PipeException;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TsFileReader;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.TsFileReader;
+import org.apache.tsfile.read.common.Field;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.read.common.RowRecord;
+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.MeasurementSchema;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/DataRegionListeningFilter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/DataRegionListeningFilter.java
index 4ed530e..fa61733 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/DataRegionListeningFilter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/DataRegionListeningFilter.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.commons.pipe.task.PipeTask;
 import org.apache.iotdb.db.storageengine.dataregion.DataRegion;
 import org.apache.iotdb.pipe.api.customizer.parameter.PipeParameters;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Arrays;
 import java.util.HashSet;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/IoTDBDataRegionExtractor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/IoTDBDataRegionExtractor.java
index c4d5ac6..c8b4d2b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/IoTDBDataRegionExtractor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/IoTDBDataRegionExtractor.java
@@ -39,8 +39,8 @@
 import org.apache.iotdb.pipe.api.event.dml.insertion.TabletInsertionEvent;
 import org.apache.iotdb.pipe.api.event.dml.insertion.TsFileInsertionEvent;
 import org.apache.iotdb.pipe.api.exception.PipeException;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/realtime/PipeRealtimeDataRegionExtractor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/realtime/PipeRealtimeDataRegionExtractor.java
index a10a5f7..c939a90 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/realtime/PipeRealtimeDataRegionExtractor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/realtime/PipeRealtimeDataRegionExtractor.java
@@ -44,8 +44,8 @@
 import org.apache.iotdb.pipe.api.customizer.parameter.PipeParameters;
 import org.apache.iotdb.pipe.api.event.Event;
 import org.apache.iotdb.pipe.api.exception.PipeParameterNotValidException;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/realtime/epoch/TsFileEpochManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/realtime/epoch/TsFileEpochManager.java
index 175a52a..7c4e5d1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/realtime/epoch/TsFileEpochManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/realtime/epoch/TsFileEpochManager.java
@@ -24,8 +24,8 @@
 import org.apache.iotdb.db.pipe.event.realtime.PipeRealtimeEvent;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertNode;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
 
+import org.apache.tsfile.file.metadata.PlainDeviceID;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/realtime/listener/PipeTimePartitionListener.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/realtime/listener/PipeTimePartitionListener.java
index 5ad614f..b3cff51 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/realtime/listener/PipeTimePartitionListener.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/dataregion/realtime/listener/PipeTimePartitionListener.java
@@ -20,8 +20,8 @@
 package org.apache.iotdb.db.pipe.extractor.dataregion.realtime.listener;
 
 import org.apache.iotdb.db.pipe.extractor.dataregion.realtime.PipeRealtimeDataRegionExtractor;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.checkerframework.checker.nullness.qual.NonNull;
 
 import java.util.HashMap;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/AggregateProcessor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/AggregateProcessor.java
index baa3410..49508f7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/AggregateProcessor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/AggregateProcessor.java
@@ -55,11 +55,12 @@
 import org.apache.iotdb.pipe.api.event.dml.insertion.TabletInsertionEvent;
 import org.apache.iotdb.pipe.api.event.dml.insertion.TsFileInsertionEvent;
 import org.apache.iotdb.pipe.api.exception.PipeException;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/TimeSeriesRuntimeState.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/TimeSeriesRuntimeState.java
index 2247a43..64864e0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/TimeSeriesRuntimeState.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/TimeSeriesRuntimeState.java
@@ -25,9 +25,10 @@
 import org.apache.iotdb.db.pipe.processor.aggregate.window.datastructure.WindowOutput;
 import org.apache.iotdb.db.pipe.processor.aggregate.window.datastructure.WindowState;
 import org.apache.iotdb.db.pipe.processor.aggregate.window.processor.AbstractWindowingProcessor;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/AggregatedResultOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/AggregatedResultOperator.java
index 1d5de46..a792bc0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/AggregatedResultOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/AggregatedResultOperator.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.pipe.processor.aggregate.operator.aggregatedresult;
 
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult.CustomizedReadableIntermediateResults;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Map;
 import java.util.Set;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/AverageOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/AverageOperator.java
index 9d4d42c..226893a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/AverageOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/AverageOperator.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.aggregatedresult.AggregatedResultOperator;
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult.CustomizedReadableIntermediateResults;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Arrays;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/ClearanceFactorOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/ClearanceFactorOperator.java
index b32d70c..d77e49b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/ClearanceFactorOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/ClearanceFactorOperator.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.aggregatedresult.AggregatedResultOperator;
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult.CustomizedReadableIntermediateResults;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Arrays;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/CrestFactorOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/CrestFactorOperator.java
index 299923b..53710e1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/CrestFactorOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/CrestFactorOperator.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.aggregatedresult.AggregatedResultOperator;
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult.CustomizedReadableIntermediateResults;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Arrays;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/FormFactorOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/FormFactorOperator.java
index 7597598..a0e8cac 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/FormFactorOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/FormFactorOperator.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.aggregatedresult.AggregatedResultOperator;
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult.CustomizedReadableIntermediateResults;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Arrays;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/KurtosisOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/KurtosisOperator.java
index 9977c79..efd3025 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/KurtosisOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/KurtosisOperator.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.aggregatedresult.AggregatedResultOperator;
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult.CustomizedReadableIntermediateResults;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Arrays;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/PeakOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/PeakOperator.java
index 7dadcc8..55f6052 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/PeakOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/PeakOperator.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.aggregatedresult.AggregatedResultOperator;
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult.CustomizedReadableIntermediateResults;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Collections;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/PulseFactorOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/PulseFactorOperator.java
index 6ebbf5c..aae6877 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/PulseFactorOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/PulseFactorOperator.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.aggregatedresult.AggregatedResultOperator;
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult.CustomizedReadableIntermediateResults;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Arrays;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/RootMeanSquareOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/RootMeanSquareOperator.java
index da689b5..2937072 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/RootMeanSquareOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/RootMeanSquareOperator.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.aggregatedresult.AggregatedResultOperator;
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult.CustomizedReadableIntermediateResults;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Arrays;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/SkewnessOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/SkewnessOperator.java
index 4ef5000..1fd6172 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/SkewnessOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/SkewnessOperator.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.aggregatedresult.AggregatedResultOperator;
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult.CustomizedReadableIntermediateResults;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Arrays;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/VarianceOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/VarianceOperator.java
index ad0b46e..386618d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/VarianceOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/aggregatedresult/standardstatistics/VarianceOperator.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.aggregatedresult.AggregatedResultOperator;
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult.CustomizedReadableIntermediateResults;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Arrays;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/CustomizedReadableIntermediateResults.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/CustomizedReadableIntermediateResults.java
index 1911fc1..9af6bca 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/CustomizedReadableIntermediateResults.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/CustomizedReadableIntermediateResults.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Map;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/IntermediateResultOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/IntermediateResultOperator.java
index 523d87a..d681918 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/IntermediateResultOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/IntermediateResultOperator.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/sametype/numeric/AbstractSameTypeNumericOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/sametype/numeric/AbstractSameTypeNumericOperator.java
index 9dfa13f..8069c17 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/sametype/numeric/AbstractSameTypeNumericOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/sametype/numeric/AbstractSameTypeNumericOperator.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult.sametype.numeric;
 
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult.IntermediateResultOperator;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/specifictype/doubletype/FractionPoweredSumOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/specifictype/doubletype/FractionPoweredSumOperator.java
index 16cb46c..e80f05e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/specifictype/doubletype/FractionPoweredSumOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/specifictype/doubletype/FractionPoweredSumOperator.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult.specifictype.doubletype;
 
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult.IntermediateResultOperator;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/specifictype/integertype/CountOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/specifictype/integertype/CountOperator.java
index 47f42b8..4e5397f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/specifictype/integertype/CountOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/operator/intermediateresult/specifictype/integertype/CountOperator.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult.specifictype.integertype;
 
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult.IntermediateResultOperator;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/datastructure/TimeSeriesWindow.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/datastructure/TimeSeriesWindow.java
index 8139b5e..511d9a6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/datastructure/TimeSeriesWindow.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/datastructure/TimeSeriesWindow.java
@@ -23,10 +23,10 @@
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult.CustomizedReadableIntermediateResults;
 import org.apache.iotdb.db.pipe.processor.aggregate.operator.intermediateresult.IntermediateResultOperator;
 import org.apache.iotdb.db.pipe.processor.aggregate.window.processor.AbstractWindowingProcessor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/datastructure/WindowOutput.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/datastructure/WindowOutput.java
index 0622bb8..797705c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/datastructure/WindowOutput.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/datastructure/WindowOutput.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.pipe.processor.aggregate.window.datastructure;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Map;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/processor/AbstractSimpleTimeWindowingProcessor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/processor/AbstractSimpleTimeWindowingProcessor.java
index aea23c9..b74cbb0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/processor/AbstractSimpleTimeWindowingProcessor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/processor/AbstractSimpleTimeWindowingProcessor.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.db.pipe.processor.aggregate.window.datastructure.TimeSeriesWindow;
 import org.apache.iotdb.db.pipe.processor.aggregate.window.datastructure.WindowOutput;
 import org.apache.iotdb.db.pipe.processor.aggregate.window.datastructure.WindowState;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.List;
 import java.util.Set;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/processor/AbstractWindowingProcessor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/processor/AbstractWindowingProcessor.java
index bdcca8d..7f8d1ba 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/processor/AbstractWindowingProcessor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/processor/AbstractWindowingProcessor.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.db.pipe.processor.aggregate.window.datastructure.TimeSeriesWindow;
 import org.apache.iotdb.db.pipe.processor.aggregate.window.datastructure.WindowOutput;
 import org.apache.iotdb.db.pipe.processor.aggregate.window.datastructure.WindowState;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.io.DataOutputStream;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/processor/TumblingWindowingProcessor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/processor/TumblingWindowingProcessor.java
index 4d7f8ba..cfaca46 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/processor/TumblingWindowingProcessor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/window/processor/TumblingWindowingProcessor.java
@@ -27,7 +27,8 @@
 import org.apache.iotdb.pipe.api.customizer.configuration.PipeProcessorRuntimeConfiguration;
 import org.apache.iotdb.pipe.api.customizer.parameter.PipeParameterValidator;
 import org.apache.iotdb.pipe.api.customizer.parameter.PipeParameters;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/downsampling/DownSamplingProcessor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/downsampling/DownSamplingProcessor.java
index 225ce14..fd63177 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/downsampling/DownSamplingProcessor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/downsampling/DownSamplingProcessor.java
@@ -34,7 +34,8 @@
 import org.apache.iotdb.pipe.api.event.Event;
 import org.apache.iotdb.pipe.api.event.dml.insertion.TabletInsertionEvent;
 import org.apache.iotdb.pipe.api.event.dml.insertion.TsFileInsertionEvent;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
+
+import org.apache.tsfile.common.constant.TsFileConstant;
 
 import java.util.concurrent.atomic.AtomicReference;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/downsampling/sdt/SwingingDoorTrendingSamplingProcessor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/downsampling/sdt/SwingingDoorTrendingSamplingProcessor.java
index 67591ef..18a453e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/downsampling/sdt/SwingingDoorTrendingSamplingProcessor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/downsampling/sdt/SwingingDoorTrendingSamplingProcessor.java
@@ -29,8 +29,8 @@
 import org.apache.iotdb.pipe.api.customizer.configuration.PipeProcessorRuntimeConfiguration;
 import org.apache.iotdb.pipe.api.customizer.parameter.PipeParameterValidator;
 import org.apache.iotdb.pipe.api.customizer.parameter.PipeParameters;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
 
+import org.apache.tsfile.common.constant.TsFileConstant;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/downsampling/tumbling/TumblingTimeSamplingProcessor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/downsampling/tumbling/TumblingTimeSamplingProcessor.java
index 3ce009d..665f578 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/downsampling/tumbling/TumblingTimeSamplingProcessor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/downsampling/tumbling/TumblingTimeSamplingProcessor.java
@@ -27,8 +27,8 @@
 import org.apache.iotdb.pipe.api.customizer.configuration.PipeProcessorRuntimeConfiguration;
 import org.apache.iotdb.pipe.api.customizer.parameter.PipeParameterValidator;
 import org.apache.iotdb.pipe.api.customizer.parameter.PipeParameters;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
 
+import org.apache.tsfile.common.constant.TsFileConstant;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/airgap/IoTDBAirGapReceiver.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/airgap/IoTDBAirGapReceiver.java
index f2c529b..d07f180 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/airgap/IoTDBAirGapReceiver.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/airgap/IoTDBAirGapReceiver.java
@@ -30,9 +30,9 @@
 import org.apache.iotdb.pipe.api.exception.PipeConnectionException;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferResp;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java
index 7c1ccf0..c47ba81 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java
@@ -75,8 +75,8 @@
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferReq;
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferResp;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipePlanToStatementVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipePlanToStatementVisitor.java
index 1c1317e..44b3d67 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipePlanToStatementVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipePlanToStatementVisitor.java
@@ -45,9 +45,10 @@
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.template.ActivateTemplateStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.template.BatchActivateTemplateStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.view.CreateLogicalViewStatement;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 
 import java.util.ArrayList;
 import java.util.List;
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 82eddbb..827baaf 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
@@ -23,11 +23,11 @@
 import org.apache.iotdb.commons.pipe.config.PipeConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.pipe.agent.PipeAgent;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/memory/PipeMemoryWeighUtil.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/memory/PipeMemoryWeighUtil.java
index f8d8cb9..d93f946 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/memory/PipeMemoryWeighUtil.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/memory/PipeMemoryWeighUtil.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.pipe.resource.memory;
 
 import org.apache.iotdb.db.utils.MemUtils;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.IDeviceID;
 
 import java.util.List;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/tsfile/PipeTsFileResource.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/tsfile/PipeTsFileResource.java
index 3daa0e4..d0f54ed 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/tsfile/PipeTsFileResource.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/tsfile/PipeTsFileResource.java
@@ -23,12 +23,12 @@
 import org.apache.iotdb.db.pipe.resource.PipeResourceManager;
 import org.apache.iotdb.db.pipe.resource.memory.PipeMemoryBlock;
 import org.apache.iotdb.db.pipe.resource.memory.PipeMemoryWeighUtil;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TsFileDeviceIterator;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.read.TsFileDeviceIterator;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/tsfile/PipeTsFileResourceManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/tsfile/PipeTsFileResourceManager.java
index 5dd6384..3b564c0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/tsfile/PipeTsFileResourceManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/tsfile/PipeTsFileResourceManager.java
@@ -27,9 +27,9 @@
 import org.apache.iotdb.db.pipe.resource.PipeResourceManager;
 import org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.IDeviceID;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/mqtt/MPPPublishHandler.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/mqtt/MPPPublishHandler.java
index 86c430a..3fc5027 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/mqtt/MPPPublishHandler.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/mqtt/MPPPublishHandler.java
@@ -37,7 +37,6 @@
 import org.apache.iotdb.db.utils.TimestampPrecisionUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.service.rpc.thrift.TSProtocolVersion;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 import io.moquette.interception.AbstractInterceptHandler;
 import io.moquette.interception.messages.InterceptConnectMessage;
@@ -45,6 +44,7 @@
 import io.moquette.interception.messages.InterceptPublishMessage;
 import io.netty.buffer.ByteBuf;
 import io.netty.handler.codec.mqtt.MqttQoS;
+import org.apache.tsfile.enums.TSDataType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/mqtt/Message.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/mqtt/Message.java
index f0eed5a..5ce81e5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/mqtt/Message.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/mqtt/Message.java
@@ -18,7 +18,7 @@
 
 package org.apache.iotdb.db.protocol.mqtt;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/utils/InsertRowDataUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/utils/InsertRowDataUtils.java
index ba54c77..7b287c1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/utils/InsertRowDataUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/utils/InsertRowDataUtils.java
@@ -19,8 +19,9 @@
 
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.NoValidValueException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
 
 import java.nio.charset.StandardCharsets;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/handler/QueryDataSetHandler.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/handler/QueryDataSetHandler.java
index 025e913..b219475 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/handler/QueryDataSetHandler.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/handler/QueryDataSetHandler.java
@@ -28,10 +28,11 @@
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.sys.AuthorStatement;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import javax.ws.rs.core.Response;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/handler/StatementConstructionHandler.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/handler/StatementConstructionHandler.java
index eb2d32d..3094cb4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/handler/StatementConstructionHandler.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v1/handler/StatementConstructionHandler.java
@@ -24,9 +24,10 @@
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.DataNodeDevicePathCache;
 import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertTabletStatement;
 import org.apache.iotdb.db.utils.TimestampPrecisionUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
 
 import java.nio.charset.StandardCharsets;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/QueryDataSetHandler.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/QueryDataSetHandler.java
index 9780bbb..57179b1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/QueryDataSetHandler.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/QueryDataSetHandler.java
@@ -28,10 +28,11 @@
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.sys.AuthorStatement;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import javax.ws.rs.core.Response;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/RequestValidationHandler.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/RequestValidationHandler.java
index 5c7fe67..9a620da 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/RequestValidationHandler.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/RequestValidationHandler.java
@@ -21,9 +21,9 @@
 import org.apache.iotdb.db.protocol.rest.v2.model.InsertRecordsRequest;
 import org.apache.iotdb.db.protocol.rest.v2.model.InsertTabletRequest;
 import org.apache.iotdb.db.protocol.rest.v2.model.SQL;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/StatementConstructionHandler.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/StatementConstructionHandler.java
index 928f7d7..e24b068 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/StatementConstructionHandler.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/v2/handler/StatementConstructionHandler.java
@@ -29,9 +29,10 @@
 import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertTabletStatement;
 import org.apache.iotdb.db.utils.TimestampPrecisionUtils;
 import org.apache.iotdb.rpc.IoTDBConnectionException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
 
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
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 cd31cb1..fb8fc40 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
@@ -164,26 +164,26 @@
 import org.apache.iotdb.service.rpc.thrift.TSUnsetSchemaTemplateReq;
 import org.apache.iotdb.service.rpc.thrift.TSyncIdentityInfo;
 import org.apache.iotdb.service.rpc.thrift.TSyncTransportMetaInfo;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.TsBlockSerde;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import io.airlift.units.Duration;
 import io.jsonwebtoken.lang.Strings;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.thrift.TException;
+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.read.TimeValuePair;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TsBlockSerde;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.filter.factory.TimeFilterApi;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.TimeDuration;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java
index 1206378..a46158a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java
@@ -228,15 +228,15 @@
 import org.apache.iotdb.rpc.subscription.exception.SubscriptionException;
 import org.apache.iotdb.trigger.api.enums.FailureStrategy;
 import org.apache.iotdb.trigger.api.enums.TriggerEvent;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.record.Tablet;
 
 import com.google.common.collect.ImmutableList;
 import org.apache.thrift.TException;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.NotImplementedException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.RamUsageEstimator;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.record.Tablet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/FragmentInstanceId.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/FragmentInstanceId.java
index ea442dd..375c245 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/FragmentInstanceId.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/FragmentInstanceId.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.common;
 
 import org.apache.iotdb.mpp.rpc.thrift.TFragmentInstanceId;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java
index 56b738b..1cc2f86 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java
@@ -27,7 +27,8 @@
 import org.apache.iotdb.db.queryengine.plan.analyze.TypeProvider;
 import org.apache.iotdb.db.queryengine.plan.analyze.lock.SchemaLockType;
 import org.apache.iotdb.db.queryengine.statistics.QueryPlanStatistics;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
+
+import org.apache.tsfile.read.filter.basic.Filter;
 
 import java.time.ZoneId;
 import java.util.HashMap;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/PlanFragmentId.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/PlanFragmentId.java
index 3de735f..63a8287 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/PlanFragmentId.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/PlanFragmentId.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.queryengine.common;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/QueryId.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/QueryId.java
index 307a7e9..a59ce83 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/QueryId.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/QueryId.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.common;
 
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/SessionInfo.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/SessionInfo.java
index bc3c471..ddfe8da 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/SessionInfo.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/SessionInfo.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.common;
 
 import org.apache.iotdb.commons.conf.IoTDBConstant.ClientVersion;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/ColumnHeader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/ColumnHeader.java
index e7a4cd8..a2589c6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/ColumnHeader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/ColumnHeader.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.common.header;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.nio.ByteBuffer;
 import java.util.Objects;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/ColumnHeaderConstant.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/ColumnHeaderConstant.java
index 6a98af5..ea2fad8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/ColumnHeaderConstant.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/ColumnHeaderConstant.java
@@ -19,9 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.common.header;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/DatasetHeader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/DatasetHeader.java
index c4d6e74..312645b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/DatasetHeader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/DatasetHeader.java
@@ -19,9 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.common.header;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-
 import com.google.common.primitives.Bytes;
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.ArrayList;
 import java.util.BitSet;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/ClusterSchemaTree.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/ClusterSchemaTree.java
index 82ce99c..2af8693 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/ClusterSchemaTree.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/ClusterSchemaTree.java
@@ -38,9 +38,10 @@
 import org.apache.iotdb.db.queryengine.plan.analyze.schema.ISchemaComputation;
 import org.apache.iotdb.db.schemaengine.template.ClusterTemplateManager;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.io.IOException;
 import java.io.InputStream;
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 837553b..35c0e2f 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
@@ -22,7 +22,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.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/IMeasurementSchemaInfo.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/IMeasurementSchemaInfo.java
index e0ab005..7200c9a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/IMeasurementSchemaInfo.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/IMeasurementSchemaInfo.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.queryengine.common.schematree;
 
 import org.apache.iotdb.commons.schema.view.LogicalViewSchema;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.util.Map;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/ISchemaTree.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/ISchemaTree.java
index 7ac1c95..72a646a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/ISchemaTree.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/ISchemaTree.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.List;
 import java.util.Set;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/MeasurementSchemaInfo.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/MeasurementSchemaInfo.java
index 0053817..a8225db 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/MeasurementSchemaInfo.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/MeasurementSchemaInfo.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.queryengine.common.schematree;
 
 import org.apache.iotdb.commons.schema.view.LogicalViewSchema;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.util.Map;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/node/SchemaEntityNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/node/SchemaEntityNode.java
index 79867f5..b877dc9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/node/SchemaEntityNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/node/SchemaEntityNode.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.queryengine.common.schematree.node;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/node/SchemaInternalNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/node/SchemaInternalNode.java
index be2083c..5dc3a2d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/node/SchemaInternalNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/node/SchemaInternalNode.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.queryengine.common.schematree.node;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/node/SchemaMeasurementNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/node/SchemaMeasurementNode.java
index 0e8271d..dcf7f67 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/node/SchemaMeasurementNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/node/SchemaMeasurementNode.java
@@ -21,10 +21,11 @@
 
 import org.apache.iotdb.commons.schema.view.LogicalViewSchema;
 import org.apache.iotdb.db.queryengine.common.schematree.IMeasurementSchemaInfo;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchemaType;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchemaType;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/visitor/SchemaTreeVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/visitor/SchemaTreeVisitor.java
index 7fe9acb..7c84ed7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/visitor/SchemaTreeVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/schematree/visitor/SchemaTreeVisitor.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.db.queryengine.common.schematree.node.SchemaMeasurementNode;
 import org.apache.iotdb.db.queryengine.common.schematree.node.SchemaNode;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.util.ArrayList;
 import java.util.Iterator;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/Accumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/Accumulator.java
index 74e0e12..a2599bc 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/Accumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/Accumulator.java
@@ -19,11 +19,11 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.BitMap;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.utils.BitMap;
 
 public interface Accumulator {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/AccumulatorFactory.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/AccumulatorFactory.java
index 1f8a8e8..a31dc6e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/AccumulatorFactory.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/AccumulatorFactory.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
 import org.apache.iotdb.db.queryengine.plan.expression.binary.CompareBinaryExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.ConstantOperand;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/Aggregator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/Aggregator.java
index 8f6f764..6992d80 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/Aggregator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/Aggregator.java
@@ -22,12 +22,13 @@
 import org.apache.iotdb.db.queryengine.metric.QueryExecutionMetricSet;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationStep;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.BitMap;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.BitMap;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/AvgAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/AvgAccumulator.java
index 66ff521..96d963a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/AvgAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/AvgAccumulator.java
@@ -19,13 +19,13 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.IntegerStatistics;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.BitMap;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.IntegerStatistics;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/CountAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/CountAccumulator.java
index d7e1d62..ad002f1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/CountAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/CountAccumulator.java
@@ -19,11 +19,11 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.BitMap;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.utils.BitMap;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/CountIfAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/CountIfAccumulator.java
index 8638ef6..6c2fb9b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/CountIfAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/CountIfAccumulator.java
@@ -19,11 +19,11 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.BitMap;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.utils.BitMap;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/CountTimeAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/CountTimeAccumulator.java
index a8a7d88..23544d8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/CountTimeAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/CountTimeAccumulator.java
@@ -19,11 +19,11 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.BitMap;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.utils.BitMap;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/ExtremeAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/ExtremeAccumulator.java
index 2ae041c..776e391 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/ExtremeAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/ExtremeAccumulator.java
@@ -19,13 +19,13 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/FirstValueAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/FirstValueAccumulator.java
index 8514f67..0d793d3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/FirstValueAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/FirstValueAccumulator.java
@@ -19,14 +19,14 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/FirstValueDescAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/FirstValueDescAccumulator.java
index 9103cb8..0a249b4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/FirstValueDescAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/FirstValueDescAccumulator.java
@@ -19,9 +19,9 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.utils.BitMap;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.BitMap;
 
 public class FirstValueDescAccumulator extends FirstValueAccumulator {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/LastValueAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/LastValueAccumulator.java
index 6d38324..5ff1978 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/LastValueAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/LastValueAccumulator.java
@@ -19,14 +19,14 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/LastValueDescAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/LastValueDescAccumulator.java
index 714c65e..b81c441 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/LastValueDescAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/LastValueDescAccumulator.java
@@ -19,9 +19,9 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.utils.BitMap;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.BitMap;
 
 public class LastValueDescAccumulator extends LastValueAccumulator {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxByAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxByAccumulator.java
index b5d1ee9..93a68f8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxByAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxByAccumulator.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.tsfile.enums.TSDataType;
 
 public class MaxByAccumulator extends MaxMinByBaseAccumulator {
   protected MaxByAccumulator(TSDataType xDataType, TSDataType yDataType) {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxMinByBaseAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxMinByBaseAccumulator.java
index a4ea49b..1a71c49 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxMinByBaseAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxMinByBaseAccumulator.java
@@ -19,16 +19,16 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.io.ByteArrayOutputStream;
 import java.io.DataOutputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxTimeAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxTimeAccumulator.java
index 81634bb..e4b45a0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxTimeAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxTimeAccumulator.java
@@ -19,11 +19,11 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.BitMap;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.utils.BitMap;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxTimeDescAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxTimeDescAccumulator.java
index b5a7f90..ade2558 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxTimeDescAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxTimeDescAccumulator.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.utils.BitMap;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.utils.BitMap;
 
 public class MaxTimeDescAccumulator extends MaxTimeAccumulator {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxValueAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxValueAccumulator.java
index 15c07ba..60402a8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxValueAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MaxValueAccumulator.java
@@ -19,13 +19,13 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MinByAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MinByAccumulator.java
index 0571efc..802b08b1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MinByAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MinByAccumulator.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.tsfile.enums.TSDataType;
 
 public class MinByAccumulator extends MaxMinByBaseAccumulator {
   protected MinByAccumulator(TSDataType xDataType, TSDataType yDataType) {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MinTimeAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MinTimeAccumulator.java
index a3d0ec9..84d2a53 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MinTimeAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MinTimeAccumulator.java
@@ -19,11 +19,11 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.BitMap;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.utils.BitMap;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MinTimeDescAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MinTimeDescAccumulator.java
index 2d32eee..c608e7b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MinTimeDescAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MinTimeDescAccumulator.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.utils.BitMap;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.utils.BitMap;
 
 public class MinTimeDescAccumulator extends MinTimeAccumulator {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MinValueAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MinValueAccumulator.java
index 14c18e1..461b989 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MinValueAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/MinValueAccumulator.java
@@ -19,13 +19,13 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/SumAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/SumAccumulator.java
index e1d99ef..c948ed1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/SumAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/SumAccumulator.java
@@ -19,13 +19,13 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.IntegerStatistics;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.BitMap;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.IntegerStatistics;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/TimeDurationAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/TimeDurationAccumulator.java
index b0a8dd9..eebd815 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/TimeDurationAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/TimeDurationAccumulator.java
@@ -19,11 +19,11 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.BitMap;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.utils.BitMap;
 
 public class TimeDurationAccumulator implements Accumulator {
   protected long minTime = Long.MAX_VALUE;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/UDAFAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/UDAFAccumulator.java
index 3ba49cd..45ca216 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/UDAFAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/UDAFAccumulator.java
@@ -23,12 +23,6 @@
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDFParametersFactory;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
 import org.apache.iotdb.udf.api.State;
 import org.apache.iotdb.udf.api.UDAF;
 import org.apache.iotdb.udf.api.customizer.config.UDAFConfigurations;
@@ -36,6 +30,12 @@
 import org.apache.iotdb.udf.api.customizer.parameter.UDFParameters;
 import org.apache.iotdb.udf.api.utils.ResultValue;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/VarianceAccumulator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/VarianceAccumulator.java
index 1dfc265..7f7dd1b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/VarianceAccumulator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/VarianceAccumulator.java
@@ -19,14 +19,14 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.util.Arrays;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/slidingwindow/MonotonicQueueSlidingWindowAggregator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/slidingwindow/MonotonicQueueSlidingWindowAggregator.java
index a6aa205..8776ffb 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/slidingwindow/MonotonicQueueSlidingWindowAggregator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/slidingwindow/MonotonicQueueSlidingWindowAggregator.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.db.queryengine.execution.aggregation.Accumulator;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationStep;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
+
+import org.apache.tsfile.block.column.Column;
 
 import java.util.Comparator;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/slidingwindow/SlidingWindowAggregator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/slidingwindow/SlidingWindowAggregator.java
index f54b1d5..1f6eb9c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/slidingwindow/SlidingWindowAggregator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/slidingwindow/SlidingWindowAggregator.java
@@ -23,11 +23,12 @@
 import org.apache.iotdb.db.queryengine.execution.aggregation.Aggregator;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationStep;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
 
 import java.util.Arrays;
 import java.util.Deque;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/slidingwindow/SlidingWindowAggregatorFactory.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/slidingwindow/SlidingWindowAggregatorFactory.java
index 2293c3b..572d41d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/slidingwindow/SlidingWindowAggregatorFactory.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/slidingwindow/SlidingWindowAggregatorFactory.java
@@ -26,9 +26,10 @@
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationStep;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.BytesUtils;
 
 import java.util.Comparator;
 import java.util.EnumMap;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/AggrWindowIterator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/AggrWindowIterator.java
index f370815..b2dfc49 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/AggrWindowIterator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/AggrWindowIterator.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.db.utils.DateTimeUtils;
 import org.apache.iotdb.db.utils.TimestampPrecisionUtils;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
+
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.utils.TimeDuration;
 
 /**
  * This class iteratively generates aggregated time windows.
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/ITimeRangeIterator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/ITimeRangeIterator.java
index e33a053..7433bbd 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/ITimeRangeIterator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/ITimeRangeIterator.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation.timerangeiterator;
 
-import org.apache.iotdb.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.TimeRange;
 
 /**
  * This interface used for iteratively generating aggregated time windows in GROUP BY query.
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/PreAggrWindowIterator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/PreAggrWindowIterator.java
index b3c2866..df07e15 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/PreAggrWindowIterator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/PreAggrWindowIterator.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation.timerangeiterator;
 
-import org.apache.iotdb.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.TimeRange;
 
 /**
  * This class iteratively generates pre-aggregated time windows.
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/PreAggrWindowWithNaturalMonthIterator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/PreAggrWindowWithNaturalMonthIterator.java
index 74c7eed..a99583f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/PreAggrWindowWithNaturalMonthIterator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/PreAggrWindowWithNaturalMonthIterator.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.queryengine.execution.aggregation.timerangeiterator;
 
 import org.apache.iotdb.db.utils.datastructure.TimeSelector;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
+
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.utils.TimeDuration;
 
 public class PreAggrWindowWithNaturalMonthIterator implements ITimeRangeIterator {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/SingleTimeWindowIterator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/SingleTimeWindowIterator.java
index 9b9c809..c6e65d4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/SingleTimeWindowIterator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/SingleTimeWindowIterator.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.queryengine.execution.aggregation.timerangeiterator;
 
-import org.apache.iotdb.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.TimeRange;
 
 /** Used for aggregation with only one time window. i.e. Aggregation without group by. */
 public class SingleTimeWindowIterator implements ITimeRangeIterator {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/TimeRangeIteratorFactory.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/TimeRangeIteratorFactory.java
index 18cd715..8bf06fd 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/TimeRangeIteratorFactory.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/timerangeiterator/TimeRangeIteratorFactory.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.execution.aggregation.timerangeiterator;
 
 import org.apache.iotdb.db.utils.TimestampPrecisionUtils;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
+
+import org.apache.tsfile.utils.TimeDuration;
 
 public class TimeRangeIteratorFactory {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/driver/Driver.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/driver/Driver.java
index 2b69d01..1211df6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/driver/Driver.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/driver/Driver.java
@@ -27,12 +27,12 @@
 import org.apache.iotdb.db.queryengine.execution.schedule.task.DriverTaskId;
 import org.apache.iotdb.db.queryengine.metric.QueryExecutionMetricSet;
 import org.apache.iotdb.db.queryengine.metric.QueryMetricsManager;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 import io.airlift.units.Duration;
+import org.apache.tsfile.read.common.block.TsBlock;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/MPPDataExchangeManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/MPPDataExchangeManager.java
index 0197903..2b59d72 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/MPPDataExchangeManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/MPPDataExchangeManager.java
@@ -49,10 +49,10 @@
 import org.apache.iotdb.mpp.rpc.thrift.TGetDataBlockRequest;
 import org.apache.iotdb.mpp.rpc.thrift.TGetDataBlockResponse;
 import org.apache.iotdb.mpp.rpc.thrift.TNewDataBlockEvent;
-import org.apache.iotdb.tsfile.read.common.block.column.TsBlockSerde;
 
 import org.apache.commons.lang3.Validate;
 import org.apache.thrift.TException;
+import org.apache.tsfile.read.common.block.column.TsBlockSerde;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/SharedTsBlockQueue.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/SharedTsBlockQueue.java
index 4652836..6c556c1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/SharedTsBlockQueue.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/SharedTsBlockQueue.java
@@ -25,12 +25,12 @@
 import org.apache.iotdb.db.queryengine.execution.exchange.source.LocalSourceHandle;
 import org.apache.iotdb.db.queryengine.execution.memory.LocalMemoryManager;
 import org.apache.iotdb.mpp.rpc.thrift.TFragmentInstanceId;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/TsBlockSerdeFactory.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/TsBlockSerdeFactory.java
index f3b960d..e139887 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/TsBlockSerdeFactory.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/TsBlockSerdeFactory.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.queryengine.execution.exchange;
 
-import org.apache.iotdb.tsfile.read.common.block.column.TsBlockSerde;
+import org.apache.tsfile.read.common.block.column.TsBlockSerde;
 
 import java.util.function.Supplier;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/DownStreamChannelLocation.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/DownStreamChannelLocation.java
index 854cf3b..11a13de 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/DownStreamChannelLocation.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/DownStreamChannelLocation.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.mpp.rpc.thrift.TFragmentInstanceId;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/ISink.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/ISink.java
index 14ff08c..90efb0e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/ISink.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/ISink.java
@@ -21,9 +21,9 @@
 
 import org.apache.iotdb.db.queryengine.execution.driver.Driver;
 import org.apache.iotdb.mpp.rpc.thrift.TFragmentInstanceId;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 /**
  * Base interface of {@link ISinkChannel} and {@link ISinkHandle}. This interface defines the
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/LocalSinkChannel.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/LocalSinkChannel.java
index 2fe94bb..5ef7a22 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/LocalSinkChannel.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/LocalSinkChannel.java
@@ -23,10 +23,10 @@
 import org.apache.iotdb.db.queryengine.execution.exchange.SharedTsBlockQueue;
 import org.apache.iotdb.db.queryengine.metric.DataExchangeCostMetricSet;
 import org.apache.iotdb.mpp.rpc.thrift.TFragmentInstanceId;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.read.common.block.TsBlock;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/ShuffleSinkHandle.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/ShuffleSinkHandle.java
index b9bf277..02fcd0b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/ShuffleSinkHandle.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/ShuffleSinkHandle.java
@@ -23,10 +23,10 @@
 import org.apache.iotdb.db.queryengine.execution.exchange.MPPDataExchangeManager;
 import org.apache.iotdb.db.queryengine.metric.DataExchangeCostMetricSet;
 import org.apache.iotdb.mpp.rpc.thrift.TFragmentInstanceId;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.read.common.block.TsBlock;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/SinkChannel.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/SinkChannel.java
index 4290f74..0920eef 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/SinkChannel.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/sink/SinkChannel.java
@@ -34,14 +34,14 @@
 import org.apache.iotdb.mpp.rpc.thrift.TEndOfDataBlockEvent;
 import org.apache.iotdb.mpp.rpc.thrift.TFragmentInstanceId;
 import org.apache.iotdb.mpp.rpc.thrift.TNewDataBlockEvent;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.TsBlockSerde;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.ListenableFuture;
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.TsBlockSerde;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/source/ISourceHandle.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/source/ISourceHandle.java
index c561259..8d4a457 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/source/ISourceHandle.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/source/ISourceHandle.java
@@ -21,9 +21,9 @@
 
 import org.apache.iotdb.commons.exception.IoTDBException;
 import org.apache.iotdb.mpp.rpc.thrift.TFragmentInstanceId;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import java.nio.ByteBuffer;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/source/LocalSourceHandle.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/source/LocalSourceHandle.java
index 7c6b56f..8d3fc9d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/source/LocalSourceHandle.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/source/LocalSourceHandle.java
@@ -26,11 +26,11 @@
 import org.apache.iotdb.db.utils.SetThreadName;
 import org.apache.iotdb.mpp.rpc.thrift.TFragmentInstanceId;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.TsBlockSerde;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.TsBlockSerde;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/source/SourceHandle.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/source/SourceHandle.java
index 78de2ec..40782b9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/source/SourceHandle.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/source/SourceHandle.java
@@ -35,13 +35,13 @@
 import org.apache.iotdb.mpp.rpc.thrift.TFragmentInstanceId;
 import org.apache.iotdb.mpp.rpc.thrift.TGetDataBlockRequest;
 import org.apache.iotdb.mpp.rpc.thrift.TGetDataBlockResponse;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.TsBlockSerde;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.TsBlockSerde;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutor.java
index f5941fa..7d8ddec 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutor.java
@@ -71,8 +71,8 @@
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.trigger.api.enums.TriggerEvent;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/DataNodeQueryContext.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/DataNodeQueryContext.java
index 9331f8e..881ff9d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/DataNodeQueryContext.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/DataNodeQueryContext.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.queryengine.execution.fragment;
 
 import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.Pair;
 
 import javax.annotation.concurrent.GuardedBy;
 
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 e3025bd..36d9173 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
@@ -33,8 +33,8 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.mpp.rpc.thrift.TFetchFragmentInstanceStatisticsResp;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
 
+import org.apache.tsfile.read.filter.basic.Filter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceFailureInfo.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceFailureInfo.java
index a39cdad..dfaf4aa 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceFailureInfo.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceFailureInfo.java
@@ -19,10 +19,9 @@
 
 package org.apache.iotdb.db.queryengine.execution.fragment;
 
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryContext.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryContext.java
index a749aa1..e774cd6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryContext.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryContext.java
@@ -28,7 +28,8 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.utils.datastructure.PatternTreeMapFactory;
 import org.apache.iotdb.db.utils.datastructure.PatternTreeMapFactory.ModsSerializer;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
+
+import org.apache.tsfile.file.metadata.IChunkMetadata;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/AlignedChunkData.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/AlignedChunkData.java
index 4d64bd0..3eb431d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/AlignedChunkData.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/AlignedChunkData.java
@@ -21,24 +21,25 @@
 
 import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
 import org.apache.iotdb.commons.utils.TimePartitionUtils;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
+
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.PageException;
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteForEncodingUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/ChunkData.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/ChunkData.java
index fde2072..a98d1b3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/ChunkData.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/ChunkData.java
@@ -20,12 +20,13 @@
 package org.apache.iotdb.db.queryengine.execution.load;
 
 import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
+
+import org.apache.tsfile.exception.write.PageException;
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/DeletionData.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/DeletionData.java
index 18bb50c..eda84fa 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/DeletionData.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/DeletionData.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.db.storageengine.dataregion.modification.Deletion;
 import org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/LoadTsFileManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/LoadTsFileManager.java
index b1c48f6..1ef706a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/LoadTsFileManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/LoadTsFileManager.java
@@ -39,10 +39,10 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.utils.TsFileResourceUtils;
 import org.apache.iotdb.metrics.utils.MetricLevel;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/NonAlignedChunkData.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/NonAlignedChunkData.java
index 2b5d20b..f116508 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/NonAlignedChunkData.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/NonAlignedChunkData.java
@@ -21,21 +21,22 @@
 
 import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
 import org.apache.iotdb.commons.utils.TimePartitionUtils;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
+
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.exception.write.PageException;
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteForEncodingUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/TsFileData.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/TsFileData.java
index c5df4f3..93d5648 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/TsFileData.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/TsFileData.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.queryengine.execution.load;
 
 import org.apache.iotdb.commons.exception.IllegalPathException;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.exception.write.PageException;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/TsFileSplitter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/TsFileSplitter.java
index 1f479eec..8ddec6c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/TsFileSplitter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/load/TsFileSplitter.java
@@ -24,29 +24,29 @@
 import org.apache.iotdb.db.storageengine.dataregion.modification.Deletion;
 import org.apache.iotdb.db.storageengine.dataregion.modification.Modification;
 import org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.exception.TsFileRuntimeException;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkGroupHeader;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.reader.page.PageReader;
-import org.apache.iotdb.tsfile.read.reader.page.TimePageReader;
-import org.apache.iotdb.tsfile.read.reader.page.ValuePageReader;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.encoding.decoder.Decoder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.TsFileRuntimeException;
+import org.apache.tsfile.file.MetaMarker;
+import org.apache.tsfile.file.header.ChunkGroupHeader;
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.TimeseriesMetadata;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.read.reader.page.PageReader;
+import org.apache.tsfile.read.reader.page.TimePageReader;
+import org.apache.tsfile.read.reader.page.ValuePageReader;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.TsPrimitiveType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/memory/MemoryPool.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/memory/MemoryPool.java
index c43ba99..f319825 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/memory/MemoryPool.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/memory/MemoryPool.java
@@ -21,12 +21,12 @@
 
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.exception.runtime.MemoryLeakException;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import com.google.common.util.concurrent.AbstractFuture;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/AbstractOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/AbstractOperator.java
index c1b716d..44120ba 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/AbstractOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/AbstractOperator.java
@@ -19,9 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.execution.operator;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.read.common.block.TsBlock;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/AggregationUtil.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/AggregationUtil.java
index 36fd4ca..18082ef 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/AggregationUtil.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/AggregationUtil.java
@@ -30,26 +30,27 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationDescriptor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.db.queryengine.statistics.StatisticsManager;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.BooleanColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.DoubleColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.FloatColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.IntColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.LongColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.BooleanColumn;
+import org.apache.tsfile.read.common.block.column.DoubleColumn;
+import org.apache.tsfile.read.common.block.column.FloatColumn;
+import org.apache.tsfile.read.common.block.column.IntColumn;
+import org.apache.tsfile.read.common.block.column.LongColumn;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import static org.apache.iotdb.tsfile.read.common.block.TsBlockUtil.skipPointsOutOfTimeRange;
+import static org.apache.tsfile.read.common.block.TsBlockUtil.skipPointsOutOfTimeRange;
 
 public class AggregationUtil {
   private static final int DEFAULT_MAX_TSBLOCK_SIZE_IN_BYTES =
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/ExplainAnalyzeOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/ExplainAnalyzeOperator.java
index a5ab5a4..3b92b69 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/ExplainAnalyzeOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/ExplainAnalyzeOperator.java
@@ -35,14 +35,14 @@
 import org.apache.iotdb.db.queryengine.statistics.StatisticLine;
 import org.apache.iotdb.db.utils.SetThreadName;
 import org.apache.iotdb.mpp.rpc.thrift.TFetchFragmentInstanceStatisticsResp;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
+import org.apache.tsfile.utils.Binary;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/Operator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/Operator.java
index 0af295e..22c17b5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/Operator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/Operator.java
@@ -19,9 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.execution.operator;
 
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import static com.google.common.util.concurrent.Futures.immediateVoidFuture;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractConsumeAllOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractConsumeAllOperator.java
index 235ee16..c022f7b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractConsumeAllOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractConsumeAllOperator.java
@@ -22,9 +22,9 @@
 import org.apache.iotdb.db.queryengine.execution.operator.AbstractOperator;
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractIntoOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractIntoOperator.java
index 17e1122..a8e5583 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractIntoOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractIntoOperator.java
@@ -31,18 +31,18 @@
 import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertMultiTabletsStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertTabletStatement;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.type.Type;
-import org.apache.iotdb.tsfile.read.common.type.TypeFactory;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
 
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.type.Type;
+import org.apache.tsfile.read.common.type.TypeFactory;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AggregationMergeSortOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AggregationMergeSortOperator.java
index 52d4a6d..acfd4ab 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AggregationMergeSortOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AggregationMergeSortOperator.java
@@ -25,16 +25,16 @@
 import org.apache.iotdb.db.utils.datastructure.MergeSortHeap;
 import org.apache.iotdb.db.utils.datastructure.MergeSortKey;
 import org.apache.iotdb.db.utils.datastructure.SortKey;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.ArrayList;
 import java.util.Comparator;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AggregationOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AggregationOperator.java
index 944e5b8..499ff94 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AggregationOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AggregationOperator.java
@@ -23,10 +23,11 @@
 import org.apache.iotdb.db.queryengine.execution.aggregation.timerangeiterator.ITimeRangeIterator;
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/ColumnInjectOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/ColumnInjectOperator.java
index 8f57bd5..2e66a67 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/ColumnInjectOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/ColumnInjectOperator.java
@@ -22,10 +22,10 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.utils.columngenerator.ColumnGenerator;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 /**
  * This operator can be used to insert a column in TsBlock, the column is generated by
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 77cb489..677b550 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
@@ -26,14 +26,15 @@
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
 import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertMultiTabletsStatement;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.List;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/DeviceViewOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/DeviceViewOperator.java
index e050763..b5680f2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/DeviceViewOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/DeviceViewOperator.java
@@ -21,18 +21,18 @@
 
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.NullColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.RunLengthEncodedColumn;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.BinaryColumnBuilder;
+import org.apache.tsfile.read.common.block.column.NullColumn;
+import org.apache.tsfile.read.common.block.column.RunLengthEncodedColumn;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FillOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FillOperator.java
index e82fb55..84131d0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FillOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FillOperator.java
@@ -22,10 +22,10 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFill;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static java.util.Objects.requireNonNull;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FilterAndProjectOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FilterAndProjectOperator.java
index f62658c6..d7a1bdb 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FilterAndProjectOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FilterAndProjectOperator.java
@@ -29,17 +29,17 @@
 import org.apache.iotdb.db.queryengine.transformation.dag.column.multi.MappableUDFColumnTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ternary.TernaryColumnTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.column.unary.UnaryColumnTransformer;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.ArrayList;
 import java.util.List;
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 240c0f7..cf0b875 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
@@ -25,14 +25,15 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.List;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/LimitOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/LimitOperator.java
index 8393f79..6db1737 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/LimitOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/LimitOperator.java
@@ -21,9 +21,9 @@
 
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static java.util.Objects.requireNonNull;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/LinearFillOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/LinearFillOperator.java
index 4cfad80..7ecf222 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/LinearFillOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/LinearFillOperator.java
@@ -22,10 +22,10 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.execution.operator.process.fill.ILinearFill;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/MergeSortOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/MergeSortOperator.java
index e20a13d..8defe42 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/MergeSortOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/MergeSortOperator.java
@@ -24,14 +24,14 @@
 import org.apache.iotdb.db.utils.datastructure.MergeSortHeap;
 import org.apache.iotdb.db.utils.datastructure.MergeSortKey;
 import org.apache.iotdb.db.utils.datastructure.SortKey;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
 
 import java.util.ArrayList;
 import java.util.Comparator;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/OffsetOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/OffsetOperator.java
index 575369c..816a06d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/OffsetOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/OffsetOperator.java
@@ -21,9 +21,9 @@
 
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static java.util.Objects.requireNonNull;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/ProjectOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/ProjectOperator.java
index 5c4892d..2c03f80 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/ProjectOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/ProjectOperator.java
@@ -21,10 +21,10 @@
 
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/RawDataAggregationOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/RawDataAggregationOperator.java
index db6a89d..21ba333 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/RawDataAggregationOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/RawDataAggregationOperator.java
@@ -26,9 +26,10 @@
 import org.apache.iotdb.db.queryengine.execution.operator.window.IWindow;
 import org.apache.iotdb.db.queryengine.execution.operator.window.IWindowManager;
 import org.apache.iotdb.db.queryengine.execution.operator.window.WindowParameter;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.utils.BitMap;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.BitMap;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/SingleDeviceViewOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/SingleDeviceViewOperator.java
index cf53e00..d5e8266 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/SingleDeviceViewOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/SingleDeviceViewOperator.java
@@ -21,17 +21,17 @@
 
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.NullColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.RunLengthEncodedColumn;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
+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.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.BinaryColumn;
+import org.apache.tsfile.read.common.block.column.NullColumn;
+import org.apache.tsfile.read.common.block.column.RunLengthEncodedColumn;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.List;
 import java.util.Optional;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/SingleInputAggregationOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/SingleInputAggregationOperator.java
index 176a380..50fdff2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/SingleInputAggregationOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/SingleInputAggregationOperator.java
@@ -22,10 +22,10 @@
 import org.apache.iotdb.db.queryengine.execution.aggregation.Aggregator;
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 
 import java.util.List;
 import java.util.concurrent.TimeUnit;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/SlidingWindowAggregationOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/SlidingWindowAggregationOperator.java
index e9c4c8a..0e5e992 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/SlidingWindowAggregationOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/SlidingWindowAggregationOperator.java
@@ -25,9 +25,10 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/SortOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/SortOperator.java
index 13a27bb..3f12a8f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/SortOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/SortOperator.java
@@ -29,14 +29,14 @@
 import org.apache.iotdb.db.utils.sort.MemoryReader;
 import org.apache.iotdb.db.utils.sort.SortBufferManager;
 import org.apache.iotdb.db.utils.sort.SortReader;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TagAggregationOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TagAggregationOperator.java
index 8328150..989ded1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TagAggregationOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TagAggregationOperator.java
@@ -22,15 +22,15 @@
 import org.apache.iotdb.db.queryengine.execution.aggregation.Aggregator;
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TopKOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TopKOperator.java
index e1ae2c2..b8bc207 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TopKOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TopKOperator.java
@@ -24,23 +24,23 @@
 import org.apache.iotdb.db.utils.datastructure.MergeSortHeap;
 import org.apache.iotdb.db.utils.datastructure.MergeSortKey;
 import org.apache.iotdb.db.utils.datastructure.SortKey;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.BooleanColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.DoubleColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.FloatColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.IntColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.LongColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.BinaryColumn;
+import org.apache.tsfile.read.common.block.column.BooleanColumn;
+import org.apache.tsfile.read.common.block.column.DoubleColumn;
+import org.apache.tsfile.read.common.block.column.FloatColumn;
+import org.apache.tsfile.read.common.block.column.IntColumn;
+import org.apache.tsfile.read.common.block.column.LongColumn;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.util.ArrayList;
 import java.util.Comparator;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TransformOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TransformOperator.java
index ac2d9a2..c841db1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TransformOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TransformOperator.java
@@ -36,15 +36,15 @@
 import org.apache.iotdb.db.queryengine.transformation.dag.input.TsBlockInputDataSet;
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFContext;
 import org.apache.iotdb.db.utils.datastructure.TimeSelector;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.time.ZoneId;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/IFill.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/IFill.java
index e443685..e936db8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/IFill.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/IFill.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.execution.operator.process.fill;
 
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
 
 public interface IFill {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/ILinearFill.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/ILinearFill.java
index 6dd3824..101be3e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/ILinearFill.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/ILinearFill.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.execution.operator.process.fill;
 
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
 
 public interface ILinearFill {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/identity/IdentityFill.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/identity/IdentityFill.java
index a49bbce..6dcdb6f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/identity/IdentityFill.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/identity/IdentityFill.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.queryengine.execution.operator.process.fill.identity;
 
 import org.apache.iotdb.db.queryengine.execution.operator.process.fill.IFill;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
 
 public class IdentityFill implements IFill {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/identity/IdentityLinearFill.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/identity/IdentityLinearFill.java
index 72af722..7396a31 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/identity/IdentityLinearFill.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/identity/IdentityLinearFill.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.queryengine.execution.operator.process.fill.identity;
 
 import org.apache.iotdb.db.queryengine.execution.operator.process.fill.ILinearFill;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
 
 public class IdentityLinearFill implements ILinearFill {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/linear/LinearFill.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/linear/LinearFill.java
index 0c534e2..d35ec87 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/linear/LinearFill.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/fill/linear/LinearFill.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.db.queryengine.execution.operator.process.fill.linear;
 
 import org.apache.iotdb.db.queryengine.execution.operator.process.fill.ILinearFill;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.RunLengthEncodedColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.column.RunLengthEncodedColumn;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/FullOuterTimeJoinOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/FullOuterTimeJoinOperator.java
index a829225..52f2fcf 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/FullOuterTimeJoinOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/FullOuterTimeJoinOperator.java
@@ -27,13 +27,13 @@
 import org.apache.iotdb.db.queryengine.execution.operator.process.join.merge.TimeComparator;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
 import org.apache.iotdb.db.utils.datastructure.TimeSelector;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/HorizontallyConcatOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/HorizontallyConcatOperator.java
index 818263a..9cf7180 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/HorizontallyConcatOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/HorizontallyConcatOperator.java
@@ -22,13 +22,14 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.execution.operator.process.AbstractConsumeAllOperator;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/InnerTimeJoinOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/InnerTimeJoinOperator.java
index 77cdedd..63cfb2e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/InnerTimeJoinOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/InnerTimeJoinOperator.java
@@ -24,15 +24,15 @@
 import org.apache.iotdb.db.queryengine.execution.operator.process.ProcessOperator;
 import org.apache.iotdb.db.queryengine.execution.operator.process.join.merge.TimeComparator;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/LeftOuterTimeJoinOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/LeftOuterTimeJoinOperator.java
index 9afef74..f22db68 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/LeftOuterTimeJoinOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/LeftOuterTimeJoinOperator.java
@@ -23,16 +23,16 @@
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.execution.operator.process.ProcessOperator;
 import org.apache.iotdb.db.queryengine.execution.operator.process.join.merge.TimeComparator;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
 
 import java.util.List;
 import java.util.concurrent.TimeUnit;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/ColumnMerger.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/ColumnMerger.java
index 5a19b5b..6b68794 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/ColumnMerger.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/ColumnMerger.java
@@ -19,9 +19,9 @@
 
 package org.apache.iotdb.db.queryengine.execution.operator.process.join.merge;
 
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
 
 /** used to merge columns belonging to same series into one column. */
 public interface ColumnMerger {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/MergeSortComparator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/MergeSortComparator.java
index d92b2a7..c299a36 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/MergeSortComparator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/MergeSortComparator.java
@@ -23,9 +23,9 @@
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
 import org.apache.iotdb.db.queryengine.plan.statement.component.SortItem;
 import org.apache.iotdb.db.utils.datastructure.SortKey;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 import org.apache.commons.collections4.comparators.ComparatorChain;
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.ArrayList;
 import java.util.Comparator;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/MultiColumnMerger.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/MultiColumnMerger.java
index 62b50b8..16328bf 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/MultiColumnMerger.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/MultiColumnMerger.java
@@ -20,11 +20,12 @@
 package org.apache.iotdb.db.queryengine.execution.operator.process.join.merge;
 
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/NonOverlappedMultiColumnMerger.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/NonOverlappedMultiColumnMerger.java
index fd7d1e6..80759e0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/NonOverlappedMultiColumnMerger.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/NonOverlappedMultiColumnMerger.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.db.queryengine.execution.operator.process.join.merge;
 
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
+
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/SingleColumnMerger.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/SingleColumnMerger.java
index 5be353e..0541669 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/SingleColumnMerger.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/merge/SingleColumnMerger.java
@@ -20,11 +20,12 @@
 package org.apache.iotdb.db.queryengine.execution.operator.process.join.merge;
 
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
 
 /** only has one input column. */
 public class SingleColumnMerger implements ColumnMerger {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/AbstractUpdateLastCacheOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/AbstractUpdateLastCacheOperator.java
index a979271..b4ce894 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/AbstractUpdateLastCacheOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/AbstractUpdateLastCacheOperator.java
@@ -26,15 +26,15 @@
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.execution.operator.process.ProcessOperator;
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.DataNodeSchemaCache;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 import javax.annotation.Nullable;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/AlignedUpdateLastCacheOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/AlignedUpdateLastCacheOperator.java
index b695458..9d0d70b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/AlignedUpdateLastCacheOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/AlignedUpdateLastCacheOperator.java
@@ -25,8 +25,9 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.DataNodeSchemaCache;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 /** update last cache for aligned series. */
 public class AlignedUpdateLastCacheOperator extends AbstractUpdateLastCacheOperator {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/AlignedUpdateViewPathLastCacheOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/AlignedUpdateViewPathLastCacheOperator.java
index d72a9cc..9f50cc3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/AlignedUpdateViewPathLastCacheOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/AlignedUpdateViewPathLastCacheOperator.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.DataNodeSchemaCache;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryCollectOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryCollectOperator.java
index a4506cc..b01d267 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryCollectOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryCollectOperator.java
@@ -22,10 +22,10 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.execution.operator.process.ProcessOperator;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryMergeOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryMergeOperator.java
index 59052d7..3daf74e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryMergeOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryMergeOperator.java
@@ -22,13 +22,13 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.execution.operator.process.ProcessOperator;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.RamUsageEstimator;
 
 import java.util.ArrayList;
 import java.util.Comparator;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryOperator.java
index 0efbe5a..2c28dd8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryOperator.java
@@ -22,12 +22,12 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.execution.operator.process.ProcessOperator;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
 
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQuerySortOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQuerySortOperator.java
index 667db2d..9e241c1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQuerySortOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQuerySortOperator.java
@@ -22,13 +22,13 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.execution.operator.process.ProcessOperator;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.ArrayList;
 import java.util.Comparator;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryTransformOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryTransformOperator.java
index 0b87821..9ef31ca 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryTransformOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryTransformOperator.java
@@ -22,10 +22,10 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.execution.operator.process.ProcessOperator;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 
 public class LastQueryTransformOperator implements ProcessOperator {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryUtil.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryUtil.java
index 20ec36f..9852579 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryUtil.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/LastQueryUtil.java
@@ -25,17 +25,17 @@
 import org.apache.iotdb.db.queryengine.execution.aggregation.MaxTimeDescAccumulator;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationStep;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.operator.TimeFilterOperators.TimeGt;
-import org.apache.iotdb.tsfile.read.filter.operator.TimeFilterOperators.TimeGtEq;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.filter.operator.TimeFilterOperators.TimeGt;
+import org.apache.tsfile.read.filter.operator.TimeFilterOperators.TimeGtEq;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/UpdateLastCacheOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/UpdateLastCacheOperator.java
index ae4e58f..6849ff5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/UpdateLastCacheOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/UpdateLastCacheOperator.java
@@ -23,9 +23,10 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.DataNodeSchemaCache;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/UpdateViewPathLastCacheOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/UpdateViewPathLastCacheOperator.java
index 02d0344..d9a7484 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/UpdateViewPathLastCacheOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/last/UpdateViewPathLastCacheOperator.java
@@ -23,8 +23,9 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.DataNodeSchemaCache;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 public class UpdateViewPathLastCacheOperator extends UpdateLastCacheOperator {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/CountGroupByLevelMergeOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/CountGroupByLevelMergeOperator.java
index ab5d755..d5ae9dd 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/CountGroupByLevelMergeOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/CountGroupByLevelMergeOperator.java
@@ -22,13 +22,13 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.execution.operator.process.ProcessOperator;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/CountGroupByLevelScanOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/CountGroupByLevelScanOperator.java
index 46eec74..a4e4b3c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/CountGroupByLevelScanOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/CountGroupByLevelScanOperator.java
@@ -28,16 +28,16 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.ISchemaInfo;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.reader.ISchemaReader;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.Arrays;
 import java.util.HashMap;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/CountMergeOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/CountMergeOperator.java
index 2e3bf8f..328d5f3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/CountMergeOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/CountMergeOperator.java
@@ -22,11 +22,11 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.execution.operator.process.ProcessOperator;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/NodeManageMemoryMergeOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/NodeManageMemoryMergeOperator.java
index 40c2989..c01af75 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/NodeManageMemoryMergeOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/NodeManageMemoryMergeOperator.java
@@ -26,14 +26,14 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.execution.operator.process.ProcessOperator;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.HashSet;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/NodePathsConvertOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/NodePathsConvertOperator.java
index e150585..045f12d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/NodePathsConvertOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/NodePathsConvertOperator.java
@@ -26,13 +26,13 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.execution.operator.process.ProcessOperator;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/NodePathsCountOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/NodePathsCountOperator.java
index 53f3a86..b77b6db 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/NodePathsCountOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/NodePathsCountOperator.java
@@ -24,12 +24,12 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.execution.operator.process.ProcessOperator;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 
 import java.util.HashSet;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaCountOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaCountOperator.java
index b35efd7..28357e5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaCountOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaCountOperator.java
@@ -28,11 +28,11 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.ISchemaRegion;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.ISchemaInfo;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.reader.ISchemaReader;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchMergeOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchMergeOperator.java
index 9273d56..abd7b7a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchMergeOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchMergeOperator.java
@@ -22,13 +22,13 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.execution.operator.process.ProcessOperator;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.BinaryColumn;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchScanOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchScanOperator.java
index 630a084..bf4f6c5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchScanOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchScanOperator.java
@@ -28,12 +28,13 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.schemaengine.schemaregion.ISchemaRegion;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.BinaryColumn;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaQueryMergeOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaQueryMergeOperator.java
index 68cb28c..1f2b609 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaQueryMergeOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaQueryMergeOperator.java
@@ -22,9 +22,9 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.execution.operator.process.ProcessOperator;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaQueryOrderByHeatOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaQueryOrderByHeatOperator.java
index 7da8247..885fba1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaQueryOrderByHeatOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaQueryOrderByHeatOperator.java
@@ -24,12 +24,12 @@
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.execution.operator.process.ProcessOperator;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.ArrayList;
 import java.util.Comparator;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaQueryScanOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaQueryScanOperator.java
index b8f6efb..a897116 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaQueryScanOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaQueryScanOperator.java
@@ -29,13 +29,13 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.ISchemaInfo;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.reader.ISchemaReader;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 
 import java.util.List;
 import java.util.NoSuchElementException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaTsBlockUtil.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaTsBlockUtil.java
index c60b173..a23a532 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaTsBlockUtil.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaTsBlockUtil.java
@@ -19,10 +19,10 @@
 
 package org.apache.iotdb.db.queryengine.execution.operator.schema;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 
 import java.util.ArrayList;
 import java.util.Iterator;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/DeviceSchemaSource.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/DeviceSchemaSource.java
index 6e61de3..f549bfd 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/DeviceSchemaSource.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/DeviceSchemaSource.java
@@ -32,9 +32,10 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.IDeviceSchemaInfo;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.reader.ISchemaReader;
 import org.apache.iotdb.db.schemaengine.template.ClusterTemplateManager;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
+
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/ISchemaSource.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/ISchemaSource.java
index d0a0a36..2a80e10 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/ISchemaSource.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/ISchemaSource.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.ISchemaRegion;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.ISchemaInfo;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.reader.ISchemaReader;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
+
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/LogicalViewSchemaSource.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/LogicalViewSchemaSource.java
index 2ed6095..31736e0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/LogicalViewSchemaSource.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/LogicalViewSchemaSource.java
@@ -33,7 +33,8 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.read.req.SchemaRegionReadPlanFactory;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.ITimeSeriesSchemaInfo;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.reader.ISchemaReader;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
+
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/NodeSchemaSource.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/NodeSchemaSource.java
index 994efa9..3f575c2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/NodeSchemaSource.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/NodeSchemaSource.java
@@ -30,9 +30,10 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.read.req.SchemaRegionReadPlanFactory;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.INodeSchemaInfo;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.reader.ISchemaReader;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
+
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/PathsUsingTemplateSource.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/PathsUsingTemplateSource.java
index ad3feee..131e240 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/PathsUsingTemplateSource.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/PathsUsingTemplateSource.java
@@ -28,11 +28,11 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.read.req.SchemaRegionReadPlanFactory;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.IDeviceSchemaInfo;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.reader.ISchemaReader;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/TimeSeriesSchemaSource.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/TimeSeriesSchemaSource.java
index ae4406c..09a4c99 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/TimeSeriesSchemaSource.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/source/TimeSeriesSchemaSource.java
@@ -34,8 +34,9 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.reader.ISchemaReader;
 import org.apache.iotdb.db.schemaengine.schemaregion.utils.MetaUtils;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.List;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/sink/IdentitySinkOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/sink/IdentitySinkOperator.java
index b605d2a..3c2f7a9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/sink/IdentitySinkOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/sink/IdentitySinkOperator.java
@@ -24,9 +24,9 @@
 import org.apache.iotdb.db.queryengine.execution.exchange.sink.ISinkHandle;
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/sink/ShuffleHelperOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/sink/ShuffleHelperOperator.java
index 1ca32d3..a6a3d3b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/sink/ShuffleHelperOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/sink/ShuffleHelperOperator.java
@@ -23,9 +23,9 @@
 import org.apache.iotdb.db.queryengine.execution.exchange.sink.ISinkHandle;
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import java.util.HashSet;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/sink/SinkOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/sink/SinkOperator.java
index 96a5463..084b8f5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/sink/SinkOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/sink/SinkOperator.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.execution.operator.sink;
 
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
+
+import org.apache.tsfile.read.common.block.TsBlock;
 
 public interface SinkOperator extends Operator {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AbstractDataSourceOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AbstractDataSourceOperator.java
index c68ed73..1d257ee 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AbstractDataSourceOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AbstractDataSourceOperator.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.queryengine.execution.operator.source;
 
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AbstractSeriesAggregationScanOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AbstractSeriesAggregationScanOperator.java
index 6ee4f0e..30260d5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AbstractSeriesAggregationScanOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AbstractSeriesAggregationScanOperator.java
@@ -24,12 +24,13 @@
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.Pair;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AlignedSeriesScanOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AlignedSeriesScanOperator.java
index 29dbcbd..e7341e1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AlignedSeriesScanOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AlignedSeriesScanOperator.java
@@ -25,14 +25,15 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.SeriesScanOptions;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AlignedSeriesScanUtil.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AlignedSeriesScanUtil.java
index a7bd84d..d0b2e3a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AlignedSeriesScanUtil.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AlignedSeriesScanUtil.java
@@ -29,12 +29,13 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.common.DescPriorityMergeReader;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.common.PriorityMergeReader;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.metadata.AlignedTimeSeriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.AlignedTimeSeriesMetadata;
+import org.apache.tsfile.file.metadata.IMetadata;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.reader.IPointReader;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/ExchangeOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/ExchangeOperator.java
index 62cad0f..c3d9572 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/ExchangeOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/ExchangeOperator.java
@@ -22,11 +22,11 @@
 import org.apache.iotdb.db.queryengine.execution.exchange.source.ISourceHandle;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 public class ExchangeOperator implements SourceOperator {
 
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 91f91bb..b45990a 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
@@ -31,16 +31,17 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.chunk.metadata.MemAlignedChunkMetadataLoader;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.chunk.metadata.MemChunkMetadataLoader;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.metadata.AlignedTimeSeriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.reader.IChunkReader;
-import org.apache.iotdb.tsfile.read.reader.IPageReader;
+
+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;
+import org.apache.tsfile.read.reader.IChunkReader;
+import org.apache.tsfile.read.reader.IPageReader;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/LastCacheScanOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/LastCacheScanOperator.java
index e649fee..e21f605 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/LastCacheScanOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/LastCacheScanOperator.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
+
+import org.apache.tsfile.read.common.block.TsBlock;
 
 public class LastCacheScanOperator implements SourceOperator {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanOperator.java
index 0e17309..f1ea420 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanOperator.java
@@ -24,13 +24,14 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.SeriesScanOptions;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java
index 52fba27..ef52fae 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java
@@ -31,23 +31,24 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.common.DescPriorityMergeReader;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.common.PriorityMergeReader;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.IMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockUtil;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.reader.IPageReader;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.read.reader.page.AlignedPageReader;
-import org.apache.iotdb.tsfile.read.reader.series.PaginationController;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.IMetadata;
+import org.apache.tsfile.file.metadata.ITimeSeriesMetadata;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.TsBlockUtil;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.reader.IPageReader;
+import org.apache.tsfile.read.reader.IPointReader;
+import org.apache.tsfile.read.reader.page.AlignedPageReader;
+import org.apache.tsfile.read.reader.series.PaginationController;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.io.IOException;
 import java.io.Serializable;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/ShowQueriesOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/ShowQueriesOperator.java
index 66cd7a8..149ee08 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/ShowQueriesOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/ShowQueriesOperator.java
@@ -25,13 +25,14 @@
 import org.apache.iotdb.db.queryengine.plan.execution.IQueryExecution;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.utils.TimestampPrecisionUtils;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
+
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
+import org.apache.tsfile.utils.BytesUtils;
 
 import java.util.List;
 import java.util.concurrent.TimeUnit;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/AbstractVariationWindow.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/AbstractVariationWindow.java
index dd18409..a4017fa 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/AbstractVariationWindow.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/AbstractVariationWindow.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.execution.operator.window;
 
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 public abstract class AbstractVariationWindow implements IWindow {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/ConditionWindow.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/ConditionWindow.java
index 0c02b3d..7c20fb4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/ConditionWindow.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/ConditionWindow.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.execution.operator.window;
 
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 public class ConditionWindow implements IWindow {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/ConditionWindowManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/ConditionWindowManager.java
index d3ae900..45400e8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/ConditionWindowManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/ConditionWindowManager.java
@@ -22,11 +22,12 @@
 import org.apache.iotdb.db.queryengine.execution.aggregation.AccumulatorFactory;
 import org.apache.iotdb.db.queryengine.execution.aggregation.AccumulatorFactory.KeepEvaluator;
 import org.apache.iotdb.db.queryengine.execution.aggregation.Aggregator;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/CountWindow.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/CountWindow.java
index 46b07ff..64652b7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/CountWindow.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/CountWindow.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.execution.operator.window;
 
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 public class CountWindow implements IWindow {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/CountWindowManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/CountWindowManager.java
index 85d4973..ac3da9e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/CountWindowManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/CountWindowManager.java
@@ -20,11 +20,12 @@
 package org.apache.iotdb.db.queryengine.execution.operator.window;
 
 import org.apache.iotdb.db.queryengine.execution.aggregation.Aggregator;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/IWindow.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/IWindow.java
index 1f83998..9432e55 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/IWindow.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/IWindow.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.execution.operator.window;
 
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 /** Used to customize the window which stipulates where we can calculate aggregation result. */
 public interface IWindow {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/IWindowManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/IWindowManager.java
index 5ef2c4f..c66a3bb 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/IWindowManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/IWindowManager.java
@@ -20,11 +20,12 @@
 package org.apache.iotdb.db.queryengine.execution.operator.window;
 
 import org.apache.iotdb.db.queryengine.execution.aggregation.Aggregator;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
+
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/SessionWindow.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/SessionWindow.java
index 70b31a3..5c28c05 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/SessionWindow.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/SessionWindow.java
@@ -19,9 +19,9 @@
 
 package org.apache.iotdb.db.queryengine.execution.operator.window;
 
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
 
 public class SessionWindow implements IWindow {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/SessionWindowManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/SessionWindowManager.java
index bff850e..a5504a8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/SessionWindowManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/SessionWindowManager.java
@@ -20,10 +20,11 @@
 package org.apache.iotdb.db.queryengine.execution.operator.window;
 
 import org.apache.iotdb.db.queryengine.execution.aggregation.Aggregator;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/TimeWindow.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/TimeWindow.java
index 3f0e16b..0a867e6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/TimeWindow.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/TimeWindow.java
@@ -19,10 +19,10 @@
 
 package org.apache.iotdb.db.queryengine.execution.operator.window;
 
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
 
 public class TimeWindow implements IWindow {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/TimeWindowManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/TimeWindowManager.java
index 67f2e2e..f5558e7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/TimeWindowManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/TimeWindowManager.java
@@ -22,10 +22,11 @@
 import org.apache.iotdb.db.queryengine.execution.aggregation.Aggregator;
 import org.apache.iotdb.db.queryengine.execution.aggregation.timerangeiterator.ITimeRangeIterator;
 import org.apache.iotdb.db.queryengine.execution.operator.AggregationUtil;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockUtil;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.TsBlockUtil;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/VariationWindowManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/VariationWindowManager.java
index 5e601d6..a4e1fec 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/VariationWindowManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/VariationWindowManager.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.queryengine.execution.operator.window;
 
 import org.apache.iotdb.db.queryengine.execution.aggregation.Aggregator;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/VariationWindowParameter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/VariationWindowParameter.java
index 85e28b9..a7414fc 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/VariationWindowParameter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/VariationWindowParameter.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.queryengine.execution.operator.window;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.tsfile.enums.TSDataType;
 
 public class VariationWindowParameter extends WindowParameter {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/WindowManagerFactory.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/WindowManagerFactory.java
index 1e663ac..d165d72 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/WindowManagerFactory.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/window/WindowManagerFactory.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.execution.operator.window;
 
 import org.apache.iotdb.db.queryengine.execution.aggregation.timerangeiterator.ITimeRangeIterator;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
+
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 public class WindowManagerFactory {
 
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 cf73c74..d7e2163 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
@@ -53,11 +53,12 @@
 import org.apache.iotdb.db.queryengine.plan.statement.sys.ExplainAnalyzeStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.sys.ShowQueriesStatement;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.util.ArrayList;
 import java.util.HashMap;
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 2638c29..a5bf031 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
@@ -143,13 +143,13 @@
 import org.apache.iotdb.db.utils.constant.SqlConstant;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
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 a4c451f..010cf8f 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
@@ -55,7 +55,8 @@
 import org.apache.iotdb.db.queryengine.plan.expression.visitor.cartesian.ConcatExpressionWithSuffixPathsVisitor;
 import org.apache.iotdb.db.queryengine.plan.statement.component.ResultColumn;
 import org.apache.iotdb.db.utils.constant.SqlConstant;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
+
+import org.apache.tsfile.common.constant.TsFileConstant;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/ExpressionTypeAnalyzer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/ExpressionTypeAnalyzer.java
index a0c0d5a..49904d6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/ExpressionTypeAnalyzer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/ExpressionTypeAnalyzer.java
@@ -44,8 +44,9 @@
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFInformationInferrer;
 import org.apache.iotdb.db.utils.TypeInferenceUtils;
 import org.apache.iotdb.db.utils.constant.SqlConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.util.Arrays;
 import java.util.HashSet;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/GroupByLevelHelper.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/GroupByLevelHelper.java
index d486218..5f21cd6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/GroupByLevelHelper.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/GroupByLevelHelper.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.exception.sql.SemanticException;
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.ArrayList;
 import java.util.HashMap;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/IAnalysis.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/IAnalysis.java
index ca85161..207dea7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/IAnalysis.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/IAnalysis.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
 import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
 import org.apache.iotdb.db.queryengine.common.header.DatasetHeader;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
+
+import org.apache.tsfile.read.common.block.TsBlock;
 
 public interface IAnalysis {
 
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 640cefb..feb6c92 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
@@ -64,19 +64,19 @@
 import org.apache.iotdb.db.utils.constant.SqlConstant;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReaderTimeseriesMetadataIterator;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.TimeseriesMetadata;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+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.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/PredicateUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/PredicateUtils.java
index ce41726..466ff9f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/PredicateUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/PredicateUtils.java
@@ -40,9 +40,10 @@
 import org.apache.iotdb.db.queryengine.plan.expression.visitor.predicate.PredicatePushIntoScanChecker;
 import org.apache.iotdb.db.queryengine.plan.expression.visitor.predicate.PredicateSimplifier;
 import org.apache.iotdb.db.queryengine.plan.expression.visitor.predicate.ReversePredicateVisitor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.ArrayList;
 import java.util.HashSet;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/SelectIntoUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/SelectIntoUtils.java
index c450ca5..d0c3617 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/SelectIntoUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/SelectIntoUtils.java
@@ -28,8 +28,9 @@
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimeSeriesOperand;
 import org.apache.iotdb.db.queryengine.plan.parser.ASTVisitor;
 import org.apache.iotdb.db.utils.TypeInferenceUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.ArrayList;
 import java.util.HashMap;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedAnalyze.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedAnalyze.java
index 3658419..856476e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedAnalyze.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedAnalyze.java
@@ -38,11 +38,11 @@
 import org.apache.iotdb.db.queryengine.plan.statement.component.SortItem;
 import org.apache.iotdb.db.queryengine.plan.statement.crud.QueryStatement;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedInfo.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedInfo.java
index 1978c11..bd624f2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedInfo.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TemplatedInfo.java
@@ -25,10 +25,11 @@
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimeSeriesOperand;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TypeProvider.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TypeProvider.java
index 0c3bcee..7c38bbd 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TypeProvider.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/TypeProvider.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.plan.analyze;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/DataNodeSchemaCache.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/DataNodeSchemaCache.java
index 0284a62..b81307a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/DataNodeSchemaCache.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/DataNodeSchemaCache.java
@@ -31,10 +31,10 @@
 import org.apache.iotdb.db.queryengine.plan.analyze.schema.ISchemaComputation;
 import org.apache.iotdb.db.schemaengine.template.ClusterTemplateManager;
 import org.apache.iotdb.db.schemaengine.template.ITemplateManager;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
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 f4ed8e8..1ea59da 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
@@ -28,12 +28,12 @@
 import org.apache.iotdb.db.queryengine.plan.analyze.schema.ISchemaComputation;
 import org.apache.iotdb.db.schemaengine.template.ITemplateManager;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import com.github.benmanes.caffeine.cache.Cache;
 import com.github.benmanes.caffeine.cache.Caffeine;
 import com.github.benmanes.caffeine.cache.Weigher;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/SchemaCacheEntry.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/SchemaCacheEntry.java
index 181f0ee..d3d99c2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/SchemaCacheEntry.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/SchemaCacheEntry.java
@@ -23,10 +23,11 @@
 import org.apache.iotdb.db.queryengine.common.schematree.IMeasurementSchemaInfo;
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.lastcache.ILastCacheContainer;
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.lastcache.LastCacheContainer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.util.Map;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/TimeSeriesSchemaCache.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/TimeSeriesSchemaCache.java
index 0f3df8a..c912a7c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/TimeSeriesSchemaCache.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/TimeSeriesSchemaCache.java
@@ -34,10 +34,10 @@
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.dualkeycache.impl.DualKeyCachePolicy;
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.lastcache.DataNodeLastCacheManager;
 import org.apache.iotdb.db.queryengine.plan.analyze.schema.ISchemaComputation;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/DataNodeLastCacheManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/DataNodeLastCacheManager.java
index 88fee64..715f5a7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/DataNodeLastCacheManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/DataNodeLastCacheManager.java
@@ -21,8 +21,8 @@
 
 import org.apache.iotdb.commons.conf.CommonDescriptor;
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.SchemaCacheEntry;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
 
+import org.apache.tsfile.read.TimeValuePair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/ILastCacheContainer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/ILastCacheContainer.java
index de5ffdc..edd0c20 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/ILastCacheContainer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/ILastCacheContainer.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.lastcache;
 
-import org.apache.iotdb.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.TimeValuePair;
 
 /** this interface declares the operations of LastCache data */
 public interface ILastCacheContainer {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/LastCacheContainer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/LastCacheContainer.java
index e028096..8730990 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/LastCacheContainer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/LastCacheContainer.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.lastcache.value.ILastCacheValue;
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.lastcache.value.LastCacheValue;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 /**
  * This class possesses the ILastCacheValue and implements the basic last cache operations.
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/value/ILastCacheValue.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/value/ILastCacheValue.java
index e718f0c..c7782ef 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/value/ILastCacheValue.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/value/ILastCacheValue.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.lastcache.value;
 
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 // this interface declares the simplest storage operation of lastCacheValue
 public interface ILastCacheValue {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/value/LastCacheValue.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/value/LastCacheValue.java
index 6a4410f..c7b48da 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/value/LastCacheValue.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/lastcache/value/LastCacheValue.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.lastcache.value;
 
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 public class LastCacheValue implements ILastCacheValue {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/AutoCreateSchemaExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/AutoCreateSchemaExecutor.java
index 389e106..630ca1f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/AutoCreateSchemaExecutor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/AutoCreateSchemaExecutor.java
@@ -49,12 +49,13 @@
 import org.apache.iotdb.db.schemaengine.template.TemplateAlterOperationType;
 import org.apache.iotdb.db.schemaengine.template.alter.TemplateExtendInfo;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+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.MeasurementSchema;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ClusterSchemaFetchExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ClusterSchemaFetchExecutor.java
index e9f2cdf..84b9354 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ClusterSchemaFetchExecutor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ClusterSchemaFetchExecutor.java
@@ -39,10 +39,11 @@
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.db.utils.SetThreadName;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
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 14957b8..3e1c173 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
@@ -34,11 +34,12 @@
 import org.apache.iotdb.db.schemaengine.template.ClusterTemplateManager;
 import org.apache.iotdb.db.schemaengine.template.ITemplateManager;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+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.MeasurementSchema;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ISchemaAutoCreation.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ISchemaAutoCreation.java
index 9aca5dd..e54e8a3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ISchemaAutoCreation.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ISchemaAutoCreation.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.db.queryengine.plan.analyze.schema;
 
 import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 
 /**
  * This interface defines the required info provided for schema auto creation, which is executed
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ISchemaComputation.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ISchemaComputation.java
index 981ac9c..17ddded 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ISchemaComputation.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ISchemaComputation.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.schema.view.LogicalViewSchema;
 import org.apache.iotdb.db.queryengine.common.schematree.IMeasurementSchemaInfo;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ISchemaFetcher.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ISchemaFetcher.java
index f5f903e..84c6e29 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ISchemaFetcher.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ISchemaFetcher.java
@@ -24,10 +24,11 @@
 import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
 import org.apache.iotdb.db.queryengine.common.schematree.ISchemaTree;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+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 java.util.List;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/NormalSchemaFetcher.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/NormalSchemaFetcher.java
index 06e82aa..3d05dc9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/NormalSchemaFetcher.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/NormalSchemaFetcher.java
@@ -29,8 +29,9 @@
 import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
 import org.apache.iotdb.db.queryengine.common.schematree.ClusterSchemaTree;
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.DataNodeSchemaCache;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/SchemaValidator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/SchemaValidator.java
index 0558d37..967d224 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/SchemaValidator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/SchemaValidator.java
@@ -28,9 +28,10 @@
 import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertMultiTabletsStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertRowsOfOneDeviceStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertRowsStatement;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/TemplateSchemaFetcher.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/TemplateSchemaFetcher.java
index 73350dc..42c73e1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/TemplateSchemaFetcher.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/TemplateSchemaFetcher.java
@@ -27,9 +27,10 @@
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.DataNodeSchemaCache;
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.db.schemaengine.template.alter.TemplateExtendInfo;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.ArrayList;
 import java.util.HashMap;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/IQueryExecution.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/IQueryExecution.java
index 0a92914..914300e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/IQueryExecution.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/IQueryExecution.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.commons.exception.IoTDBException;
 import org.apache.iotdb.db.queryengine.common.header.DatasetHeader;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
+
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import java.nio.ByteBuffer;
 import java.util.Optional;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
index 8446c0b..ea8a3d9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
@@ -50,10 +50,10 @@
 import org.apache.iotdb.mpp.rpc.thrift.TFragmentInstanceId;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.read.common.block.TsBlock;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
index 0fbef69..c0886d9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
@@ -33,13 +33,13 @@
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.TsBlockSerde;
 
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.TsBlockSerde;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigTaskResult.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigTaskResult.java
index c793ed1..cc003e3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigTaskResult.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigTaskResult.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.db.queryengine.common.header.DatasetHeader;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
+
+import org.apache.tsfile.read.common.block.TsBlock;
 
 public class ConfigTaskResult {
   private TSStatusCode statusCode;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigTaskVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigTaskVisitor.java
index 17d0934..b024ea5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigTaskVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigTaskVisitor.java
@@ -156,7 +156,8 @@
 import org.apache.iotdb.db.queryengine.plan.statement.sys.quota.SetThrottleQuotaStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.sys.quota.ShowSpaceQuotaStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.sys.quota.ShowThrottleQuotaStatement;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
+
+import org.apache.tsfile.exception.NotImplementedException;
 
 public class ConfigTaskVisitor extends StatementVisitor<IConfigTask, MPPQueryContext> {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
index 5bd53a2..a470b02 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
@@ -218,13 +218,13 @@
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferResp;
 import org.apache.iotdb.trigger.api.Trigger;
 import org.apache.iotdb.trigger.api.enums.FailureStrategy;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 import org.apache.iotdb.udf.api.UDF;
 
 import com.google.common.util.concurrent.SettableFuture;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.thrift.TException;
 import org.apache.thrift.transport.TTransportException;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/CountDatabaseTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/CountDatabaseTask.java
index 0aa6f8a..507b8ea 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/CountDatabaseTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/CountDatabaseTask.java
@@ -27,11 +27,11 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.CountDatabaseStatement;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 
 import java.util.Collections;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/CountTimeSlotListTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/CountTimeSlotListTask.java
index 6dd140e..acd4426 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/CountTimeSlotListTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/CountTimeSlotListTask.java
@@ -29,11 +29,11 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.CountTimeSlotListStatement;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/GetRegionIdTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/GetRegionIdTask.java
index 60edba7..50e7850 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/GetRegionIdTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/GetRegionIdTask.java
@@ -30,11 +30,11 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.GetRegionIdStatement;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/GetSeriesSlotListTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/GetSeriesSlotListTask.java
index 74cd3c5..d2ca8ed 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/GetSeriesSlotListTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/GetSeriesSlotListTask.java
@@ -30,11 +30,11 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.GetSeriesSlotListStatement;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/GetTimeSlotListTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/GetTimeSlotListTask.java
index 53250f7..621b49a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/GetTimeSlotListTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/GetTimeSlotListTask.java
@@ -32,13 +32,13 @@
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.GetTimeSlotListStatement;
 import org.apache.iotdb.db.utils.DateTimeUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterDetailsTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterDetailsTask.java
index 2fdb116..54f6c5b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterDetailsTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterDetailsTask.java
@@ -30,13 +30,13 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowClusterStatement;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterIdTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterIdTask.java
index ad7a939..3171f0b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterIdTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterIdTask.java
@@ -27,13 +27,13 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.IConfigTask;
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterTask.java
index fa92d7b..7d0c41f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterTask.java
@@ -30,13 +30,13 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowClusterStatement;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowConfigNodesTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowConfigNodesTask.java
index 1678d40..2cf5ed1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowConfigNodesTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowConfigNodesTask.java
@@ -29,12 +29,12 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.IConfigTask;
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.BytesUtils;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowContinuousQueriesTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowContinuousQueriesTask.java
index 69bf652..5bac214 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowContinuousQueriesTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowContinuousQueriesTask.java
@@ -29,14 +29,14 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.IConfigTask;
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
+import org.apache.tsfile.utils.BytesUtils;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowDataNodesTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowDataNodesTask.java
index 457107b..2fb899a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowDataNodesTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowDataNodesTask.java
@@ -30,12 +30,12 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowDataNodesStatement;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.BytesUtils;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowFunctionsTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowFunctionsTask.java
index 878e263..d9d3a6d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowFunctionsTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowFunctionsTask.java
@@ -31,13 +31,13 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.IConfigTask;
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BytesUtils;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowPipePluginsTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowPipePluginsTask.java
index 609ba5a..d3316ee 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowPipePluginsTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowPipePluginsTask.java
@@ -28,13 +28,13 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.IConfigTask;
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BytesUtils;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowRegionTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowRegionTask.java
index 6dfc441..57e8b01 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowRegionTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowRegionTask.java
@@ -32,14 +32,14 @@
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowRegionStatement;
 import org.apache.iotdb.db.utils.DateTimeUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BytesUtils;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowTTLTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowTTLTask.java
index 98f0877..18ef1f5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowTTLTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowTTLTask.java
@@ -28,13 +28,13 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowTTLStatement;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.List;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowTriggersTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowTriggersTask.java
index c709b43..a39ace8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowTriggersTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowTriggersTask.java
@@ -29,12 +29,12 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.trigger.api.enums.TriggerType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.BytesUtils;
 
 import java.nio.ByteBuffer;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowVariablesTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowVariablesTask.java
index 2eca291..2c8e63d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowVariablesTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowVariablesTask.java
@@ -29,13 +29,13 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.IConfigTask;
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/template/ShowNodesInSchemaTemplateTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/template/ShowNodesInSchemaTemplateTask.java
index c201599..c6046d0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/template/ShowNodesInSchemaTemplateTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/template/ShowNodesInSchemaTemplateTask.java
@@ -29,14 +29,14 @@
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.template.ShowNodesInSchemaTemplateStatement;
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.util.List;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/template/ShowPathSetTemplateTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/template/ShowPathSetTemplateTask.java
index 6b769023..5226cb5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/template/ShowPathSetTemplateTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/template/ShowPathSetTemplateTask.java
@@ -29,13 +29,13 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.template.ShowPathSetTemplateStatement;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/template/ShowSchemaTemplateTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/template/ShowSchemaTemplateTask.java
index ab1440d..974e5ad 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/template/ShowSchemaTemplateTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/template/ShowSchemaTemplateTask.java
@@ -29,13 +29,13 @@
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.template.ShowSchemaTemplateStatement;
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/pipe/ShowPipeTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/pipe/ShowPipeTask.java
index 32e504a..55e2e28 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/pipe/ShowPipeTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/pipe/ShowPipeTask.java
@@ -30,13 +30,13 @@
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe.ShowPipesStatement;
 import org.apache.iotdb.db.utils.DateTimeUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/quota/ShowSpaceQuotaTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/quota/ShowSpaceQuotaTask.java
index 149fe20..16c0b6e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/quota/ShowSpaceQuotaTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/quota/ShowSpaceQuotaTask.java
@@ -32,12 +32,12 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.db.queryengine.plan.statement.sys.quota.ShowSpaceQuotaStatement;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.BytesUtils;
 
 import java.util.List;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/quota/ShowThrottleQuotaTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/quota/ShowThrottleQuotaTask.java
index e9a9ced..0af5945 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/quota/ShowThrottleQuotaTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/quota/ShowThrottleQuotaTask.java
@@ -33,12 +33,12 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.db.queryengine.plan.statement.sys.quota.ShowThrottleQuotaStatement;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.BytesUtils;
 
 import java.io.File;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/subscription/ShowSubscriptionTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/subscription/ShowSubscriptionTask.java
index f891fc8..29fe876 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/subscription/ShowSubscriptionTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/subscription/ShowSubscriptionTask.java
@@ -28,12 +28,12 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.subscription.ShowSubscriptionsStatement;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/subscription/ShowTopicsTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/subscription/ShowTopicsTask.java
index 7878755..e121720 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/subscription/ShowTopicsTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/subscription/ShowTopicsTask.java
@@ -28,12 +28,12 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.subscription.ShowTopicsStatement;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/MemorySourceHandle.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/MemorySourceHandle.java
index c17b816..5262601 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/MemorySourceHandle.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/MemorySourceHandle.java
@@ -23,11 +23,11 @@
 import org.apache.iotdb.db.queryengine.execution.exchange.source.ISourceHandle;
 import org.apache.iotdb.mpp.rpc.thrift.TFragmentInstanceId;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.TsBlockSerde;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.TsBlockSerde;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/StatementMemorySource.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/StatementMemorySource.java
index 1e943a8..cc5292f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/StatementMemorySource.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/StatementMemorySource.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.plan.execution.memory;
 
 import org.apache.iotdb.db.queryengine.common.header.DatasetHeader;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
+
+import org.apache.tsfile.read.common.block.TsBlock;
 
 public class StatementMemorySource {
   private final TsBlock tsBlock;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/StatementMemorySourceVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/StatementMemorySourceVisitor.java
index d1a6494..7a37902 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/StatementMemorySourceVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/memory/StatementMemorySourceVisitor.java
@@ -43,11 +43,12 @@
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.template.ShowPathsUsingTemplateStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.sys.ExplainStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.sys.ShowVersionStatement;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
+
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/Expression.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/Expression.java
index 183d65f..48b1b58 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/Expression.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/Expression.java
@@ -54,8 +54,9 @@
 import org.apache.iotdb.db.queryengine.plan.statement.StatementNode;
 import org.apache.iotdb.db.queryengine.transformation.dag.memory.LayerMemoryAssigner;
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFExecutor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ExpressionFactory.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ExpressionFactory.java
index 5b03a3c..58e21ed 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ExpressionFactory.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ExpressionFactory.java
@@ -45,8 +45,9 @@
 import org.apache.iotdb.db.queryengine.plan.expression.unary.LogicNotExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.RegularExpression;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.TimeDuration;
 
 import java.util.Arrays;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/binary/BinaryExpression.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/binary/BinaryExpression.java
index 2f5637d..793e09d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/binary/BinaryExpression.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/binary/BinaryExpression.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
 import org.apache.iotdb.db.queryengine.transformation.dag.memory.LayerMemoryAssigner;
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFExecutor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/leaf/ConstantOperand.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/leaf/ConstantOperand.java
index dff6a39..92a7a7b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/leaf/ConstantOperand.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/leaf/ConstantOperand.java
@@ -23,8 +23,9 @@
 import org.apache.iotdb.db.queryengine.plan.expression.visitor.ExpressionVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
 import org.apache.iotdb.db.queryengine.transformation.dag.memory.LayerMemoryAssigner;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/leaf/LeafOperand.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/leaf/LeafOperand.java
index e85b8af..31d8aa4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/leaf/LeafOperand.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/leaf/LeafOperand.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.db.queryengine.common.NodeRef;
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFExecutor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.time.ZoneId;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/leaf/TimeSeriesOperand.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/leaf/TimeSeriesOperand.java
index 976f327..a05b257 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/leaf/TimeSeriesOperand.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/leaf/TimeSeriesOperand.java
@@ -26,7 +26,8 @@
 import org.apache.iotdb.db.queryengine.plan.expression.visitor.ExpressionVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
 import org.apache.iotdb.db.queryengine.transformation.dag.memory.LayerMemoryAssigner;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/FunctionExpression.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/FunctionExpression.java
index 26f87b9..4a0ff54 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/FunctionExpression.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/FunctionExpression.java
@@ -34,10 +34,11 @@
 import org.apache.iotdb.db.queryengine.transformation.dag.memory.LayerMemoryAssigner;
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFExecutor;
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFInformationInferrer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 import org.apache.iotdb.udf.api.customizer.strategy.AccessStrategy;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+
 import java.io.DataOutputStream;
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/BuiltInScalarFunctionHelper.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/BuiltInScalarFunctionHelper.java
index 18c9847..1e729f9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/BuiltInScalarFunctionHelper.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/BuiltInScalarFunctionHelper.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.Transformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.Map;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/CastFunctionHelper.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/CastFunctionHelper.java
index c3c617b..025fdf0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/CastFunctionHelper.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/CastFunctionHelper.java
@@ -27,8 +27,9 @@
 import org.apache.iotdb.db.queryengine.transformation.dag.column.unary.scalar.CastFunctionColumnTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.Transformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.unary.scalar.CastFunctionTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.type.TypeFactory;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.type.TypeFactory;
 
 import java.util.Map;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/DiffFunctionHelper.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/DiffFunctionHelper.java
index fcd7cd6..b6abcdd 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/DiffFunctionHelper.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/DiffFunctionHelper.java
@@ -27,8 +27,9 @@
 import org.apache.iotdb.db.queryengine.transformation.dag.column.unary.scalar.DiffFunctionColumnTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.Transformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.unary.scalar.DiffFunctionTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.type.TypeFactory;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.type.TypeFactory;
 
 public class DiffFunctionHelper implements BuiltInScalarFunctionHelper {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/ReplaceFunctionHelper.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/ReplaceFunctionHelper.java
index 415acaf..71c75fc 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/ReplaceFunctionHelper.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/ReplaceFunctionHelper.java
@@ -27,8 +27,9 @@
 import org.apache.iotdb.db.queryengine.transformation.dag.column.unary.scalar.ReplaceFunctionColumnTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.Transformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.unary.scalar.ReplaceFunctionTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.type.TypeFactory;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.type.TypeFactory;
 
 import java.util.Map;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/RoundFunctionHelper.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/RoundFunctionHelper.java
index 02ea07c..b94cbe4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/RoundFunctionHelper.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/RoundFunctionHelper.java
@@ -27,8 +27,9 @@
 import org.apache.iotdb.db.queryengine.transformation.dag.column.unary.scalar.RoundFunctionColumnTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.Transformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.unary.scalar.RoundFunctionTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.type.TypeFactory;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.type.TypeFactory;
 
 import java.util.Map;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/SubStringFunctionHelper.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/SubStringFunctionHelper.java
index eabff54..35463d6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/SubStringFunctionHelper.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/builtin/helper/SubStringFunctionHelper.java
@@ -27,8 +27,9 @@
 import org.apache.iotdb.db.queryengine.transformation.dag.column.unary.scalar.SubStringFunctionColumnTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.Transformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.unary.scalar.SubStringFunctionTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.type.TypeFactory;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.type.TypeFactory;
 
 import java.util.LinkedHashMap;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/other/CaseWhenThenExpression.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/other/CaseWhenThenExpression.java
index 41f41d3..cd28e9f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/other/CaseWhenThenExpression.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/other/CaseWhenThenExpression.java
@@ -28,10 +28,10 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
 import org.apache.iotdb.db.queryengine.transformation.dag.memory.LayerMemoryAssigner;
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFExecutor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/other/GroupByTimeExpression.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/other/GroupByTimeExpression.java
index 381474f..21ed618 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/other/GroupByTimeExpression.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/other/GroupByTimeExpression.java
@@ -26,9 +26,10 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
 import org.apache.iotdb.db.queryengine.transformation.dag.memory.LayerMemoryAssigner;
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFExecutor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.TimeDuration;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ternary/BetweenExpression.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ternary/BetweenExpression.java
index b2bbb16..04025bc 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ternary/BetweenExpression.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ternary/BetweenExpression.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
 import org.apache.iotdb.db.queryengine.plan.expression.ExpressionType;
 import org.apache.iotdb.db.queryengine.plan.expression.visitor.ExpressionVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ternary/TernaryExpression.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ternary/TernaryExpression.java
index aa4bbaf..3fb533a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ternary/TernaryExpression.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ternary/TernaryExpression.java
@@ -27,7 +27,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
 import org.apache.iotdb.db.queryengine.transformation.dag.memory.LayerMemoryAssigner;
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFExecutor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/InExpression.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/InExpression.java
index e313a4a..5943b20 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/InExpression.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/InExpression.java
@@ -26,7 +26,8 @@
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimeSeriesOperand;
 import org.apache.iotdb.db.queryengine.plan.expression.multi.FunctionExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.visitor.ExpressionVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.validation.constraints.NotNull;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/IsNullExpression.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/IsNullExpression.java
index 25d0daa..75d55b2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/IsNullExpression.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/IsNullExpression.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
 import org.apache.iotdb.db.queryengine.plan.expression.ExpressionType;
 import org.apache.iotdb.db.queryengine.plan.expression.visitor.ExpressionVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/LikeExpression.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/LikeExpression.java
index 2778549..fdc158a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/LikeExpression.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/LikeExpression.java
@@ -22,15 +22,16 @@
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
 import org.apache.iotdb.db.queryengine.plan.expression.ExpressionType;
 import org.apache.iotdb.db.queryengine.plan.expression.visitor.ExpressionVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.regex.Pattern;
 
-import static org.apache.iotdb.tsfile.utils.RegexUtils.compileRegex;
-import static org.apache.iotdb.tsfile.utils.RegexUtils.parseLikePatternToRegex;
+import static org.apache.tsfile.utils.RegexUtils.compileRegex;
+import static org.apache.tsfile.utils.RegexUtils.parseLikePatternToRegex;
 
 public class LikeExpression extends UnaryExpression {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/RegularExpression.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/RegularExpression.java
index de86da3..39a1baa 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/RegularExpression.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/RegularExpression.java
@@ -22,16 +22,16 @@
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
 import org.apache.iotdb.db.queryengine.plan.expression.ExpressionType;
 import org.apache.iotdb.db.queryengine.plan.expression.visitor.ExpressionVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.regex.Pattern;
 
-import static org.apache.iotdb.tsfile.utils.RegexUtils.compileRegex;
+import static org.apache.tsfile.utils.RegexUtils.compileRegex;
 
 public class RegularExpression extends UnaryExpression {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/UnaryExpression.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/UnaryExpression.java
index aa4fff6..8b06892 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/UnaryExpression.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/UnaryExpression.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
 import org.apache.iotdb.db.queryengine.transformation.dag.memory.LayerMemoryAssigner;
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFExecutor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ColumnTransformerVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ColumnTransformerVisitor.java
index e0c7f18..09da66f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ColumnTransformerVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ColumnTransformerVisitor.java
@@ -69,10 +69,11 @@
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFContext;
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFExecutor;
 import org.apache.iotdb.db.queryengine.transformation.dag.util.TransformUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.type.LongType;
-import org.apache.iotdb.tsfile.read.common.type.Type;
-import org.apache.iotdb.tsfile.read.common.type.TypeFactory;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.type.LongType;
+import org.apache.tsfile.read.common.type.Type;
+import org.apache.tsfile.read.common.type.TypeFactory;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/IntermediateLayerVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/IntermediateLayerVisitor.java
index e968334..fcab260 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/IntermediateLayerVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/IntermediateLayerVisitor.java
@@ -72,9 +72,10 @@
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.unary.TransparentTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFContext;
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFExecutor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.udf.api.customizer.strategy.AccessStrategy;
 
+import org.apache.tsfile.enums.TSDataType;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ReplaceLogicalViewVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ReplaceLogicalViewVisitor.java
index 20a1cbc..23a00a0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ReplaceLogicalViewVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ReplaceLogicalViewVisitor.java
@@ -30,8 +30,9 @@
 import org.apache.iotdb.db.queryengine.plan.expression.unary.UnaryExpression;
 import org.apache.iotdb.db.schemaengine.schemaregion.view.visitor.GetSourcePathsVisitor;
 import org.apache.iotdb.db.schemaengine.schemaregion.view.visitor.TransformToExpressionVisitor;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ReplaceSubTreeWithViewVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ReplaceSubTreeWithViewVisitor.java
index 68ce9c0..7d20546 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ReplaceSubTreeWithViewVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ReplaceSubTreeWithViewVisitor.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.db.queryengine.plan.analyze.Analysis;
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimeSeriesOperand;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 public class ReplaceSubTreeWithViewVisitor extends ReconstructVisitor<Analysis> {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/TemplatedConcatRemoveUnExistentMeasurementVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/TemplatedConcatRemoveUnExistentMeasurementVisitor.java
index 974f10c..682ed41 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/TemplatedConcatRemoveUnExistentMeasurementVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/TemplatedConcatRemoveUnExistentMeasurementVisitor.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.NullOperand;
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimeSeriesOperand;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.util.Map;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/TransformToViewExpressionVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/TransformToViewExpressionVisitor.java
index 57cdbd5..e29b8af 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/TransformToViewExpressionVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/TransformToViewExpressionVisitor.java
@@ -72,7 +72,8 @@
 import org.apache.iotdb.db.queryengine.plan.expression.unary.LogicNotExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.NegationExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.RegularExpression;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/cartesian/BindSchemaForExpressionVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/cartesian/BindSchemaForExpressionVisitor.java
index 275d11e..7383e27 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/cartesian/BindSchemaForExpressionVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/cartesian/BindSchemaForExpressionVisitor.java
@@ -33,7 +33,8 @@
 import org.apache.iotdb.db.queryengine.plan.expression.visitor.CompleteMeasurementSchemaVisitor;
 import org.apache.iotdb.db.schemaengine.schemaregion.view.visitor.TransformToExpressionVisitor;
 import org.apache.iotdb.db.utils.constant.SqlConstant;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/cartesian/ConcatExpressionWithSuffixPathsVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/cartesian/ConcatExpressionWithSuffixPathsVisitor.java
index 2e623ba..3f53190 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/cartesian/ConcatExpressionWithSuffixPathsVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/cartesian/ConcatExpressionWithSuffixPathsVisitor.java
@@ -27,7 +27,8 @@
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimestampOperand;
 import org.apache.iotdb.db.queryengine.plan.expression.multi.FunctionExpression;
 import org.apache.iotdb.db.utils.constant.SqlConstant;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
+
+import org.apache.tsfile.common.constant.TsFileConstant;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertPredicateToFilterVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertPredicateToFilterVisitor.java
index abed770..eb4a5ce 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertPredicateToFilterVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertPredicateToFilterVisitor.java
@@ -41,14 +41,15 @@
 import org.apache.iotdb.db.queryengine.plan.expression.unary.LikeExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.LogicNotExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.RegularExpression;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.read.filter.operator.ValueFilterOperators;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.filter.factory.FilterFactory;
+import org.apache.tsfile.read.filter.factory.ValueFilterApi;
+import org.apache.tsfile.read.filter.operator.ValueFilterOperators;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.util.HashSet;
 import java.util.List;
@@ -56,7 +57,7 @@
 import java.util.Set;
 
 import static com.google.common.base.Preconditions.checkArgument;
-import static org.apache.iotdb.tsfile.read.filter.operator.Not.CONTAIN_NOT_ERR_MSG;
+import static org.apache.tsfile.read.filter.operator.Not.CONTAIN_NOT_ERR_MSG;
 
 public class ConvertPredicateToFilterVisitor
     extends PredicateVisitor<Filter, ConvertPredicateToFilterVisitor.Context> {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertPredicateToTimeFilterVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertPredicateToTimeFilterVisitor.java
index 74df66a..7eace26 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertPredicateToTimeFilterVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertPredicateToTimeFilterVisitor.java
@@ -39,18 +39,19 @@
 import org.apache.iotdb.db.queryengine.plan.expression.unary.LogicNotExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.RegularExpression;
 import org.apache.iotdb.db.utils.TimestampPrecisionUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.filter.factory.FilterFactory;
+import org.apache.tsfile.read.filter.factory.TimeFilterApi;
+import org.apache.tsfile.utils.TimeDuration;
 
 import java.util.LinkedHashSet;
 import java.util.Set;
 import java.util.TimeZone;
 
 import static com.google.common.base.Preconditions.checkArgument;
-import static org.apache.iotdb.tsfile.read.filter.operator.Not.CONTAIN_NOT_ERR_MSG;
+import static org.apache.tsfile.read.filter.operator.Not.CONTAIN_NOT_ERR_MSG;
 
 public class ConvertPredicateToTimeFilterVisitor extends PredicateVisitor<Filter, Void> {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/PredicatePushIntoScanChecker.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/PredicatePushIntoScanChecker.java
index 8789d93..f692e27 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/PredicatePushIntoScanChecker.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/PredicatePushIntoScanChecker.java
@@ -38,7 +38,7 @@
 import org.apache.iotdb.db.queryengine.plan.expression.unary.LogicNotExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.RegularExpression;
 
-import static org.apache.iotdb.tsfile.read.filter.operator.Not.CONTAIN_NOT_ERR_MSG;
+import static org.apache.tsfile.read.filter.operator.Not.CONTAIN_NOT_ERR_MSG;
 
 public class PredicatePushIntoScanChecker extends PredicateVisitor<Boolean, Void> {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/optimization/LimitOffsetPushDown.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/optimization/LimitOffsetPushDown.java
index 4cd62ae..36cc132 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/optimization/LimitOffsetPushDown.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/optimization/LimitOffsetPushDown.java
@@ -43,7 +43,8 @@
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
 import org.apache.iotdb.db.queryengine.plan.statement.crud.QueryStatement;
 import org.apache.iotdb.db.utils.DateTimeUtils;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
+
+import org.apache.tsfile.utils.TimeDuration;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/ASTVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/ASTVisitor.java
index 92cb1ad..39f1004 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/ASTVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/ASTVisitor.java
@@ -209,16 +209,16 @@
 import org.apache.iotdb.db.utils.constant.SqlConstant;
 import org.apache.iotdb.trigger.api.enums.TriggerEvent;
 import org.apache.iotdb.trigger.api.enums.TriggerType;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
 
 import com.google.common.collect.ImmutableSet;
 import org.antlr.v4.runtime.tree.TerminalNode;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.common.constant.TsFileConstant;
+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.read.common.TimeRange;
+import org.apache.tsfile.utils.TimeDuration;
 
 import java.io.FileNotFoundException;
 import java.net.URI;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGenerator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGenerator.java
index 12b0734..e86c424 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGenerator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGenerator.java
@@ -88,18 +88,18 @@
 import org.apache.iotdb.service.rpc.thrift.TSRawDataQueryReq;
 import org.apache.iotdb.service.rpc.thrift.TSSetSchemaTemplateReq;
 import org.apache.iotdb.service.rpc.thrift.TSUnsetSchemaTemplateReq;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
 
 import org.antlr.v4.runtime.CharStream;
 import org.antlr.v4.runtime.CharStreams;
 import org.antlr.v4.runtime.CommonTokenStream;
 import org.antlr.v4.runtime.atn.PredictionMode;
 import org.antlr.v4.runtime.tree.ParseTree;
+import org.apache.tsfile.common.constant.TsFileConstant;
+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.ReadWriteIOUtils;
+import org.apache.tsfile.utils.TimeDuration;
 
 import java.nio.ByteBuffer;
 import java.time.ZoneId;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LocalExecutionPlanContext.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LocalExecutionPlanContext.java
index 5d9a2f8..a71038c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LocalExecutionPlanContext.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LocalExecutionPlanContext.java
@@ -31,13 +31,13 @@
 import org.apache.iotdb.db.queryengine.plan.analyze.TemplatedInfo;
 import org.apache.iotdb.db.queryengine.plan.analyze.TypeProvider;
 import org.apache.iotdb.db.schemaengine.schemaregion.ISchemaRegion;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
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 15b890c..2a56d0e 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
@@ -102,11 +102,11 @@
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.db.utils.SchemaUtils;
 import org.apache.iotdb.db.utils.columngenerator.parameter.SlidingTimeColumnGeneratorParameter;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
 
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.enums.TSDataType;
+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/LogicalPlanVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanVisitor.java
index 87c0442..d108975 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
@@ -92,10 +92,10 @@
 import org.apache.iotdb.db.queryengine.plan.statement.sys.ExplainAnalyzeStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.sys.ShowQueriesStatement;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.ArrayList;
 import java.util.HashMap;
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 a6d043f..3b13ac7 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
@@ -243,21 +243,21 @@
 import org.apache.iotdb.db.utils.columngenerator.SlidingTimeColumnGenerator;
 import org.apache.iotdb.db.utils.columngenerator.parameter.ColumnGeneratorParameter;
 import org.apache.iotdb.db.utils.columngenerator.parameter.SlidingTimeColumnGeneratorParameter;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.operator.TimeFilterOperators.TimeGt;
-import org.apache.iotdb.tsfile.read.filter.operator.TimeFilterOperators.TimeGtEq;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.filter.operator.TimeFilterOperators.TimeGt;
+import org.apache.tsfile.read.filter.operator.TimeFilterOperators.TimeGtEq;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.TimeDuration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TemplatedLogicalPlan.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TemplatedLogicalPlan.java
index c592a35..75222ef 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TemplatedLogicalPlan.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TemplatedLogicalPlan.java
@@ -28,7 +28,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
 import org.apache.iotdb.db.queryengine.plan.statement.crud.QueryStatement;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.util.ArrayList;
 import java.util.HashSet;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TemplatedLogicalPlanBuilder.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TemplatedLogicalPlanBuilder.java
index 51777c9..fb6b2ea 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TemplatedLogicalPlanBuilder.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TemplatedLogicalPlanBuilder.java
@@ -30,7 +30,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.AlignedSeriesScanNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.SeriesScanNode;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/DistributionPlanContext.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/DistributionPlanContext.java
index 087d880..dfb342c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/DistributionPlanContext.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/DistributionPlanContext.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
+
+import org.apache.tsfile.read.filter.basic.Filter;
 
 import java.util.List;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/SimpleFragmentParallelPlanner.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/SimpleFragmentParallelPlanner.java
index 1394ba9..484a558 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/SimpleFragmentParallelPlanner.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/SimpleFragmentParallelPlanner.java
@@ -43,9 +43,9 @@
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowTimeSeriesStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.sys.ExplainAnalyzeStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.sys.ShowQueriesStatement;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/SourceRewriter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/SourceRewriter.java
index 09963e6..97dfaf2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/SourceRewriter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/SourceRewriter.java
@@ -73,7 +73,8 @@
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
 import org.apache.iotdb.db.queryengine.plan.statement.component.SortItem;
 import org.apache.iotdb.db.utils.constant.SqlConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/FragmentInstance.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/FragmentInstance.java
index 4dd56be..d212f4c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/FragmentInstance.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/FragmentInstance.java
@@ -32,9 +32,9 @@
 import org.apache.iotdb.db.queryengine.common.SessionInfo;
 import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeUtil;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/PlanFragment.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/PlanFragment.java
index 925bfe4..4276cba 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/PlanFragment.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/PlanFragment.java
@@ -29,7 +29,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.AlignedSeriesScanNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.VirtualSourceNode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/TimePredicate.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/TimePredicate.java
index 1de79f0..04cf67e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/TimePredicate.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/TimePredicate.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.plan.planner.plan;
 
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
+
+import org.apache.tsfile.read.filter.basic.Filter;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/TreeModelTimePredicate.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/TreeModelTimePredicate.java
index 139deed..5b9e90c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/TreeModelTimePredicate.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/TreeModelTimePredicate.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.db.queryengine.plan.analyze.PredicateUtils;
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
+
+import org.apache.tsfile.read.filter.basic.Filter;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/ExplainAnalyzeNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/ExplainAnalyzeNode.java
index a8f8783..c831e41 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/ExplainAnalyzeNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/ExplainAnalyzeNode.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.db.queryengine.common.header.ColumnHeaderConstant;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.SingleChildProcessNode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanGraphPrinter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanGraphPrinter.java
index 04dd4dd..88a076f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanGraphPrinter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanGraphPrinter.java
@@ -65,9 +65,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.CrossSeriesAggregationDescriptor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.DeviceViewIntoPathDescriptor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.IntoPathDescriptor;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.utils.Pair;
 import org.eclipse.jetty.util.StringUtil;
 
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNode.java
index 877db9b..2bbf723 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNode.java
@@ -22,9 +22,9 @@
 import org.apache.iotdb.commons.exception.runtime.SerializationRunTimeException;
 import org.apache.iotdb.consensus.common.request.IConsensusRequest;
 import org.apache.iotdb.db.queryengine.plan.analyze.TypeProvider;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeId.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeId.java
index 79c918f..1c399ea 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeId.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeId.java
@@ -18,7 +18,7 @@
  */
 package org.apache.iotdb.db.queryengine.plan.planner.plan.node;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeType.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeType.java
index bda6684..6429d17 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeType.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeType.java
@@ -105,7 +105,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowsNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowsOfOneDeviceNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertTabletNode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadSingleTsFileNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadSingleTsFileNode.java
index 321e2be..85bf261 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadSingleTsFileNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadSingleTsFileNode.java
@@ -31,10 +31,10 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.WritePlanNode;
 import org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.exception.NotImplementedException;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadTsFileNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadTsFileNode.java
index 997f5bd..74df1b0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadTsFileNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadTsFileNode.java
@@ -27,7 +27,8 @@
 import org.apache.iotdb.db.queryengine.plan.statement.crud.LoadTsFileStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.pipe.PipeEnrichedStatement;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
+
+import org.apache.tsfile.exception.NotImplementedException;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadTsFilePieceNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadTsFilePieceNode.java
index e73f84c..1f4e6e0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadTsFilePieceNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadTsFilePieceNode.java
@@ -27,10 +27,10 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.WritePlanNode;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.exception.NotImplementedException;
+import org.apache.tsfile.exception.write.PageException;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/DevicesCountNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/DevicesCountNode.java
index 1c3940c..3d01ec0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/DevicesCountNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/DevicesCountNode.java
@@ -27,7 +27,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/DevicesSchemaScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/DevicesSchemaScanNode.java
index a00900e..4b28bf8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/DevicesSchemaScanNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/DevicesSchemaScanNode.java
@@ -27,7 +27,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/LevelTimeSeriesCountNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/LevelTimeSeriesCountNode.java
index 5302645..2178e06 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/LevelTimeSeriesCountNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/LevelTimeSeriesCountNode.java
@@ -29,7 +29,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.validation.constraints.NotNull;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/LogicalViewSchemaScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/LogicalViewSchemaScanNode.java
index 3aaeede..a776166 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/LogicalViewSchemaScanNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/LogicalViewSchemaScanNode.java
@@ -28,7 +28,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/NodeManagementMemoryMergeNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/NodeManagementMemoryMergeNode.java
index cb273c0..0614e42 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/NodeManagementMemoryMergeNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/NodeManagementMemoryMergeNode.java
@@ -26,9 +26,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.ProcessNode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/PathsUsingTemplateScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/PathsUsingTemplateScanNode.java
index 5d17df9..2d09f17 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/PathsUsingTemplateScanNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/PathsUsingTemplateScanNode.java
@@ -27,7 +27,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/SchemaFetchMergeNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/SchemaFetchMergeNode.java
index d10bce8..f152419 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/SchemaFetchMergeNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/SchemaFetchMergeNode.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/SchemaFetchScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/SchemaFetchScanNode.java
index 0344231..e68aebe 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/SchemaFetchScanNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/SchemaFetchScanNode.java
@@ -30,9 +30,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.SourceNode;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesCountNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesCountNode.java
index 8c742b9..473d59b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesCountNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesCountNode.java
@@ -29,7 +29,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.validation.constraints.NotNull;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java
index 673f838..1e52eb9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java
@@ -28,7 +28,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.validation.constraints.NotNull;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/ActivateTemplateNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/ActivateTemplateNode.java
index 5e43db9..a8258a6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/ActivateTemplateNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/ActivateTemplateNode.java
@@ -29,9 +29,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.WritePlanNode;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.IActivateTemplateInClusterPlan;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
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 4334c16..1eb8481 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
@@ -29,10 +29,10 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.WritePlanNode;
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.AlterTimeSeriesStatement.AlterType;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.exception.NotImplementedException;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/BatchActivateTemplateNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/BatchActivateTemplateNode.java
index dec4223..8b71889 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/BatchActivateTemplateNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/BatchActivateTemplateNode.java
@@ -28,8 +28,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.WritePlanNode;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateAlignedTimeSeriesNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateAlignedTimeSeriesNode.java
index 476e14a..600fab6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateAlignedTimeSeriesNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateAlignedTimeSeriesNode.java
@@ -29,13 +29,13 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.WritePlanNode;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.ICreateAlignedTimeSeriesPlan;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.NotImplementedException;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateMultiTimeSeriesNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateMultiTimeSeriesNode.java
index f5a034d..8fe92fc 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateMultiTimeSeriesNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/CreateMultiTimeSeriesNode.java
@@ -29,11 +29,12 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.WritePlanNode;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.NotImplementedException;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
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 a460526..66ab5d4 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
@@ -29,13 +29,13 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.WritePlanNode;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.ICreateTimeSeriesPlan;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.NotImplementedException;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/DeactivateTemplateNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/DeactivateTemplateNode.java
index 551c8e9..dc40a3a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/DeactivateTemplateNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/DeactivateTemplateNode.java
@@ -26,7 +26,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.IDeactivateTemplatePlan;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/InternalBatchActivateTemplateNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/InternalBatchActivateTemplateNode.java
index dfefaf9..6d78d87 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/InternalBatchActivateTemplateNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/InternalBatchActivateTemplateNode.java
@@ -28,8 +28,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.WritePlanNode;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/InternalCreateMultiTimeSeriesNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/InternalCreateMultiTimeSeriesNode.java
index 973cd13..b6e71de 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/InternalCreateMultiTimeSeriesNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/InternalCreateMultiTimeSeriesNode.java
@@ -28,8 +28,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.WritePlanNode;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/InternalCreateTimeSeriesNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/InternalCreateTimeSeriesNode.java
index c71bd6a..99b11e6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/InternalCreateTimeSeriesNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/InternalCreateTimeSeriesNode.java
@@ -28,10 +28,10 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.WritePlanNode;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.exception.NotImplementedException;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/MeasurementGroup.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/MeasurementGroup.java
index 0025ffa..2089e34 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/MeasurementGroup.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/MeasurementGroup.java
@@ -19,10 +19,10 @@
 
 package org.apache.iotdb.db.queryengine.plan.planner.plan.node.metedata.write;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+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.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/PreDeactivateTemplateNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/PreDeactivateTemplateNode.java
index 74ac0dd5..73a4ea1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/PreDeactivateTemplateNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/PreDeactivateTemplateNode.java
@@ -26,7 +26,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.IPreDeactivateTemplatePlan;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/RollbackPreDeactivateTemplateNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/RollbackPreDeactivateTemplateNode.java
index 81d4b5c..370165d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/RollbackPreDeactivateTemplateNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/RollbackPreDeactivateTemplateNode.java
@@ -26,7 +26,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.IRollbackPreDeactivateTemplatePlan;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/view/AlterLogicalViewNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/view/AlterLogicalViewNode.java
index a7eb0bc..ce59955 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/view/AlterLogicalViewNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metedata/write/view/AlterLogicalViewNode.java
@@ -26,8 +26,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.exception.NotImplementedException;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
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 67f81e7..9291b60 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
@@ -32,8 +32,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.WritePlanNode;
 import org.apache.iotdb.db.schemaengine.schemaregion.view.visitor.GetSourcePathsVisitor;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.ICreateLogicalViewPlan;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.exception.NotImplementedException;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/pipe/PipeEnrichedInsertNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/pipe/PipeEnrichedInsertNode.java
index 30a51c4..596e771 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/pipe/PipeEnrichedInsertNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/pipe/PipeEnrichedInsertNode.java
@@ -32,9 +32,10 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.WritePlanNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertNode;
 import org.apache.iotdb.db.trigger.executor.TriggerFireVisitor;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/pipe/PipeOperateSchemaQueueNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/pipe/PipeOperateSchemaQueueNode.java
index d86f49d..4429f9a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/pipe/PipeOperateSchemaQueueNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/pipe/PipeOperateSchemaQueueNode.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.schemaengine.schemaregion.SchemaRegion;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/AggregationMergeSortNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/AggregationMergeSortNode.java
index f4bced5..a5d73bd 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/AggregationMergeSortNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/AggregationMergeSortNode.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.OrderByParameter;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/AggregationNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/AggregationNode.java
index f074b69..0f81707 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/AggregationNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/AggregationNode.java
@@ -30,7 +30,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByParameter;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.annotation.Nullable;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/ColumnInjectNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/ColumnInjectNode.java
index b133a57..6b3f2c1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/ColumnInjectNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/ColumnInjectNode.java
@@ -24,8 +24,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.utils.columngenerator.parameter.ColumnGeneratorParameter;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/DeviceMergeNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/DeviceMergeNode.java
index 028b5ff..799708d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/DeviceMergeNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/DeviceMergeNode.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.OrderByParameter;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/DeviceViewNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/DeviceViewNode.java
index b766d0c..b1f18c5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/DeviceViewNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/DeviceViewNode.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.OrderByParameter;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/ExchangeNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/ExchangeNode.java
index b75213d..a8cfa04 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/ExchangeNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/ExchangeNode.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/FillNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/FillNode.java
index c2c47ce..08b6561 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/FillNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/FillNode.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.FillDescriptor;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/FilterNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/FilterNode.java
index 2cc353f..f57466c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/FilterNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/FilterNode.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/GroupByLevelNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/GroupByLevelNode.java
index 8a3ef54..e2212e8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/GroupByLevelNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/GroupByLevelNode.java
@@ -26,7 +26,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.CrossSeriesAggregationDescriptor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.annotation.Nullable;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/GroupByTagNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/GroupByTagNode.java
index eafed78..fa6b210 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/GroupByTagNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/GroupByTagNode.java
@@ -26,9 +26,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.CrossSeriesAggregationDescriptor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.annotation.Nullable;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/LimitNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/LimitNode.java
index b9c4913..acc4992 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/LimitNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/LimitNode.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/MergeSortNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/MergeSortNode.java
index 120c943..bcc5434 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/MergeSortNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/MergeSortNode.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.OrderByParameter;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/OffsetNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/OffsetNode.java
index ba8146a..e886085 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/OffsetNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/OffsetNode.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/ProjectNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/ProjectNode.java
index 993c5a3..9f358ec 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/ProjectNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/ProjectNode.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/SingleDeviceViewNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/SingleDeviceViewNode.java
index 4de13df..c1b3898 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/SingleDeviceViewNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/SingleDeviceViewNode.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/SlidingWindowAggregationNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/SlidingWindowAggregationNode.java
index 1d9f804..cf4646c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/SlidingWindowAggregationNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/SlidingWindowAggregationNode.java
@@ -27,7 +27,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationDescriptor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/TopKNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/TopKNode.java
index 1b201c1..27b7d34 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/TopKNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/TopKNode.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.OrderByParameter;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/TransformNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/TransformNode.java
index fdeae4f..2ca198d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/TransformNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/TransformNode.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/join/FullOuterTimeJoinNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/join/FullOuterTimeJoinNode.java
index 750bc2b..1cae202 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/join/FullOuterTimeJoinNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/join/FullOuterTimeJoinNode.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.MultiChildProcessNode;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/join/InnerTimeJoinNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/join/InnerTimeJoinNode.java
index 865d9f5..ef98496b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/join/InnerTimeJoinNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/join/InnerTimeJoinNode.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.MultiChildProcessNode;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/join/LeftOuterTimeJoinNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/join/LeftOuterTimeJoinNode.java
index 5e8849c..766a0f7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/join/LeftOuterTimeJoinNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/join/LeftOuterTimeJoinNode.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.TwoChildProcessNode;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/last/LastQueryMergeNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/last/LastQueryMergeNode.java
index e26b5b1..7a7cfab 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/last/LastQueryMergeNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/last/LastQueryMergeNode.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.MultiChildProcessNode;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/last/LastQueryNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/last/LastQueryNode.java
index ba89c37..2fb059f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/last/LastQueryNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/last/LastQueryNode.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.MultiChildProcessNode;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.annotation.Nullable;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/last/LastQueryTransformNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/last/LastQueryTransformNode.java
index bee2d7d..53f85d5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/last/LastQueryTransformNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/process/last/LastQueryTransformNode.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.SingleChildProcessNode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/IdentitySinkNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/IdentitySinkNode.java
index f6c4dfb..46e7ae5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/IdentitySinkNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/IdentitySinkNode.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/ShuffleSinkNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/ShuffleSinkNode.java
index 4090b14..ec32f13 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/ShuffleSinkNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/ShuffleSinkNode.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
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 bc87d88..764aaf6 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
@@ -28,9 +28,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeUtil;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.eclipse.jetty.util.StringUtil;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesAggregationScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesAggregationScanNode.java
index 4957d30..0639204 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesAggregationScanNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesAggregationScanNode.java
@@ -33,9 +33,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationDescriptor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.annotation.Nullable;
 
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 508c4c6..abf9a70 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
@@ -31,8 +31,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeUtil;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.annotation.Nullable;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/LastQueryScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/LastQueryScanNode.java
index c70996b..6c9cbaa 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/LastQueryScanNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/LastQueryScanNode.java
@@ -28,9 +28,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeUtil;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.eclipse.jetty.util.StringUtil;
 
 import java.io.DataOutputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesAggregationScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesAggregationScanNode.java
index 9ecd656..8c3bcb6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesAggregationScanNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesAggregationScanNode.java
@@ -32,9 +32,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationDescriptor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.annotation.Nullable;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesScanNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesScanNode.java
index 84f03ad..3bd1087 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesScanNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesScanNode.java
@@ -29,9 +29,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeUtil;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.annotation.Nullable;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/DeleteDataNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/DeleteDataNode.java
index ddb30e0..08a8013 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/DeleteDataNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/DeleteDataNode.java
@@ -36,8 +36,9 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.IWALByteBufferView;
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.WALEntryValue;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALWriteUtils;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.read.filter.factory.TimeFilterApi;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertMultiTabletsNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertMultiTabletsNode.java
index 3ced902..9f5dc8b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertMultiTabletsNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertMultiTabletsNode.java
@@ -28,8 +28,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.WritePlanNode;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.exception.NotImplementedException;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertNode.java
index b4284f1..a53fe80 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertNode.java
@@ -30,10 +30,11 @@
 import org.apache.iotdb.db.storageengine.dataregion.memtable.DeviceIDFactory;
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.IWALByteBufferView;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALWriteUtils;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.NotImplementedException;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowNode.java
index b0d8aad..cc69832 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowNode.java
@@ -35,14 +35,15 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.WALEntryValue;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALWriteUtils;
 import org.apache.iotdb.db.utils.TypeInferenceUtils;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.NotImplementedException;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java
index 12e2294..7a9cbf8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java
@@ -30,8 +30,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.WritePlanNode;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.exception.NotImplementedException;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsOfOneDeviceNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsOfOneDeviceNode.java
index 5eb4592..fc060d3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsOfOneDeviceNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsOfOneDeviceNode.java
@@ -32,9 +32,10 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.WritePlanNode;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.NotImplementedException;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertTabletNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertTabletNode.java
index 29cca4f..9153336 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertTabletNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertTabletNode.java
@@ -36,16 +36,17 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.WALEntryValue;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALWriteUtils;
 import org.apache.iotdb.db.utils.QueryDataSetUtils;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.NotImplementedException;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/AggregationDescriptor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/AggregationDescriptor.java
index c695c22..d266de5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/AggregationDescriptor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/AggregationDescriptor.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
 import org.apache.iotdb.db.utils.constant.SqlConstant;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/AggregationStep.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/AggregationStep.java
index b353eae..dd0cdc4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/AggregationStep.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/AggregationStep.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.queryengine.plan.planner.plan.parameter;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/CrossSeriesAggregationDescriptor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/CrossSeriesAggregationDescriptor.java
index 8a998be..bc50d59 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/CrossSeriesAggregationDescriptor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/CrossSeriesAggregationDescriptor.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.common.rpc.thrift.TAggregationType;
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
 import org.apache.iotdb.db.utils.constant.SqlConstant;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/DeviceViewIntoPathDescriptor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/DeviceViewIntoPathDescriptor.java
index 4fa4ec6..4b43abe 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/DeviceViewIntoPathDescriptor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/DeviceViewIntoPathDescriptor.java
@@ -24,9 +24,10 @@
 import org.apache.iotdb.db.exception.sql.SemanticException;
 import org.apache.iotdb.db.queryengine.common.schematree.ISchemaTree;
 import org.apache.iotdb.db.queryengine.plan.analyze.SelectIntoUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/FillDescriptor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/FillDescriptor.java
index 8d3de2c..5415e07 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/FillDescriptor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/FillDescriptor.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.db.queryengine.plan.statement.component.FillPolicy;
 import org.apache.iotdb.db.queryengine.plan.statement.literal.Literal;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.TimeDuration;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByConditionParameter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByConditionParameter.java
index 7ec9e6c..ec277b5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByConditionParameter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByConditionParameter.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.db.queryengine.execution.operator.window.WindowType;
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByCountParameter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByCountParameter.java
index 489fa5c..b73ef29 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByCountParameter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByCountParameter.java
@@ -19,7 +19,8 @@
 package org.apache.iotdb.db.queryengine.plan.planner.plan.parameter;
 
 import org.apache.iotdb.db.queryengine.execution.operator.window.WindowType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByParameter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByParameter.java
index 49c6d4a..9499f2c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByParameter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByParameter.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.db.exception.sql.SemanticException;
 import org.apache.iotdb.db.queryengine.execution.operator.window.WindowType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupBySessionParameter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupBySessionParameter.java
index 38efff9..285e34b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupBySessionParameter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupBySessionParameter.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.plan.planner.plan.parameter;
 
 import org.apache.iotdb.db.queryengine.execution.operator.window.WindowType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByTimeParameter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByTimeParameter.java
index 75b3953..9de54f8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByTimeParameter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByTimeParameter.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.db.queryengine.plan.statement.component.GroupByTimeComponent;
 import org.apache.iotdb.db.utils.TimestampPrecisionUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.TimeDuration;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByVariationParameter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByVariationParameter.java
index a09b43a..d1a07a92 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByVariationParameter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/GroupByVariationParameter.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.plan.planner.plan.parameter;
 
 import org.apache.iotdb.db.queryengine.execution.operator.window.WindowType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/InputLocation.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/InputLocation.java
index 2f71e68..d0b88fb 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/InputLocation.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/InputLocation.java
@@ -18,7 +18,7 @@
  */
 package org.apache.iotdb.db.queryengine.plan.planner.plan.parameter;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.nio.ByteBuffer;
 import java.util.Objects;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/IntoPathDescriptor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/IntoPathDescriptor.java
index 140b9fd..35765ee 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/IntoPathDescriptor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/IntoPathDescriptor.java
@@ -24,11 +24,11 @@
 import org.apache.iotdb.db.exception.sql.SemanticException;
 import org.apache.iotdb.db.queryengine.common.schematree.ISchemaTree;
 import org.apache.iotdb.db.queryengine.plan.analyze.SelectIntoUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/OrderByParameter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/OrderByParameter.java
index 77d4d03..7fa4d5e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/OrderByParameter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/OrderByParameter.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.plan.planner.plan.parameter;
 
 import org.apache.iotdb.db.queryengine.plan.statement.component.SortItem;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/OutputColumn.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/OutputColumn.java
index 8310019..c84a824 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/OutputColumn.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/OutputColumn.java
@@ -18,9 +18,8 @@
  */
 package org.apache.iotdb.db.queryengine.plan.planner.plan.parameter;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.nio.ByteBuffer;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/SeriesScanOptions.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/SeriesScanOptions.java
index 158c21f..6f43ded 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/SeriesScanOptions.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/SeriesScanOptions.java
@@ -22,10 +22,11 @@
 import org.apache.iotdb.commons.path.AlignedPath;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.utils.CommonDateTimeUtils;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.reader.series.PaginationController;
+
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.filter.factory.FilterFactory;
+import org.apache.tsfile.read.filter.factory.TimeFilterApi;
+import org.apache.tsfile.read.reader.series.PaginationController;
 
 import java.util.Collections;
 import java.util.HashSet;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/load/LoadTsFileScheduler.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/load/LoadTsFileScheduler.java
index 429c0e9..cbc3775 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/load/LoadTsFileScheduler.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/load/LoadTsFileScheduler.java
@@ -64,12 +64,12 @@
 import org.apache.iotdb.metrics.utils.MetricLevel;
 import org.apache.iotdb.mpp.rpc.thrift.TLoadCommandReq;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
 import io.airlift.units.Duration;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.PublicBAOS;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/component/FillComponent.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/component/FillComponent.java
index 65c13a7..387f43b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/component/FillComponent.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/component/FillComponent.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.db.queryengine.plan.statement.StatementNode;
 import org.apache.iotdb.db.queryengine.plan.statement.literal.Literal;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
+
+import org.apache.tsfile.utils.TimeDuration;
 
 /** This class maintains information of {@code FILL} clause. */
 public class FillComponent extends StatementNode {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/component/GroupByTimeComponent.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/component/GroupByTimeComponent.java
index d2555b5..1c11575 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/component/GroupByTimeComponent.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/component/GroupByTimeComponent.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.plan.statement.component;
 
 import org.apache.iotdb.db.queryengine.plan.statement.StatementNode;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
+
+import org.apache.tsfile.utils.TimeDuration;
 
 /** This class maintains information of {@code GROUP BY} clause. */
 public class GroupByTimeComponent extends StatementNode {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/component/SortItem.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/component/SortItem.java
index 3734152..6d6bb4e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/component/SortItem.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/component/SortItem.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.plan.statement.component;
 
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/DeleteDataStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/DeleteDataStatement.java
index 8aefebb..172390b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/DeleteDataStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/DeleteDataStatement.java
@@ -27,7 +27,8 @@
 import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
 import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
+
+import org.apache.tsfile.read.common.TimeRange;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertBaseStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertBaseStatement.java
index 633123a..bb2d5f5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertBaseStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertBaseStatement.java
@@ -33,9 +33,10 @@
 import org.apache.iotdb.db.queryengine.plan.analyze.schema.ISchemaValidation;
 import org.apache.iotdb.db.queryengine.plan.statement.Statement;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertMultiTabletsStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertMultiTabletsStatement.java
index c0ed28f..eb4d2f5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertMultiTabletsStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertMultiTabletsStatement.java
@@ -23,8 +23,9 @@
 import org.apache.iotdb.db.queryengine.plan.analyze.schema.ISchemaValidation;
 import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
 import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.NotImplementedException;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertRowStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertRowStatement.java
index 4e16ff3..e6403c3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertRowStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertRowStatement.java
@@ -35,13 +35,13 @@
 import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
 import org.apache.iotdb.db.utils.CommonUtils;
 import org.apache.iotdb.db.utils.TypeInferenceUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertRowsOfOneDeviceStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertRowsOfOneDeviceStatement.java
index 018fc96..9725e54 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertRowsOfOneDeviceStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertRowsOfOneDeviceStatement.java
@@ -26,8 +26,9 @@
 import org.apache.iotdb.db.queryengine.plan.analyze.schema.ISchemaValidation;
 import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
 import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.NotImplementedException;
 
 import java.util.ArrayList;
 import java.util.HashSet;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertRowsStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertRowsStatement.java
index a3682fd..c29610d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertRowsStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertRowsStatement.java
@@ -24,8 +24,9 @@
 import org.apache.iotdb.db.queryengine.plan.analyze.schema.ISchemaValidation;
 import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
 import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.NotImplementedException;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertTabletStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertTabletStatement.java
index afe9692..8d9bdf8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertTabletStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertTabletStatement.java
@@ -31,15 +31,15 @@
 import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
 import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
 import org.apache.iotdb.db.utils.CommonUtils;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/LoadTsFileStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/LoadTsFileStatement.java
index 68b676c..ad015cd 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/LoadTsFileStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/LoadTsFileStatement.java
@@ -27,7 +27,8 @@
 import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
+
+import org.apache.tsfile.common.constant.TsFileConstant;
 
 import java.io.File;
 import java.io.FileNotFoundException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalBatchActivateTemplateStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalBatchActivateTemplateStatement.java
index 06775c3..44a1a66 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalBatchActivateTemplateStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalBatchActivateTemplateStatement.java
@@ -29,7 +29,8 @@
 import org.apache.iotdb.db.schemaengine.template.ClusterTemplateManager;
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalCreateMultiTimeSeriesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalCreateMultiTimeSeriesStatement.java
index ff128d1..f4f1717 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalCreateMultiTimeSeriesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalCreateMultiTimeSeriesStatement.java
@@ -28,7 +28,8 @@
 import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
 import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.List;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalCreateTimeSeriesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalCreateTimeSeriesStatement.java
index b525e6f..2a4c41c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalCreateTimeSeriesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalCreateTimeSeriesStatement.java
@@ -27,9 +27,10 @@
 import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
 import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/BooleanLiteral.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/BooleanLiteral.java
index e4fd8a3..e9bace0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/BooleanLiteral.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/BooleanLiteral.java
@@ -19,10 +19,10 @@
 
 package org.apache.iotdb.db.queryengine.plan.statement.literal;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/DoubleLiteral.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/DoubleLiteral.java
index 455fab4..4f95e96 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/DoubleLiteral.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/DoubleLiteral.java
@@ -19,10 +19,10 @@
 
 package org.apache.iotdb.db.queryengine.plan.statement.literal;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/Literal.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/Literal.java
index 5cfbbda..f5e6aaf 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/Literal.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/Literal.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.db.queryengine.plan.statement.literal;
 
 import org.apache.iotdb.db.queryengine.plan.statement.StatementNode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/LongLiteral.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/LongLiteral.java
index 6ef4d15..caace0f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/LongLiteral.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/LongLiteral.java
@@ -19,10 +19,10 @@
 
 package org.apache.iotdb.db.queryengine.plan.statement.literal;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/NullLiteral.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/NullLiteral.java
index 8be4f25..0637613 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/NullLiteral.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/NullLiteral.java
@@ -19,10 +19,10 @@
 
 package org.apache.iotdb.db.queryengine.plan.statement.literal;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/StringLiteral.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/StringLiteral.java
index bd4e721..7dea9fa 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/StringLiteral.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/literal/StringLiteral.java
@@ -19,10 +19,10 @@
 
 package org.apache.iotdb.db.queryengine.plan.statement.literal;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateAlignedTimeSeriesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateAlignedTimeSeriesStatement.java
index fa3a0da..5c44125 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateAlignedTimeSeriesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateAlignedTimeSeriesStatement.java
@@ -27,9 +27,10 @@
 import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
 import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateMultiTimeSeriesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateMultiTimeSeriesStatement.java
index 50843b6..c536b59 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateMultiTimeSeriesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateMultiTimeSeriesStatement.java
@@ -27,9 +27,10 @@
 import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
 import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateTimeSeriesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateTimeSeriesStatement.java
index 27317b6..ecbd741 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateTimeSeriesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateTimeSeriesStatement.java
@@ -27,9 +27,10 @@
 import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
 import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowDatabaseStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowDatabaseStatement.java
index a583e87..f24a545 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowDatabaseStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowDatabaseStatement.java
@@ -30,12 +30,12 @@
 import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ActivateTemplateStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ActivateTemplateStatement.java
index 3e703d8..3986792 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ActivateTemplateStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ActivateTemplateStatement.java
@@ -29,7 +29,8 @@
 import org.apache.iotdb.db.schemaengine.template.ClusterTemplateManager;
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/AlterSchemaTemplateStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/AlterSchemaTemplateStatement.java
index 91b4ebc..ef86d01 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/AlterSchemaTemplateStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/AlterSchemaTemplateStatement.java
@@ -28,9 +28,10 @@
 import org.apache.iotdb.db.schemaengine.template.TemplateAlterOperationType;
 import org.apache.iotdb.db.schemaengine.template.alter.TemplateAlterInfo;
 import org.apache.iotdb.db.schemaengine.template.alter.TemplateExtendInfo;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/BatchActivateTemplateStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/BatchActivateTemplateStatement.java
index 116aa19..c941c8d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/BatchActivateTemplateStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/BatchActivateTemplateStatement.java
@@ -29,7 +29,8 @@
 import org.apache.iotdb.db.schemaengine.template.ClusterTemplateManager;
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/CreateSchemaTemplateStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/CreateSchemaTemplateStatement.java
index 4b1da81..807a834 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/CreateSchemaTemplateStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/CreateSchemaTemplateStatement.java
@@ -25,9 +25,10 @@
 import org.apache.iotdb.db.queryengine.plan.statement.Statement;
 import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
 import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/CreateLogicalViewStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/CreateLogicalViewStatement.java
index 29dc6fa..e35e766 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/CreateLogicalViewStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/CreateLogicalViewStatement.java
@@ -38,7 +38,8 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.view.ViewPathType;
 import org.apache.iotdb.db.schemaengine.schemaregion.view.ViewPaths;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/api/LayerPointReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/api/LayerPointReader.java
index 5a0faa9..0786454 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/api/LayerPointReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/api/LayerPointReader.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.queryengine.transformation.api;
 
 import org.apache.iotdb.db.exception.query.QueryProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/api/LayerRowReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/api/LayerRowReader.java
index dcc6876..6382176 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/api/LayerRowReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/api/LayerRowReader.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.db.queryengine.transformation.api;
 
 import org.apache.iotdb.db.exception.query.QueryProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.udf.api.access.Row;
 
+import org.apache.tsfile.enums.TSDataType;
+
 import java.io.IOException;
 
 public interface LayerRowReader extends YieldableReader {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/api/LayerRowWindowReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/api/LayerRowWindowReader.java
index f35fd65..aa5f92b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/api/LayerRowWindowReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/api/LayerRowWindowReader.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.db.queryengine.transformation.api;
 
 import org.apache.iotdb.db.exception.query.QueryProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.udf.api.access.RowWindow;
 
+import org.apache.tsfile.enums.TSDataType;
+
 import java.io.IOException;
 
 public interface LayerRowWindowReader extends YieldableReader {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/adapter/ElasticSerializableRowRecordListBackedMultiColumnRow.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/adapter/ElasticSerializableRowRecordListBackedMultiColumnRow.java
index 0e30daf..6f42b95 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/adapter/ElasticSerializableRowRecordListBackedMultiColumnRow.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/adapter/ElasticSerializableRowRecordListBackedMultiColumnRow.java
@@ -21,12 +21,13 @@
 
 import org.apache.iotdb.commons.udf.utils.UDFBinaryTransformer;
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.type.Binary;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+
 public class ElasticSerializableRowRecordListBackedMultiColumnRow implements Row {
 
   private final TSDataType[] dataTypes;
@@ -72,12 +73,12 @@
   @Override
   public Binary getBinary(int columnIndex) {
     return UDFBinaryTransformer.transformToUDFBinary(
-        (org.apache.iotdb.tsfile.utils.Binary) rowRecord[columnIndex]);
+        (org.apache.tsfile.utils.Binary) rowRecord[columnIndex]);
   }
 
   @Override
   public String getString(int columnIndex) {
-    return ((org.apache.iotdb.tsfile.utils.Binary) rowRecord[columnIndex])
+    return ((org.apache.tsfile.utils.Binary) rowRecord[columnIndex])
         .getStringValue(TSFileConfig.STRING_CHARSET);
   }
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/adapter/ElasticSerializableRowRecordListBackedMultiColumnWindow.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/adapter/ElasticSerializableRowRecordListBackedMultiColumnWindow.java
index 43c82e8..16b0ffc 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/adapter/ElasticSerializableRowRecordListBackedMultiColumnWindow.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/adapter/ElasticSerializableRowRecordListBackedMultiColumnWindow.java
@@ -21,12 +21,13 @@
 
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.row.ElasticSerializableRowRecordList;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.access.RowIterator;
 import org.apache.iotdb.udf.api.access.RowWindow;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.enums.TSDataType;
+
 import java.io.IOException;
 
 public class ElasticSerializableRowRecordListBackedMultiColumnWindow implements RowWindow {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/adapter/LayerPointReaderBackedSingleColumnRow.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/adapter/LayerPointReaderBackedSingleColumnRow.java
index 5609052..8156dec 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/adapter/LayerPointReaderBackedSingleColumnRow.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/adapter/LayerPointReaderBackedSingleColumnRow.java
@@ -22,11 +22,12 @@
 import org.apache.iotdb.commons.udf.utils.UDFBinaryTransformer;
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.type.Binary;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+
 import java.io.IOException;
 
 public class LayerPointReaderBackedSingleColumnRow implements Row {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/builder/EvaluationDAGBuilder.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/builder/EvaluationDAGBuilder.java
index a1fcab3..e94a222 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/builder/EvaluationDAGBuilder.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/builder/EvaluationDAGBuilder.java
@@ -28,7 +28,8 @@
 import org.apache.iotdb.db.queryengine.transformation.dag.intermediate.IntermediateLayer;
 import org.apache.iotdb.db.queryengine.transformation.dag.memory.LayerMemoryAssigner;
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFContext;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.HashMap;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/CaseWhenThenColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/CaseWhenThenColumnTransformer.java
index bb359f5..68910f2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/CaseWhenThenColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/CaseWhenThenColumnTransformer.java
@@ -19,18 +19,17 @@
 
 package org.apache.iotdb.db.queryengine.transformation.dag.column;
 
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.BinaryType;
-import org.apache.iotdb.tsfile.read.common.type.BooleanType;
-import org.apache.iotdb.tsfile.read.common.type.DoubleType;
-import org.apache.iotdb.tsfile.read.common.type.FloatType;
-import org.apache.iotdb.tsfile.read.common.type.IntType;
-import org.apache.iotdb.tsfile.read.common.type.LongType;
-import org.apache.iotdb.tsfile.read.common.type.Type;
-import org.apache.iotdb.tsfile.utils.Pair;
-
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.type.BinaryType;
+import org.apache.tsfile.read.common.type.BooleanType;
+import org.apache.tsfile.read.common.type.DoubleType;
+import org.apache.tsfile.read.common.type.FloatType;
+import org.apache.tsfile.read.common.type.IntType;
+import org.apache.tsfile.read.common.type.LongType;
+import org.apache.tsfile.read.common.type.Type;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ColumnCache.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ColumnCache.java
index b722772..792d58c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ColumnCache.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ColumnCache.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.queryengine.transformation.dag.column;
 
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
+import org.apache.tsfile.block.column.Column;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ColumnTransformer.java
index c6feea2..922e95e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ColumnTransformer.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.leaf.NullColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.type.Type;
-import org.apache.iotdb.tsfile.read.common.type.TypeEnum;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.type.Type;
+import org.apache.tsfile.read.common.type.TypeEnum;
 
 public abstract class ColumnTransformer {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticAdditionColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticAdditionColumnTransformer.java
index 36b6671..f803610 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticAdditionColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticAdditionColumnTransformer.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.binary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.read.common.type.Type;
 
 public class ArithmeticAdditionColumnTransformer extends ArithmeticBinaryColumnTransformer {
   public ArithmeticAdditionColumnTransformer(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticBinaryColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticBinaryColumnTransformer.java
index 5c7350c..0a87127 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticBinaryColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticBinaryColumnTransformer.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.binary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.type.Type;
 
 public abstract class ArithmeticBinaryColumnTransformer extends BinaryColumnTransformer {
   protected ArithmeticBinaryColumnTransformer(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticDivisionColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticDivisionColumnTransformer.java
index e62cc78..c4f92be 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticDivisionColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticDivisionColumnTransformer.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.binary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.read.common.type.Type;
 
 public class ArithmeticDivisionColumnTransformer extends ArithmeticBinaryColumnTransformer {
   public ArithmeticDivisionColumnTransformer(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticModuloColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticModuloColumnTransformer.java
index 008d996..854379c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticModuloColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticModuloColumnTransformer.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.binary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.read.common.type.Type;
 
 public class ArithmeticModuloColumnTransformer extends ArithmeticBinaryColumnTransformer {
   public ArithmeticModuloColumnTransformer(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticMultiplicationColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticMultiplicationColumnTransformer.java
index fa0e344..f223350 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticMultiplicationColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticMultiplicationColumnTransformer.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.binary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.read.common.type.Type;
 
 public class ArithmeticMultiplicationColumnTransformer extends ArithmeticBinaryColumnTransformer {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticSubtractionColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticSubtractionColumnTransformer.java
index 9eff2a5..18f935c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticSubtractionColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticSubtractionColumnTransformer.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.binary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.read.common.type.Type;
 
 public class ArithmeticSubtractionColumnTransformer extends ArithmeticBinaryColumnTransformer {
   public ArithmeticSubtractionColumnTransformer(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/BinaryColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/BinaryColumnTransformer.java
index b4a7d6f..6e074ab 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/BinaryColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/BinaryColumnTransformer.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.binary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.type.Type;
 
 public abstract class BinaryColumnTransformer extends ColumnTransformer {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareBinaryColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareBinaryColumnTransformer.java
index 15c481c..f066597 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareBinaryColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareBinaryColumnTransformer.java
@@ -21,11 +21,12 @@
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.util.TransformUtils;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.RunLengthEncodedColumn;
-import org.apache.iotdb.tsfile.read.common.type.Type;
-import org.apache.iotdb.tsfile.read.common.type.TypeEnum;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.block.column.RunLengthEncodedColumn;
+import org.apache.tsfile.read.common.type.Type;
+import org.apache.tsfile.read.common.type.TypeEnum;
 
 public abstract class CompareBinaryColumnTransformer extends BinaryColumnTransformer {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareEqualToColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareEqualToColumnTransformer.java
index 9b4db7d..76715d4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareEqualToColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareEqualToColumnTransformer.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.binary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.read.common.type.Type;
 
 public class CompareEqualToColumnTransformer extends CompareBinaryColumnTransformer {
   public CompareEqualToColumnTransformer(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareGreaterEqualColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareGreaterEqualColumnTransformer.java
index 672d946..1aba400 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareGreaterEqualColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareGreaterEqualColumnTransformer.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.binary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.read.common.type.Type;
 
 public class CompareGreaterEqualColumnTransformer extends CompareBinaryColumnTransformer {
   public CompareGreaterEqualColumnTransformer(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareGreaterThanColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareGreaterThanColumnTransformer.java
index 5e46c27..4f46f76 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareGreaterThanColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareGreaterThanColumnTransformer.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.binary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.read.common.type.Type;
 
 public class CompareGreaterThanColumnTransformer extends CompareBinaryColumnTransformer {
   public CompareGreaterThanColumnTransformer(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareLessEqualColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareLessEqualColumnTransformer.java
index dbb0cf3..0eede19 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareLessEqualColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareLessEqualColumnTransformer.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.binary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.read.common.type.Type;
 
 public class CompareLessEqualColumnTransformer extends CompareBinaryColumnTransformer {
   public CompareLessEqualColumnTransformer(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareLessThanColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareLessThanColumnTransformer.java
index 2ea344d..09bd953 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareLessThanColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareLessThanColumnTransformer.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.binary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.read.common.type.Type;
 
 public class CompareLessThanColumnTransformer extends CompareBinaryColumnTransformer {
   public CompareLessThanColumnTransformer(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareNonEqualColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareNonEqualColumnTransformer.java
index 6102744..b4c4a29 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareNonEqualColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/CompareNonEqualColumnTransformer.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.binary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.read.common.type.Type;
 
 public class CompareNonEqualColumnTransformer extends CompareBinaryColumnTransformer {
   public CompareNonEqualColumnTransformer(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/LogicAndColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/LogicAndColumnTransformer.java
index 19a8f6b..d3262a9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/LogicAndColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/LogicAndColumnTransformer.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.binary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.type.Type;
 
 public class LogicAndColumnTransformer extends LogicBinaryColumnTransformer {
   public LogicAndColumnTransformer(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/LogicBinaryColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/LogicBinaryColumnTransformer.java
index 7561912..595fa29 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/LogicBinaryColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/LogicBinaryColumnTransformer.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.binary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.type.Type;
-import org.apache.iotdb.tsfile.read.common.type.TypeEnum;
+
+import org.apache.tsfile.read.common.type.Type;
+import org.apache.tsfile.read.common.type.TypeEnum;
 
 public abstract class LogicBinaryColumnTransformer extends BinaryColumnTransformer {
   protected LogicBinaryColumnTransformer(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/LogicOrColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/LogicOrColumnTransformer.java
index 87a1346..a5c0110 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/LogicOrColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/LogicOrColumnTransformer.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.binary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.type.Type;
 
 public class LogicOrColumnTransformer extends LogicBinaryColumnTransformer {
   public LogicOrColumnTransformer(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/ConstantColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/ConstantColumnTransformer.java
index cfa6fd9..6abfeaa 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/ConstantColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/ConstantColumnTransformer.java
@@ -19,10 +19,10 @@
 
 package org.apache.iotdb.db.queryengine.transformation.dag.column.leaf;
 
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.RunLengthEncodedColumn;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.RunLengthEncodedColumn;
+import org.apache.tsfile.read.common.type.Type;
 
 public class ConstantColumnTransformer extends LeafColumnTransformer {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/IdentityColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/IdentityColumnTransformer.java
index 0987b46..0508010 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/IdentityColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/IdentityColumnTransformer.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.transformation.dag.column.leaf;
 
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.type.Type;
 
 /**
  * this is a special transformer which outputs data just as input without any modification.
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/LeafColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/LeafColumnTransformer.java
index 5a1e59d..b09811e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/LeafColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/LeafColumnTransformer.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.leaf;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.type.Type;
 
 public abstract class LeafColumnTransformer extends ColumnTransformer {
   protected LeafColumnTransformer(Type returnType) {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/NullColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/NullColumnTransformer.java
index 256a056..6b5d6ec 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/NullColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/NullColumnTransformer.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.transformation.dag.column.leaf;
 
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.NullColumn;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.NullColumn;
 
 public class NullColumnTransformer extends LeafColumnTransformer {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/TimeColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/TimeColumnTransformer.java
index 03f5cc8..5cf275c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/TimeColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/leaf/TimeColumnTransformer.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.queryengine.transformation.dag.column.leaf;
 
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.type.Type;
 
 public class TimeColumnTransformer extends LeafColumnTransformer {
   public TimeColumnTransformer(Type returnType) {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/multi/MappableUDFColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/multi/MappableUDFColumnTransformer.java
index f3cb46e..b3562a2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/multi/MappableUDFColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/multi/MappableUDFColumnTransformer.java
@@ -21,9 +21,10 @@
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFExecutor;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.type.Type;
 
 public class MappableUDFColumnTransformer extends ColumnTransformer {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ternary/BetweenColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ternary/BetweenColumnTransformer.java
index fc30f03..eb77148 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ternary/BetweenColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ternary/BetweenColumnTransformer.java
@@ -21,10 +21,11 @@
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.util.TransformUtils;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.BinaryType;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.type.BinaryType;
+import org.apache.tsfile.read.common.type.Type;
 
 public class BetweenColumnTransformer extends CompareTernaryColumnTransformer {
   private final boolean isNotBetween;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ternary/CompareTernaryColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ternary/CompareTernaryColumnTransformer.java
index 6379ae0..0fedec3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ternary/CompareTernaryColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ternary/CompareTernaryColumnTransformer.java
@@ -20,10 +20,11 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.ternary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
-import org.apache.iotdb.tsfile.read.common.type.TypeEnum;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.type.Type;
+import org.apache.tsfile.read.common.type.TypeEnum;
 
 public abstract class CompareTernaryColumnTransformer extends TernaryColumnTransformer {
   protected CompareTernaryColumnTransformer(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ternary/TernaryColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ternary/TernaryColumnTransformer.java
index 3e203ad..6d747d3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ternary/TernaryColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/ternary/TernaryColumnTransformer.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.ternary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.read.common.type.Type;
 
 public abstract class TernaryColumnTransformer extends ColumnTransformer {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/ArithmeticNegationColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/ArithmeticNegationColumnTransformer.java
index 6e15dab..5158760 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/ArithmeticNegationColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/ArithmeticNegationColumnTransformer.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.unary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.type.Type;
 
 public class ArithmeticNegationColumnTransformer extends UnaryColumnTransformer {
   public ArithmeticNegationColumnTransformer(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/InColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/InColumnTransformer.java
index 23c7e6a..7388186 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/InColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/InColumnTransformer.java
@@ -21,11 +21,12 @@
 
 import org.apache.iotdb.db.exception.sql.SemanticException;
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
-import org.apache.iotdb.tsfile.read.common.type.TypeEnum;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.read.common.type.Type;
+import org.apache.tsfile.read.common.type.TypeEnum;
 
 import java.util.HashSet;
 import java.util.Set;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/IsNullColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/IsNullColumnTransformer.java
index 8af53c7..c2c254b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/IsNullColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/IsNullColumnTransformer.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.unary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.type.Type;
 
 public class IsNullColumnTransformer extends UnaryColumnTransformer {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/LogicNotColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/LogicNotColumnTransformer.java
index 4348113..f287b22 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/LogicNotColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/LogicNotColumnTransformer.java
@@ -20,10 +20,11 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.unary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
-import org.apache.iotdb.tsfile.read.common.type.TypeEnum;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.type.Type;
+import org.apache.tsfile.read.common.type.TypeEnum;
 
 public class LogicNotColumnTransformer extends UnaryColumnTransformer {
   public LogicNotColumnTransformer(Type returnType, ColumnTransformer childColumnTransformer) {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/RegularColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/RegularColumnTransformer.java
index eb48fa3..3959a85 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/RegularColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/RegularColumnTransformer.java
@@ -20,11 +20,12 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.unary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
-import org.apache.iotdb.tsfile.read.common.type.TypeEnum;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.read.common.type.Type;
+import org.apache.tsfile.read.common.type.TypeEnum;
 
 import java.util.regex.Pattern;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/UnaryColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/UnaryColumnTransformer.java
index ebae6f4..0f1f48c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/UnaryColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/UnaryColumnTransformer.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.unary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.type.Type;
 
 public abstract class UnaryColumnTransformer extends ColumnTransformer {
   protected ColumnTransformer childColumnTransformer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/CastFunctionColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/CastFunctionColumnTransformer.java
index b1b9dac..9b92da5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/CastFunctionColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/CastFunctionColumnTransformer.java
@@ -22,13 +22,14 @@
 import org.apache.iotdb.db.queryengine.plan.expression.multi.builtin.helper.CastFunctionHelper;
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.column.unary.UnaryColumnTransformer;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
-import org.apache.iotdb.tsfile.read.common.type.TypeEnum;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.read.common.type.Type;
+import org.apache.tsfile.read.common.type.TypeEnum;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BytesUtils;
 
 public class CastFunctionColumnTransformer extends UnaryColumnTransformer {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/DiffFunctionColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/DiffFunctionColumnTransformer.java
index 06aef97..98e48a0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/DiffFunctionColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/DiffFunctionColumnTransformer.java
@@ -21,9 +21,10 @@
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.column.unary.UnaryColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.type.Type;
 
 public class DiffFunctionColumnTransformer extends UnaryColumnTransformer {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/ReplaceFunctionColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/ReplaceFunctionColumnTransformer.java
index 2da765b..2ccef0b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/ReplaceFunctionColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/ReplaceFunctionColumnTransformer.java
@@ -21,11 +21,12 @@
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.column.unary.UnaryColumnTransformer;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.read.common.type.Type;
+import org.apache.tsfile.utils.BytesUtils;
 
 public class ReplaceFunctionColumnTransformer extends UnaryColumnTransformer {
   private final String from;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/RoundFunctionColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/RoundFunctionColumnTransformer.java
index a50509f..c816797 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/RoundFunctionColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/RoundFunctionColumnTransformer.java
@@ -21,10 +21,11 @@
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.column.unary.UnaryColumnTransformer;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
-import org.apache.iotdb.tsfile.read.common.type.TypeEnum;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.type.Type;
+import org.apache.tsfile.read.common.type.TypeEnum;
 
 public class RoundFunctionColumnTransformer extends UnaryColumnTransformer {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/SubStringFunctionColumnTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/SubStringFunctionColumnTransformer.java
index 4a8c7fa..e33acd1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/SubStringFunctionColumnTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/SubStringFunctionColumnTransformer.java
@@ -21,11 +21,12 @@
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.column.unary.UnaryColumnTransformer;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.read.common.type.Type;
+import org.apache.tsfile.utils.BytesUtils;
 
 public class SubStringFunctionColumnTransformer extends UnaryColumnTransformer {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/input/ConstantInputReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/input/ConstantInputReader.java
index e86ee09..542c43e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/input/ConstantInputReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/input/ConstantInputReader.java
@@ -24,10 +24,10 @@
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
 import org.apache.iotdb.db.queryengine.transformation.api.YieldableState;
 import org.apache.iotdb.db.utils.CommonUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/input/IUDFInputDataSet.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/input/IUDFInputDataSet.java
index d73b18f..f48507e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/input/IUDFInputDataSet.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/input/IUDFInputDataSet.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.input;
 
 import org.apache.iotdb.db.queryengine.transformation.api.YieldableState;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/input/QueryDataSetInputLayer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/input/QueryDataSetInputLayer.java
index a79ff2c..c504919 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/input/QueryDataSetInputLayer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/input/QueryDataSetInputLayer.java
@@ -25,8 +25,9 @@
 import org.apache.iotdb.db.queryengine.transformation.dag.memory.SafetyLine;
 import org.apache.iotdb.db.queryengine.transformation.dag.memory.SafetyLine.SafetyPile;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.row.ElasticSerializableRowRecordList;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/input/TsBlockInputDataSet.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/input/TsBlockInputDataSet.java
index 00dd27c..75338f6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/input/TsBlockInputDataSet.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/input/TsBlockInputDataSet.java
@@ -21,9 +21,10 @@
 
 import org.apache.iotdb.db.queryengine.execution.operator.Operator;
 import org.apache.iotdb.db.queryengine.transformation.api.YieldableState;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock.TsBlockRowIterator;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlock.TsBlockRowIterator;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/intermediate/MultiInputColumnIntermediateLayer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/intermediate/MultiInputColumnIntermediateLayer.java
index 8821e90..6fbc248 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/intermediate/MultiInputColumnIntermediateLayer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/intermediate/MultiInputColumnIntermediateLayer.java
@@ -32,8 +32,6 @@
 import org.apache.iotdb.db.queryengine.transformation.dag.util.LayerCacheUtils;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.row.ElasticSerializableRowRecordList;
 import org.apache.iotdb.db.utils.datastructure.TimeSelector;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.access.RowWindow;
 import org.apache.iotdb.udf.api.customizer.strategy.SessionTimeWindowAccessStrategy;
@@ -41,6 +39,8 @@
 import org.apache.iotdb.udf.api.customizer.strategy.SlidingTimeWindowAccessStrategy;
 import org.apache.iotdb.udf.api.customizer.strategy.StateWindowAccessStrategy;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/intermediate/SingleInputColumnMultiReferenceIntermediateLayer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/intermediate/SingleInputColumnMultiReferenceIntermediateLayer.java
index c6cb5f1..1656b3e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/intermediate/SingleInputColumnMultiReferenceIntermediateLayer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/intermediate/SingleInputColumnMultiReferenceIntermediateLayer.java
@@ -33,8 +33,6 @@
 import org.apache.iotdb.db.queryengine.transformation.dag.util.TransformUtils;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.tv.ElasticSerializableTVList;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.util.ValueRecorder;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.access.RowWindow;
 import org.apache.iotdb.udf.api.customizer.strategy.SessionTimeWindowAccessStrategy;
@@ -42,6 +40,8 @@
 import org.apache.iotdb.udf.api.customizer.strategy.SlidingTimeWindowAccessStrategy;
 import org.apache.iotdb.udf.api.customizer.strategy.StateWindowAccessStrategy;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/intermediate/SingleInputColumnSingleReferenceIntermediateLayer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/intermediate/SingleInputColumnSingleReferenceIntermediateLayer.java
index ec44300..ba36e92 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/intermediate/SingleInputColumnSingleReferenceIntermediateLayer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/intermediate/SingleInputColumnSingleReferenceIntermediateLayer.java
@@ -31,7 +31,6 @@
 import org.apache.iotdb.db.queryengine.transformation.dag.util.TransformUtils;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.tv.ElasticSerializableTVList;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.util.ValueRecorder;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.access.RowWindow;
 import org.apache.iotdb.udf.api.customizer.strategy.SessionTimeWindowAccessStrategy;
@@ -39,6 +38,7 @@
 import org.apache.iotdb.udf.api.customizer.strategy.SlidingTimeWindowAccessStrategy;
 import org.apache.iotdb.udf.api.customizer.strategy.StateWindowAccessStrategy;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/Transformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/Transformer.java
index b64956b..69c1569 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/Transformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/Transformer.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
 import org.apache.iotdb.db.queryengine.transformation.api.YieldableState;
-import org.apache.iotdb.tsfile.utils.Binary;
+
+import org.apache.tsfile.utils.Binary;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/ArithmeticBinaryTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/ArithmeticBinaryTransformer.java
index ffb638c..013d757 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/ArithmeticBinaryTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/ArithmeticBinaryTransformer.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/BinaryTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/BinaryTransformer.java
index 3886114..307d2bc 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/BinaryTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/BinaryTransformer.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
 import org.apache.iotdb.db.queryengine.transformation.api.YieldableState;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.Transformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/CompareBinaryTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/CompareBinaryTransformer.java
index 47aa442..ebe3800 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/CompareBinaryTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/CompareBinaryTransformer.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/CompareNonEqualTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/CompareNonEqualTransformer.java
index 02229b7..419f3f7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/CompareNonEqualTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/CompareNonEqualTransformer.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
 import org.apache.iotdb.db.queryengine.transformation.dag.util.TransformUtils;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
+
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 public class CompareNonEqualTransformer extends CompareBinaryTransformer {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/LogicBinaryTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/LogicBinaryTransformer.java
index 8ce03ea..f8209dc 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/LogicBinaryTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/binary/LogicBinaryTransformer.java
@@ -22,8 +22,9 @@
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
 import org.apache.iotdb.db.queryengine.transformation.api.YieldableState;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/multi/MappableUDFQueryRowTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/multi/MappableUDFQueryRowTransformer.java
index 4ec3f36..277a9de 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/multi/MappableUDFQueryRowTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/multi/MappableUDFQueryRowTransformer.java
@@ -23,10 +23,11 @@
 import org.apache.iotdb.db.queryengine.transformation.api.LayerRowReader;
 import org.apache.iotdb.db.queryengine.transformation.api.YieldableState;
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFExecutor;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.utils.Binary;
 import org.apache.iotdb.udf.api.access.Row;
 
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+
 import java.io.IOException;
 import java.util.Objects;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/multi/UDFQueryTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/multi/UDFQueryTransformer.java
index c7fba10..fa3a108 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/multi/UDFQueryTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/multi/UDFQueryTransformer.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.Transformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFExecutor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 public abstract class UDFQueryTransformer extends Transformer {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/multi/UniversalUDFQueryTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/multi/UniversalUDFQueryTransformer.java
index a8d1648..221cb45 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/multi/UniversalUDFQueryTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/multi/UniversalUDFQueryTransformer.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
 import org.apache.iotdb.db.queryengine.transformation.api.YieldableState;
 import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFExecutor;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
+
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/ternary/CompareTernaryTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/ternary/CompareTernaryTransformer.java
index 15fb1f4..c524474 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/ternary/CompareTernaryTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/ternary/CompareTernaryTransformer.java
@@ -23,8 +23,9 @@
 
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/ternary/TernaryTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/ternary/TernaryTransformer.java
index 9e3371d..a0ee4f2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/ternary/TernaryTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/ternary/TernaryTransformer.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
 import org.apache.iotdb.db.queryengine.transformation.api.YieldableState;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.Transformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/ArithmeticNegationTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/ArithmeticNegationTransformer.java
index 8ce1a51..dd87a8a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/ArithmeticNegationTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/ArithmeticNegationTransformer.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/InTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/InTransformer.java
index ce6bd9a..5c9c7a4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/InTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/InTransformer.java
@@ -21,9 +21,10 @@
 
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
+
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
 
 import java.io.IOException;
 import java.util.HashSet;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/IsNullTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/IsNullTransformer.java
index 3bed268..f88ea43 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/IsNullTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/IsNullTransformer.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
 import org.apache.iotdb.db.queryengine.transformation.api.YieldableState;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/LogicNotTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/LogicNotTransformer.java
index eb32216..65a432e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/LogicNotTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/LogicNotTransformer.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/RegularTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/RegularTransformer.java
index d852b20..959f025 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/RegularTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/RegularTransformer.java
@@ -21,10 +21,11 @@
 
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
+
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.io.IOException;
 import java.util.regex.Pattern;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/TransparentTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/TransparentTransformer.java
index 6f146a3..dc5e421 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/TransparentTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/TransparentTransformer.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/UnaryTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/UnaryTransformer.java
index 852b3e0..01c394f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/UnaryTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/UnaryTransformer.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
 import org.apache.iotdb.db.queryengine.transformation.api.YieldableState;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.Transformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/CastFunctionTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/CastFunctionTransformer.java
index 6909d87..aca3010 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/CastFunctionTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/CastFunctionTransformer.java
@@ -23,10 +23,11 @@
 import org.apache.iotdb.db.queryengine.plan.expression.multi.builtin.helper.CastFunctionHelper;
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.unary.UnaryTransformer;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
+
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BytesUtils;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/DiffFunctionTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/DiffFunctionTransformer.java
index 4062eb3..6a08242 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/DiffFunctionTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/DiffFunctionTransformer.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
 import org.apache.iotdb.db.queryengine.transformation.api.YieldableState;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.unary.UnaryTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/ReplaceFunctionTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/ReplaceFunctionTransformer.java
index 597bd4b..9c94e03 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/ReplaceFunctionTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/ReplaceFunctionTransformer.java
@@ -22,9 +22,10 @@
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.unary.UnaryTransformer;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
+
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.BytesUtils;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/RoundFunctionTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/RoundFunctionTransformer.java
index c3d2c97..4f8dd17 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/RoundFunctionTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/RoundFunctionTransformer.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.unary.UnaryTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/SubStringFunctionTransformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/SubStringFunctionTransformer.java
index ad41d69..0361019 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/SubStringFunctionTransformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/transformer/unary/scalar/SubStringFunctionTransformer.java
@@ -22,9 +22,10 @@
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
 import org.apache.iotdb.db.queryengine.transformation.dag.transformer.unary.UnaryTransformer;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
+
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.BytesUtils;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/udf/UDAFInformationInferrer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/udf/UDAFInformationInferrer.java
index a6d46ee..2ec587b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/udf/UDAFInformationInferrer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/udf/UDAFInformationInferrer.java
@@ -22,12 +22,12 @@
 import org.apache.iotdb.commons.udf.service.UDFManagementService;
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
 import org.apache.iotdb.db.exception.sql.SemanticException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.udf.api.UDAF;
 import org.apache.iotdb.udf.api.customizer.config.UDAFConfigurations;
 import org.apache.iotdb.udf.api.customizer.parameter.UDFParameterValidator;
 import org.apache.iotdb.udf.api.customizer.parameter.UDFParameters;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/udf/UDFParametersFactory.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/udf/UDFParametersFactory.java
index 1225989..23dca86 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/udf/UDFParametersFactory.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/udf/UDFParametersFactory.java
@@ -22,9 +22,10 @@
 import org.apache.iotdb.commons.conf.CommonConfig;
 import org.apache.iotdb.commons.conf.CommonDescriptor;
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.udf.api.customizer.parameter.UDFParameters;
 
+import org.apache.tsfile.enums.TSDataType;
+
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/udf/UDTFExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/udf/UDTFExecutor.java
index cb86a4b..0c0d99b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/udf/UDTFExecutor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/udf/UDTFExecutor.java
@@ -22,9 +22,6 @@
 import org.apache.iotdb.commons.udf.service.UDFManagementService;
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.tv.ElasticSerializableTVList;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.access.RowWindow;
@@ -33,6 +30,9 @@
 import org.apache.iotdb.udf.api.customizer.parameter.UDFParameters;
 import org.apache.iotdb.udf.api.customizer.strategy.AccessStrategy;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/udf/UDTFInformationInferrer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/udf/UDTFInformationInferrer.java
index 3e054be..7172235 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/udf/UDTFInformationInferrer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/udf/UDTFInformationInferrer.java
@@ -22,13 +22,13 @@
 import org.apache.iotdb.commons.udf.service.UDFManagementService;
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
 import org.apache.iotdb.db.exception.sql.SemanticException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.customizer.config.UDTFConfigurations;
 import org.apache.iotdb.udf.api.customizer.parameter.UDFParameterValidator;
 import org.apache.iotdb.udf.api.customizer.parameter.UDFParameters;
 import org.apache.iotdb.udf.api.customizer.strategy.AccessStrategy;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/util/LayerCacheUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/util/LayerCacheUtils.java
index 730ff13..8d090f6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/util/LayerCacheUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/util/LayerCacheUtils.java
@@ -26,7 +26,8 @@
 import org.apache.iotdb.db.queryengine.transformation.dag.input.IUDFInputDataSet;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.row.ElasticSerializableRowRecordList;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.tv.ElasticSerializableTVList;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/util/TransformUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/util/TransformUtils.java
index cf6c1f5..e085a09 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/util/TransformUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/util/TransformUtils.java
@@ -24,16 +24,17 @@
 import org.apache.iotdb.db.queryengine.transformation.datastructure.tv.ElasticSerializableTVList;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.util.ValueRecorder;
 import org.apache.iotdb.db.utils.CommonUtils;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.BooleanColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.DoubleColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.FloatColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.IntColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.LongColumn;
-import org.apache.iotdb.tsfile.utils.Binary;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.column.BinaryColumn;
+import org.apache.tsfile.read.common.block.column.BooleanColumn;
+import org.apache.tsfile.read.common.block.column.DoubleColumn;
+import org.apache.tsfile.read.common.block.column.FloatColumn;
+import org.apache.tsfile.read.common.block.column.IntColumn;
+import org.apache.tsfile.read.common.block.column.LongColumn;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.io.IOException;
 import java.util.Objects;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableList.java
index 9726bda..c6b7cee 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableList.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.commons.file.SystemFileFactory;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.service.TemporaryQueryDataFileService;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
+
+import org.apache.tsfile.utils.PublicBAOS;
 
 import java.io.IOException;
 import java.io.RandomAccessFile;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/row/ElasticSerializableRowRecordList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/row/ElasticSerializableRowRecordList.java
index 356648e..b6bb5c4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/row/ElasticSerializableRowRecordList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/row/ElasticSerializableRowRecordList.java
@@ -23,9 +23,10 @@
 import org.apache.iotdb.db.queryengine.transformation.dag.util.InputRowUtils;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.Cache;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.SerializableList;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/row/SerializableRowRecordList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/row/SerializableRowRecordList.java
index b220d19..79cc65c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/row/SerializableRowRecordList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/row/SerializableRowRecordList.java
@@ -21,11 +21,12 @@
 
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.SerializableList;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/ElasticSerializableBinaryTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/ElasticSerializableBinaryTVList.java
index 79e741b..50ad882 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/ElasticSerializableBinaryTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/ElasticSerializableBinaryTVList.java
@@ -21,10 +21,11 @@
 
 import org.apache.iotdb.commons.udf.utils.UDFBinaryTransformer;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.SerializableList;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 import org.apache.iotdb.udf.api.type.Binary;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.BytesUtils;
+
 import java.io.IOException;
 
 public class ElasticSerializableBinaryTVList extends ElasticSerializableTVList {
@@ -53,7 +54,7 @@
 
   @Override
   public void putString(long timestamp, String value) throws IOException {
-    org.apache.iotdb.tsfile.utils.Binary binary = BytesUtils.valueOf(value);
+    org.apache.tsfile.utils.Binary binary = BytesUtils.valueOf(value);
     super.putBinary(timestamp, UDFBinaryTransformer.transformToUDFBinary(binary));
     totalByteArrayLengthLimit += byteArrayLengthForMemoryControl;
     totalByteArrayLength += binary.getLength();
@@ -113,7 +114,7 @@
       newElasticSerializableTVList.bitMaps.add(null);
     }
     newElasticSerializableTVList.size = internalListEvictionUpperBound * newInternalTVListCapacity;
-    org.apache.iotdb.tsfile.utils.Binary empty = BytesUtils.valueOf("");
+    org.apache.tsfile.utils.Binary empty = BytesUtils.valueOf("");
     for (int i = newElasticSerializableTVList.size; i < evictionUpperBound; ++i) {
       newElasticSerializableTVList.putBinary(i, UDFBinaryTransformer.transformToUDFBinary(empty));
     }
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/ElasticSerializableTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/ElasticSerializableTVList.java
index 0e22ec0..1fd51be 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/ElasticSerializableTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/ElasticSerializableTVList.java
@@ -23,15 +23,16 @@
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
 import org.apache.iotdb.db.queryengine.transformation.api.YieldableState;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.Cache;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 import org.apache.iotdb.udf.api.collector.PointCollector;
 import org.apache.iotdb.udf.api.type.Binary;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
@@ -143,7 +144,7 @@
         .getBooleanByIndex(index % internalTVListCapacity);
   }
 
-  public org.apache.iotdb.tsfile.utils.Binary getBinary(int index) throws IOException {
+  public org.apache.tsfile.utils.Binary getBinary(int index) throws IOException {
     return cache
         .get(index / internalTVListCapacity)
         .getBinaryByIndex(index % internalTVListCapacity);
@@ -176,8 +177,7 @@
       case TEXT:
         putBinary(
             timestamp,
-            UDFBinaryTransformer.transformToUDFBinary(
-                (org.apache.iotdb.tsfile.utils.Binary) value));
+            UDFBinaryTransformer.transformToUDFBinary((org.apache.tsfile.utils.Binary) value));
         break;
       default:
         throw new UnSupportedDataTypeException(
@@ -256,8 +256,7 @@
       case TEXT:
         putBinary(
             timestamp,
-            UDFBinaryTransformer.transformToUDFBinary(
-                org.apache.iotdb.tsfile.utils.Binary.EMPTY_VALUE));
+            UDFBinaryTransformer.transformToUDFBinary(org.apache.tsfile.utils.Binary.EMPTY_VALUE));
         break;
       default:
         throw new UnSupportedDataTypeException(
@@ -339,7 +338,7 @@
       }
 
       @Override
-      public org.apache.iotdb.tsfile.utils.Binary currentBinary() throws IOException {
+      public org.apache.tsfile.utils.Binary currentBinary() throws IOException {
         return getBinary(currentPointIndex);
       }
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableBinaryTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableBinaryTVList.java
index d0affb4..3a24ba3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableBinaryTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableBinaryTVList.java
@@ -19,10 +19,10 @@
 
 package org.apache.iotdb.db.queryengine.transformation.datastructure.tv;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableBooleanTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableBooleanTVList.java
index f526b70..85be689 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableBooleanTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableBooleanTVList.java
@@ -19,10 +19,10 @@
 
 package org.apache.iotdb.db.queryengine.transformation.datastructure.tv;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableDoubleTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableDoubleTVList.java
index 29a45be..7f5ccc6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableDoubleTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableDoubleTVList.java
@@ -19,10 +19,10 @@
 
 package org.apache.iotdb.db.queryengine.transformation.datastructure.tv;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableFloatTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableFloatTVList.java
index 2e950b9..175cc3f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableFloatTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableFloatTVList.java
@@ -19,10 +19,10 @@
 
 package org.apache.iotdb.db.queryengine.transformation.datastructure.tv;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableIntTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableIntTVList.java
index 7c6a828..a28b8e9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableIntTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableIntTVList.java
@@ -19,10 +19,10 @@
 
 package org.apache.iotdb.db.queryengine.transformation.datastructure.tv;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableLongTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableLongTVList.java
index 33c7c1b..f4bec46 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableLongTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableLongTVList.java
@@ -19,10 +19,10 @@
 
 package org.apache.iotdb.db.queryengine.transformation.datastructure.tv;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableTVList.java
index 12d0a63..d8fecb7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/datastructure/tv/SerializableTVList.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.db.queryengine.transformation.datastructure.tv;
 
 import org.apache.iotdb.db.queryengine.transformation.datastructure.SerializableList;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.BatchData;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 public abstract class SerializableTVList extends BatchData implements SerializableList {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/impl/SchemaRegionMemoryImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/impl/SchemaRegionMemoryImpl.java
index a7431b4..46d264f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/impl/SchemaRegionMemoryImpl.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/impl/SchemaRegionMemoryImpl.java
@@ -86,10 +86,10 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IRollbackPreDeleteLogicalViewPlan;
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.db.utils.SchemaUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -102,7 +102,7 @@
 import java.util.Map;
 import java.util.Set;
 
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
+import static org.apache.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
 
 /**
  * This class takes the responsibility of serialization of all the metadata info of one certain
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/impl/SchemaRegionPBTreeImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/impl/SchemaRegionPBTreeImpl.java
index c99b37c..47618de 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/impl/SchemaRegionPBTreeImpl.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/impl/SchemaRegionPBTreeImpl.java
@@ -86,11 +86,11 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.ICreateLogicalViewPlan;
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.db.utils.SchemaUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+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.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -104,7 +104,7 @@
 import java.util.Set;
 import java.util.function.Consumer;
 
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
+import static org.apache.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
 
 /**
  * This class takes the responsibility of serialization of all the metadata info of one certain
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/MLogDescription.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/MLogDescription.java
index ebc8603..0c89c86 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/MLogDescription.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/MLogDescription.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.schemaengine.schemaregion.logfile;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/SchemaLogReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/SchemaLogReader.java
index fd07a0d..3cc8e20 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/SchemaLogReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/SchemaLogReader.java
@@ -20,8 +20,8 @@
 package org.apache.iotdb.db.schemaengine.schemaregion.logfile;
 
 import org.apache.iotdb.commons.file.SystemFileFactory;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanDeserializer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanDeserializer.java
index 8d32137..4c8c312 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanDeserializer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanDeserializer.java
@@ -45,11 +45,11 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IDeleteLogicalViewPlan;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IPreDeleteLogicalViewPlan;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IRollbackPreDeleteLogicalViewPlan;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+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.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanSerializer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanSerializer.java
index 48dbc97..a7930b1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanSerializer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanSerializer.java
@@ -41,10 +41,11 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IDeleteLogicalViewPlan;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IPreDeleteLogicalViewPlan;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IRollbackPreDeleteLogicalViewPlan;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+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.ReadWriteIOUtils;
 
 import javax.annotation.concurrent.NotThreadSafe;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanTxtSerializer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanTxtSerializer.java
index 737ddaa..1dfb74b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanTxtSerializer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanTxtSerializer.java
@@ -41,9 +41,10 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IDeleteLogicalViewPlan;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IPreDeleteLogicalViewPlan;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IRollbackPreDeleteLogicalViewPlan;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/MTreeBelowSGMemoryImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/MTreeBelowSGMemoryImpl.java
index 12d1a2c..7229511 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/MTreeBelowSGMemoryImpl.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/MTreeBelowSGMemoryImpl.java
@@ -70,14 +70,14 @@
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.db.storageengine.rescon.quotas.DataNodeSpaceQuotaManager;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import com.google.common.util.concurrent.ListenableFuture;
+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 org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/factory/MemMNodeFactory.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/factory/MemMNodeFactory.java
index 186fa3c..7dbfadf 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/factory/MemMNodeFactory.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/factory/MemMNodeFactory.java
@@ -29,7 +29,8 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.impl.DatabaseMNode;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.impl.MeasurementMNode;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.info.DeviceInfo;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 @MNodeFactory
 public class MemMNodeFactory implements IMNodeFactory<IMemMNode> {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/impl/MeasurementMNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/impl/MeasurementMNode.java
index 1de320d..a40cbe6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/impl/MeasurementMNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/impl/MeasurementMNode.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.basic.BasicMNode;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.container.MemMNodeContainer;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.info.MeasurementInfo;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 public class MeasurementMNode extends AbstractMeasurementMNode<IMemMNode, BasicMNode>
     implements IMemMNode {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/info/LogicalViewInfo.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/info/LogicalViewInfo.java
index 5ac3a5f..8ab10fa 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/info/LogicalViewInfo.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/info/LogicalViewInfo.java
@@ -28,8 +28,9 @@
 import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpression;
 import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpressionType;
 import org.apache.iotdb.commons.schema.view.viewExpression.leaf.TimeSeriesViewOperand;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 /**
  * This structure is used in ViewMNode. It stores all information except the name of this view. The
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/info/MeasurementInfo.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/info/MeasurementInfo.java
index 0175c2b..c43cd9a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/info/MeasurementInfo.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/mnode/info/MeasurementInfo.java
@@ -20,8 +20,9 @@
 
 import org.apache.iotdb.commons.schema.node.info.IMeasurementInfo;
 import org.apache.iotdb.commons.schema.node.role.IMeasurementMNode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 public class MeasurementInfo implements IMeasurementInfo {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/snapshot/MemMTreeSnapshotUtil.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/snapshot/MemMTreeSnapshotUtil.java
index c06f520..9508221 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/snapshot/MemMTreeSnapshotUtil.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/mem/snapshot/MemMTreeSnapshotUtil.java
@@ -35,9 +35,9 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.MemMTreeStore;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.IMemMNode;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.loader.MNodeFactoryLoader;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/MTreeBelowSGCachedImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/MTreeBelowSGCachedImpl.java
index 3d99ebe..d803bc1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/MTreeBelowSGCachedImpl.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/MTreeBelowSGCachedImpl.java
@@ -66,14 +66,14 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.utils.MetaFormatUtils;
 import org.apache.iotdb.db.schemaengine.schemaregion.utils.filter.DeviceFilterVisitor;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import com.google.common.util.concurrent.ListenableFuture;
+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 org.apache.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/memory/ReleaseFlushMonitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/memory/ReleaseFlushMonitor.java
index 81dbd81..4c3ec8d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/memory/ReleaseFlushMonitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/memory/ReleaseFlushMonitor.java
@@ -32,8 +32,8 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.memcontrol.ReleaseFlushStrategyNumBasedImpl;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.memcontrol.ReleaseFlushStrategySizeBasedImpl;
 import org.apache.iotdb.db.utils.concurrent.FiniteSemaphore;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/mnode/factory/CacheMNodeFactory.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/mnode/factory/CacheMNodeFactory.java
index cf31d31..894cdb9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/mnode/factory/CacheMNodeFactory.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/mnode/factory/CacheMNodeFactory.java
@@ -29,7 +29,8 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.mnode.impl.CachedBasicInternalMNode;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.mnode.impl.CachedDatabaseMNode;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.mnode.impl.CachedMeasurementMNode;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 @MNodeFactory
 public class CacheMNodeFactory implements IMNodeFactory<ICachedMNode> {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/mnode/impl/CachedMeasurementMNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/mnode/impl/CachedMeasurementMNode.java
index e9fc534..fff9e61 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/mnode/impl/CachedMeasurementMNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/mnode/impl/CachedMeasurementMNode.java
@@ -27,7 +27,8 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.mnode.ICachedMNode;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.mnode.basic.CachedBasicMNode;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.mnode.container.CachedMNodeContainer;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 public class CachedMeasurementMNode extends AbstractMeasurementMNode<ICachedMNode, CachedBasicMNode>
     implements ICachedMNode {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/AliasIndexPage.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/AliasIndexPage.java
index 0b2b9ac..b8254c0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/AliasIndexPage.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/AliasIndexPage.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.db.exception.metadata.schemafile.RecordDuplicatedException;
 import org.apache.iotdb.db.exception.metadata.schemafile.SegmentOverflowException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayDeque;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/ISchemaPage.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/ISchemaPage.java
index d3cfc33..458b9e2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/ISchemaPage.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/ISchemaPage.java
@@ -21,7 +21,8 @@
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.exception.metadata.schemafile.SegmentNotFoundException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/InternalPage.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/InternalPage.java
index 1466c1a..70d044f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/InternalPage.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/InternalPage.java
@@ -21,7 +21,8 @@
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.db.exception.metadata.schemafile.RecordDuplicatedException;
 import org.apache.iotdb.db.exception.metadata.schemafile.SegmentOverflowException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayDeque;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/RecordUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/RecordUtils.java
index b48eb06..d03313d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/RecordUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/RecordUtils.java
@@ -28,12 +28,13 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.mnode.ICachedMNode;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.mnode.container.ICachedMNodeContainer;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.loader.MNodeFactoryLoader;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+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.ReadWriteIOUtils;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/SchemaFile.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/SchemaFile.java
index 1b59a45..babad02 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/SchemaFile.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/SchemaFile.java
@@ -36,8 +36,8 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.schemafile.pagemgr.IPageManager;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.schemafile.pagemgr.PageManager;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.loader.MNodeFactoryLoader;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/SchemaPage.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/SchemaPage.java
index 8680103..111dfaa 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/SchemaPage.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/SchemaPage.java
@@ -21,7 +21,8 @@
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.exception.metadata.schemafile.SegmentNotFoundException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/SegmentedPage.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/SegmentedPage.java
index 80db9c0..f5709e4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/SegmentedPage.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/SegmentedPage.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.db.exception.metadata.schemafile.SchemaPageOverflowException;
 import org.apache.iotdb.db.exception.metadata.schemafile.SegmentNotFoundException;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.mnode.ICachedMNode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/WrappedSegment.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/WrappedSegment.java
index cc43f61..e46f1ae 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/WrappedSegment.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/WrappedSegment.java
@@ -24,11 +24,12 @@
 import org.apache.iotdb.db.exception.metadata.schemafile.ColossalRecordException;
 import org.apache.iotdb.db.exception.metadata.schemafile.RecordDuplicatedException;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.mnode.ICachedMNode;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+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.utils.ReadWriteIOUtils;
 
 import java.nio.BufferUnderflowException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/info/ITimeSeriesSchemaInfo.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/info/ITimeSeriesSchemaInfo.java
index fb644c6..357e415 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/info/ITimeSeriesSchemaInfo.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/info/ITimeSeriesSchemaInfo.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info;
 
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.util.Map;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/info/impl/ShowTimeSeriesResult.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/info/impl/ShowTimeSeriesResult.java
index b2d3158..21513a9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/info/impl/ShowTimeSeriesResult.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/info/impl/ShowTimeSeriesResult.java
@@ -19,10 +19,11 @@
 package org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.impl;
 
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.ITimeSeriesSchemaInfo;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+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.write.schema.IMeasurementSchema;
 
 import java.util.Map;
 import java.util.Objects;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/info/impl/TimeseriesSchemaInfo.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/info/impl/TimeseriesSchemaInfo.java
index f7f96b9..82af5fe 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/info/impl/TimeseriesSchemaInfo.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/info/impl/TimeseriesSchemaInfo.java
@@ -21,7 +21,8 @@
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.schema.node.role.IMeasurementMNode;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.ITimeSeriesSchemaInfo;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.util.Map;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/reader/impl/TimeseriesReaderWithViewFetch.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/reader/impl/TimeseriesReaderWithViewFetch.java
index b70ded9..4a6e064 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/reader/impl/TimeseriesReaderWithViewFetch.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/reader/impl/TimeseriesReaderWithViewFetch.java
@@ -39,10 +39,10 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.utils.filter.TimeseriesFilterVisitor;
 import org.apache.iotdb.db.schemaengine.schemaregion.view.visitor.GetSourcePathsVisitor;
 import org.apache.iotdb.db.schemaengine.schemaregion.view.visitor.TransformToExpressionVisitor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.enums.TSDataType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/tag/TagLogFile.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/tag/TagLogFile.java
index a34a024..7e2a7a0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/tag/TagLogFile.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/tag/TagLogFile.java
@@ -23,10 +23,10 @@
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.file.SystemFileFactory;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/tag/TagManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/tag/TagManager.java
index cb68529..1c770e7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/tag/TagManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/tag/TagManager.java
@@ -38,8 +38,8 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.reader.ISchemaReader;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.reader.impl.SchemaReaderLimitOffsetWrapper;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.reader.impl.TimeseriesReaderWithViewFetch;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/MNodeUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/MNodeUtils.java
index fb3b034..3506f6f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/MNodeUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/MNodeUtils.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.commons.schema.node.utils.IMNodeFactory;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.info.DeviceInfo;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.util.Iterator;
 
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 b51cf9d..67fbb65 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
@@ -28,9 +28,10 @@
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationDescriptor;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.Pair;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/ResourceByPathUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/ResourceByPathUtils.java
index 5cc13a5..14ff80d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/ResourceByPathUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/ResourceByPathUtils.java
@@ -36,21 +36,22 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.utils.ModificationUtils;
 import org.apache.iotdb.db.utils.datastructure.TVList;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.AlignedTimeSeriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.VectorMeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.file.metadata.AlignedTimeSeriesMetadata;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+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.TimeseriesMetadata;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.VectorMeasurementSchema;
+import org.apache.tsfile.write.writer.RestorableTsFileIOWriter;
 
 import java.io.IOException;
 import java.io.Serializable;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/view/ViewPaths.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/view/ViewPaths.java
index 3aead42..73127f25 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/view/ViewPaths.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/view/ViewPaths.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimeSeriesOperand;
 import org.apache.iotdb.db.queryengine.plan.expression.visitor.CollectAggregationExpressionsVisitor;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/view/visitor/TransformToExpressionVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/view/visitor/TransformToExpressionVisitor.java
index 6ab95e5..fdfeea2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/view/visitor/TransformToExpressionVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/view/visitor/TransformToExpressionVisitor.java
@@ -73,7 +73,8 @@
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.NullOperand;
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimeSeriesOperand;
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimestampOperand;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import javax.ws.rs.NotSupportedException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/ICreateAlignedTimeSeriesPlan.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/ICreateAlignedTimeSeriesPlan.java
index c8604cc..67a0aa5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/ICreateAlignedTimeSeriesPlan.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/ICreateAlignedTimeSeriesPlan.java
@@ -23,9 +23,10 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.ISchemaRegionPlan;
 import org.apache.iotdb.db.schemaengine.schemaregion.SchemaRegionPlanType;
 import org.apache.iotdb.db.schemaengine.schemaregion.SchemaRegionPlanVisitor;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 
 import java.util.List;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/ICreateTimeSeriesPlan.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/ICreateTimeSeriesPlan.java
index 89ed427..1024ed8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/ICreateTimeSeriesPlan.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/ICreateTimeSeriesPlan.java
@@ -23,9 +23,10 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.ISchemaRegionPlan;
 import org.apache.iotdb.db.schemaengine.schemaregion.SchemaRegionPlanType;
 import org.apache.iotdb.db.schemaengine.schemaregion.SchemaRegionPlanVisitor;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 
 import java.util.Map;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/SchemaRegionWritePlanFactory.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/SchemaRegionWritePlanFactory.java
index 6196048..16b00d9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/SchemaRegionWritePlanFactory.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/SchemaRegionWritePlanFactory.java
@@ -45,9 +45,10 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IDeleteLogicalViewPlan;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IPreDeleteLogicalViewPlan;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.view.IRollbackPreDeleteLogicalViewPlan;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 
 import java.util.List;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/impl/CreateAlignedTimeSeriesPlanImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/impl/CreateAlignedTimeSeriesPlanImpl.java
index e197fd1..f8b6e74 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/impl/CreateAlignedTimeSeriesPlanImpl.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/impl/CreateAlignedTimeSeriesPlanImpl.java
@@ -21,10 +21,11 @@
 
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.ICreateAlignedTimeSeriesPlan;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+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.write.schema.MeasurementSchema;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/impl/CreateTimeSeriesPlanImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/impl/CreateTimeSeriesPlanImpl.java
index bf7a426..0e0e8d6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/impl/CreateTimeSeriesPlanImpl.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/impl/CreateTimeSeriesPlanImpl.java
@@ -20,10 +20,11 @@
 
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.ICreateTimeSeriesPlan;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+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.write.schema.MeasurementSchema;
 
 import java.util.Map;
 import java.util.TreeMap;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/ClusterTemplateManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/ClusterTemplateManager.java
index f6e409f..4459f29 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/ClusterTemplateManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/ClusterTemplateManager.java
@@ -44,12 +44,12 @@
 import org.apache.iotdb.db.utils.SchemaUtils;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import org.apache.thrift.TException;
 import org.apache.thrift.transport.TTransportException;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/ITemplateManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/ITemplateManager.java
index f38e371..21b91b8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/ITemplateManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/ITemplateManager.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.path.PathPatternTree;
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.template.CreateSchemaTemplateStatement;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.List;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/Template.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/Template.java
index ac16825..8fe86a9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/Template.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/Template.java
@@ -20,15 +20,15 @@
 package org.apache.iotdb.db.schemaengine.template;
 
 import org.apache.iotdb.commons.exception.IllegalPathException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.VectorMeasurementSchema;
 
 import org.apache.commons.lang3.builder.HashCodeBuilder;
+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.ReadWriteIOUtils;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.VectorMeasurementSchema;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/TemplateAlterOperationType.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/TemplateAlterOperationType.java
index 46aefae..22209f3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/TemplateAlterOperationType.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/TemplateAlterOperationType.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.schemaengine.template;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/TemplateInternalRPCUpdateType.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/TemplateInternalRPCUpdateType.java
index 690f1ee..c273849 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/TemplateInternalRPCUpdateType.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/TemplateInternalRPCUpdateType.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.schemaengine.template;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/TemplateInternalRPCUtil.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/TemplateInternalRPCUtil.java
index 75484af..72ae10f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/TemplateInternalRPCUtil.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/TemplateInternalRPCUtil.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.schemaengine.template;
 
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/alter/TemplateAlterInfo.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/alter/TemplateAlterInfo.java
index 4e2ef50..4a764e6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/alter/TemplateAlterInfo.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/alter/TemplateAlterInfo.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.schemaengine.template.alter;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/alter/TemplateExtendInfo.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/alter/TemplateExtendInfo.java
index 7a6af6a..b753f26 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/alter/TemplateExtendInfo.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/template/alter/TemplateExtendInfo.java
@@ -19,10 +19,10 @@
 
 package org.apache.iotdb.db.schemaengine.template.alter;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+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.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java
index 87dc13e..5f581f2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java
@@ -52,9 +52,9 @@
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.service.rpc.thrift.TSInsertRecordReq;
 import org.apache.iotdb.session.util.SessionUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.enums.TSDataType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/file/TsFileMetrics.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/file/TsFileMetrics.java
index 2bf47d7..7423f0a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/file/TsFileMetrics.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/file/TsFileMetrics.java
@@ -27,8 +27,8 @@
 import org.apache.iotdb.metrics.metricsets.IMetricSet;
 import org.apache.iotdb.metrics.type.Gauge;
 import org.apache.iotdb.metrics.utils.MetricLevel;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/StorageEngine.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/StorageEngine.java
index 14c3490..5bcff34 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/StorageEngine.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/StorageEngine.java
@@ -71,10 +71,10 @@
 import org.apache.iotdb.db.utils.ThreadUtils;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.FilePathUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.utils.FilePathUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/BloomFilterCache.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/BloomFilterCache.java
index ac06824..ca2f347 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/BloomFilterCache.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/BloomFilterCache.java
@@ -23,13 +23,13 @@
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.utils.BloomFilter;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
 
 import com.github.benmanes.caffeine.cache.Caffeine;
 import com.github.benmanes.caffeine.cache.LoadingCache;
 import com.github.benmanes.caffeine.cache.Weigher;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.utils.BloomFilter;
+import org.apache.tsfile.utils.RamUsageEstimator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/ChunkCache.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/ChunkCache.java
index 9834724..3ad81d399 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/ChunkCache.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/ChunkCache.java
@@ -27,15 +27,15 @@
 import org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet;
 import org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileID;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
 
 import com.github.benmanes.caffeine.cache.Caffeine;
 import com.github.benmanes.caffeine.cache.LoadingCache;
 import com.github.benmanes.caffeine.cache.Weigher;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.utils.RamUsageEstimator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/TimeSeriesMetadataCache.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/TimeSeriesMetadataCache.java
index 3557646..bf30899 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/TimeSeriesMetadataCache.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/TimeSeriesMetadataCache.java
@@ -28,17 +28,17 @@
 import org.apache.iotdb.db.queryengine.metric.TimeSeriesMetadataCacheMetrics;
 import org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileID;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.utils.BloomFilter;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
 
 import com.github.benmanes.caffeine.cache.Cache;
 import com.github.benmanes.caffeine.cache.Caffeine;
 import com.github.benmanes.caffeine.cache.Weigher;
+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.file.metadata.TimeseriesMetadata;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.utils.BloomFilter;
+import org.apache.tsfile.utils.RamUsageEstimator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -54,7 +54,7 @@
 
 import static org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.READ_TIMESERIES_METADATA_CACHE;
 import static org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.READ_TIMESERIES_METADATA_FILE;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfCharArray;
+import static org.apache.tsfile.utils.RamUsageEstimator.sizeOfCharArray;
 
 /**
  * This class is used to cache <code>TimeSeriesMetadata</code> in IoTDB. The caching strategy is
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 9555eb0..6c62a28 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
@@ -105,19 +105,19 @@
 import org.apache.iotdb.db.utils.DateTimeUtils;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.fileSystem.FSType;
-import org.apache.iotdb.tsfile.fileSystem.fsFactory.FSFactory;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.utils.FSUtils;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter;
 
 import org.apache.commons.io.FileUtils;
+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.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.fileSystem.FSType;
+import org.apache.tsfile.fileSystem.fsFactory.FSFactory;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.utils.FSUtils;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.writer.RestorableTsFileIOWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -159,7 +159,7 @@
 import static org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource.BROKEN_SUFFIX;
 import static org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource.RESOURCE_SUFFIX;
 import static org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource.TEMP_SUFFIX;
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.TSFILE_SUFFIX;
+import static org.apache.tsfile.common.constant.TsFileConstant.TSFILE_SUFFIX;
 
 /**
  * For sequence data, a {@link DataRegion} has some {@link TsFileProcessor}s, in which there is only
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DeviceLastFlushTime.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DeviceLastFlushTime.java
index 2f9180d..fe62176 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DeviceLastFlushTime.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DeviceLastFlushTime.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.storageengine.dataregion;
 
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.IDeviceID;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/HashLastFlushTimeMap.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/HashLastFlushTimeMap.java
index 131cdc7..4060eb9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/HashLastFlushTimeMap.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/HashLastFlushTimeMap.java
@@ -19,8 +19,7 @@
 
 package org.apache.iotdb.db.storageengine.dataregion;
 
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-
+import org.apache.tsfile.file.metadata.IDeviceID;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/IDataRegionForQuery.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/IDataRegionForQuery.java
index 117cfa9..a0a52cf 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/IDataRegionForQuery.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/IDataRegionForQuery.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.execution.fragment.QueryContext;
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
+
+import org.apache.tsfile.read.filter.basic.Filter;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/ILastFlushTime.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/ILastFlushTime.java
index 6bb506f..be68369 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/ILastFlushTime.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/ILastFlushTime.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.storageengine.dataregion;
 
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.IDeviceID;
 
 public interface ILastFlushTime {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/ILastFlushTimeMap.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/ILastFlushTimeMap.java
index eaddacc..19ff2c2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/ILastFlushTimeMap.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/ILastFlushTimeMap.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.storageengine.dataregion;
 
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.IDeviceID;
 
 import java.util.Map;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/PartitionLastFlushTime.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/PartitionLastFlushTime.java
index 0b8378c..a597686 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/PartitionLastFlushTime.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/PartitionLastFlushTime.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.storageengine.dataregion;
 
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.IDeviceID;
 
 public class PartitionLastFlushTime implements ILastFlushTime {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/VirtualDataRegion.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/VirtualDataRegion.java
index 5d4b6b1..6be5449 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/VirtualDataRegion.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/VirtualDataRegion.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.execution.fragment.QueryContext;
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
+
+import org.apache.tsfile.read.filter.basic.Filter;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionExceptionHandler.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionExceptionHandler.java
index 5c663e3..fcde9a6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionExceptionHandler.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionExceptionHandler.java
@@ -26,9 +26,9 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceList;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.storageengine.rescon.memory.TsFileResourceManager;
-import org.apache.iotdb.tsfile.utils.TsFileUtils;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.utils.TsFileUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/FastCompactionPerformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/FastCompactionPerformer.java
index 7db30f7..ae1b21f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/FastCompactionPerformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/FastCompactionPerformer.java
@@ -39,13 +39,13 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionTaskManager;
 import org.apache.iotdb.db.storageengine.dataregion.modification.Modification;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.exception.write.PageException;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.read.TsFileSequenceReader;
+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;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/ReadChunkCompactionPerformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/ReadChunkCompactionPerformer.java
index 569d979..b56d6a7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/ReadChunkCompactionPerformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/performer/impl/ReadChunkCompactionPerformer.java
@@ -35,13 +35,14 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.constant.CompactionType;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.rescon.memory.SystemInfo;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.PageException;
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.utils.Pair;
 
 import java.io.IOException;
 import java.util.LinkedList;
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 d927ac3..4d3e776 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
@@ -41,15 +41,15 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.storageengine.dataregion.read.control.QueryResourceManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/recover/CompactionRecoverTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/recover/CompactionRecoverTask.java
index a504df6e..ef0f56a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/recover/CompactionRecoverTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/recover/CompactionRecoverTask.java
@@ -27,10 +27,10 @@
 import org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.utils.TsFileUtils;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.utils.TsFileUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/AbstractCompactionTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/AbstractCompactionTask.java
index a79952d..a9d599d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/AbstractCompactionTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/AbstractCompactionTask.java
@@ -40,9 +40,9 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.storageengine.dataregion.utils.validate.TsFileValidator;
 import org.apache.iotdb.db.storageengine.rescon.memory.SystemInfo;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.exception.StopReadTsFileByInterruptException;
 
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.exception.StopReadTsFileByInterruptException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/CrossSpaceCompactionTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/CrossSpaceCompactionTask.java
index f2e7d4d..2c6aa02 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/CrossSpaceCompactionTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/CrossSpaceCompactionTask.java
@@ -35,8 +35,8 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
-import org.apache.iotdb.tsfile.utils.TsFileUtils;
 
+import org.apache.tsfile.utils.TsFileUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/InnerSpaceCompactionTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/InnerSpaceCompactionTask.java
index d220337..d0bcbfa 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/InnerSpaceCompactionTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/InnerSpaceCompactionTask.java
@@ -40,10 +40,11 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.StopReadTsFileByInterruptException;
-import org.apache.iotdb.tsfile.exception.write.TsFileNotCompleteException;
-import org.apache.iotdb.tsfile.utils.TsFileUtils;
+
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.exception.StopReadTsFileByInterruptException;
+import org.apache.tsfile.exception.write.TsFileNotCompleteException;
+import org.apache.tsfile.utils.TsFileUtils;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/subtask/FastCompactionPerformerSubTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/subtask/FastCompactionPerformerSubTask.java
index 1060a04..759b65d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/subtask/FastCompactionPerformerSubTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/subtask/FastCompactionPerformerSubTask.java
@@ -26,11 +26,12 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.writer.AbstractCompactionWriter;
 import org.apache.iotdb.db.storageengine.dataregion.modification.Modification;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.exception.write.PageException;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/subtask/ReadPointPerformerSubTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/subtask/ReadPointPerformerSubTask.java
index 232ffe9..ba3fd98 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/subtask/ReadPointPerformerSubTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/subtask/ReadPointPerformerSubTask.java
@@ -25,10 +25,10 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.reader.IDataBlockReader;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.writer.AbstractCompactionWriter;
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionPathUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionPathUtils.java
index 73ba8ff..98588bf 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionPathUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionPathUtils.java
@@ -22,9 +22,10 @@
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.DataNodeDevicePathCache;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
+
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
 
 public class CompactionPathUtils {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionUtils.java
index 0caa181..7179c99 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionUtils.java
@@ -29,12 +29,12 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.metrics.utils.MetricLevel;
 import org.apache.iotdb.metrics.utils.SystemMetric;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/MultiTsFileDeviceIterator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/MultiTsFileDeviceIterator.java
index c6241c99..1002078 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/MultiTsFileDeviceIterator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/MultiTsFileDeviceIterator.java
@@ -28,16 +28,17 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.utils.ModificationUtils;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TsFileDeviceIterator;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.TimeseriesMetadata;
+import org.apache.tsfile.read.TsFileDeviceIterator;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/AlignedSeriesCompactionExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/AlignedSeriesCompactionExecutor.java
index f403fb9..a9143e2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/AlignedSeriesCompactionExecutor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/AlignedSeriesCompactionExecutor.java
@@ -35,17 +35,18 @@
 import org.apache.iotdb.db.storageengine.dataregion.modification.Modification;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.utils.ModificationUtils;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.exception.write.PageException;
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/NonAlignedSeriesCompactionExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/NonAlignedSeriesCompactionExecutor.java
index bcf5e3c..9447a8e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/NonAlignedSeriesCompactionExecutor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/NonAlignedSeriesCompactionExecutor.java
@@ -33,18 +33,19 @@
 import org.apache.iotdb.db.storageengine.dataregion.modification.Modification;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.utils.ModificationUtils;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.exception.write.PageException;
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/SeriesCompactionExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/SeriesCompactionExecutor.java
index 97e7cd8..b2e7566 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/SeriesCompactionExecutor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/SeriesCompactionExecutor.java
@@ -33,14 +33,15 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.writer.AbstractCompactionWriter;
 import org.apache.iotdb.db.storageengine.dataregion.modification.Modification;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
+
+import org.apache.tsfile.exception.write.PageException;
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.TimeRange;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/AlignedPageElement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/AlignedPageElement.java
index e1b5c2e..ca09be7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/AlignedPageElement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/AlignedPageElement.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.fast.element;
 
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.fast.reader.CompactionAlignedChunkReader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
+
+import org.apache.tsfile.file.header.PageHeader;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/ChunkMetadataElement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/ChunkMetadataElement.java
index fafdef5..65f7f98 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/ChunkMetadataElement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/ChunkMetadataElement.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.fast.element;
 
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.read.common.Chunk;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.read.common.Chunk;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/NonAlignedPageElement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/NonAlignedPageElement.java
index 81b0b6a..157b557 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/NonAlignedPageElement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/NonAlignedPageElement.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.fast.element;
 
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.fast.reader.CompactionChunkReader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
+
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/PageElement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/PageElement.java
index 98db8a6..ebd1359 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/PageElement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/PageElement.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.fast.element;
 
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
+import org.apache.tsfile.read.reader.IPointReader;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/PointElement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/PointElement.java
index cf09ddf..c702ed4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/PointElement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/element/PointElement.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.fast.element;
 
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.reader.IPointReader;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/reader/CompactionAlignedChunkReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/reader/CompactionAlignedChunkReader.java
index 9b94171..e81f4d9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/reader/CompactionAlignedChunkReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/reader/CompactionAlignedChunkReader.java
@@ -19,24 +19,24 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.fast.reader;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.compress.IUnCompressor;
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.read.reader.page.AlignedPageReader;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.compress.IUnCompressor;
+import org.apache.tsfile.encoding.decoder.Decoder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.reader.IPointReader;
+import org.apache.tsfile.read.reader.page.AlignedPageReader;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.List;
 
-import static org.apache.iotdb.tsfile.read.reader.chunk.ChunkReader.uncompressPageData;
+import static org.apache.tsfile.read.reader.chunk.ChunkReader.uncompressPageData;
 
 public class CompactionAlignedChunkReader {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/reader/CompactionChunkReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/reader/CompactionChunkReader.java
index 6726816..4c1a29c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/reader/CompactionChunkReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/reader/CompactionChunkReader.java
@@ -19,28 +19,28 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.fast.reader;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.compress.IUnCompressor;
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.reader.page.PageReader;
-import org.apache.iotdb.tsfile.utils.Pair;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.compress.IUnCompressor;
+import org.apache.tsfile.encoding.decoder.Decoder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.MetaMarker;
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.reader.page.PageReader;
+import org.apache.tsfile.utils.Pair;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.List;
 
-import static org.apache.iotdb.tsfile.read.reader.chunk.ChunkReader.readCompressedPageData;
-import static org.apache.iotdb.tsfile.read.reader.chunk.ChunkReader.uncompressPageData;
+import static org.apache.tsfile.read.reader.chunk.ChunkReader.readCompressedPageData;
+import static org.apache.tsfile.read.reader.chunk.ChunkReader.uncompressPageData;
 
 public class CompactionChunkReader {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/AlignedSeriesCompactionExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/AlignedSeriesCompactionExecutor.java
index 6a123c2..a92587d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/AlignedSeriesCompactionExecutor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/AlignedSeriesCompactionExecutor.java
@@ -25,22 +25,23 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.io.CompactionTsFileReader;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.io.CompactionTsFileWriter;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.read.TsFileAlignedSeriesReaderIterator;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.IBatchDataIterator;
-import org.apache.iotdb.tsfile.read.reader.chunk.AlignedChunkReader;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.read.TsFileAlignedSeriesReaderIterator;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.IBatchDataIterator;
+import org.apache.tsfile.read.reader.chunk.AlignedChunkReader;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/ReadChunkAlignedSeriesCompactionExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/ReadChunkAlignedSeriesCompactionExecutor.java
index d5f0785..44f05e8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/ReadChunkAlignedSeriesCompactionExecutor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/ReadChunkAlignedSeriesCompactionExecutor.java
@@ -30,28 +30,29 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.io.CompactionTsFileReader;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.io.CompactionTsFileWriter;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.read.reader.page.AlignedPageReader;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.encoding.decoder.Decoder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.PageException;
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.reader.IPointReader;
+import org.apache.tsfile.read.reader.page.AlignedPageReader;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
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 88ac67f..01d9878 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
@@ -25,20 +25,21 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.CompactionTaskSummary;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.io.CompactionTsFileWriter;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.reader.IChunkReader;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.read.reader.chunk.ChunkReader;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+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;
+import org.apache.tsfile.read.reader.IChunkReader;
+import org.apache.tsfile.read.reader.IPointReader;
+import org.apache.tsfile.read.reader.chunk.ChunkReader;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.io.IOException;
 import java.util.LinkedList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/ChunkLoader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/ChunkLoader.java
index 9936556..c91f150 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/ChunkLoader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/ChunkLoader.java
@@ -20,11 +20,12 @@
 package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.readchunk.loader;
 
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.ModifiedStatus;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
+
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.TimeRange;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/InstantChunkLoader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/InstantChunkLoader.java
index 4166a1a..f5db570 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/InstantChunkLoader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/InstantChunkLoader.java
@@ -20,11 +20,12 @@
 package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.readchunk.loader;
 
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.ModifiedStatus;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.read.common.Chunk;
+
+import org.apache.tsfile.file.MetaMarker;
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.read.common.Chunk;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/InstantPageLoader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/InstantPageLoader.java
index 2bea44d..7883d81 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/InstantPageLoader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/InstantPageLoader.java
@@ -20,14 +20,15 @@
 package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.readchunk.loader;
 
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.ModifiedStatus;
-import org.apache.iotdb.tsfile.compress.IUnCompressor;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
+
+import org.apache.tsfile.compress.IUnCompressor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.PageException;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/PageLoader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/PageLoader.java
index 4a31f0e..8e8594f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/PageLoader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/loader/PageLoader.java
@@ -20,13 +20,14 @@
 package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.readchunk.loader;
 
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.ModifiedStatus;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.PageException;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/log/TsFileIdentifier.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/log/TsFileIdentifier.java
index 91fd679..441e279 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/log/TsFileIdentifier.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/log/TsFileIdentifier.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
+
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
 
 import java.io.File;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/reader/IDataBlockReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/reader/IDataBlockReader.java
index ac4aba7..2210aa9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/reader/IDataBlockReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/reader/IDataBlockReader.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.reader;
 
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/reader/PointPriorityReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/reader/PointPriorityReader.java
index 918d147..4145a0b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/reader/PointPriorityReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/reader/PointPriorityReader.java
@@ -24,8 +24,9 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.fast.SeriesCompactionExecutor;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.fast.element.PageElement;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.fast.element.PointElement;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/reader/SeriesDataBlockReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/reader/SeriesDataBlockReader.java
index 822f34e..0e3a994 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/reader/SeriesDataBlockReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/reader/SeriesDataBlockReader.java
@@ -30,9 +30,9 @@
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
 import com.google.common.collect.Sets;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import java.io.IOException;
 import java.util.HashSet;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractCompactionWriter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractCompactionWriter.java
index ba85bcf..fea68aa 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractCompactionWriter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractCompactionWriter.java
@@ -23,23 +23,24 @@
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.exception.CompactionLastTimeCheckFailedException;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.io.CompactionTsFileWriter;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
-import org.apache.iotdb.tsfile.write.chunk.ValueChunkWriter;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.exception.write.PageException;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
+import org.apache.tsfile.write.chunk.IChunkWriter;
+import org.apache.tsfile.write.chunk.ValueChunkWriter;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractCrossCompactionWriter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractCrossCompactionWriter.java
index 8dc7343..cf20ff4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractCrossCompactionWriter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractCrossCompactionWriter.java
@@ -25,12 +25,13 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.constant.CompactionType;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.rescon.memory.SystemInfo;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.TimeseriesMetadata;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractInnerCompactionWriter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractInnerCompactionWriter.java
index e8b0a25..cb8043e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractInnerCompactionWriter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractInnerCompactionWriter.java
@@ -25,9 +25,10 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.constant.CompactionType;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.rescon.memory.SystemInfo;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
+
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/FastCrossCompactionWriter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/FastCrossCompactionWriter.java
index 442004d..b448af7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/FastCrossCompactionWriter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/FastCrossCompactionWriter.java
@@ -20,15 +20,16 @@
 package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.writer;
 
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
+
+import org.apache.tsfile.exception.write.PageException;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/FastInnerCompactionWriter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/FastInnerCompactionWriter.java
index 1a39e29..1182cfb 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/FastInnerCompactionWriter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/FastInnerCompactionWriter.java
@@ -20,14 +20,15 @@
 package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.writer;
 
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
+
+import org.apache.tsfile.exception.write.PageException;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/ReadPointCrossCompactionWriter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/ReadPointCrossCompactionWriter.java
index 12cb119..7c10fb2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/ReadPointCrossCompactionWriter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/ReadPointCrossCompactionWriter.java
@@ -21,15 +21,16 @@
 
 import org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/ReadPointInnerCompactionWriter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/ReadPointInnerCompactionWriter.java
index 1730f35..d57ffe9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/ReadPointInnerCompactionWriter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/ReadPointInnerCompactionWriter.java
@@ -20,14 +20,15 @@
 package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.writer;
 
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/RepairUnsortedFileCompactionWriter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/RepairUnsortedFileCompactionWriter.java
index 5b0c0cc..5dce419 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/RepairUnsortedFileCompactionWriter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/RepairUnsortedFileCompactionWriter.java
@@ -20,11 +20,12 @@
 package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.writer;
 
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.reader.IPointReader;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileInput.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileInput.java
index 800e8fa..b13475e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileInput.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileInput.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.compaction.io;
 
-import org.apache.iotdb.tsfile.exception.StopReadTsFileByInterruptException;
-import org.apache.iotdb.tsfile.read.reader.TsFileInput;
+import org.apache.tsfile.exception.StopReadTsFileByInterruptException;
+import org.apache.tsfile.read.reader.TsFileInput;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileOutput.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileOutput.java
index 3992b6a..cdd89d9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileOutput.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileOutput.java
@@ -19,9 +19,8 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.compaction.io;
 
-import org.apache.iotdb.tsfile.write.writer.TsFileOutput;
-
 import com.google.common.util.concurrent.RateLimiter;
+import org.apache.tsfile.write.writer.TsFileOutput;
 
 import java.io.IOException;
 import java.io.OutputStream;
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 ffb6f5e..09afe1d 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
@@ -23,18 +23,19 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionTaskManager;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.constant.CompactionIoDataType;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.constant.CompactionType;
-import org.apache.iotdb.tsfile.file.IMetadataIndexEntry;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.MetadataIndexNode;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.MetadataIndexNodeType;
-import org.apache.iotdb.tsfile.read.TsFileDeviceIterator;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.file.IMetadataIndexEntry;
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.MetadataIndexNode;
+import org.apache.tsfile.file.metadata.TimeseriesMetadata;
+import org.apache.tsfile.file.metadata.enums.MetadataIndexNodeType;
+import org.apache.tsfile.read.TsFileDeviceIterator;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.utils.Pair;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileWriter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileWriter.java
index a2388e7..bfb3c07 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileWriter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileWriter.java
@@ -23,15 +23,16 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionTaskManager;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.constant.CompactionIoDataType;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.constant.CompactionType;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
+import org.apache.tsfile.write.chunk.IChunkWriter;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtil.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtil.java
index 96ca52d..3af6fad 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtil.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtil.java
@@ -27,26 +27,26 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.DeviceTimeIndex;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.ITimeIndex;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.compress.IUnCompressor;
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileDeviceIterator;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.compress.IUnCompressor;
+import org.apache.tsfile.encoding.decoder.Decoder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.MetaMarker;
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TsFileDeviceIterator;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteForEncodingUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/AbstractCompactionEstimator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/AbstractCompactionEstimator.java
index e72f163..4b7a9a1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/AbstractCompactionEstimator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/AbstractCompactionEstimator.java
@@ -27,10 +27,10 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.DeviceTimeIndex;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.FileTimeIndex;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.ITimeIndex;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
 
 import org.apache.commons.collections4.map.LRUMap;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.read.TsFileSequenceReader;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/AbstractCrossSpaceEstimator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/AbstractCrossSpaceEstimator.java
index 5eb19d2..f1661ec 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/AbstractCrossSpaceEstimator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/AbstractCrossSpaceEstimator.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.io.CompactionTsFileReader;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.constant.CompactionType;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
+
+import org.apache.tsfile.read.TsFileSequenceReader;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/AbstractInnerSpaceEstimator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/AbstractInnerSpaceEstimator.java
index d9427c6..68080d6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/AbstractInnerSpaceEstimator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/AbstractInnerSpaceEstimator.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.io.CompactionTsFileReader;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.constant.CompactionType;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
+
+import org.apache.tsfile.read.TsFileSequenceReader;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/CompactionEstimateUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/CompactionEstimateUtils.java
index bc8b289..e60a934 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/CompactionEstimateUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/estimator/CompactionEstimateUtils.java
@@ -20,11 +20,12 @@
 package org.apache.iotdb.db.storageengine.dataregion.compaction.selector.estimator;
 
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.read.TsFileDeviceIterator;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.read.TsFileDeviceIterator;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.utils.Pair;
 
 import java.io.IOException;
 import java.util.Iterator;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java
index 43daf7b..cc858f2d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/RewriteCrossSpaceCompactionSelector.java
@@ -38,9 +38,9 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
 import org.apache.iotdb.db.storageengine.rescon.memory.SystemInfo;
-import org.apache.iotdb.tsfile.exception.StopReadTsFileByInterruptException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
 
+import org.apache.tsfile.exception.StopReadTsFileByInterruptException;
+import org.apache.tsfile.file.metadata.IDeviceID;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/CrossSpaceCompactionCandidate.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/CrossSpaceCompactionCandidate.java
index 7431bd1..de75a3d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/CrossSpaceCompactionCandidate.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/CrossSpaceCompactionCandidate.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
+
+import org.apache.tsfile.file.metadata.IDeviceID;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/DeviceInfo.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/DeviceInfo.java
index 4722bfb..a68f89f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/DeviceInfo.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/DeviceInfo.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.compaction.selector.utils;
 
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.IDeviceID;
 
 public class DeviceInfo {
   public IDeviceID deviceId;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/TsFileResourceCandidate.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/TsFileResourceCandidate.java
index daf8d1c..b24026a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/TsFileResourceCandidate.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/utils/TsFileResourceCandidate.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.DeviceTimeIndex;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.ITimeIndex;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
+
+import org.apache.tsfile.file.metadata.IDeviceID;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/settle/SettleRequestHandler.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/settle/SettleRequestHandler.java
index b0124bf..3adcf93 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/settle/SettleRequestHandler.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/settle/SettleRequestHandler.java
@@ -39,8 +39,8 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.TsFileUtils;
 
+import org.apache.tsfile.utils.TsFileUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/settle/SettleTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/settle/SettleTask.java
index 278cb81..1ece750 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/settle/SettleTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/settle/SettleTask.java
@@ -80,7 +80,7 @@
       }
     } catch (IllegalPathException
         | IOException
-        | org.apache.iotdb.tsfile.exception.write.WriteProcessException e) {
+        | org.apache.tsfile.exception.write.WriteProcessException e) {
       resourceToBeSettled.readUnlock();
       throw new WriteProcessException(
           String.format(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/OverlapStatisticTool.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/OverlapStatisticTool.java
index 39ce158..9fc996d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/OverlapStatisticTool.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/OverlapStatisticTool.java
@@ -20,8 +20,6 @@
 package org.apache.iotdb.db.storageengine.dataregion.compaction.tool;
 
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
@@ -29,6 +27,8 @@
 import org.apache.commons.cli.Option;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.utils.Pair;
 
 import java.io.File;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/SingleSequenceFileTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/SingleSequenceFileTask.java
index fbf3507..550cca8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/SingleSequenceFileTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/SingleSequenceFileTask.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.compaction.tool;
 
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/TimePartitionProcessTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/TimePartitionProcessTask.java
index ca37b5f..a95b19c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/TimePartitionProcessTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/TimePartitionProcessTask.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.compaction.tool;
 
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.utils.Pair;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.utils.Pair;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/TsFileStatisticReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/TsFileStatisticReader.java
index 428b24d..fccfb31 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/TsFileStatisticReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/TsFileStatisticReader.java
@@ -19,11 +19,11 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.compaction.tool;
 
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.read.TsFileDeviceIterator;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.utils.Pair;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.read.TsFileDeviceIterator;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.utils.Pair;
 
 import java.io.Closeable;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/UnseqSpaceStatistics.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/UnseqSpaceStatistics.java
index 8647eea..e6abe5c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/UnseqSpaceStatistics.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/UnseqSpaceStatistics.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.compaction.tool;
 
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.IDeviceID;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/flush/CompressionRatio.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/flush/CompressionRatio.java
index 5d6c40e..e40027a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/flush/CompressionRatio.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/flush/CompressionRatio.java
@@ -22,9 +22,9 @@
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.tsfile.utils.FilePathUtils;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.utils.FilePathUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/flush/MemTableFlushTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/flush/MemTableFlushTask.java
index fe4fe1e..45a398b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/flush/MemTableFlushTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/flush/MemTableFlushTask.java
@@ -32,10 +32,10 @@
 import org.apache.iotdb.db.storageengine.dataregion.memtable.IWritableMemChunkGroup;
 import org.apache.iotdb.db.storageengine.rescon.memory.SystemInfo;
 import org.apache.iotdb.metrics.utils.MetricLevel;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
-import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter;
 
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.write.chunk.IChunkWriter;
+import org.apache.tsfile.write.writer.RestorableTsFileIOWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java
index f8d7f6a..97f9aaf 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java
@@ -38,12 +38,13 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALWriteUtils;
 import org.apache.iotdb.db.utils.MemUtils;
 import org.apache.iotdb.metrics.utils.MetricLevel;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.io.DataInputStream;
 import java.io.IOException;
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 1be6106..add7c31 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
@@ -24,16 +24,17 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.chunk.MemAlignedChunkLoader;
 import org.apache.iotdb.db.utils.datastructure.AlignedTVList;
 import org.apache.iotdb.db.utils.datastructure.TVList;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.reader.IPointReader;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java
index 489520b..3160668 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java
@@ -25,16 +25,17 @@
 import org.apache.iotdb.db.utils.MemUtils;
 import org.apache.iotdb.db.utils.datastructure.AlignedTVList;
 import org.apache.iotdb.db.utils.datastructure.TVList;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
+import org.apache.tsfile.write.chunk.IChunkWriter;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.io.DataInputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunkGroup.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunkGroup.java
index 17b12a7..c541e52 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunkGroup.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunkGroup.java
@@ -23,9 +23,10 @@
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.path.PathPatternUtil;
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.IWALByteBufferView;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.io.DataInputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/DeviceIDFactory.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/DeviceIDFactory.java
index 1a1cd38..cb20d9b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/DeviceIDFactory.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/DeviceIDFactory.java
@@ -22,8 +22,9 @@
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.DataNodeDevicePathCache;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
+
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
 
 import java.util.function.Function;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IMemTable.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IMemTable.java
index b2288f1..33fb0e9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IMemTable.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IMemTable.java
@@ -28,9 +28,10 @@
 import org.apache.iotdb.db.storageengine.dataregion.flush.FlushStatus;
 import org.apache.iotdb.db.storageengine.dataregion.modification.Modification;
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.WALEntryValue;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IWritableMemChunk.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IWritableMemChunk.java
index 4c07c3e..8e83b60 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IWritableMemChunk.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IWritableMemChunk.java
@@ -20,11 +20,12 @@
 
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.WALEntryValue;
 import org.apache.iotdb.db.utils.datastructure.TVList;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.chunk.IChunkWriter;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IWritableMemChunkGroup.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IWritableMemChunkGroup.java
index ecaf8b2..3f94f36 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IWritableMemChunkGroup.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IWritableMemChunkGroup.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.WALEntryValue;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.util.List;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/PrimitiveMemTable.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/PrimitiveMemTable.java
index ca9d46f..fd8ecb0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/PrimitiveMemTable.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/PrimitiveMemTable.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.memtable;
 
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.IDeviceID;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/ReadOnlyMemChunk.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/ReadOnlyMemChunk.java
index 39c5bd5..b967c61 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/ReadOnlyMemChunk.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/ReadOnlyMemChunk.java
@@ -23,17 +23,17 @@
 import org.apache.iotdb.db.queryengine.execution.fragment.QueryContext;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.chunk.MemChunkLoader;
 import org.apache.iotdb.db.utils.datastructure.TVList;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.encoding.encoder.Encoder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.reader.IPointReader;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java
index d6b7537..57944b6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java
@@ -66,14 +66,14 @@
 import org.apache.iotdb.db.utils.datastructure.TVList;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.writer.RestorableTsFileIOWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunk.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunk.java
index c1a71d3..a110f77 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunk.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunk.java
@@ -24,15 +24,15 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.IWALByteBufferView;
 import org.apache.iotdb.db.utils.MemUtils;
 import org.apache.iotdb.db.utils.datastructure.TVList;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
+import org.apache.tsfile.write.chunk.IChunkWriter;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunkGroup.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunkGroup.java
index 707eace..3b7133d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunkGroup.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunkGroup.java
@@ -23,9 +23,10 @@
 import org.apache.iotdb.commons.path.PathPatternUtil;
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.IWALByteBufferView;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALWriteUtils;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.io.DataInputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/Deletion.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/Deletion.java
index 747a50d..5ab469f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/Deletion.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/Deletion.java
@@ -22,8 +22,9 @@
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.DataNodeDevicePathCache;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/ModificationFile.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/ModificationFile.java
index f4f8ab9..ce60cdb 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/ModificationFile.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/ModificationFile.java
@@ -23,9 +23,9 @@
 import org.apache.iotdb.db.storageengine.dataregion.modification.io.ModificationReader;
 import org.apache.iotdb.db.storageengine.dataregion.modification.io.ModificationWriter;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
 
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/io/LocalTextModificationAccessor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/io/LocalTextModificationAccessor.java
index 7f666ea..3b23991 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/io/LocalTextModificationAccessor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/io/LocalTextModificationAccessor.java
@@ -24,8 +24,8 @@
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.storageengine.dataregion.modification.Deletion;
 import org.apache.iotdb.db.storageengine.dataregion.modification.Modification;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
 
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/QueryDataSource.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/QueryDataSource.java
index 660fbea..01e0b76 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/QueryDataSource.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/QueryDataSource.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.storageengine.dataregion.read;
 
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
+
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.read.filter.basic.Filter;
 
 import java.util.ArrayList;
 import java.util.Comparator;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/control/FileReaderManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/control/FileReaderManager.java
index 17dbf5c..951291c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/control/FileReaderManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/control/FileReaderManager.java
@@ -21,10 +21,10 @@
 
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.UnClosedTsFileReader;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.UnClosedTsFileReader;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskAlignedChunkLoader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskAlignedChunkLoader.java
index 1d98b4a..7340204 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskAlignedChunkLoader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskAlignedChunkLoader.java
@@ -23,14 +23,15 @@
 import org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet;
 import org.apache.iotdb.db.storageengine.buffer.ChunkCache;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.reader.IChunkReader;
-import org.apache.iotdb.tsfile.read.reader.chunk.AlignedChunkReader;
+
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.controller.IChunkLoader;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.reader.IChunkReader;
+import org.apache.tsfile.read.reader.chunk.AlignedChunkReader;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskChunkLoader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskChunkLoader.java
index 01f0e32..cc70241 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskChunkLoader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskChunkLoader.java
@@ -23,13 +23,14 @@
 import org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet;
 import org.apache.iotdb.db.storageengine.buffer.ChunkCache;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.reader.IChunkReader;
-import org.apache.iotdb.tsfile.read.reader.chunk.ChunkReader;
+
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.controller.IChunkLoader;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.reader.IChunkReader;
+import org.apache.tsfile.read.reader.chunk.ChunkReader;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkLoader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkLoader.java
index c2b59bc..6b25dea 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkLoader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkLoader.java
@@ -22,12 +22,13 @@
 import org.apache.iotdb.db.queryengine.execution.fragment.QueryContext;
 import org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet;
 import org.apache.iotdb.db.storageengine.dataregion.memtable.AlignedReadOnlyMemChunk;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.reader.IChunkReader;
+
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.controller.IChunkLoader;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.reader.IChunkReader;
 
 import static org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.INIT_CHUNK_READER_ALIGNED_MEM;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkReader.java
index b9bf10e..33c8540 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkReader.java
@@ -20,11 +20,12 @@
 package org.apache.iotdb.db.storageengine.dataregion.read.reader.chunk;
 
 import org.apache.iotdb.db.storageengine.dataregion.memtable.AlignedReadOnlyMemChunk;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.reader.IChunkReader;
-import org.apache.iotdb.tsfile.read.reader.IPageReader;
+
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.reader.IChunkReader;
+import org.apache.tsfile.read.reader.IPageReader;
 
 import java.io.IOException;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedPageReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedPageReader.java
index 3f0c684..f2affe6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedPageReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedPageReader.java
@@ -19,20 +19,20 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.read.reader.chunk;
 
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.BatchDataFactory;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.reader.IPageReader;
-import org.apache.iotdb.tsfile.read.reader.series.PaginationController;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.read.common.BatchDataFactory;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.filter.factory.FilterFactory;
+import org.apache.tsfile.read.reader.IPageReader;
+import org.apache.tsfile.read.reader.series.PaginationController;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 import java.io.IOException;
 import java.io.Serializable;
@@ -40,7 +40,7 @@
 import java.util.List;
 import java.util.Optional;
 
-import static org.apache.iotdb.tsfile.read.reader.series.PaginationController.UNLIMITED_PAGINATION_CONTROLLER;
+import static org.apache.tsfile.read.reader.series.PaginationController.UNLIMITED_PAGINATION_CONTROLLER;
 
 public class MemAlignedPageReader implements IPageReader {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkLoader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkLoader.java
index d5893e0..56a4ec4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkLoader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkLoader.java
@@ -22,12 +22,13 @@
 import org.apache.iotdb.db.queryengine.execution.fragment.QueryContext;
 import org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet;
 import org.apache.iotdb.db.storageengine.dataregion.memtable.ReadOnlyMemChunk;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.reader.IChunkReader;
+
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.controller.IChunkLoader;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.reader.IChunkReader;
 
 import static org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.INIT_CHUNK_READER_NONALIGNED_MEM;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkReader.java
index 4a9844a..7db0892 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkReader.java
@@ -20,12 +20,13 @@
 package org.apache.iotdb.db.storageengine.dataregion.read.reader.chunk;
 
 import org.apache.iotdb.db.storageengine.dataregion.memtable.ReadOnlyMemChunk;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.reader.IChunkReader;
-import org.apache.iotdb.tsfile.read.reader.IPageReader;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
+
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.reader.IChunkReader;
+import org.apache.tsfile.read.reader.IPageReader;
+import org.apache.tsfile.read.reader.IPointReader;
 
 import java.io.IOException;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReader.java
index 122c62b..b239680 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReader.java
@@ -19,20 +19,20 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.read.reader.chunk;
 
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.BatchDataFactory;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.reader.IPageReader;
-import org.apache.iotdb.tsfile.read.reader.series.PaginationController;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.read.common.BatchDataFactory;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.filter.factory.FilterFactory;
+import org.apache.tsfile.read.reader.IPageReader;
+import org.apache.tsfile.read.reader.series.PaginationController;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.io.IOException;
 import java.io.Serializable;
@@ -41,7 +41,7 @@
 import java.util.List;
 import java.util.Optional;
 
-import static org.apache.iotdb.tsfile.read.reader.series.PaginationController.UNLIMITED_PAGINATION_CONTROLLER;
+import static org.apache.tsfile.read.reader.series.PaginationController.UNLIMITED_PAGINATION_CONTROLLER;
 
 public class MemPageReader implements IPageReader {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/DiskAlignedChunkMetadataLoader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/DiskAlignedChunkMetadataLoader.java
index 7fc3b8d..3d17c95 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/DiskAlignedChunkMetadataLoader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/DiskAlignedChunkMetadataLoader.java
@@ -25,13 +25,13 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.chunk.DiskAlignedChunkLoader;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.utils.ModificationUtils;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.AlignedTimeSeriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata;
-import org.apache.iotdb.tsfile.read.controller.IChunkMetadataLoader;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
 
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.file.metadata.AlignedTimeSeriesMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.ITimeSeriesMetadata;
+import org.apache.tsfile.read.controller.IChunkMetadataLoader;
+import org.apache.tsfile.read.filter.basic.Filter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/DiskChunkMetadataLoader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/DiskChunkMetadataLoader.java
index 8ca91f3..f230369 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/DiskChunkMetadataLoader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/DiskChunkMetadataLoader.java
@@ -25,12 +25,12 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.chunk.DiskChunkLoader;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.utils.ModificationUtils;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.read.controller.IChunkMetadataLoader;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
 
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.ITimeSeriesMetadata;
+import org.apache.tsfile.file.metadata.TimeseriesMetadata;
+import org.apache.tsfile.read.controller.IChunkMetadataLoader;
+import org.apache.tsfile.read.filter.basic.Filter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemAlignedChunkMetadataLoader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemAlignedChunkMetadataLoader.java
index a4c5641..ef56bdc 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemAlignedChunkMetadataLoader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemAlignedChunkMetadataLoader.java
@@ -25,10 +25,11 @@
 import org.apache.iotdb.db.storageengine.dataregion.memtable.ReadOnlyMemChunk;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.chunk.DiskAlignedChunkLoader;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata;
-import org.apache.iotdb.tsfile.read.controller.IChunkMetadataLoader;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
+
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.ITimeSeriesMetadata;
+import org.apache.tsfile.read.controller.IChunkMetadataLoader;
+import org.apache.tsfile.read.filter.basic.Filter;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemChunkMetadataLoader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemChunkMetadataLoader.java
index bf9b496..d0e32d4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemChunkMetadataLoader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemChunkMetadataLoader.java
@@ -25,10 +25,11 @@
 import org.apache.iotdb.db.storageengine.dataregion.memtable.ReadOnlyMemChunk;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.chunk.DiskChunkLoader;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata;
-import org.apache.iotdb.tsfile.read.controller.IChunkMetadataLoader;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
+
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.ITimeSeriesMetadata;
+import org.apache.tsfile.read.controller.IChunkMetadataLoader;
+import org.apache.tsfile.read.filter.basic.Filter;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/AlignedDescPriorityMergeReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/AlignedDescPriorityMergeReader.java
index 43c435f..64dc825 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/AlignedDescPriorityMergeReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/AlignedDescPriorityMergeReader.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.read.reader.common;
 
-import org.apache.iotdb.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.TimeValuePair;
 
 public class AlignedDescPriorityMergeReader extends DescPriorityMergeReader {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/AlignedPriorityMergeReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/AlignedPriorityMergeReader.java
index 0835588..770f5f1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/AlignedPriorityMergeReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/AlignedPriorityMergeReader.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.read.reader.common;
 
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 public class AlignedPriorityMergeReader extends PriorityMergeReader {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/CachedPriorityMergeReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/CachedPriorityMergeReader.java
index 61cc409..6b1d8cf 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/CachedPriorityMergeReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/CachedPriorityMergeReader.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.storageengine.dataregion.read.reader.common;
 
 import org.apache.iotdb.db.utils.TimeValuePairUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.TimeValuePair;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/DescPriorityMergeReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/DescPriorityMergeReader.java
index e0a0e37..c6975b7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/DescPriorityMergeReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/DescPriorityMergeReader.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.read.reader.common;
 
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
+import org.apache.tsfile.read.reader.IPointReader;
 
 import java.io.IOException;
 import java.util.PriorityQueue;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/Element.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/Element.java
index 746701b..b0034ab 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/Element.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/Element.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.read.reader.common;
 
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.reader.IPointReader;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/PriorityMergeReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/PriorityMergeReader.java
index 330c856..43ec7b9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/PriorityMergeReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/PriorityMergeReader.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.storageengine.dataregion.read.reader.common;
 
 import org.apache.iotdb.commons.utils.TestOnly;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
+
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.reader.IPointReader;
 
 import java.io.IOException;
 import java.util.Objects;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/snapshot/SnapshotFileSet.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/snapshot/SnapshotFileSet.java
index 2c30344..96160b1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/snapshot/SnapshotFileSet.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/snapshot/SnapshotFileSet.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
+
+import org.apache.tsfile.common.constant.TsFileConstant;
 
 import java.io.File;
 import java.util.Arrays;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileID.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileID.java
index 7dcbbde..37b2d08 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileID.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileID.java
@@ -20,7 +20,7 @@
 package org.apache.iotdb.db.storageengine.dataregion.tsfile;
 
 import static org.apache.iotdb.commons.conf.IoTDBConstant.FILE_NAME_SEPARATOR;
-import static org.apache.iotdb.tsfile.utils.FilePathUtils.splitTsFilePath;
+import static org.apache.tsfile.utils.FilePathUtils.splitTsFilePath;
 
 public class TsFileID {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileManager.java
index a67a992..dc24285 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileManager.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.commons.utils.TimePartitionUtils;
 import org.apache.iotdb.db.storageengine.rescon.memory.TsFileResourceManager;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
+
+import org.apache.tsfile.read.filter.basic.Filter;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResource.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResource.java
index 5b012f6..e1be5e3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResource.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResource.java
@@ -39,18 +39,18 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.ITimeIndex;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.TimeIndexLevel;
 import org.apache.iotdb.db.storageengine.rescon.disk.TierManager;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.fileSystem.fsFactory.FSFactory;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.utils.FilePathUtils;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
+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.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.fileSystem.fsFactory.FSFactory;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.utils.FilePathUtils;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.RamUsageEstimator;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -69,7 +69,7 @@
 import java.util.concurrent.atomic.AtomicReference;
 
 import static org.apache.iotdb.commons.conf.IoTDBConstant.FILE_NAME_SEPARATOR;
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.TSFILE_SUFFIX;
+import static org.apache.tsfile.common.constant.TsFileConstant.TSFILE_SUFFIX;
 
 @SuppressWarnings("java:S1135") // ignore todos
 public class TsFileResource {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResourceBlockType.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResourceBlockType.java
index 62aeac7..0a59965 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResourceBlockType.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResourceBlockType.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.tsfile;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResourceList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResourceList.java
index 82d63a0..35cedd5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResourceList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResourceList.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
+
+import org.apache.tsfile.exception.NotImplementedException;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/generator/TsFileNameGenerator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/generator/TsFileNameGenerator.java
index 040f939..70274fd 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/generator/TsFileNameGenerator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/generator/TsFileNameGenerator.java
@@ -25,9 +25,10 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.storageengine.rescon.disk.TierManager;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.fileSystem.fsFactory.FSFactory;
+
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.fileSystem.fsFactory.FSFactory;
 
 import java.io.File;
 import java.io.IOException;
@@ -37,7 +38,7 @@
 import java.util.regex.Pattern;
 
 import static org.apache.iotdb.commons.conf.IoTDBConstant.FILE_NAME_SEPARATOR;
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.TSFILE_SUFFIX;
+import static org.apache.tsfile.common.constant.TsFileConstant.TSFILE_SUFFIX;
 
 public class TsFileNameGenerator {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/DeviceTimeIndex.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/DeviceTimeIndex.java
index 777d092..a0a181a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/DeviceTimeIndex.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/DeviceTimeIndex.java
@@ -25,13 +25,13 @@
 import org.apache.iotdb.db.exception.PartitionViolationException;
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.DataNodeDevicePathCache;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.utils.FilePathUtils;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.utils.FilePathUtils;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.RamUsageEstimator;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/FileTimeIndex.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/FileTimeIndex.java
index 65aa815..5033bfd 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/FileTimeIndex.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/FileTimeIndex.java
@@ -23,13 +23,13 @@
 import org.apache.iotdb.commons.utils.TimePartitionUtils;
 import org.apache.iotdb.db.exception.PartitionViolationException;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.utils.FilePathUtils;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.utils.FilePathUtils;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.RamUsageEstimator;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/ITimeIndex.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/ITimeIndex.java
index 0edbe81..ccfa926 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/ITimeIndex.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/ITimeIndex.java
@@ -22,9 +22,10 @@
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.exception.PartitionViolationException;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/TsFileResourceUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/TsFileResourceUtils.java
index eca984c..09779b2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/TsFileResourceUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/TsFileResourceUtils.java
@@ -22,30 +22,30 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.DeviceTimeIndex;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkGroupHeader;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkGroupMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.reader.page.PageReader;
-import org.apache.iotdb.tsfile.read.reader.page.TimePageReader;
-import org.apache.iotdb.tsfile.read.reader.page.ValuePageReader;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.encoding.decoder.Decoder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.MetaMarker;
+import org.apache.tsfile.file.header.ChunkGroupHeader;
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.ChunkGroupMetadata;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.TimeseriesMetadata;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.read.reader.page.PageReader;
+import org.apache.tsfile.read.reader.page.TimePageReader;
+import org.apache.tsfile.read.reader.page.ValuePageReader;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/checkpoint/MemTableInfo.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/checkpoint/MemTableInfo.java
index b9744d4..59c2a3b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/checkpoint/MemTableInfo.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/checkpoint/MemTableInfo.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.IWALByteBufferView;
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.WALEntry;
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.WALEntryValue;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataInputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNode.java
index 26ffa60..0a581c0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNode.java
@@ -54,10 +54,10 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.listener.AbstractResultListener;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.listener.AbstractResultListener.Status;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.listener.WALFlushListener;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.utils.TsFileUtils;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.utils.TsFileUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/AbstractTsFileRecoverPerformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/AbstractTsFileRecoverPerformer.java
index 3b752db..a23d0fb 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/AbstractTsFileRecoverPerformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/AbstractTsFileRecoverPerformer.java
@@ -23,12 +23,12 @@
 import org.apache.iotdb.db.pipe.agent.PipeAgent;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.utils.TsFileResourceUtils;
-import org.apache.iotdb.tsfile.exception.NotCompatibleTsFileException;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.exception.NotCompatibleTsFileException;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.write.writer.RestorableTsFileIOWriter;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformer.java
index f22e4b3..705a9b3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformer.java
@@ -35,10 +35,10 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.WALEntry;
 import org.apache.iotdb.db.storageengine.dataregion.wal.exception.WALRecoverException;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.listener.WALRecoverListener;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter;
 
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.write.writer.RestorableTsFileIOWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALEntryPosition.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALEntryPosition.java
index 4ef1aa9..13b2f4c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALEntryPosition.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALEntryPosition.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertNode;
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.WALEntryValue;
 import org.apache.iotdb.db.storageengine.dataregion.wal.node.WALNode;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALInsertNodeCache.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALInsertNodeCache.java
index 905deb0..0a5718d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALInsertNodeCache.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALInsertNodeCache.java
@@ -30,13 +30,13 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.WALEntry;
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.WALEntryType;
 import org.apache.iotdb.db.storageengine.dataregion.wal.io.WALByteBufReader;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import com.github.benmanes.caffeine.cache.CacheLoader;
 import com.github.benmanes.caffeine.cache.Caffeine;
 import com.github.benmanes.caffeine.cache.LoadingCache;
 import com.github.benmanes.caffeine.cache.Weigher;
 import com.google.common.util.concurrent.AtomicDouble;
+import org.apache.tsfile.utils.Pair;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.slf4j.Logger;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALWriteUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALWriteUtils.java
index d5702e7..e6c0eb0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALWriteUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALWriteUtils.java
@@ -20,17 +20,18 @@
 package org.apache.iotdb.db.storageengine.dataregion.wal.utils;
 
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.IWALByteBufferView;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.util.Map;
 
-/** Like {@link org.apache.iotdb.tsfile.utils.ReadWriteIOUtils}. */
+/** Like {@link org.apache.tsfile.utils.ReadWriteIOUtils}. */
 public class WALWriteUtils {
   public static final int BOOLEAN_LEN = ReadWriteIOUtils.BOOLEAN_LEN;
   public static final int SHORT_LEN = ReadWriteIOUtils.SHORT_LEN;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/DirectoryChecker.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/DirectoryChecker.java
index 74cc3b7..3d4ec25 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/DirectoryChecker.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/DirectoryChecker.java
@@ -20,9 +20,9 @@
 
 import org.apache.iotdb.commons.exception.ConfigurationException;
 import org.apache.iotdb.commons.utils.ProcessIdUtils;
-import org.apache.iotdb.tsfile.utils.FSUtils;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.utils.FSUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/TierManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/TierManager.java
index f338b2d..5a97a12 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/TierManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/TierManager.java
@@ -27,10 +27,10 @@
 import org.apache.iotdb.db.storageengine.rescon.disk.strategy.MinFolderOccupiedSpaceFirstStrategy;
 import org.apache.iotdb.db.storageengine.rescon.disk.strategy.RandomOnDiskUsableSpaceStrategy;
 import org.apache.iotdb.metrics.utils.FileStoreUtils;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.fileSystem.FSType;
-import org.apache.iotdb.tsfile.utils.FSUtils;
 
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.fileSystem.FSType;
+import org.apache.tsfile.utils.FSUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/memory/PrimitiveArrayManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/memory/PrimitiveArrayManager.java
index 33264fc..dab969a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/memory/PrimitiveArrayManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/memory/PrimitiveArrayManager.java
@@ -21,10 +21,10 @@
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.utils.datastructure.TVListSortAlgorithm;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/memory/TimePartitionManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/memory/TimePartitionManager.java
index 126e0ff..89e68c4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/memory/TimePartitionManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/memory/TimePartitionManager.java
@@ -25,8 +25,8 @@
 import org.apache.iotdb.db.pipe.extractor.dataregion.realtime.listener.PipeTimePartitionListener;
 import org.apache.iotdb.db.storageengine.StorageEngine;
 import org.apache.iotdb.db.storageengine.dataregion.DataRegion;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/quotas/DefaultOperationQuota.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/quotas/DefaultOperationQuota.java
index 5d58824..e4f1170 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/quotas/DefaultOperationQuota.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/quotas/DefaultOperationQuota.java
@@ -31,8 +31,9 @@
 import org.apache.iotdb.db.queryengine.plan.statement.crud.LoadTsFileStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.pipe.PipeEnrichedStatement;
 import org.apache.iotdb.db.utils.TypeInferenceUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.BitMap;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.BitMap;
 
 import java.nio.ByteBuffer;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/EnrichedTabletsBinaryCache.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/EnrichedTabletsBinaryCache.java
index 117e9b7..dc7e9ec 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/EnrichedTabletsBinaryCache.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/EnrichedTabletsBinaryCache.java
@@ -22,12 +22,12 @@
 import org.apache.iotdb.commons.pipe.event.EnrichedEvent;
 import org.apache.iotdb.db.pipe.resource.PipeResourceManager;
 import org.apache.iotdb.db.pipe.resource.memory.PipeMemoryBlock;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import com.github.benmanes.caffeine.cache.CacheLoader;
 import com.github.benmanes.caffeine.cache.Caffeine;
 import com.github.benmanes.caffeine.cache.LoadingCache;
 import com.github.benmanes.caffeine.cache.Weigher;
+import org.apache.tsfile.utils.Pair;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.checkerframework.checker.nullness.qual.Nullable;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/SubscriptionPrefetchingQueue.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/SubscriptionPrefetchingQueue.java
index c156bea..e4bb921 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/SubscriptionPrefetchingQueue.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/SubscriptionPrefetchingQueue.java
@@ -32,8 +32,8 @@
 import org.apache.iotdb.pipe.api.event.Event;
 import org.apache.iotdb.pipe.api.event.dml.insertion.TabletInsertionEvent;
 import org.apache.iotdb.rpc.subscription.payload.EnrichedTablets;
-import org.apache.iotdb.tsfile.write.record.Tablet;
 
+import org.apache.tsfile.write.record.Tablet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/receiver/SubscriptionReceiverV1.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/receiver/SubscriptionReceiverV1.java
index 0164013..5d9a473 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/receiver/SubscriptionReceiverV1.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/receiver/SubscriptionReceiverV1.java
@@ -61,9 +61,9 @@
 import org.apache.iotdb.rpc.subscription.payload.response.PipeSubscribeUnsubscribeResp;
 import org.apache.iotdb.service.rpc.thrift.TPipeSubscribeReq;
 import org.apache.iotdb.service.rpc.thrift.TPipeSubscribeResp;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/IoTDBDataDirViewer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/IoTDBDataDirViewer.java
index 792fabd..6713c51 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/IoTDBDataDirViewer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/IoTDBDataDirViewer.java
@@ -22,8 +22,9 @@
 import org.apache.iotdb.commons.file.SystemFileFactory;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.utils.DateTimeUtils;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
+
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
 
 import java.io.File;
 import java.io.FileWriter;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileResourcePrinter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileResourcePrinter.java
index 931decb..44b5df4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileResourcePrinter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileResourcePrinter.java
@@ -22,9 +22,10 @@
 import org.apache.iotdb.commons.file.SystemFileFactory;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.utils.DateTimeUtils;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
+
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
 
 import java.io.File;
 import java.io.IOException;
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 363463c..60f81b8 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
@@ -19,18 +19,18 @@
 package org.apache.iotdb.db.tools;
 
 import org.apache.iotdb.db.exception.TsFileTimeseriesMetadataException;
-import org.apache.iotdb.tsfile.exception.TsFileStatisticsMistakesException;
-import org.apache.iotdb.tsfile.file.IMetadataIndexEntry;
-import org.apache.iotdb.tsfile.file.metadata.DeviceMetadataIndexEntry;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.MetadataIndexNode;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.MetadataIndexNodeType;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.exception.TsFileStatisticsMistakesException;
+import org.apache.tsfile.file.IMetadataIndexEntry;
+import org.apache.tsfile.file.metadata.DeviceMetadataIndexEntry;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.MetadataIndexNode;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.TimeseriesMetadata;
+import org.apache.tsfile.file.metadata.enums.MetadataIndexNodeType;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
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 ddbf8ae..0041606 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
@@ -19,28 +19,28 @@
 
 package org.apache.iotdb.db.tools;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.IMetadataIndexEntry;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkGroupHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkGroupMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.DeviceMetadataIndexEntry;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.MetadataIndexNode;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.MetadataIndexNodeType;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.TsFileCheckStatus;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.BloomFilter;
-import org.apache.iotdb.tsfile.utils.Pair;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.file.IMetadataIndexEntry;
+import org.apache.tsfile.file.MetaMarker;
+import org.apache.tsfile.file.header.ChunkGroupHeader;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.ChunkGroupMetadata;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.DeviceMetadataIndexEntry;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.MetadataIndexNode;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.TimeseriesMetadata;
+import org.apache.tsfile.file.metadata.TsFileMetadata;
+import org.apache.tsfile.file.metadata.enums.MetadataIndexNodeType;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.TsFileCheckStatus;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.utils.BloomFilter;
+import org.apache.tsfile.utils.Pair;
 
 import java.io.FileWriter;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileSplitByPartitionTool.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileSplitByPartitionTool.java
index d4f28a1..4d80fd2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileSplitByPartitionTool.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileSplitByPartitionTool.java
@@ -27,33 +27,33 @@
 import org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkGroupHeader;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.reader.page.PageReader;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.encoding.decoder.Decoder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.PageException;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.MetaMarker;
+import org.apache.tsfile.file.header.ChunkGroupHeader;
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.header.PageHeader;
+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.file.metadata.TimeseriesMetadata;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.reader.page.PageReader;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
+import org.apache.tsfile.write.chunk.IChunkWriter;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileSplitTool.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileSplitTool.java
index 19912da..9cb0d97 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileSplitTool.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/TsFileSplitTool.java
@@ -24,29 +24,29 @@
 import org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.fileSystem.fsFactory.FSFactory;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.reader.page.PageReader;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.encoding.decoder.Decoder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.MetaMarker;
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.TimeseriesMetadata;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.fileSystem.fsFactory.FSFactory;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.read.reader.page.PageReader;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/SRStatementGenerator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/SRStatementGenerator.java
index 8541e63..b8b0363 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/SRStatementGenerator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/SRStatementGenerator.java
@@ -35,9 +35,9 @@
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.view.CreateLogicalViewStatement;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.IMemMNode;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.snapshot.MemMTreeSnapshotUtil;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/SchemaRegionSnapshotParser.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/SchemaRegionSnapshotParser.java
index ce8038b..7f6a719 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/SchemaRegionSnapshotParser.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/SchemaRegionSnapshotParser.java
@@ -24,8 +24,8 @@
 import org.apache.iotdb.commons.schema.SchemaConstant;
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/settle/TsFileAndModSettleTool.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/settle/TsFileAndModSettleTool.java
index c6dc533..d523580 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/settle/TsFileAndModSettleTool.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/settle/TsFileAndModSettleTool.java
@@ -25,10 +25,10 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.tools.TsFileSplitByPartitionTool;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.fileSystem.fsFactory.FSFactory;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.fileSystem.fsFactory.FSFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -44,7 +44,7 @@
 import java.util.List;
 import java.util.Map;
 
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.TSFILE_SUFFIX;
+import static org.apache.tsfile.common.constant.TsFileConstant.TSFILE_SUFFIX;
 
 /**
  * Offline Settle tool, which is used to settle TsFile and its corresponding mods file to a new
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/validate/TsFileOverlapValidationAndRepairTool.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/validate/TsFileOverlapValidationAndRepairTool.java
index 32b232c..7d16266 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/validate/TsFileOverlapValidationAndRepairTool.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/validate/TsFileOverlapValidationAndRepairTool.java
@@ -22,9 +22,10 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.log.CompactionLogger;
 import org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
+
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/validate/TsFileValidationTool.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/validate/TsFileValidationTool.java
index 96aa69d..2b88553 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/validate/TsFileValidationTool.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/validate/TsFileValidationTool.java
@@ -19,24 +19,24 @@
 package org.apache.iotdb.db.tools.validate;
 
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkGroupHeader;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.reader.page.PageReader;
-import org.apache.iotdb.tsfile.read.reader.page.TimePageReader;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.encoding.decoder.Decoder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.MetaMarker;
+import org.apache.tsfile.file.header.ChunkGroupHeader;
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.read.reader.page.PageReader;
+import org.apache.tsfile.read.reader.page.TimePageReader;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -56,7 +56,7 @@
 import java.util.stream.Collectors;
 
 import static org.apache.iotdb.commons.conf.IoTDBConstant.PATH_SEPARATOR;
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.TSFILE_SUFFIX;
+import static org.apache.tsfile.common.constant.TsFileConstant.TSFILE_SUFFIX;
 
 /**
  * This tool can be used to check the correctness of tsfile and point out errors in specific
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/trigger/executor/TriggerExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/trigger/executor/TriggerExecutor.java
index c36abcb..f534fa9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/trigger/executor/TriggerExecutor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/trigger/executor/TriggerExecutor.java
@@ -25,8 +25,8 @@
 import org.apache.iotdb.trigger.api.TriggerAttributes;
 import org.apache.iotdb.trigger.api.enums.FailureStrategy;
 import org.apache.iotdb.trigger.api.enums.TriggerEvent;
-import org.apache.iotdb.tsfile.write.record.Tablet;
 
+import org.apache.tsfile.write.record.Tablet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
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 48a0d16..18c016b 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
@@ -48,11 +48,11 @@
 import org.apache.iotdb.mpp.rpc.thrift.TFireTriggerResp;
 import org.apache.iotdb.trigger.api.enums.FailureStrategy;
 import org.apache.iotdb.trigger.api.enums.TriggerEvent;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/CommonUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/CommonUtils.java
index 6796431..ea76dab 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/CommonUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/CommonUtils.java
@@ -27,9 +27,6 @@
 import org.apache.iotdb.service.rpc.thrift.TSFetchResultsReq;
 import org.apache.iotdb.service.rpc.thrift.TSLastDataQueryReq;
 import org.apache.iotdb.service.rpc.thrift.TSRawDataQueryReq;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.base.Throwables;
 import io.airlift.airline.Cli;
@@ -42,6 +39,9 @@
 import io.airlift.airline.ParseOptionMissingException;
 import io.airlift.airline.ParseOptionMissingValueException;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.Arrays;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/DateTimeUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/DateTimeUtils.java
index 17f1ba3..d4d06f0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/DateTimeUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/DateTimeUtils.java
@@ -21,7 +21,8 @@
 import org.apache.iotdb.commons.conf.CommonDescriptor;
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.protocol.session.SessionManager;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
+
+import org.apache.tsfile.utils.TimeDuration;
 
 import java.time.DateTimeException;
 import java.time.Instant;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/EncodingInferenceUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/EncodingInferenceUtils.java
index 745c4a7..e5c0dc2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/EncodingInferenceUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/EncodingInferenceUtils.java
@@ -20,9 +20,10 @@
 
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 public class EncodingInferenceUtils {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java
index 2bbd1bd..837e4b7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java
@@ -30,9 +30,9 @@
 import org.apache.iotdb.db.protocol.thrift.OperationType;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.exception.TsFileRuntimeException;
 
 import org.antlr.v4.runtime.misc.ParseCancellationException;
+import org.apache.tsfile.exception.TsFileRuntimeException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/MathUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/MathUtils.java
index aceec18..46a7d15 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/MathUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/MathUtils.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.utils;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/MemUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/MemUtils.java
index ee7e0f4..faf8c4d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/MemUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/MemUtils.java
@@ -21,19 +21,19 @@
 
 import org.apache.iotdb.commons.conf.IoTDBConstant;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertTabletNode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.BooleanDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.DoubleDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.StringDataPoint;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.RamUsageEstimator;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.BooleanDataPoint;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.record.datapoint.DoubleDataPoint;
+import org.apache.tsfile.write.record.datapoint.FloatDataPoint;
+import org.apache.tsfile.write.record.datapoint.IntDataPoint;
+import org.apache.tsfile.write.record.datapoint.LongDataPoint;
+import org.apache.tsfile.write.record.datapoint.StringDataPoint;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/ModificationUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/ModificationUtils.java
index a287faa..230d33dc 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/ModificationUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/ModificationUtils.java
@@ -21,9 +21,10 @@
 
 import org.apache.iotdb.db.storageengine.dataregion.modification.Deletion;
 import org.apache.iotdb.db.storageengine.dataregion.modification.Modification;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
+
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.read.common.TimeRange;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/QueryDataSetUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/QueryDataSetUtils.java
index 977c1a8..365b7d8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/QueryDataSetUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/QueryDataSetUtils.java
@@ -22,14 +22,15 @@
 import org.apache.iotdb.commons.exception.IoTDBException;
 import org.apache.iotdb.db.queryengine.plan.execution.IQueryExecution;
 import org.apache.iotdb.service.rpc.thrift.TSQueryDataSet;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.io.ByteArrayOutputStream;
 import java.io.DataInputStream;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java
index 533e1c7..c55726a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java
@@ -23,8 +23,9 @@
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
 import org.apache.iotdb.db.utils.constant.SqlConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 
 import java.util.Arrays;
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/TimeValuePairUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/TimeValuePairUtils.java
index f682961..c2a0741 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/TimeValuePairUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/TimeValuePairUtils.java
@@ -18,19 +18,19 @@
  */
 package org.apache.iotdb.db.utils;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsBinary;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsBoolean;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsDouble;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsFloat;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsInt;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsLong;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.utils.TsPrimitiveType.TsBinary;
+import org.apache.tsfile.utils.TsPrimitiveType.TsBoolean;
+import org.apache.tsfile.utils.TsPrimitiveType.TsDouble;
+import org.apache.tsfile.utils.TsPrimitiveType.TsFloat;
+import org.apache.tsfile.utils.TsPrimitiveType.TsInt;
+import org.apache.tsfile.utils.TsPrimitiveType.TsLong;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.util.ArrayList;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/TypeInferenceUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/TypeInferenceUtils.java
index 1e6723b..5a60c99 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/TypeInferenceUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/TypeInferenceUtils.java
@@ -31,9 +31,9 @@
 import org.apache.iotdb.db.queryengine.plan.expression.multi.builtin.BuiltInScalarFunctionHelper;
 import org.apache.iotdb.db.queryengine.plan.expression.multi.builtin.BuiltInScalarFunctionHelperFactory;
 import org.apache.iotdb.db.utils.constant.SqlConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/columngenerator/ColumnGenerator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/columngenerator/ColumnGenerator.java
index 04ba49d..aa667b5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/columngenerator/ColumnGenerator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/columngenerator/ColumnGenerator.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.utils.columngenerator;
 
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
+import org.apache.tsfile.block.column.Column;
 
 public abstract class ColumnGenerator {
   public ColumnGenerator() {}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/columngenerator/SlidingTimeColumnGenerator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/columngenerator/SlidingTimeColumnGenerator.java
index 75b0e3a..eb5a291 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/columngenerator/SlidingTimeColumnGenerator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/columngenerator/SlidingTimeColumnGenerator.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.utils.columngenerator;
 
 import org.apache.iotdb.db.queryengine.execution.aggregation.timerangeiterator.ITimeRangeIterator;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.LongColumn;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.read.common.block.column.LongColumn;
 
 import java.util.Optional;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/columngenerator/parameter/ColumnGeneratorParameter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/columngenerator/parameter/ColumnGeneratorParameter.java
index 381897e..ef6d8f8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/columngenerator/parameter/ColumnGeneratorParameter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/columngenerator/parameter/ColumnGeneratorParameter.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.db.utils.columngenerator.parameter;
 
 import org.apache.iotdb.db.utils.columngenerator.ColumnGeneratorType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/columngenerator/parameter/SlidingTimeColumnGeneratorParameter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/columngenerator/parameter/SlidingTimeColumnGeneratorParameter.java
index 2e29558..23fe2d7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/columngenerator/parameter/SlidingTimeColumnGeneratorParameter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/columngenerator/parameter/SlidingTimeColumnGeneratorParameter.java
@@ -22,8 +22,9 @@
 import org.apache.iotdb.db.queryengine.common.header.ColumnHeaderConstant;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.db.utils.columngenerator.ColumnGeneratorType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/constant/TestConstant.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/constant/TestConstant.java
index 265e918..1647a19 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/constant/TestConstant.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/constant/TestConstant.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.utils.constant;
 
-import org.apache.iotdb.tsfile.utils.FilePathUtils;
+import org.apache.tsfile.utils.FilePathUtils;
 
 import java.io.File;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java
index 4092db7..fedd841 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java
@@ -23,19 +23,20 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALWriteUtils;
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
 import org.apache.iotdb.db.utils.MathUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 import java.io.DataInputStream;
 import java.io.IOException;
@@ -46,8 +47,8 @@
 import static org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager.ARRAY_SIZE;
 import static org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager.TVLIST_SORT_ALGORITHM;
 import static org.apache.iotdb.db.utils.MemUtils.getBinarySize;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.NUM_BYTES_ARRAY_HEADER;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.NUM_BYTES_OBJECT_REF;
+import static org.apache.tsfile.utils.RamUsageEstimator.NUM_BYTES_ARRAY_HEADER;
+import static org.apache.tsfile.utils.RamUsageEstimator.NUM_BYTES_OBJECT_REF;
 
 public abstract class AlignedTVList extends TVList {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackAlignedTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackAlignedTVList.java
index 68572a7..e0616fd 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackAlignedTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackAlignedTVList.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.utils.datastructure;
 
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackBinaryTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackBinaryTVList.java
index 7a8d31d..58ab8f5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackBinaryTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackBinaryTVList.java
@@ -19,8 +19,9 @@
 package org.apache.iotdb.db.utils.datastructure;
 
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackBooleanTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackBooleanTVList.java
index 5924835..2b2a472 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackBooleanTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackBooleanTVList.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.utils.datastructure;
 
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackDoubleTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackDoubleTVList.java
index c817703..2c83c48 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackDoubleTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackDoubleTVList.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.utils.datastructure;
 
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackFloatTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackFloatTVList.java
index b947629..e274cfe 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackFloatTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackFloatTVList.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.utils.datastructure;
 
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackIntTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackIntTVList.java
index 0191960..9ef7436 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackIntTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackIntTVList.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.utils.datastructure;
 
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackLongTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackLongTVList.java
index 5ac2889..c24473f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackLongTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BackLongTVList.java
@@ -19,7 +19,8 @@
 package org.apache.iotdb.db.utils.datastructure;
 
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BinaryTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BinaryTVList.java
index 4c5d406..8f90296 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BinaryTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BinaryTVList.java
@@ -21,15 +21,16 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.IWALByteBufferView;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALWriteUtils;
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 import java.io.DataInputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BooleanTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BooleanTVList.java
index 6c69eaa..28e1b54 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BooleanTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/BooleanTVList.java
@@ -21,14 +21,15 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.IWALByteBufferView;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALWriteUtils;
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 import java.io.DataInputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/DoubleTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/DoubleTVList.java
index b58a99e..c72150d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/DoubleTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/DoubleTVList.java
@@ -22,13 +22,14 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALWriteUtils;
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
 import org.apache.iotdb.db.utils.MathUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 import java.io.DataInputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/FloatTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/FloatTVList.java
index e0fea9e..86e2b36 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/FloatTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/FloatTVList.java
@@ -22,13 +22,14 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALWriteUtils;
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
 import org.apache.iotdb.db.utils.MathUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 import java.io.DataInputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/IntTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/IntTVList.java
index c64dbc9..033e88a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/IntTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/IntTVList.java
@@ -21,13 +21,14 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.IWALByteBufferView;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALWriteUtils;
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 import java.io.DataInputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/LongTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/LongTVList.java
index dfd8f26..4adaa0b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/LongTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/LongTVList.java
@@ -21,13 +21,14 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.IWALByteBufferView;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALWriteUtils;
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 import java.io.DataInputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/MergeSortKey.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/MergeSortKey.java
index 021e6b9..dbb54af 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/MergeSortKey.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/MergeSortKey.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.utils.datastructure;
 
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 public class MergeSortKey extends SortKey {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/PatternTreeMapFactory.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/PatternTreeMapFactory.java
index 6f93c69..5f154bd 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/PatternTreeMapFactory.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/PatternTreeMapFactory.java
@@ -24,8 +24,9 @@
 import org.apache.iotdb.commons.path.PatternTreeMap;
 import org.apache.iotdb.db.storageengine.dataregion.modification.Deletion;
 import org.apache.iotdb.db.storageengine.dataregion.modification.Modification;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/QuickAlignedTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/QuickAlignedTVList.java
index 5e6a9de..4833adc 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/QuickAlignedTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/QuickAlignedTVList.java
@@ -18,7 +18,7 @@
  */
 package org.apache.iotdb.db.utils.datastructure;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/QuickBinaryTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/QuickBinaryTVList.java
index dcdcbc2..d0a2284 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/QuickBinaryTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/QuickBinaryTVList.java
@@ -18,7 +18,7 @@
  */
 package org.apache.iotdb.db.utils.datastructure;
 
-import org.apache.iotdb.tsfile.utils.Binary;
+import org.apache.tsfile.utils.Binary;
 
 public class QuickBinaryTVList extends BinaryTVList implements QuickSort {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/SortKey.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/SortKey.java
index 0ef1f3b..b6a4bec 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/SortKey.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/SortKey.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.db.utils.datastructure;
 
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 public class SortKey {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TVList.java
index f2b2615..90956eb 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TVList.java
@@ -24,15 +24,16 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.buffer.WALEntryValue;
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
 import org.apache.iotdb.db.utils.MathUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataInputStream;
 import java.io.IOException;
@@ -42,8 +43,8 @@
 import java.util.concurrent.atomic.AtomicInteger;
 
 import static org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager.ARRAY_SIZE;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.NUM_BYTES_ARRAY_HEADER;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.NUM_BYTES_OBJECT_REF;
+import static org.apache.tsfile.utils.RamUsageEstimator.NUM_BYTES_ARRAY_HEADER;
+import static org.apache.tsfile.utils.RamUsageEstimator.NUM_BYTES_OBJECT_REF;
 
 public abstract class TVList implements WALEntryValue {
   protected static final String ERR_DATATYPE_NOT_CONSISTENT = "DataType not consistent";
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimAlignedTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimAlignedTVList.java
index 7c6fa7f..975eab5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimAlignedTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimAlignedTVList.java
@@ -19,7 +19,8 @@
 package org.apache.iotdb.db.utils.datastructure;
 
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.List;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimBinaryTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimBinaryTVList.java
index 03760fd..82575c7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimBinaryTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimBinaryTVList.java
@@ -19,8 +19,9 @@
 package org.apache.iotdb.db.utils.datastructure;
 
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
 
 import static org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager.ARRAY_SIZE;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimBooleanTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimBooleanTVList.java
index 22b5647..e571b81 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimBooleanTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimBooleanTVList.java
@@ -19,7 +19,8 @@
 package org.apache.iotdb.db.utils.datastructure;
 
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import static org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager.ARRAY_SIZE;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimDoubleTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimDoubleTVList.java
index 3c0aa82..99739d3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimDoubleTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimDoubleTVList.java
@@ -19,7 +19,8 @@
 package org.apache.iotdb.db.utils.datastructure;
 
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import static org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager.ARRAY_SIZE;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimFloatTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimFloatTVList.java
index 2b1fb44..814b0f7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimFloatTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimFloatTVList.java
@@ -19,7 +19,8 @@
 package org.apache.iotdb.db.utils.datastructure;
 
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import static org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager.ARRAY_SIZE;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimIntTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimIntTVList.java
index b3ae939..a7fcba1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimIntTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimIntTVList.java
@@ -19,7 +19,8 @@
 package org.apache.iotdb.db.utils.datastructure;
 
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import static org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager.ARRAY_SIZE;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimLongTVList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimLongTVList.java
index e3a02e4..43e6ab4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimLongTVList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TimLongTVList.java
@@ -19,7 +19,8 @@
 package org.apache.iotdb.db.utils.datastructure;
 
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import static org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager.ARRAY_SIZE;
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/sort/DiskSpiller.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/sort/DiskSpiller.java
index 1922b6b..c27b176 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/sort/DiskSpiller.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/sort/DiskSpiller.java
@@ -22,11 +22,12 @@
 import org.apache.iotdb.commons.exception.IoTDBException;
 import org.apache.iotdb.db.utils.datastructure.SortKey;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TsBlockSerde;
+
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TsBlockSerde;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/sort/FileSpillerReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/sort/FileSpillerReader.java
index 6e16c46..d3ce760 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/sort/FileSpillerReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/sort/FileSpillerReader.java
@@ -22,9 +22,10 @@
 import org.apache.iotdb.commons.exception.IoTDBException;
 import org.apache.iotdb.db.utils.datastructure.MergeSortKey;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.TsBlockSerde;
+
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.TsBlockSerde;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/sort/SortBufferManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/sort/SortBufferManager.java
index a46971f..8f2de51 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/sort/SortBufferManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/sort/SortBufferManager.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.utils.sort;
 
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
+
+import org.apache.tsfile.common.conf.TSFileDescriptor;
 
 public class SortBufferManager {
   private static final int DEFAULT_MAX_TSBLOCK_SIZE_IN_BYTES =
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/api/Window.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/api/Window.java
index e1860cf..3efc646 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/api/Window.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/api/Window.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.db.utils.windowing.api;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
 
 public interface Window {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/configuration/Configuration.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/configuration/Configuration.java
index 9a11886..1133a2e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/configuration/Configuration.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/configuration/Configuration.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.utils.windowing.configuration;
 
 import org.apache.iotdb.db.utils.windowing.exception.WindowingException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 public abstract class Configuration {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/configuration/SlidingSizeWindowConfiguration.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/configuration/SlidingSizeWindowConfiguration.java
index 2a0dc81..d95225d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/configuration/SlidingSizeWindowConfiguration.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/configuration/SlidingSizeWindowConfiguration.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.utils.windowing.configuration;
 
 import org.apache.iotdb.db.utils.windowing.exception.WindowingException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 public class SlidingSizeWindowConfiguration extends Configuration {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/configuration/SlidingTimeWindowConfiguration.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/configuration/SlidingTimeWindowConfiguration.java
index 9b8b01a..a218ffa 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/configuration/SlidingTimeWindowConfiguration.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/configuration/SlidingTimeWindowConfiguration.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.db.utils.windowing.configuration;
 
 import org.apache.iotdb.db.utils.windowing.exception.WindowingException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 public class SlidingTimeWindowConfiguration extends Configuration {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/handler/SlidingWindowEvaluationHandler.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/handler/SlidingWindowEvaluationHandler.java
index 0de2655..6936d07 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/handler/SlidingWindowEvaluationHandler.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/handler/SlidingWindowEvaluationHandler.java
@@ -24,8 +24,9 @@
 import org.apache.iotdb.db.utils.windowing.exception.WindowingException;
 import org.apache.iotdb.db.utils.windowing.runtime.WindowEvaluationTaskPoolManager;
 import org.apache.iotdb.db.utils.windowing.window.EvictableBatchList;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
+
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BytesUtils;
 
 public abstract class SlidingWindowEvaluationHandler {
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/window/EvictableBatchList.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/window/EvictableBatchList.java
index f5d963a..68c994b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/window/EvictableBatchList.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/window/EvictableBatchList.java
@@ -20,10 +20,11 @@
 package org.apache.iotdb.db.utils.windowing.window;
 
 import org.apache.iotdb.commons.utils.TestOnly;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.utils.Binary;
+
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.utils.Binary;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/window/WindowImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/window/WindowImpl.java
index 96c71a7..8c224b4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/window/WindowImpl.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/windowing/window/WindowImpl.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.db.utils.windowing.window;
 
 import org.apache.iotdb.db.utils.windowing.api.Window;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 public class WindowImpl implements Window {
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/consensus/statemachine/dataregion/DataRegionStateMachineTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/consensus/statemachine/dataregion/DataRegionStateMachineTest.java
index e7846de..818faff7 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/consensus/statemachine/dataregion/DataRegionStateMachineTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/consensus/statemachine/dataregion/DataRegionStateMachineTest.java
@@ -25,8 +25,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowsNode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/MetaUtilsTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/MetaUtilsTest.java
index b19f8cb..c95b219 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/MetaUtilsTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/MetaUtilsTest.java
@@ -26,9 +26,9 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.IMemMNode;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.loader.MNodeFactoryLoader;
 import org.apache.iotdb.db.schemaengine.schemaregion.utils.MetaUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/cache/DataNodeSchemaCacheTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/cache/DataNodeSchemaCacheTest.java
index 6ecef38..f264bd4 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/cache/DataNodeSchemaCacheTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/cache/DataNodeSchemaCacheTest.java
@@ -28,13 +28,13 @@
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.SchemaCacheEntry;
 import org.apache.iotdb.db.schemaengine.template.ClusterTemplateManager;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.read.TimeValuePair;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/cache/dualkeycache/DualKeyCacheTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/cache/dualkeycache/DualKeyCacheTest.java
index 4f2a884..17ec1bc 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/cache/dualkeycache/DualKeyCacheTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/cache/dualkeycache/DualKeyCacheTest.java
@@ -28,11 +28,11 @@
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.dualkeycache.impl.DualKeyCacheBuilder;
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.dualkeycache.impl.DualKeyCachePolicy;
 import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.lastcache.DataNodeLastCacheManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/idtable/entry/DeviceIDTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/idtable/entry/DeviceIDTest.java
index 98aa5b7..39e709b 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/idtable/entry/DeviceIDTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/idtable/entry/DeviceIDTest.java
@@ -22,8 +22,8 @@
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.storageengine.dataregion.memtable.DeviceIDFactory;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
 
+import org.apache.tsfile.file.metadata.IDeviceID;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/RecordUtilTests.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/RecordUtilTests.java
index e094798..2fc09d3 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/RecordUtilTests.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/RecordUtilTests.java
@@ -25,12 +25,12 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.schemafile.RecordUtils;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.loader.MNodeFactoryLoader;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaFileTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaFileTest.java
index c0bcecb..e246a16 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaFileTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaFileTest.java
@@ -36,10 +36,10 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.loader.MNodeFactoryLoader;
 import org.apache.iotdb.db.schemaengine.schemaregion.utils.MNodeUtils;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaPageTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaPageTest.java
index 65a9e96..6206ff6 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaPageTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/SchemaPageTest.java
@@ -27,10 +27,10 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.schemafile.SchemaPage;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.loader.MNodeFactoryLoader;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/WrappedSegmentTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/WrappedSegmentTest.java
index 513e8d8..856aa22 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/WrappedSegmentTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/mtree/schemafile/WrappedSegmentTest.java
@@ -29,10 +29,10 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.schemafile.WrappedSegment;
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.loader.MNodeFactoryLoader;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/path/MeasurementPathTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/path/MeasurementPathTest.java
index 01e5f1c..cf5f8ab 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/path/MeasurementPathTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/path/MeasurementPathTest.java
@@ -21,11 +21,11 @@
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.path.MeasurementPath;
 import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionAliasAndTagTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionAliasAndTagTest.java
index 40311fc..56a7479 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionAliasAndTagTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionAliasAndTagTest.java
@@ -24,10 +24,10 @@
 import org.apache.iotdb.commons.path.PathPatternTree;
 import org.apache.iotdb.db.schemaengine.schemaregion.ISchemaRegion;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.ITimeSeriesSchemaInfo;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionBasicTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionBasicTest.java
index 3f5b19e..4064376 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionBasicTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionBasicTest.java
@@ -35,11 +35,11 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.impl.ShowDevicesResult;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.impl.ShowNodesResult;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.SchemaRegionWritePlanFactory;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.junit.Assert;
 import org.junit.Ignore;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionManagementTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionManagementTest.java
index 31c600b..50c89a0 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionManagementTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionManagementTest.java
@@ -31,10 +31,10 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.ITimeSeriesSchemaInfo;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.SchemaRegionWritePlanFactory;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.junit.Assert;
 import org.junit.Ignore;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionSimpleRecoverTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionSimpleRecoverTest.java
index fc8fa68..d85d203 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionSimpleRecoverTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionSimpleRecoverTest.java
@@ -26,10 +26,10 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.ISchemaRegion;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.SchemaRegionWritePlanFactory;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionTemplateTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionTemplateTest.java
index 52ab9db..3aa6d90 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionTemplateTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionTemplateTest.java
@@ -30,10 +30,10 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.SchemaRegionWritePlanFactory;
 import org.apache.iotdb.db.schemaengine.template.ClusterTemplateManager;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionTestUtil.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionTestUtil.java
index d385f65..53a567c 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionTestUtil.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionTestUtil.java
@@ -33,9 +33,10 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.reader.ISchemaReader;
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.SchemaRegionWritePlanFactory;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaStatisticsTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaStatisticsTest.java
index 364a926..9914f78 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaStatisticsTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaStatisticsTest.java
@@ -35,11 +35,11 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.SchemaRegionWritePlanFactory;
 import org.apache.iotdb.db.schemaengine.template.ClusterTemplateManager;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.write.schema.MeasurementSchema;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/view/ViewExpressionToStringTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/view/ViewExpressionToStringTest.java
index 1b7b346..e0b1fe2 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/view/ViewExpressionToStringTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/view/ViewExpressionToStringTest.java
@@ -27,8 +27,8 @@
 import org.apache.iotdb.commons.schema.view.viewExpression.leaf.TimestampViewOperand;
 import org.apache.iotdb.commons.schema.view.viewExpression.multi.FunctionViewExpression;
 import org.apache.iotdb.commons.schema.view.viewExpression.ternary.BetweenViewExpression;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/connector/PipeDataNodeThriftRequestTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/connector/PipeDataNodeThriftRequestTest.java
index 0e45198..fd3e06f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/connector/PipeDataNodeThriftRequestTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/connector/PipeDataNodeThriftRequestTest.java
@@ -37,14 +37,14 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowNode;
 import org.apache.iotdb.db.queryengine.plan.statement.Statement;
 import org.apache.iotdb.rpc.RpcUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/connector/PipeReceiverTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/connector/PipeReceiverTest.java
index 7c7d748..7317cde 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/connector/PipeReceiverTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/connector/PipeReceiverTest.java
@@ -23,10 +23,10 @@
 import org.apache.iotdb.db.pipe.connector.payload.evolvable.request.PipeTransferDataNodeHandshakeV1Req;
 import org.apache.iotdb.db.pipe.connector.payload.evolvable.request.PipeTransferTabletRawReq;
 import org.apache.iotdb.db.pipe.receiver.protocol.thrift.IoTDBDataNodeReceiver;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/event/PipeDataTypeTransformerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/event/PipeDataTypeTransformerTest.java
index 8f6cb29..ee05f26 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/event/PipeDataTypeTransformerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/event/PipeDataTypeTransformerTest.java
@@ -21,8 +21,8 @@
 
 import org.apache.iotdb.db.pipe.event.common.row.PipeDataTypeTransformer;
 import org.apache.iotdb.pipe.api.type.Type;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/event/PipeTabletInsertionEventTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/event/PipeTabletInsertionEventTest.java
index 07b1e5d..8c4d9ce 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/event/PipeTabletInsertionEventTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/event/PipeTabletInsertionEventTest.java
@@ -27,13 +27,13 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertTabletNode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/event/TsFileInsertionDataContainerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/event/TsFileInsertionDataContainerTest.java
index b8fc65e..3f9f34f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/event/TsFileInsertionDataContainerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/event/TsFileInsertionDataContainerTest.java
@@ -24,12 +24,12 @@
 import org.apache.iotdb.commons.pipe.pattern.PrefixPipePattern;
 import org.apache.iotdb.db.pipe.event.common.tablet.PipeRawTabletInsertionEvent;
 import org.apache.iotdb.db.pipe.event.common.tsfile.TsFileInsertionDataContainer;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorUtils;
 
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.TsFileGeneratorUtils;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/extractor/PipeRealtimeExtractTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/extractor/PipeRealtimeExtractTest.java
index ca4b8c9..cec7a5f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/extractor/PipeRealtimeExtractTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/extractor/PipeRealtimeExtractTest.java
@@ -38,9 +38,9 @@
 import org.apache.iotdb.pipe.api.customizer.parameter.PipeParameters;
 import org.apache.iotdb.pipe.api.event.Event;
 import org.apache.iotdb.pipe.api.event.dml.insertion.TabletInsertionEvent;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
 
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/extractor/SchemaRegionListeningQueueTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/extractor/SchemaRegionListeningQueueTest.java
index 2448f54..008204a 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/extractor/SchemaRegionListeningQueueTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/extractor/SchemaRegionListeningQueueTest.java
@@ -31,12 +31,12 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.metedata.write.CreateTimeSeriesNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.pipe.PipeEnrichedWritePlanNode;
 import org.apache.iotdb.pipe.api.event.Event;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.thrift.TException;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/pattern/CachedSchemaPatternMatcherTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/pattern/CachedSchemaPatternMatcherTest.java
index 3710173..1e758715 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/pattern/CachedSchemaPatternMatcherTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/pattern/CachedSchemaPatternMatcherTest.java
@@ -27,8 +27,8 @@
 import org.apache.iotdb.db.pipe.extractor.dataregion.realtime.PipeRealtimeDataRegionExtractor;
 import org.apache.iotdb.pipe.api.customizer.parameter.PipeParameters;
 import org.apache.iotdb.pipe.api.event.Event;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
 
+import org.apache.tsfile.common.constant.TsFileConstant;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/resource/PipeTsFileResourceManagerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/resource/PipeTsFileResourceManagerTest.java
index 1f8bfb2..37c25d3 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/resource/PipeTsFileResourceManagerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/resource/PipeTsFileResourceManagerTest.java
@@ -29,16 +29,16 @@
 import org.apache.iotdb.db.storageengine.dataregion.modification.Deletion;
 import org.apache.iotdb.db.storageengine.dataregion.modification.Modification;
 import org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.record.datapoint.FloatDataPoint;
+import org.apache.tsfile.write.record.datapoint.IntDataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.Schema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/query/udf/example/Adder.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/query/udf/example/Adder.java
index bf43997..3d33d49 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/query/udf/example/Adder.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/query/udf/example/Adder.java
@@ -19,7 +19,6 @@
 
 package org.apache.iotdb.db.query.udf.example;
 
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -29,6 +28,7 @@
 import org.apache.iotdb.udf.api.customizer.strategy.RowByRowAccessStrategy;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.write.UnSupportedDataTypeException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/common/schematree/ClusterSchemaTreeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/common/schematree/ClusterSchemaTreeTest.java
index 8bcc396..e221fd7 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/common/schematree/ClusterSchemaTreeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/common/schematree/ClusterSchemaTreeTest.java
@@ -31,12 +31,12 @@
 import org.apache.iotdb.db.queryengine.common.schematree.visitor.SchemaTreeVisitorFactory;
 import org.apache.iotdb.db.queryengine.common.schematree.visitor.SchemaTreeVisitorWithLimitOffsetWrapper;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.MeasurementSchema;
 import org.junit.Assert;
 import org.junit.Ignore;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/common/schematree/NodeRefTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/common/schematree/NodeRefTest.java
index 2fd774a..b85e745 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/common/schematree/NodeRefTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/common/schematree/NodeRefTest.java
@@ -22,8 +22,8 @@
 import org.apache.iotdb.db.queryengine.common.NodeRef;
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.ConstantOperand;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/ConfigExecutionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/ConfigExecutionTest.java
index ebd4e79..32dcd88 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/ConfigExecutionTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/ConfigExecutionTest.java
@@ -31,13 +31,13 @@
 import org.apache.iotdb.db.queryengine.plan.execution.config.IConfigTask;
 import org.apache.iotdb.db.queryengine.plan.execution.config.executor.IConfigTaskExecutor;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.IntColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.IntColumn;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
 import org.junit.Test;
 
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/DataDriverTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/DataDriverTest.java
index 568aa9d..4920f39 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/DataDriverTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/DataDriverTest.java
@@ -47,14 +47,14 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.series.SeriesReaderTestUtil;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.IntColumn;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import io.airlift.units.Duration;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.IntColumn;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/aggregation/AccumulatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/aggregation/AccumulatorTest.java
index ca8d5eb..45ea1dd 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/aggregation/AccumulatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/aggregation/AccumulatorTest.java
@@ -20,21 +20,21 @@
 package org.apache.iotdb.db.queryengine.execution.aggregation;
 
 import org.apache.iotdb.common.rpc.thrift.TAggregationType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.file.metadata.statistics.TimeStatistics;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.DoubleColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.IntColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.LongColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.file.metadata.statistics.TimeStatistics;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.BinaryColumnBuilder;
+import org.apache.tsfile.read.common.block.column.DoubleColumnBuilder;
+import org.apache.tsfile.read.common.block.column.IntColumnBuilder;
+import org.apache.tsfile.read.common.block.column.LongColumnBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BytesUtils;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/aggregation/TimeRangeIteratorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/aggregation/TimeRangeIteratorTest.java
index 6a2db3b..f2f38a7 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/aggregation/TimeRangeIteratorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/aggregation/TimeRangeIteratorTest.java
@@ -21,9 +21,9 @@
 
 import org.apache.iotdb.db.queryengine.execution.aggregation.timerangeiterator.ITimeRangeIterator;
 import org.apache.iotdb.db.queryengine.execution.aggregation.timerangeiterator.TimeRangeIteratorFactory;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
 
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.utils.TimeDuration;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/exchange/SinkChannelTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/exchange/SinkChannelTest.java
index 6e217cd..573d56f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/exchange/SinkChannelTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/exchange/SinkChannelTest.java
@@ -32,10 +32,10 @@
 import org.apache.iotdb.mpp.rpc.thrift.TEndOfDataBlockEvent;
 import org.apache.iotdb.mpp.rpc.thrift.TFragmentInstanceId;
 import org.apache.iotdb.mpp.rpc.thrift.TNewDataBlockEvent;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.read.common.block.TsBlock;
 import org.junit.Assert;
 import org.junit.Test;
 import org.mockito.Mockito;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/exchange/SourceHandleTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/exchange/SourceHandleTest.java
index b49f4f3..ee84933 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/exchange/SourceHandleTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/exchange/SourceHandleTest.java
@@ -33,9 +33,9 @@
 import org.apache.iotdb.mpp.rpc.thrift.TFragmentInstanceId;
 import org.apache.iotdb.mpp.rpc.thrift.TGetDataBlockRequest;
 import org.apache.iotdb.mpp.rpc.thrift.TGetDataBlockResponse;
-import org.apache.iotdb.tsfile.read.common.block.column.TsBlockSerde;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.read.common.block.column.TsBlockSerde;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/exchange/StubSink.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/exchange/StubSink.java
index 673b103..e1bfcb2 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/exchange/StubSink.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/exchange/StubSink.java
@@ -21,9 +21,9 @@
 import org.apache.iotdb.db.queryengine.execution.exchange.sink.ISink;
 import org.apache.iotdb.db.queryengine.execution.fragment.FragmentInstanceContext;
 import org.apache.iotdb.mpp.rpc.thrift.TFragmentInstanceId;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.read.common.block.TsBlock;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/exchange/Utils.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/exchange/Utils.java
index e9a2c35..0c6eac0 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/exchange/Utils.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/exchange/Utils.java
@@ -20,11 +20,11 @@
 package org.apache.iotdb.db.queryengine.execution.exchange;
 
 import org.apache.iotdb.db.queryengine.execution.memory.MemoryPool;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.TsBlockSerde;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import com.google.common.util.concurrent.SettableFuture;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.TsBlockSerde;
+import org.apache.tsfile.utils.Pair;
 import org.mockito.Mockito;
 import org.mockito.stubbing.Answer;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutorTest.java
index f1f6dfe..a06eaea 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutorTest.java
@@ -35,8 +35,8 @@
 import org.apache.iotdb.db.trigger.executor.TriggerFireVisitor;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.trigger.api.enums.TriggerEvent;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Test;
 import org.mockito.Mockito;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/memory/MemorySourceHandleTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/memory/MemorySourceHandleTest.java
index 723800d..af6bcd2 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/memory/MemorySourceHandleTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/memory/MemorySourceHandleTest.java
@@ -20,9 +20,9 @@
 package org.apache.iotdb.db.queryengine.execution.memory;
 
 import org.apache.iotdb.db.queryengine.plan.execution.memory.MemorySourceHandle;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import org.apache.tsfile.read.common.block.TsBlock;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/AggregationOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/AggregationOperatorTest.java
index c764421..f7e2455 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/AggregationOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/AggregationOperatorTest.java
@@ -44,15 +44,15 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.series.SeriesReaderTestUtil;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import io.airlift.units.Duration;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.TimeDuration;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/AlignedSeriesAggregationScanOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/AlignedSeriesAggregationScanOperatorTest.java
index d0a11f2..c9d7225 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/AlignedSeriesAggregationScanOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/AlignedSeriesAggregationScanOperatorTest.java
@@ -42,17 +42,17 @@
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.filter.factory.FilterFactory;
+import org.apache.tsfile.read.filter.factory.TimeFilterApi;
+import org.apache.tsfile.utils.TimeDuration;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/AlignedSeriesScanOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/AlignedSeriesScanOperatorTest.java
index b5c6194..74e2018 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/AlignedSeriesScanOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/AlignedSeriesScanOperatorTest.java
@@ -41,19 +41,19 @@
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.BooleanColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.DoubleColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.FloatColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.IntColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.LongColumn;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import io.airlift.units.Duration;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.BinaryColumn;
+import org.apache.tsfile.read.common.block.column.BooleanColumn;
+import org.apache.tsfile.read.common.block.column.DoubleColumn;
+import org.apache.tsfile.read.common.block.column.FloatColumn;
+import org.apache.tsfile.read.common.block.column.IntColumn;
+import org.apache.tsfile.read.common.block.column.LongColumn;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/AlignedSeriesTestUtil.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/AlignedSeriesTestUtil.java
index b756913..97190e5 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/AlignedSeriesTestUtil.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/AlignedSeriesTestUtil.java
@@ -27,17 +27,17 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Assert;
 
 import java.io.File;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/DeviceViewOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/DeviceViewOperatorTest.java
index 03b561a..1c92122 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/DeviceViewOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/DeviceViewOperatorTest.java
@@ -35,13 +35,13 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.series.SeriesReaderTestUtil;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import io.airlift.units.Duration;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/FillOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/FillOperatorTest.java
index bf5bf6f..f06cbae 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/FillOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/FillOperatorTest.java
@@ -32,11 +32,11 @@
 import org.apache.iotdb.db.queryengine.execution.operator.process.fill.filter.FixedIntervalFillFilter;
 import org.apache.iotdb.db.queryengine.execution.operator.process.fill.previous.IntPreviousFill;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 import org.junit.Test;
 
 import java.util.concurrent.ExecutorService;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/HorizontallyConcatOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/HorizontallyConcatOperatorTest.java
index 6b57e48..c06bf2f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/HorizontallyConcatOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/HorizontallyConcatOperatorTest.java
@@ -41,14 +41,14 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.series.SeriesReaderTestUtil;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import io.airlift.units.Duration;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.TimeDuration;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LastQueryMergeOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LastQueryMergeOperatorTest.java
index cb8c300..888a106 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LastQueryMergeOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LastQueryMergeOperatorTest.java
@@ -29,10 +29,10 @@
 import org.apache.iotdb.db.queryengine.execution.operator.process.last.LastQueryMergeOperator;
 import org.apache.iotdb.db.queryengine.execution.operator.process.last.LastQueryUtil;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LastQueryOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LastQueryOperatorTest.java
index 93b2537..03c7402 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LastQueryOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LastQueryOperatorTest.java
@@ -39,15 +39,15 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.series.SeriesReaderTestUtil;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Sets;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LastQuerySortOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LastQuerySortOperatorTest.java
index a57f3e4..6197254 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LastQuerySortOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LastQuerySortOperatorTest.java
@@ -39,15 +39,15 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.series.SeriesReaderTestUtil;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Sets;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LimitOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LimitOperatorTest.java
index f796c8e..31dda89 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LimitOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LimitOperatorTest.java
@@ -40,13 +40,13 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.series.SeriesReaderTestUtil;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.IntColumn;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import io.airlift.units.Duration;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.IntColumn;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LinearFillOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LinearFillOperatorTest.java
index dc31288..4418120 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LinearFillOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/LinearFillOperatorTest.java
@@ -31,11 +31,11 @@
 import org.apache.iotdb.db.queryengine.execution.operator.process.fill.linear.FloatLinearFill;
 import org.apache.iotdb.db.queryengine.execution.operator.process.fill.linear.LinearFill;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 import org.junit.Test;
 
 import java.util.concurrent.ExecutorService;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/MergeSortOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/MergeSortOperatorTest.java
index 61ec16a..e1a6c59 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/MergeSortOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/MergeSortOperatorTest.java
@@ -55,17 +55,17 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.series.SeriesReaderTestUtil;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.utils.datastructure.SortKey;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.ListenableFuture;
 import io.airlift.units.Duration;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/MultiColumnMergerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/MultiColumnMergerTest.java
index e621d01..72cb1f3 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/MultiColumnMergerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/MultiColumnMergerTest.java
@@ -20,14 +20,14 @@
 
 import org.apache.iotdb.db.queryengine.execution.operator.process.join.merge.MultiColumnMerger;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
 import org.junit.Test;
 
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/NonOverlappedMultiColumnMergerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/NonOverlappedMultiColumnMergerTest.java
index 106ab4e..4d82021 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/NonOverlappedMultiColumnMergerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/NonOverlappedMultiColumnMergerTest.java
@@ -21,14 +21,14 @@
 import org.apache.iotdb.db.queryengine.execution.operator.process.join.merge.AscTimeComparator;
 import org.apache.iotdb.db.queryengine.execution.operator.process.join.merge.NonOverlappedMultiColumnMerger;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
 import org.junit.Test;
 
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/OffsetOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/OffsetOperatorTest.java
index 93d33c3..a1188be 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/OffsetOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/OffsetOperatorTest.java
@@ -41,13 +41,13 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.series.SeriesReaderTestUtil;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.IntColumn;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import io.airlift.units.Duration;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.IntColumn;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/OperatorMemoryTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/OperatorMemoryTest.java
index 228f7d9..94a98b1 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/OperatorMemoryTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/OperatorMemoryTest.java
@@ -85,19 +85,19 @@
 import org.apache.iotdb.db.queryengine.transformation.dag.column.binary.CompareLessEqualColumnTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.column.leaf.ConstantColumnTransformer;
 import org.apache.iotdb.db.queryengine.transformation.dag.column.leaf.TimeColumnTransformer;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.IntColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.LongColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.read.common.type.BooleanType;
-import org.apache.iotdb.tsfile.read.common.type.LongType;
-import org.apache.iotdb.tsfile.read.common.type.TypeEnum;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
 
 import com.google.common.collect.Sets;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.IntColumn;
+import org.apache.tsfile.read.common.block.column.LongColumn;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
+import org.apache.tsfile.read.common.type.BooleanType;
+import org.apache.tsfile.read.common.type.LongType;
+import org.apache.tsfile.read.common.type.TypeEnum;
+import org.apache.tsfile.utils.TimeDuration;
 import org.junit.Test;
 import org.mockito.Mockito;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/RawDataAggregationOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/RawDataAggregationOperatorTest.java
index 7b98c5e..7fac9a6 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/RawDataAggregationOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/RawDataAggregationOperatorTest.java
@@ -52,15 +52,15 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.series.SeriesReaderTestUtil;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.filter.factory.TimeFilterApi;
+import org.apache.tsfile.utils.TimeDuration;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SeriesAggregationScanOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SeriesAggregationScanOperatorTest.java
index 6743412..e799847 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SeriesAggregationScanOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SeriesAggregationScanOperatorTest.java
@@ -40,17 +40,17 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.series.SeriesReaderTestUtil;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import com.google.common.collect.Sets;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.filter.factory.FilterFactory;
+import org.apache.tsfile.read.filter.factory.TimeFilterApi;
+import org.apache.tsfile.utils.TimeDuration;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SeriesScanOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SeriesScanOperatorTest.java
index 5f464c6..11daae6 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SeriesScanOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SeriesScanOperatorTest.java
@@ -35,14 +35,14 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.series.SeriesReaderTestUtil;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.IntColumn;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import com.google.common.collect.Sets;
 import io.airlift.units.Duration;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.IntColumn;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SingleColumnMergerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SingleColumnMergerTest.java
index 01aa5a5..7f87e3f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SingleColumnMergerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SingleColumnMergerTest.java
@@ -22,13 +22,13 @@
 import org.apache.iotdb.db.queryengine.execution.operator.process.join.merge.DescTimeComparator;
 import org.apache.iotdb.db.queryengine.execution.operator.process.join.merge.SingleColumnMerger;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
 import org.junit.Test;
 
 import java.util.Collections;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SingleDeviceViewOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SingleDeviceViewOperatorTest.java
index c1e3af8..a0b9475 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SingleDeviceViewOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SingleDeviceViewOperatorTest.java
@@ -39,12 +39,12 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.series.SeriesReaderTestUtil;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import io.airlift.units.Duration;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SlidingWindowAggregationOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SlidingWindowAggregationOperatorTest.java
index fe04cab..16cb6e0 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SlidingWindowAggregationOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SlidingWindowAggregationOperatorTest.java
@@ -45,13 +45,13 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.series.SeriesReaderTestUtil;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.utils.SchemaUtils;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.TimeDuration;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SortOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SortOperatorTest.java
index e0bddde..bf7c976 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SortOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/SortOperatorTest.java
@@ -44,13 +44,13 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.series.SeriesReaderTestUtil;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.utils.datastructure.SortKey;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import io.airlift.units.Duration;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/TopKOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/TopKOperatorTest.java
index d146112..ea4b2e9 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/TopKOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/TopKOperatorTest.java
@@ -49,17 +49,17 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.series.SeriesReaderTestUtil;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import io.airlift.units.Duration;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/UpdateLastCacheOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/UpdateLastCacheOperatorTest.java
index 19e5c0a..c3b0ad8b 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/UpdateLastCacheOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/UpdateLastCacheOperatorTest.java
@@ -39,15 +39,15 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.series.SeriesReaderTestUtil;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import com.google.common.collect.Sets;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.filter.factory.TimeFilterApi;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/InnerTimeJoinOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/InnerTimeJoinOperatorTest.java
index ebb454b..9efccdb 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/InnerTimeJoinOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/InnerTimeJoinOperatorTest.java
@@ -24,14 +24,14 @@
 import org.apache.iotdb.db.queryengine.execution.operator.process.join.merge.AscTimeComparator;
 import org.apache.iotdb.db.queryengine.execution.operator.process.join.merge.DescTimeComparator;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import io.airlift.units.Duration;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 import org.junit.Test;
 import org.mockito.Mockito;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/LeftOuterTimeJoinOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/LeftOuterTimeJoinOperatorTest.java
index 27cbf5f..5bf30ec 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/LeftOuterTimeJoinOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/process/join/LeftOuterTimeJoinOperatorTest.java
@@ -23,13 +23,13 @@
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import org.apache.iotdb.db.queryengine.execution.operator.process.join.merge.AscTimeComparator;
 import org.apache.iotdb.db.queryengine.execution.operator.process.join.merge.DescTimeComparator;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import io.airlift.units.Duration;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
 import org.junit.Test;
 import org.mockito.Mockito;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/CountGroupByLevelMergeOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/CountGroupByLevelMergeOperatorTest.java
index 79b282e..d49186f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/CountGroupByLevelMergeOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/CountGroupByLevelMergeOperatorTest.java
@@ -33,9 +33,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.schemaengine.schemaregion.ISchemaRegion;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.ITimeSeriesSchemaInfo;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.read.common.block.TsBlock;
 import org.junit.Assert;
 import org.junit.Test;
 import org.mockito.Mockito;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaCountOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaCountOperatorTest.java
index bd46abe..3bdd80a 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaCountOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaCountOperatorTest.java
@@ -33,9 +33,9 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.ISchemaRegion;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.ISchemaInfo;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.ITimeSeriesSchemaInfo;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.read.common.block.TsBlock;
 import org.junit.Assert;
 import org.junit.Test;
 import org.mockito.Mockito;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchScanOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchScanOperatorTest.java
index a291dfc..8286a11 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchScanOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchScanOperatorTest.java
@@ -26,16 +26,16 @@
 import org.apache.iotdb.db.queryengine.common.schematree.DeviceSchemaInfo;
 import org.apache.iotdb.db.queryengine.common.schematree.ISchemaTree;
 import org.apache.iotdb.db.schemaengine.schemaregion.ISchemaRegion;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.read.common.block.TsBlock;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Assert;
 import org.junit.Test;
 import org.mockito.Mockito;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaQueryScanOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaQueryScanOperatorTest.java
index 8f042b6..c75b576 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaQueryScanOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaQueryScanOperatorTest.java
@@ -38,14 +38,14 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.ISchemaRegion;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.IDeviceSchemaInfo;
 import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.ITimeSeriesSchemaInfo;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumn;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.BinaryColumn;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Assert;
 import org.junit.Test;
 import org.mockito.Mockito;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/sink/IdentitySinkOperatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/sink/IdentitySinkOperatorTest.java
index 4c554ea..999bc7f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/sink/IdentitySinkOperatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/sink/IdentitySinkOperatorTest.java
@@ -39,13 +39,13 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.storageengine.dataregion.read.reader.series.SeriesReaderTestUtil;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.IntColumn;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import io.airlift.units.Duration;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.IntColumn;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/expression/predicate/ConvertPredicateToTimeFilterTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/expression/predicate/ConvertPredicateToTimeFilterTest.java
index 9f4ad5f..3e8c75f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/expression/predicate/ConvertPredicateToTimeFilterTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/expression/predicate/ConvertPredicateToTimeFilterTest.java
@@ -23,11 +23,11 @@
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.db.utils.TimestampPrecisionUtils;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
 
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.filter.factory.FilterFactory;
+import org.apache.tsfile.read.filter.factory.TimeFilterApi;
+import org.apache.tsfile.utils.TimeDuration;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -52,7 +52,7 @@
 import static org.apache.iotdb.db.queryengine.plan.expression.ExpressionFactory.notIn;
 import static org.apache.iotdb.db.queryengine.plan.expression.ExpressionFactory.or;
 import static org.apache.iotdb.db.queryengine.plan.expression.ExpressionFactory.time;
-import static org.apache.iotdb.tsfile.read.filter.operator.Not.CONTAIN_NOT_ERR_MSG;
+import static org.apache.tsfile.read.filter.operator.Not.CONTAIN_NOT_ERR_MSG;
 
 public class ConvertPredicateToTimeFilterTest {
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/analyze/AggregationDescriptorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/analyze/AggregationDescriptorTest.java
index 2e4c2da..2252b2b 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/analyze/AggregationDescriptorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/analyze/AggregationDescriptorTest.java
@@ -27,8 +27,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationDescriptor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationStep;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.CrossSeriesAggregationDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeTest.java
index 61f56a0..b968147 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeTest.java
@@ -48,11 +48,11 @@
 import org.apache.iotdb.db.queryengine.plan.parser.StatementGenerator;
 import org.apache.iotdb.db.queryengine.plan.statement.Statement;
 import org.apache.iotdb.db.queryengine.plan.statement.crud.QueryStatement;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import org.apache.ratis.thirdparty.com.google.common.collect.ImmutableMap;
 import org.apache.ratis.thirdparty.com.google.common.collect.Sets;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/analyze/FakeSchemaFetcherImpl.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/analyze/FakeSchemaFetcherImpl.java
index 333bffa..718d10e 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/analyze/FakeSchemaFetcherImpl.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/analyze/FakeSchemaFetcherImpl.java
@@ -31,11 +31,12 @@
 import org.apache.iotdb.db.queryengine.plan.analyze.schema.ISchemaComputationWithAutoCreation;
 import org.apache.iotdb.db.queryengine.plan.analyze.schema.ISchemaFetcher;
 import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+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.MeasurementSchema;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/analyze/QueryTimePartitionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/analyze/QueryTimePartitionTest.java
index 5e3a594..30338d0 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/analyze/QueryTimePartitionTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/analyze/QueryTimePartitionTest.java
@@ -20,12 +20,12 @@
 
 import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
 import org.apache.iotdb.commons.conf.CommonDescriptor;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.filter.factory.FilterFactory;
+import org.apache.tsfile.read.filter.factory.TimeFilterApi;
+import org.apache.tsfile.utils.Pair;
 import org.junit.Test;
 
 import java.util.Arrays;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/optimization/ColumnInjectionPushDownTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/optimization/ColumnInjectionPushDownTest.java
index 2db73bb..6fd503c 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/optimization/ColumnInjectionPushDownTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/optimization/ColumnInjectionPushDownTest.java
@@ -27,8 +27,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationStep;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.db.queryengine.plan.statement.component.FillPolicy;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
 
+import org.apache.tsfile.utils.TimeDuration;
 import org.junit.Test;
 
 import java.util.Arrays;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/optimization/OptimizationTestUtil.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/optimization/OptimizationTestUtil.java
index cb1d926..fe6a2ed 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/optimization/OptimizationTestUtil.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/optimization/OptimizationTestUtil.java
@@ -33,8 +33,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.LogicalPlanVisitor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
 import org.apache.iotdb.db.queryengine.plan.statement.Statement;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Assert;
 
 import java.time.ZonedDateTime;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGeneratorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGeneratorTest.java
index 0110601..ea36bd2 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGeneratorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGeneratorTest.java
@@ -77,10 +77,10 @@
 import org.apache.iotdb.service.rpc.thrift.TSRawDataQueryReq;
 import org.apache.iotdb.service.rpc.thrift.TSUnsetSchemaTemplateReq;
 import org.apache.iotdb.session.template.MeasurementNode;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -97,7 +97,7 @@
 import java.util.Set;
 
 import static org.apache.iotdb.db.schemaengine.template.TemplateQueryType.SHOW_MEASUREMENTS;
-import static org.apache.iotdb.tsfile.file.metadata.enums.CompressionType.SNAPPY;
+import static org.apache.tsfile.file.metadata.enums.CompressionType.SNAPPY;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertThrows;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/ExpressionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/ExpressionTest.java
index 7951287..0b41923 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/ExpressionTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/ExpressionTest.java
@@ -24,8 +24,8 @@
 import org.apache.iotdb.db.queryengine.plan.expression.Expression;
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimeSeriesOperand;
 import org.apache.iotdb.db.queryengine.plan.expression.multi.FunctionExpression;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/PipelineBuilderTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/PipelineBuilderTest.java
index 2ec572e..2161445 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/PipelineBuilderTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/PipelineBuilderTest.java
@@ -58,8 +58,8 @@
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
 import org.apache.iotdb.db.queryengine.plan.statement.component.SortItem;
 import org.apache.iotdb.db.storageengine.dataregion.DataRegion;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Test;
 import org.mockito.Mockito;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/AggregationDistributionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/AggregationDistributionTest.java
index 5921346..58467b0 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/AggregationDistributionTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/AggregationDistributionTest.java
@@ -49,8 +49,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.CrossSeriesAggregationDescriptor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/DistributionPlannerBasicTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/DistributionPlannerBasicTest.java
index 6d6c7a1..2308f97 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/DistributionPlannerBasicTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/DistributionPlannerBasicTest.java
@@ -40,9 +40,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowsNode;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Test;
 
 import java.util.Arrays;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/Util.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/Util.java
index f5a7afc..59cd36a 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/Util.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/Util.java
@@ -56,12 +56,12 @@
 import org.apache.iotdb.db.queryengine.plan.statement.crud.QueryStatement;
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.mpp.rpc.thrift.TRegionRouteReq;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.MeasurementSchema;
 import org.mockito.Mockito;
 
 import java.time.ZonedDateTime;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/Util2.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/Util2.java
index 95ae390..eb802ed 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/Util2.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/Util2.java
@@ -53,12 +53,12 @@
 import org.apache.iotdb.db.queryengine.plan.statement.crud.QueryStatement;
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.mpp.rpc.thrift.TRegionRouteReq;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.MeasurementSchema;
 import org.mockito.Mockito;
 
 import java.time.ZonedDateTime;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/logical/DataQueryLogicalPlannerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/logical/DataQueryLogicalPlannerTest.java
index 0355ccf..0566e73 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/logical/DataQueryLogicalPlannerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/logical/DataQueryLogicalPlannerTest.java
@@ -53,8 +53,8 @@
 import org.apache.iotdb.db.queryengine.plan.statement.component.OrderByKey;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
 import org.apache.iotdb.db.queryengine.plan.statement.component.SortItem;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/logical/SchemaQueryLogicalPlannerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/logical/SchemaQueryLogicalPlannerTest.java
index 0a65df4..610b394 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/logical/SchemaQueryLogicalPlannerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/logical/SchemaQueryLogicalPlannerTest.java
@@ -54,10 +54,10 @@
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.AlterTimeSeriesStatement;
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.CreateMultiTimeSeriesStatement;
 import org.apache.iotdb.service.rpc.thrift.TSCreateMultiTimeseriesReq;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/load/LoadTsFileNodeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/load/LoadTsFileNodeTest.java
index 7ef1ecf..849d45c 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/load/LoadTsFileNodeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/load/LoadTsFileNodeTest.java
@@ -24,8 +24,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.load.LoadSingleTsFileNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.load.LoadTsFilePieceNode;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
 
+import org.apache.tsfile.exception.NotImplementedException;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/metadata/write/MetadataWriteNodeSerDeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/metadata/write/MetadataWriteNodeSerDeTest.java
index 294e0c8..811a056 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/metadata/write/MetadataWriteNodeSerDeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/metadata/write/MetadataWriteNodeSerDeTest.java
@@ -49,11 +49,11 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.metedata.write.view.DeleteLogicalViewNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.metedata.write.view.RollbackLogicalViewBlackListNode;
 import org.apache.iotdb.db.queryengine.plan.statement.metadata.AlterTimeSeriesStatement;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+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.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/pipe/PipeEnrichedInsertNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/pipe/PipeEnrichedInsertNodeSerdeTest.java
index 35c5d2c..3c709af 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/pipe/PipeEnrichedInsertNodeSerdeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/pipe/PipeEnrichedInsertNodeSerdeTest.java
@@ -25,8 +25,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.pipe.PipeEnrichedInsertNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowNode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/pipe/PipeEnrichedWritePlanNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/pipe/PipeEnrichedWritePlanNodeSerdeTest.java
index bdbb8b9..7eccf67 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/pipe/PipeEnrichedWritePlanNodeSerdeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/pipe/PipeEnrichedWritePlanNodeSerdeTest.java
@@ -25,8 +25,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.metedata.write.InternalBatchActivateTemplateNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.pipe.PipeEnrichedWritePlanNode;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/AggregationNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/AggregationNodeSerdeTest.java
index 2f3b146..6dcf512 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/AggregationNodeSerdeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/AggregationNodeSerdeTest.java
@@ -32,10 +32,10 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationStep;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
 
 import com.google.common.collect.Sets;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.TimeDuration;
 import org.junit.Test;
 
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/FilterNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/FilterNodeSerdeTest.java
index cbbc3fb..ad5e28f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/FilterNodeSerdeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/FilterNodeSerdeTest.java
@@ -29,8 +29,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.FilterNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.join.FullOuterTimeJoinNode;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Test;
 
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/GroupByLevelNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/GroupByLevelNodeSerdeTest.java
index c7cff7e..93a4d30 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/GroupByLevelNodeSerdeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/GroupByLevelNodeSerdeTest.java
@@ -32,9 +32,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.CrossSeriesAggregationDescriptor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.TimeDuration;
 import org.junit.Test;
 
 import java.io.ByteArrayOutputStream;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/GroupByTagNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/GroupByTagNodeSerdeTest.java
index 3d307a5..779f18f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/GroupByTagNodeSerdeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/GroupByTagNodeSerdeTest.java
@@ -33,9 +33,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.CrossSeriesAggregationDescriptor;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.TimeDuration;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/LimitNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/LimitNodeSerdeTest.java
index 427ae18..1687b36 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/LimitNodeSerdeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/LimitNodeSerdeTest.java
@@ -26,8 +26,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.OffsetNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.SeriesScanNode;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Test;
 
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/OffsetNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/OffsetNodeSerdeTest.java
index da11d3e..a418d7f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/OffsetNodeSerdeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/OffsetNodeSerdeTest.java
@@ -25,8 +25,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.OffsetNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.SeriesScanNode;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Test;
 
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/SortNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/SortNodeSerdeTest.java
index b2151e9..e43d44d 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/SortNodeSerdeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/SortNodeSerdeTest.java
@@ -28,9 +28,9 @@
 import org.apache.iotdb.db.queryengine.plan.statement.component.OrderByKey;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
 import org.apache.iotdb.db.queryengine.plan.statement.component.SortItem;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Test;
 
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/TimeJoinNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/TimeJoinNodeSerdeTest.java
index 21c2d16..b274322 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/TimeJoinNodeSerdeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/process/TimeJoinNodeSerdeTest.java
@@ -28,8 +28,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.join.LeftOuterTimeJoinNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.SeriesScanNode;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/source/SeriesAggregationScanNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/source/SeriesAggregationScanNodeSerdeTest.java
index b23c849..2929ea8 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/source/SeriesAggregationScanNodeSerdeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/source/SeriesAggregationScanNodeSerdeTest.java
@@ -31,9 +31,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.AggregationStep;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.TimeDuration;
 import org.junit.Test;
 
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/source/SeriesScanNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/source/SeriesScanNodeSerdeTest.java
index f95dbac..ce4d620 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/source/SeriesScanNodeSerdeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/source/SeriesScanNodeSerdeTest.java
@@ -25,8 +25,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.SeriesScanNode;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Test;
 
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertMultiTabletsNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertMultiTabletsNodeSerdeTest.java
index 550c19c..215e71c 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertMultiTabletsNodeSerdeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertMultiTabletsNodeSerdeTest.java
@@ -25,10 +25,10 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertMultiTabletsNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertTabletNode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertRowNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertRowNodeSerdeTest.java
index 53e662e..523b061 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertRowNodeSerdeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertRowNodeSerdeTest.java
@@ -25,9 +25,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowNode;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALByteBufferForTest;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertRowsNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertRowsNodeSerdeTest.java
index 38067f3..1528e0b 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertRowsNodeSerdeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertRowsNodeSerdeTest.java
@@ -25,8 +25,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowsNode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertRowsOfOneDeviceNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertRowsOfOneDeviceNodeSerdeTest.java
index 8709069..d992090 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertRowsOfOneDeviceNodeSerdeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertRowsOfOneDeviceNodeSerdeTest.java
@@ -25,8 +25,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowsOfOneDeviceNode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertTabletNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertTabletNodeSerdeTest.java
index 7aeb5ea..4ff6454 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertTabletNodeSerdeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/InsertTabletNodeSerdeTest.java
@@ -25,9 +25,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertTabletNode;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALByteBufferForTest;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/WritePlanNodeSplitTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/WritePlanNodeSplitTest.java
index 050dcf8..45f0457 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/WritePlanNodeSplitTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/node/write/WritePlanNodeSplitTest.java
@@ -42,8 +42,8 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowsNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowsOfOneDeviceNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertTabletNode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/statement/QueryStatementTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/statement/QueryStatementTest.java
index e6bd0c2..307bee5 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/statement/QueryStatementTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/statement/QueryStatementTest.java
@@ -23,8 +23,8 @@
 import org.apache.iotdb.db.exception.sql.SemanticException;
 import org.apache.iotdb.db.queryengine.plan.parser.StatementGenerator;
 import org.apache.iotdb.db.queryengine.plan.statement.crud.QueryStatement;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticAndCompareBinaryColumnTransformerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticAndCompareBinaryColumnTransformerTest.java
index ca36e1b..a6d3003 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticAndCompareBinaryColumnTransformerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/ArithmeticAndCompareBinaryColumnTransformerTest.java
@@ -20,15 +20,15 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.binary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.leaf.IdentityColumnTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
-import org.apache.iotdb.tsfile.read.common.type.TypeFactory;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
+import org.apache.tsfile.read.common.type.Type;
+import org.apache.tsfile.read.common.type.TypeFactory;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/LogicBinaryColumnTransformerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/LogicBinaryColumnTransformerTest.java
index c8d15b8..7e66638 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/LogicBinaryColumnTransformerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/dag/column/binary/LogicBinaryColumnTransformerTest.java
@@ -20,15 +20,15 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.binary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.leaf.IdentityColumnTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
-import org.apache.iotdb.tsfile.read.common.type.TypeFactory;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
+import org.apache.tsfile.read.common.type.Type;
+import org.apache.tsfile.read.common.type.TypeFactory;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/UnaryColumnTransformerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/UnaryColumnTransformerTest.java
index faee6ce..45f31e7 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/UnaryColumnTransformerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/UnaryColumnTransformerTest.java
@@ -20,15 +20,15 @@
 package org.apache.iotdb.db.queryengine.transformation.dag.column.unary;
 
 import org.apache.iotdb.db.queryengine.transformation.dag.column.leaf.IdentityColumnTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.type.Type;
-import org.apache.iotdb.tsfile.read.common.type.TypeFactory;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
+import org.apache.tsfile.read.common.type.Type;
+import org.apache.tsfile.read.common.type.TypeFactory;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/ElasticSerializableRowRecordListTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/ElasticSerializableRowRecordListTest.java
index b9df959..5844dc4 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/ElasticSerializableRowRecordListTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/ElasticSerializableRowRecordListTest.java
@@ -21,9 +21,9 @@
 
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.row.ElasticSerializableRowRecordList;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.BytesUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/ElasticSerializableTVListTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/ElasticSerializableTVListTest.java
index d19e338..1250f93 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/ElasticSerializableTVListTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/ElasticSerializableTVListTest.java
@@ -22,10 +22,10 @@
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.queryengine.transformation.api.LayerPointReader;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.tv.ElasticSerializableTVList;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 import org.apache.iotdb.udf.api.type.Binary;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.BytesUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableBinaryTVListTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableBinaryTVListTest.java
index a218e6a..becc377 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableBinaryTVListTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableBinaryTVListTest.java
@@ -21,10 +21,10 @@
 
 import org.apache.iotdb.db.queryengine.transformation.datastructure.tv.SerializableBinaryTVList;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.tv.SerializableTVList;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BytesUtils;
 import org.junit.After;
 import org.junit.Before;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableBooleanTVListTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableBooleanTVListTest.java
index e54541c..e8ccfe9 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableBooleanTVListTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableBooleanTVListTest.java
@@ -21,8 +21,8 @@
 
 import org.apache.iotdb.db.queryengine.transformation.datastructure.tv.SerializableBooleanTVList;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.tv.SerializableTVList;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.After;
 import org.junit.Before;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableDoubleTVListTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableDoubleTVListTest.java
index 787d164..d6fe5e7 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableDoubleTVListTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableDoubleTVListTest.java
@@ -21,8 +21,8 @@
 
 import org.apache.iotdb.db.queryengine.transformation.datastructure.tv.SerializableDoubleTVList;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.tv.SerializableTVList;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.After;
 import org.junit.Before;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableFloatTVListTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableFloatTVListTest.java
index 8442248..b3510c8 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableFloatTVListTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableFloatTVListTest.java
@@ -21,8 +21,8 @@
 
 import org.apache.iotdb.db.queryengine.transformation.datastructure.tv.SerializableFloatTVList;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.tv.SerializableTVList;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.After;
 import org.junit.Before;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableIntTVListTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableIntTVListTest.java
index 4c8cc75..dc1b863 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableIntTVListTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableIntTVListTest.java
@@ -21,8 +21,8 @@
 
 import org.apache.iotdb.db.queryengine.transformation.datastructure.tv.SerializableIntTVList;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.tv.SerializableTVList;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.After;
 import org.junit.Before;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableLongTVListTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableLongTVListTest.java
index 4df8592..4ba1348 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableLongTVListTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableLongTVListTest.java
@@ -21,8 +21,8 @@
 
 import org.apache.iotdb.db.queryengine.transformation.datastructure.tv.SerializableLongTVList;
 import org.apache.iotdb.db.queryengine.transformation.datastructure.tv.SerializableTVList;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.After;
 import org.junit.Before;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableRowRecordListTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableRowRecordListTest.java
index 8f64ffc..272a1cf 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableRowRecordListTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/transformation/datastructure/SerializableRowRecordListTest.java
@@ -20,11 +20,11 @@
 package org.apache.iotdb.db.queryengine.transformation.datastructure;
 
 import org.apache.iotdb.db.queryengine.transformation.datastructure.row.SerializableRowRecordList;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.Field;
+import org.apache.tsfile.read.common.RowRecord;
+import org.apache.tsfile.utils.BytesUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/service/DataNodeInternalRPCServiceImplTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/service/DataNodeInternalRPCServiceImplTest.java
index c72267e..fced938 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/service/DataNodeInternalRPCServiceImplTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/service/DataNodeInternalRPCServiceImplTest.java
@@ -46,11 +46,11 @@
 import org.apache.iotdb.mpp.rpc.thrift.TSendBatchPlanNodeReq;
 import org.apache.iotdb.mpp.rpc.thrift.TSendBatchPlanNodeResp;
 import org.apache.iotdb.mpp.rpc.thrift.TSendSinglePlanNodeReq;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
 import org.apache.ratis.util.FileUtils;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/buffer/BloomFilterCacheTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/buffer/BloomFilterCacheTest.java
index eceac58..00744e9 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/buffer/BloomFilterCacheTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/buffer/BloomFilterCacheTest.java
@@ -20,18 +20,18 @@
 
 import org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.BloomFilter;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.utils.BloomFilter;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.Schema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/buffer/ChunkCacheTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/buffer/ChunkCacheTest.java
index 7683112..63d176a 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/buffer/ChunkCacheTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/buffer/ChunkCacheTest.java
@@ -26,22 +26,22 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.file.metadata.statistics.DoubleStatistics;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.file.metadata.statistics.DoubleStatistics;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/DataRegionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/DataRegionTest.java
index fb670de..aa2e0a5 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/DataRegionTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/DataRegionTest.java
@@ -56,17 +56,17 @@
 import org.apache.iotdb.db.storageengine.rescon.memory.MemTableManager;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.reader.IPointReader;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/LastFlushTimeMapTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/LastFlushTimeMapTest.java
index f8f6cb7..880a573 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/LastFlushTimeMapTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/LastFlushTimeMapTest.java
@@ -30,12 +30,12 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.DeviceTimeIndex;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/TTLTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/TTLTest.java
index 4cbd484..93f8992 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/TTLTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/TTLTest.java
@@ -47,13 +47,13 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.rescon.disk.TierManager;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.constant.TsFileConstant;
+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.read.common.block.TsBlock;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/TsFileManagerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/TsFileManagerTest.java
index b8cf3a13..47d5416 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/TsFileManagerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/TsFileManagerTest.java
@@ -26,9 +26,9 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.exception.write.WriteProcessException;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/TsFileResourceProgressIndexTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/TsFileResourceProgressIndexTest.java
index e149e67..fa45296 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/TsFileResourceProgressIndexTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/TsFileResourceProgressIndexTest.java
@@ -31,11 +31,11 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.DeviceTimeIndex;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/AbstractCompactionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/AbstractCompactionTest.java
index 9f1c932..26cefe6 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/AbstractCompactionTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/AbstractCompactionTest.java
@@ -42,28 +42,28 @@
 import org.apache.iotdb.db.tools.validate.TsFileValidationTool;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkGroupHeader;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.IBatchDataIterator;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.utils.FilePathUtils;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorUtils;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.MetaMarker;
+import org.apache.tsfile.file.header.ChunkGroupHeader;
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.IBatchDataIterator;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.FilePathUtils;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.TsFileGeneratorUtils;
+import org.apache.tsfile.utils.TsPrimitiveType;
 import org.junit.Assert;
 
 import java.io.File;
@@ -75,7 +75,7 @@
 import java.util.Map;
 
 import static org.apache.iotdb.commons.conf.IoTDBConstant.FILE_NAME_SEPARATOR;
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
+import static org.apache.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
 import static org.junit.Assert.fail;
 
 public class AbstractCompactionTest {
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionDataTypeNotMatchTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionDataTypeNotMatchTest.java
index c07616a..82a2fa4 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionDataTypeNotMatchTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionDataTypeNotMatchTest.java
@@ -28,17 +28,17 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.storageengine.dataregion.utils.TsFileResourceUtils;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.BooleanDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.BooleanDataPoint;
+import org.apache.tsfile.write.record.datapoint.IntDataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionOverlapCheckTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionOverlapCheckTest.java
index 397f8dd..9d43c6f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionOverlapCheckTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionOverlapCheckTest.java
@@ -28,11 +28,11 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.InnerSpaceCompactionTask;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.utils.CompactionTestFileWriter;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.TimeRange;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionValidationTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionValidationTest.java
index b2d81c3..e051256 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionValidationTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionValidationTest.java
@@ -24,19 +24,19 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.FileTimeIndex;
 import org.apache.iotdb.db.storageengine.dataregion.utils.TsFileResourceUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionWorkerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionWorkerTest.java
index b112b47..556a596 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionWorkerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionWorkerTest.java
@@ -30,8 +30,8 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.storageengine.rescon.memory.SystemInfo;
 import org.apache.iotdb.db.utils.datastructure.FixedPriorityBlockingQueue;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CrossSpaceCompactionWithUnusualCasesTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CrossSpaceCompactionWithUnusualCasesTest.java
index 075ba0e..3006d03 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CrossSpaceCompactionWithUnusualCasesTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CrossSpaceCompactionWithUnusualCasesTest.java
@@ -30,18 +30,18 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.utils.TsFileGeneratorUtils;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
+import org.apache.tsfile.write.chunk.IChunkWriter;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastAlignedCrossCompactionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastAlignedCrossCompactionTest.java
index 9c470b1..d7d415c 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastAlignedCrossCompactionTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastAlignedCrossCompactionTest.java
@@ -28,18 +28,18 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.InnerSpaceCompactionTask;
 import org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
+import org.apache.tsfile.write.chunk.IChunkWriter;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -59,7 +59,7 @@
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.utils.TsFileGeneratorUtils.testStorageGroup;
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.utils.TsFileGeneratorUtils.writeAlignedChunk;
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.utils.TsFileGeneratorUtils.writeOneAlignedPage;
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
+import static org.apache.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
 
 public class FastAlignedCrossCompactionTest extends AbstractCompactionTest {
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastCompactionPerformerWithEmptyPageTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastCompactionPerformerWithEmptyPageTest.java
index 654b3a1..75b573e 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastCompactionPerformerWithEmptyPageTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastCompactionPerformerWithEmptyPageTest.java
@@ -27,15 +27,15 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.CrossSpaceCompactionTask;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.utils.CompactionTestFileWriter;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
+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.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.TimeRange;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastCompactionPerformerWithInconsistentCompressionTypeAndEncodingTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastCompactionPerformerWithInconsistentCompressionTypeAndEncodingTest.java
index 1fb5991..ef68469 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastCompactionPerformerWithInconsistentCompressionTypeAndEncodingTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastCompactionPerformerWithInconsistentCompressionTypeAndEncodingTest.java
@@ -27,22 +27,22 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.executor.fast.reader.CompactionChunkReader;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.utils.CompactionTestFileWriter;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.reader.chunk.AlignedChunkReader;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.MetaMarker;
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.reader.chunk.AlignedChunkReader;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastCrossCompactionPerformerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastCrossCompactionPerformerTest.java
index acd132d..64699f0 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastCrossCompactionPerformerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastCrossCompactionPerformerTest.java
@@ -44,18 +44,18 @@
 import org.apache.iotdb.db.tools.validate.TsFileValidationTool;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.datastructure.FixedPriorityBlockingQueue;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.IBatchDataIterator;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorUtils;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.read.common.IBatchDataIterator;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.TsFileGeneratorUtils;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastInnerCompactionPerformerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastInnerCompactionPerformerTest.java
index 0794460..2e0ded2 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastInnerCompactionPerformerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastInnerCompactionPerformerTest.java
@@ -35,30 +35,30 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.IBatchDataIterator;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.read.reader.chunk.AlignedChunkReader;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorUtils;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.IBatchDataIterator;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.reader.IPointReader;
+import org.apache.tsfile.read.reader.chunk.AlignedChunkReader;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.TsFileGeneratorUtils;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastNonAlignedCrossCompactionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastNonAlignedCrossCompactionTest.java
index e8be0f5..7236b40 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastNonAlignedCrossCompactionTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastNonAlignedCrossCompactionTest.java
@@ -30,18 +30,18 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
+import org.apache.tsfile.write.chunk.IChunkWriter;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -61,7 +61,7 @@
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.utils.TsFileGeneratorUtils.testStorageGroup;
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.utils.TsFileGeneratorUtils.writeNonAlignedChunk;
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.utils.TsFileGeneratorUtils.writeOneNonAlignedPage;
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
+import static org.apache.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
 
 public class FastNonAlignedCrossCompactionTest extends AbstractCompactionTest {
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadChunkInnerCompactionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadChunkInnerCompactionTest.java
index 99f9e60..7e7c74b 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadChunkInnerCompactionTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadChunkInnerCompactionTest.java
@@ -32,25 +32,25 @@
 import org.apache.iotdb.db.storageengine.dataregion.modification.Deletion;
 import org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
-import org.apache.iotdb.tsfile.write.chunk.ValueChunkWriter;
-import org.apache.iotdb.tsfile.write.page.TimePageWriter;
-import org.apache.iotdb.tsfile.write.page.ValuePageWriter;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
+import org.apache.tsfile.write.chunk.IChunkWriter;
+import org.apache.tsfile.write.chunk.ValueChunkWriter;
+import org.apache.tsfile.write.page.TimePageWriter;
+import org.apache.tsfile.write.page.ValuePageWriter;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -73,7 +73,7 @@
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.utils.TsFileGeneratorUtils.writeAlignedChunk;
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.utils.TsFileGeneratorUtils.writeNonAlignedChunk;
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.utils.TsFileGeneratorUtils.writeOneAlignedPage;
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
+import static org.apache.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
 
 public class ReadChunkInnerCompactionTest extends AbstractCompactionTest {
   @Before
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointAlignedCrossCompactionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointAlignedCrossCompactionTest.java
index c3fff22..447791d 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointAlignedCrossCompactionTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointAlignedCrossCompactionTest.java
@@ -28,18 +28,18 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.InnerSpaceCompactionTask;
 import org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
+import org.apache.tsfile.write.chunk.IChunkWriter;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -59,7 +59,7 @@
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.utils.TsFileGeneratorUtils.testStorageGroup;
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.utils.TsFileGeneratorUtils.writeAlignedChunk;
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.utils.TsFileGeneratorUtils.writeOneAlignedPage;
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
+import static org.apache.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
 
 public class ReadPointAlignedCrossCompactionTest extends AbstractCompactionTest {
   private final String oldThreadName = Thread.currentThread().getName();
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointCompactionPerformerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointCompactionPerformerTest.java
index ec9ed52..78232ff 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointCompactionPerformerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointCompactionPerformerTest.java
@@ -36,19 +36,19 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.IBatchDataIterator;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorUtils;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.read.common.IBatchDataIterator;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.TsFileGeneratorUtils;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointNonAlignedCrossCompactionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointNonAlignedCrossCompactionTest.java
index 8d423b8..d0a0543 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointNonAlignedCrossCompactionTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointNonAlignedCrossCompactionTest.java
@@ -29,18 +29,18 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.InnerSpaceCompactionTask;
 import org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
+import org.apache.tsfile.write.chunk.IChunkWriter;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -60,7 +60,7 @@
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.utils.TsFileGeneratorUtils.testStorageGroup;
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.utils.TsFileGeneratorUtils.writeNonAlignedChunk;
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.utils.TsFileGeneratorUtils.writeOneNonAlignedPage;
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
+import static org.apache.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
 
 public class ReadPointNonAlignedCrossCompactionTest extends AbstractCompactionTest {
   private final String oldThreadName = Thread.currentThread().getName();
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/TestUtilsForAlignedSeries.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/TestUtilsForAlignedSeries.java
index e3b54a9..2977006 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/TestUtilsForAlignedSeries.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/TestUtilsForAlignedSeries.java
@@ -21,13 +21,14 @@
 
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/TsFileValidationCorrectnessTests.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/TsFileValidationCorrectnessTests.java
index 91dffd0..a99f78e 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/TsFileValidationCorrectnessTests.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/TsFileValidationCorrectnessTests.java
@@ -24,17 +24,17 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.utils.validate.TsFileValidator;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.VectorMeasurementSchema;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.VectorMeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionExceptionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionExceptionTest.java
index 8a2df9b..bda21cc 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionExceptionTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionExceptionTest.java
@@ -40,13 +40,13 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.utils.Pair;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -61,7 +61,7 @@
 
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.log.CompactionLogger.STR_SOURCE_FILES;
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.log.CompactionLogger.STR_TARGET_FILES;
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
+import static org.apache.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
 
 public class CrossSpaceCompactionExceptionTest extends AbstractCompactionTest {
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionSelectorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionSelectorTest.java
index 1314919..78b71ea 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionSelectorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionSelectorTest.java
@@ -36,8 +36,8 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.storageengine.rescon.memory.SystemInfo;
 import org.apache.iotdb.db.utils.datastructure.FixedPriorityBlockingQueue;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithFastPerformerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithFastPerformerTest.java
index 5a7fe53..6ce367f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithFastPerformerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithFastPerformerTest.java
@@ -43,9 +43,9 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.Pair;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithFastPerformerValidationTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithFastPerformerValidationTest.java
index d1bf156..b1d8b11 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithFastPerformerValidationTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithFastPerformerValidationTest.java
@@ -47,16 +47,16 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.storageengine.dataregion.utils.TsFileResourceUtils;
 import org.apache.iotdb.db.tools.validate.TsFileValidationTool;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -70,7 +70,7 @@
 import java.util.Map;
 
 import static org.apache.iotdb.commons.conf.IoTDBConstant.PATH_SEPARATOR;
-import static org.apache.iotdb.tsfile.utils.TsFileGeneratorUtils.alignDeviceOffset;
+import static org.apache.tsfile.utils.TsFileGeneratorUtils.alignDeviceOffset;
 
 public class CrossSpaceCompactionWithFastPerformerValidationTest extends AbstractCompactionTest {
   TsFileManager tsFileManager =
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithReadPointPerformerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithReadPointPerformerTest.java
index 6206a50..9309736 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithReadPointPerformerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithReadPointPerformerTest.java
@@ -43,9 +43,9 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.Pair;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithReadPointPerformerValidationTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithReadPointPerformerValidationTest.java
index c1090e3..d342615 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithReadPointPerformerValidationTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionWithReadPointPerformerValidationTest.java
@@ -45,15 +45,15 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.tools.validate.TsFileValidationTool;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -67,7 +67,7 @@
 import java.util.Map;
 
 import static org.apache.iotdb.commons.conf.IoTDBConstant.PATH_SEPARATOR;
-import static org.apache.iotdb.tsfile.utils.TsFileGeneratorUtils.alignDeviceOffset;
+import static org.apache.tsfile.utils.TsFileGeneratorUtils.alignDeviceOffset;
 
 public class CrossSpaceCompactionWithReadPointPerformerValidationTest
     extends AbstractCompactionTest {
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionRecoverTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionRecoverTest.java
index edd2784..e99d2c7 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionRecoverTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionRecoverTest.java
@@ -34,18 +34,18 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.DeviceTimeIndex;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionSelectorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionSelectorTest.java
index 6999394..a09717e 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionSelectorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionSelectorTest.java
@@ -31,17 +31,17 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.DeviceTimeIndex;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionTest.java
index 6433990..e4082bb 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionTest.java
@@ -38,11 +38,11 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
 import org.apache.iotdb.db.storageengine.rescon.memory.TsFileResourceManager;
 import org.apache.iotdb.db.utils.datastructure.FixedPriorityBlockingQueue;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.TimeRange;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/MergeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/MergeTest.java
index aecdf38..681f506 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/MergeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/MergeTest.java
@@ -29,18 +29,18 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/MergeUpgradeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/MergeUpgradeTest.java
index 390c395..d62e701 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/MergeUpgradeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/MergeUpgradeTest.java
@@ -28,19 +28,19 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -178,8 +178,7 @@
       long ptNum,
       long valueOffset)
       throws WriteProcessException, IOException {
-    for (org.apache.iotdb.tsfile.write.schema.MeasurementSchema MeasurementSchema :
-        measurementSchemas) {
+    for (org.apache.tsfile.write.schema.MeasurementSchema MeasurementSchema : measurementSchemas) {
       fileWriter.registerTimeseries(new Path(deviceName), MeasurementSchema);
     }
     for (long i = timeOffset; i < timeOffset + ptNum; i++) {
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/RewriteCompactionFileSelectorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/RewriteCompactionFileSelectorTest.java
index 03bc9bb..42078ab 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/RewriteCompactionFileSelectorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/RewriteCompactionFileSelectorTest.java
@@ -32,14 +32,14 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.ITimeIndex;
 import org.apache.iotdb.db.storageengine.rescon.memory.SystemInfo;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/RewriteCrossSpaceCompactionRecoverTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/RewriteCrossSpaceCompactionRecoverTest.java
index fa3d145..4d57d6d 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/RewriteCrossSpaceCompactionRecoverTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/RewriteCrossSpaceCompactionRecoverTest.java
@@ -36,10 +36,10 @@
 import org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.utils.Pair;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -54,7 +54,7 @@
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.log.CompactionLogger.STR_DELETED_TARGET_FILES;
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.log.CompactionLogger.STR_SOURCE_FILES;
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.log.CompactionLogger.STR_TARGET_FILES;
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
+import static org.apache.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
 
 public class RewriteCrossSpaceCompactionRecoverTest extends AbstractCompactionTest {
   private final String oldThreadName = Thread.currentThread().getName();
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/RewriteCrossSpaceCompactionWithFastPerformerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/RewriteCrossSpaceCompactionWithFastPerformerTest.java
index 5a7e5a9..d9d9203 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/RewriteCrossSpaceCompactionWithFastPerformerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/RewriteCrossSpaceCompactionWithFastPerformerTest.java
@@ -41,16 +41,16 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
 import org.apache.iotdb.db.storageengine.dataregion.wal.recover.WALRecoverManager;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorUtils;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.TsFileGeneratorUtils;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/RewriteCrossSpaceCompactionWithReadPointPerformerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/RewriteCrossSpaceCompactionWithReadPointPerformerTest.java
index 24bf230..54f4dfb 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/RewriteCrossSpaceCompactionWithReadPointPerformerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/RewriteCrossSpaceCompactionWithReadPointPerformerTest.java
@@ -41,16 +41,16 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
 import org.apache.iotdb.db.storageengine.dataregion.wal.recover.WALRecoverManager;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorUtils;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.TsFileGeneratorUtils;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/AbstractInnerSpaceCompactionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/AbstractInnerSpaceCompactionTest.java
index c566e8e..cddca4d 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/AbstractInnerSpaceCompactionTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/AbstractInnerSpaceCompactionTest.java
@@ -32,19 +32,19 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/FastCompactionPerformerAlignedTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/FastCompactionPerformerAlignedTest.java
index 8690713..d20bb63 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/FastCompactionPerformerAlignedTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/FastCompactionPerformerAlignedTest.java
@@ -36,13 +36,13 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/FastCompactionPerformerNoAlignedTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/FastCompactionPerformerNoAlignedTest.java
index 1deedc0..39ecb05 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/FastCompactionPerformerNoAlignedTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/FastCompactionPerformerNoAlignedTest.java
@@ -38,14 +38,14 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import org.apache.commons.io.FileUtils;
+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.read.TimeValuePair;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionEmptyTsFileTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionEmptyTsFileTest.java
index 86dbedd..230fe2e 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionEmptyTsFileTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionEmptyTsFileTest.java
@@ -26,9 +26,9 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.exception.write.WriteProcessException;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionLogTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionLogTest.java
index 0272c5b..4db854c 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionLogTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionLogTest.java
@@ -24,9 +24,9 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.CompactionTaskManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileManager;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionMoreDataTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionMoreDataTest.java
index daa27ec..d3a37e6 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionMoreDataTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionMoreDataTest.java
@@ -32,18 +32,18 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionSchedulerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionSchedulerTest.java
index 01f89b7..3237ccb 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionSchedulerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionSchedulerTest.java
@@ -28,8 +28,8 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceList;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionTest.java
index a8a9d16..2c78c01 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerCompactionTest.java
@@ -32,18 +32,18 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSeqCompactionWithFastPerformerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSeqCompactionWithFastPerformerTest.java
index 539da5c..302497f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSeqCompactionWithFastPerformerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSeqCompactionWithFastPerformerTest.java
@@ -44,11 +44,11 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.Pair;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSeqCompactionWithReadChunkPerformerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSeqCompactionWithReadChunkPerformerTest.java
index aab0614..d9b7480 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSeqCompactionWithReadChunkPerformerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSeqCompactionWithReadChunkPerformerTest.java
@@ -44,10 +44,10 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.Pair;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionExceptionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionExceptionTest.java
index 1087c56..63a6003 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionExceptionTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionExceptionTest.java
@@ -31,9 +31,9 @@
 import org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.utils.Pair;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -48,7 +48,7 @@
 import java.util.List;
 import java.util.Map;
 
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
+import static org.apache.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
 
 public class InnerSpaceCompactionExceptionTest extends AbstractInnerSpaceCompactionTest {
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java
index 6176f66..e13c220 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java
@@ -35,8 +35,8 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.utils.datastructure.FixedPriorityBlockingQueue;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerUnseqCompactionWithFastPerformerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerUnseqCompactionWithFastPerformerTest.java
index af8aaf1..c9bb3c6 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerUnseqCompactionWithFastPerformerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerUnseqCompactionWithFastPerformerTest.java
@@ -36,9 +36,9 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.utils.CompactionTimeseriesType;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.Pair;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerUnseqCompactionWithReadPointPerformerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerUnseqCompactionWithReadPointPerformerTest.java
index d3b71e4..6418a5f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerUnseqCompactionWithReadPointPerformerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerUnseqCompactionWithReadPointPerformerTest.java
@@ -36,9 +36,9 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.utils.CompactionTimeseriesType;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.Pair;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/NewReadChunkCompactionPerformerWithAlignedSeriesTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/NewReadChunkCompactionPerformerWithAlignedSeriesTest.java
index 8c92542..1932a5c 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/NewReadChunkCompactionPerformerWithAlignedSeriesTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/NewReadChunkCompactionPerformerWithAlignedSeriesTest.java
@@ -33,13 +33,13 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
 import org.apache.iotdb.db.storageengine.dataregion.utils.TsFileResourceUtils;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.exception.write.PageException;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.TimeRange;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/ReadChunkCompactionPerformerAlignedTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/ReadChunkCompactionPerformerAlignedTest.java
index 38fb472..09a8c0b 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/ReadChunkCompactionPerformerAlignedTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/ReadChunkCompactionPerformerAlignedTest.java
@@ -37,20 +37,20 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.writer.RestorableTsFileIOWriter;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/ReadChunkCompactionPerformerNoAlignedTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/ReadChunkCompactionPerformerNoAlignedTest.java
index ed23b2a..28c55a4 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/ReadChunkCompactionPerformerNoAlignedTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/ReadChunkCompactionPerformerNoAlignedTest.java
@@ -37,15 +37,15 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import org.apache.commons.io.FileUtils;
+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.read.TimeValuePair;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/ReadChunkCompactionPerformerOldTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/ReadChunkCompactionPerformerOldTest.java
index 937eded..4a31c43 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/ReadChunkCompactionPerformerOldTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/ReadChunkCompactionPerformerOldTest.java
@@ -28,14 +28,14 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.log.CompactionLogger;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.read.TsFileReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.read.TsFileReader;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.read.common.RowRecord;
+import org.apache.tsfile.read.expression.QueryExpression;
+import org.apache.tsfile.read.query.dataset.QueryDataSet;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/sizetiered/SizeTieredCompactionRecoverTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/sizetiered/SizeTieredCompactionRecoverTest.java
index eedd787..00523f3 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/sizetiered/SizeTieredCompactionRecoverTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/sizetiered/SizeTieredCompactionRecoverTest.java
@@ -45,13 +45,13 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.SchemaTestUtils;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.writer.TsFileOutput;
 
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.write.writer.TsFileOutput;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -73,7 +73,7 @@
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.log.CompactionLogger.STR_DELETED_TARGET_FILES;
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.log.CompactionLogger.STR_SOURCE_FILES;
 import static org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.log.CompactionLogger.STR_TARGET_FILES;
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
+import static org.apache.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
 import static org.junit.Assert.assertEquals;
 
 public class SizeTieredCompactionRecoverTest extends AbstractInnerSpaceCompactionTest {
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/sizetiered/SizeTieredCompactionSelectorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/sizetiered/SizeTieredCompactionSelectorTest.java
index 22a9f0b..ab14333 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/sizetiered/SizeTieredCompactionSelectorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/sizetiered/SizeTieredCompactionSelectorTest.java
@@ -24,8 +24,8 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.FakedTsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
 
+import org.apache.tsfile.file.metadata.PlainDeviceID;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/sizetiered/SizeTieredCompactionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/sizetiered/SizeTieredCompactionTest.java
index 6821555..206cf09 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/sizetiered/SizeTieredCompactionTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/sizetiered/SizeTieredCompactionTest.java
@@ -30,18 +30,18 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/recover/SizeTieredCompactionRecoverTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/recover/SizeTieredCompactionRecoverTest.java
index eb419e9..17ad29b 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/recover/SizeTieredCompactionRecoverTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/recover/SizeTieredCompactionRecoverTest.java
@@ -45,13 +45,13 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.common.constant.TsFileConstant;
+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.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/AbstractRepairDataTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/AbstractRepairDataTest.java
index dff58a4..673e7f8 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/AbstractRepairDataTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/AbstractRepairDataTest.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.AbstractCompactionTest;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
+
+import org.apache.tsfile.exception.write.WriteProcessException;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtilTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtilTest.java
index 7b4ac9d..70c7813 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtilTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairDataFileScanUtilTest.java
@@ -24,11 +24,11 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.AbstractCompactionTest;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.utils.CompactionTestFileWriter;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.TimeRange;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairLoggerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairLoggerTest.java
index 6afd910..fadf9412 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairLoggerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairLoggerTest.java
@@ -23,8 +23,8 @@
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileRepairStatus;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairUnsortedFileCompactionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairUnsortedFileCompactionTest.java
index f86738e..0b2ce06 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairUnsortedFileCompactionTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairUnsortedFileCompactionTest.java
@@ -41,21 +41,21 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileRepairStatus;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.utils.TsFileResourceUtils;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.read.reader.chunk.AlignedChunkReader;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.reader.IPointReader;
+import org.apache.tsfile.read.reader.chunk.AlignedChunkReader;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/settle/SettleRequestHandlerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/settle/SettleRequestHandlerTest.java
index 732424b..88f7bec 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/settle/SettleRequestHandlerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/settle/SettleRequestHandlerTest.java
@@ -40,10 +40,10 @@
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tools/UnseqSpaceStatisticsTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tools/UnseqSpaceStatisticsTest.java
index b12b537..7783e1e 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tools/UnseqSpaceStatisticsTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tools/UnseqSpaceStatisticsTest.java
@@ -21,8 +21,8 @@
 
 import org.apache.iotdb.db.storageengine.dataregion.compaction.tool.Interval;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.tool.UnseqSpaceStatistics;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
 
+import org.apache.tsfile.file.metadata.PlainDeviceID;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionCheckerUtils.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionCheckerUtils.java
index 8d63519..87f5441 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionCheckerUtils.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionCheckerUtils.java
@@ -32,29 +32,30 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkGroupHeader;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.IBatchDataIterator;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.reader.chunk.ChunkReader;
-import org.apache.iotdb.tsfile.read.reader.page.PageReader;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.encoding.decoder.Decoder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.MetaMarker;
+import org.apache.tsfile.file.header.ChunkGroupHeader;
+import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.header.PageHeader;
+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.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.IBatchDataIterator;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.reader.chunk.ChunkReader;
+import org.apache.tsfile.read.reader.page.PageReader;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionClearUtils.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionClearUtils.java
index a4460ea..71f05ca 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionClearUtils.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionClearUtils.java
@@ -28,10 +28,10 @@
 import org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile;
 import org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionFileGeneratorUtils.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionFileGeneratorUtils.java
index 4fcf102..b64622c 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionFileGeneratorUtils.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionFileGeneratorUtils.java
@@ -29,16 +29,17 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.generator.TsFileNameGenerator.TsFileName;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter;
+
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+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.chunk.ChunkWriterImpl;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.writer.RestorableTsFileIOWriter;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionTaskMemCostEstimatorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionTaskMemCostEstimatorTest.java
index 044fa0e..c7ad129 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionTaskMemCostEstimatorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionTaskMemCostEstimatorTest.java
@@ -26,8 +26,8 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.selector.estimator.FastCrossSpaceCompactionEstimator;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.selector.estimator.ReadChunkInnerCompactionEstimator;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionTaskQueueTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionTaskQueueTest.java
index db24107..2ed0ec5 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionTaskQueueTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionTaskQueueTest.java
@@ -28,8 +28,8 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.comparator.DefaultCompactionTaskComparatorImpl;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.storageengine.rescon.memory.SystemInfo;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionTestFileWriter.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionTestFileWriter.java
index 851c410..703fddf 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionTestFileWriter.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionTestFileWriter.java
@@ -20,18 +20,19 @@
 package org.apache.iotdb.db.storageengine.dataregion.compaction.utils;
 
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.page.PageWriter;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
+import org.apache.tsfile.write.page.PageWriter;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 
 import java.io.Closeable;
 import java.io.IOException;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionTestFileWriterTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionTestFileWriterTest.java
index 33ae755..70431d6 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionTestFileWriterTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionTestFileWriterTest.java
@@ -23,11 +23,11 @@
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.AbstractCompactionTest;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.TimeRange;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionUpdateFileCountTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionUpdateFileCountTest.java
index c3a116b..1740eb2 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionUpdateFileCountTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/CompactionUpdateFileCountTest.java
@@ -27,8 +27,8 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.performer.impl.ReadChunkCompactionPerformer;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.CrossSpaceCompactionTask;
 import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.InnerSpaceCompactionTask;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/MultiTsFileDeviceIteratorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/MultiTsFileDeviceIteratorTest.java
index 6786416..16ef1be 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/MultiTsFileDeviceIteratorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/MultiTsFileDeviceIteratorTest.java
@@ -36,16 +36,16 @@
 import org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorUtils;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.TsFileGeneratorUtils;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/TsFileGeneratorUtils.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/TsFileGeneratorUtils.java
index 11a48aa..e52c864 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/TsFileGeneratorUtils.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/TsFileGeneratorUtils.java
@@ -23,23 +23,24 @@
 import org.apache.iotdb.commons.path.MeasurementPath;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
-import org.apache.iotdb.tsfile.write.chunk.ValueChunkWriter;
-import org.apache.iotdb.tsfile.write.page.PageWriter;
-import org.apache.iotdb.tsfile.write.page.TimePageWriter;
-import org.apache.iotdb.tsfile.write.page.ValuePageWriter;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
+
+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.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
+import org.apache.tsfile.write.chunk.IChunkWriter;
+import org.apache.tsfile.write.chunk.ValueChunkWriter;
+import org.apache.tsfile.write.page.PageWriter;
+import org.apache.tsfile.write.page.TimePageWriter;
+import org.apache.tsfile.write.page.ValuePageWriter;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 
 import java.io.File;
 import java.io.IOException;
@@ -47,8 +48,8 @@
 import java.util.Collections;
 import java.util.List;
 
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.TIME_COLUMN_ID;
+import static org.apache.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
+import static org.apache.tsfile.common.constant.TsFileConstant.TIME_COLUMN_ID;
 
 public class TsFileGeneratorUtils {
   public static final String testStorageGroup = "root.testsg";
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/flush/CompressionRatioTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/flush/CompressionRatioTest.java
index ccbca71..439d1b8 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/flush/CompressionRatioTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/flush/CompressionRatioTest.java
@@ -21,9 +21,9 @@
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.utils.FilePathUtils;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.utils.FilePathUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemTableFlushTaskTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemTableFlushTaskTest.java
index 059ce48..22bc05a 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemTableFlushTaskTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemTableFlushTaskTest.java
@@ -23,11 +23,11 @@
 import org.apache.iotdb.db.storageengine.dataregion.flush.MemTableFlushTask;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.write.writer.RestorableTsFileIOWriter;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemTableTestUtils.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemTableTestUtils.java
index 0636dec..a2fbe7a 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemTableTestUtils.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemTableTestUtils.java
@@ -23,14 +23,15 @@
 import org.apache.iotdb.db.exception.WriteProcessException;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertTabletNode;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+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.Schema;
 
 import java.util.Collections;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemtableBenchmark.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemtableBenchmark.java
index 1338b06..1ed7f26 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemtableBenchmark.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemtableBenchmark.java
@@ -20,9 +20,10 @@
 
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 
 import java.util.Collections;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/PrimitiveMemTableTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/PrimitiveMemTableTest.java
index 3c61d94..8d17891 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/PrimitiveMemTableTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/PrimitiveMemTableTest.java
@@ -32,20 +32,20 @@
 import org.apache.iotdb.db.storageengine.dataregion.modification.Modification;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALByteBufferForTest;
 import org.apache.iotdb.db.utils.MathUtils;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+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.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.reader.IPointReader;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.write.UnSupportedDataTypeException;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessorTest.java
index 1f6144b..de25e82 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessorTest.java
@@ -36,18 +36,18 @@
 import org.apache.iotdb.db.storageengine.rescon.memory.SystemInfo;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.reader.IPointReader;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.writer.RestorableTsFileIOWriter;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/AlignedMemPageReaderTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/AlignedMemPageReaderTest.java
index 264523b..7f1af66 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/AlignedMemPageReaderTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/AlignedMemPageReaderTest.java
@@ -19,18 +19,17 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.read.reader.chunk;
 
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.IntegerStatistics;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.file.metadata.statistics.TimeStatistics;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.read.reader.series.PaginationController;
-
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.file.metadata.statistics.IntegerStatistics;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.file.metadata.statistics.TimeStatistics;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.filter.factory.TimeFilterApi;
+import org.apache.tsfile.read.filter.factory.ValueFilterApi;
+import org.apache.tsfile.read.reader.series.PaginationController;
 import org.junit.Assert;
 import org.junit.Test;
 import org.mockito.Mockito;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkLoaderTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkLoaderTest.java
index 30afb41..e94a75f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkLoaderTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkLoaderTest.java
@@ -21,17 +21,17 @@
 
 import org.apache.iotdb.db.queryengine.execution.fragment.QueryContext;
 import org.apache.iotdb.db.storageengine.dataregion.memtable.AlignedReadOnlyMemChunk;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.reader.IPageReader;
-import org.apache.iotdb.tsfile.utils.Binary;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.reader.IPageReader;
+import org.apache.tsfile.utils.Binary;
 import org.junit.Test;
 import org.mockito.Mockito;
 
@@ -40,7 +40,7 @@
 import java.util.List;
 import java.util.Optional;
 
-import static org.apache.iotdb.tsfile.read.reader.series.PaginationController.UNLIMITED_PAGINATION_CONTROLLER;
+import static org.apache.tsfile.read.reader.series.PaginationController.UNLIMITED_PAGINATION_CONTROLLER;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkLoaderTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkLoaderTest.java
index 056577f..a9bdc45 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkLoaderTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemChunkLoaderTest.java
@@ -21,16 +21,16 @@
 
 import org.apache.iotdb.db.queryengine.execution.fragment.QueryContext;
 import org.apache.iotdb.db.storageengine.dataregion.memtable.ReadOnlyMemChunk;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.reader.IPageReader;
-import org.apache.iotdb.tsfile.utils.Binary;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.reader.IPageReader;
+import org.apache.tsfile.utils.Binary;
 import org.junit.Test;
 import org.mockito.Mockito;
 
@@ -38,7 +38,7 @@
 import java.util.Collections;
 import java.util.List;
 
-import static org.apache.iotdb.tsfile.read.reader.series.PaginationController.UNLIMITED_PAGINATION_CONTROLLER;
+import static org.apache.tsfile.read.reader.series.PaginationController.UNLIMITED_PAGINATION_CONTROLLER;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReaderTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReaderTest.java
index 4274ecc..ec0a7ce 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReaderTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReaderTest.java
@@ -19,16 +19,15 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.read.reader.chunk;
 
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.read.reader.IPageReader;
-import org.apache.iotdb.tsfile.read.reader.series.PaginationController;
-
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.statistics.Statistics;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.filter.factory.TimeFilterApi;
+import org.apache.tsfile.read.filter.factory.ValueFilterApi;
+import org.apache.tsfile.read.reader.IPageReader;
+import org.apache.tsfile.read.reader.series.PaginationController;
 import org.junit.Assert;
 import org.junit.Test;
 import org.mockito.Mockito;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemAlignedChunkMetadataLoaderTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemAlignedChunkMetadataLoaderTest.java
index 3d3bdd8..2c7886f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemAlignedChunkMetadataLoaderTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemAlignedChunkMetadataLoaderTest.java
@@ -23,11 +23,11 @@
 import org.apache.iotdb.db.queryengine.execution.fragment.FragmentInstanceContext;
 import org.apache.iotdb.db.storageengine.dataregion.memtable.ReadOnlyMemChunk;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.AlignedTimeSeriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata;
 
+import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.tsfile.file.metadata.AlignedTimeSeriesMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.ITimeSeriesMetadata;
 import org.junit.Test;
 import org.mockito.Mockito;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemChunkMetadataLoaderTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemChunkMetadataLoaderTest.java
index 1053e85..d20fec9 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemChunkMetadataLoaderTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemChunkMetadataLoaderTest.java
@@ -23,11 +23,11 @@
 import org.apache.iotdb.db.queryengine.execution.fragment.FragmentInstanceContext;
 import org.apache.iotdb.db.storageengine.dataregion.memtable.ReadOnlyMemChunk;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
 
+import org.apache.tsfile.file.metadata.ChunkMetadata;
+import org.apache.tsfile.file.metadata.IChunkMetadata;
+import org.apache.tsfile.file.metadata.ITimeSeriesMetadata;
+import org.apache.tsfile.file.metadata.TimeseriesMetadata;
 import org.junit.Test;
 import org.mockito.Mockito;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/AlignedPriorityMergeReaderTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/AlignedPriorityMergeReaderTest.java
index 908dff1..198425b 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/AlignedPriorityMergeReaderTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/AlignedPriorityMergeReaderTest.java
@@ -18,11 +18,10 @@
  */
 package org.apache.iotdb.db.storageengine.dataregion.read.reader.common;
 
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsInt;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsVector;
-
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.utils.TsPrimitiveType.TsInt;
+import org.apache.tsfile.utils.TsPrimitiveType.TsVector;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/FakedSeriesReader.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/FakedSeriesReader.java
index ac5d2ce..0a183b6 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/FakedSeriesReader.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/FakedSeriesReader.java
@@ -18,10 +18,10 @@
  */
 package org.apache.iotdb.db.storageengine.dataregion.read.reader.common;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.reader.IPointReader;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 import java.io.IOException;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/PriorityMergeReaderTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/PriorityMergeReaderTest.java
index 69b8f2d..0c4b782 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/PriorityMergeReaderTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/PriorityMergeReaderTest.java
@@ -19,8 +19,7 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.read.reader.common;
 
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-
+import org.apache.tsfile.read.TimeValuePair;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/PriorityMergeReaderTest2.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/PriorityMergeReaderTest2.java
index 995b1a7..8685e9d 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/PriorityMergeReaderTest2.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/PriorityMergeReaderTest2.java
@@ -19,8 +19,7 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.read.reader.common;
 
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-
+import org.apache.tsfile.read.TimeValuePair;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AbstractAlignedSeriesScanTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AbstractAlignedSeriesScanTest.java
index 0a59e5e..d133b16 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AbstractAlignedSeriesScanTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AbstractAlignedSeriesScanTest.java
@@ -30,21 +30,21 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
-import org.apache.iotdb.tsfile.write.chunk.ValueChunkWriter;
-import org.apache.iotdb.tsfile.write.page.TimePageWriter;
-import org.apache.iotdb.tsfile.write.page.ValuePageWriter;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl;
+import org.apache.tsfile.write.chunk.IChunkWriter;
+import org.apache.tsfile.write.chunk.ValueChunkWriter;
+import org.apache.tsfile.write.page.TimePageWriter;
+import org.apache.tsfile.write.page.ValuePageWriter;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AbstractSeriesScanTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AbstractSeriesScanTest.java
index f73c4fbb..7f333d4 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AbstractSeriesScanTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AbstractSeriesScanTest.java
@@ -26,18 +26,18 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.write.chunk.ChunkWriterImpl;
+import org.apache.tsfile.write.chunk.IChunkWriter;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AlignedSeriesScanLimitOffsetPushDownTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AlignedSeriesScanLimitOffsetPushDownTest.java
index 52d5d20..cec1a8f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AlignedSeriesScanLimitOffsetPushDownTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AlignedSeriesScanLimitOffsetPushDownTest.java
@@ -26,11 +26,11 @@
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AlignedSeriesScanPredicatePushDownTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AlignedSeriesScanPredicatePushDownTest.java
index 6b2cebe..a7bcce0 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AlignedSeriesScanPredicatePushDownTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AlignedSeriesScanPredicatePushDownTest.java
@@ -26,15 +26,15 @@
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.filter.factory.FilterFactory;
+import org.apache.tsfile.read.filter.factory.TimeFilterApi;
+import org.apache.tsfile.read.filter.factory.ValueFilterApi;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AlignedSingleColumnSeriesScanLimitOffsetPushDownTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AlignedSingleColumnSeriesScanLimitOffsetPushDownTest.java
index be2c9e2..2f9a5ec 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AlignedSingleColumnSeriesScanLimitOffsetPushDownTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AlignedSingleColumnSeriesScanLimitOffsetPushDownTest.java
@@ -26,11 +26,11 @@
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/SeriesReaderTestUtil.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/SeriesReaderTestUtil.java
index 7843364..4261dd2 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/SeriesReaderTestUtil.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/SeriesReaderTestUtil.java
@@ -28,16 +28,16 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.Assert;
 
 import java.io.File;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/SeriesScanLimitOffsetPushDownTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/SeriesScanLimitOffsetPushDownTest.java
index 2043e74..ccff1e9 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/SeriesScanLimitOffsetPushDownTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/SeriesScanLimitOffsetPushDownTest.java
@@ -26,9 +26,9 @@
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/SeriesScanPredicatePushDownTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/SeriesScanPredicatePushDownTest.java
index b9d4560..e9d03b5 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/SeriesScanPredicatePushDownTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/SeriesScanPredicatePushDownTest.java
@@ -26,12 +26,12 @@
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
 import org.apache.iotdb.db.storageengine.dataregion.read.QueryDataSource;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.filter.basic.Filter;
+import org.apache.tsfile.read.filter.factory.TimeFilterApi;
+import org.apache.tsfile.read.filter.factory.ValueFilterApi;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/snapshot/IoTDBSnapshotTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/snapshot/IoTDBSnapshotTest.java
index 36b4ffd..68879cb 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/snapshot/IoTDBSnapshotTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/snapshot/IoTDBSnapshotTest.java
@@ -29,10 +29,10 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.storageengine.rescon.disk.TierManager;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorUtils;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.utils.TsFileGeneratorUtils;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -44,7 +44,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
+import static org.apache.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
 
 public class IoTDBSnapshotTest {
   private String[][] testDataDirs =
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResourceTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResourceTest.java
index c73a591..4b5e3ec 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResourceTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResourceTest.java
@@ -22,10 +22,10 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.DeviceTimeIndex;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.ITimeIndex;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/WALManagerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/WALManagerTest.java
index 1721af9..64e341b 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/WALManagerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/WALManagerTest.java
@@ -31,11 +31,11 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALFileUtils;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/ElasticStrategyTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/ElasticStrategyTest.java
index 36f5c5c..0f90491 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/ElasticStrategyTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/ElasticStrategyTest.java
@@ -28,11 +28,11 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALFileUtils;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/FirstCreateStrategyTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/FirstCreateStrategyTest.java
index 393f5fe..523cc73 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/FirstCreateStrategyTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/FirstCreateStrategyTest.java
@@ -28,11 +28,11 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALFileUtils;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/RoundRobinStrategyTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/RoundRobinStrategyTest.java
index 2634f91..663646a 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/RoundRobinStrategyTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/RoundRobinStrategyTest.java
@@ -28,11 +28,11 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALFileUtils;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/buffer/WALBufferCommonTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/buffer/WALBufferCommonTest.java
index 179c2ac..04a33a5 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/buffer/WALBufferCommonTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/buffer/WALBufferCommonTest.java
@@ -28,11 +28,11 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.io.WALReader;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALFileUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/io/WALFileTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/io/WALFileTest.java
index 949ad20..4573e06 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/io/WALFileTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/io/WALFileTest.java
@@ -31,12 +31,12 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALFileStatus;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALFileUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/ConsensusReqReaderTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/ConsensusReqReaderTest.java
index 533f870..a23416b 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/ConsensusReqReaderTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/ConsensusReqReaderTest.java
@@ -34,12 +34,12 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALMode;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALEntryHandlerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALEntryHandlerTest.java
index 0a09c96..2edf6b3 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALEntryHandlerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALEntryHandlerTest.java
@@ -37,11 +37,11 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.listener.WALFlushListener;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.awaitility.Awaitility;
 import org.junit.After;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNodeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNodeTest.java
index 8a4f5bf..d011a66 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNodeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNodeTest.java
@@ -38,13 +38,13 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.listener.WALFlushListener;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.awaitility.Awaitility;
 import org.junit.After;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WalDeleteOutdatedNewTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WalDeleteOutdatedNewTest.java
index a7c81e2..f51d930 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WalDeleteOutdatedNewTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WalDeleteOutdatedNewTest.java
@@ -40,11 +40,11 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.listener.WALFlushListener;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.awaitility.Awaitility;
 import org.junit.After;
 import org.junit.Assert;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALRecoverManagerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALRecoverManagerTest.java
index 72f4a80..2d6e18d 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALRecoverManagerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALRecoverManagerTest.java
@@ -43,26 +43,26 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALMode;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.listener.WALRecoverListener;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DoubleDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+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.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DoubleDataPoint;
+import org.apache.tsfile.write.record.datapoint.FloatDataPoint;
+import org.apache.tsfile.write.record.datapoint.IntDataPoint;
+import org.apache.tsfile.write.record.datapoint.LongDataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.awaitility.Awaitility;
 import org.junit.After;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALRecoverWriterTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALRecoverWriterTest.java
index 368cc96..4dde938 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALRecoverWriterTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALRecoverWriterTest.java
@@ -31,11 +31,11 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALFileStatus;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALFileUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/SealedTsFileRecoverPerformerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/SealedTsFileRecoverPerformerTest.java
index cde938c..5e41e82 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/SealedTsFileRecoverPerformerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/SealedTsFileRecoverPerformerTest.java
@@ -21,23 +21,23 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.TsFileUtilsForRecoverTest;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DoubleDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+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.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DoubleDataPoint;
+import org.apache.tsfile.write.record.datapoint.FloatDataPoint;
+import org.apache.tsfile.write.record.datapoint.IntDataPoint;
+import org.apache.tsfile.write.record.datapoint.LongDataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/TsFilePlanRedoerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/TsFilePlanRedoerTest.java
index de1662f..74c45c5 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/TsFilePlanRedoerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/TsFilePlanRedoerTest.java
@@ -33,30 +33,30 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.TsFileUtilsForRecoverTest;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.BooleanDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.DoubleDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.StringDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.read.reader.IPointReader;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.BooleanDataPoint;
+import org.apache.tsfile.write.record.datapoint.DoubleDataPoint;
+import org.apache.tsfile.write.record.datapoint.FloatDataPoint;
+import org.apache.tsfile.write.record.datapoint.IntDataPoint;
+import org.apache.tsfile.write.record.datapoint.LongDataPoint;
+import org.apache.tsfile.write.record.datapoint.StringDataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformerTest.java
index e92bc7a..9d5ef2f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformerTest.java
@@ -36,26 +36,26 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.exception.WALRecoverException;
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.TsFileUtilsForRecoverTest;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.reader.chunk.ChunkReader;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DoubleDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+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.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.read.TsFileSequenceReader;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.read.common.Chunk;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.read.reader.chunk.ChunkReader;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DoubleDataPoint;
+import org.apache.tsfile.write.record.datapoint.FloatDataPoint;
+import org.apache.tsfile.write.record.datapoint.IntDataPoint;
+import org.apache.tsfile.write.record.datapoint.LongDataPoint;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/TsFileUtilsForRecoverTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/TsFileUtilsForRecoverTest.java
index 9388fa1..c8918e7 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/TsFileUtilsForRecoverTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/TsFileUtilsForRecoverTest.java
@@ -19,9 +19,10 @@
 package org.apache.iotdb.db.storageengine.dataregion.wal.utils;
 
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorUtils;
 
-/** like org.apache.iotdb.tsfile.utils.TsFileGeneratorForTest */
+import org.apache.tsfile.utils.TsFileGeneratorUtils;
+
+/** like org.apache.tsfile.utils.TsFileGeneratorForTest */
 public class TsFileUtilsForRecoverTest {
   public static String getTestTsFilePath(
       String logicalStorageGroupName,
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALInsertNodeCacheTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALInsertNodeCacheTest.java
index c519f80..2e0b48b 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALInsertNodeCacheTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALInsertNodeCacheTest.java
@@ -30,11 +30,11 @@
 import org.apache.iotdb.db.storageengine.dataregion.wal.utils.listener.WALFlushListener;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.awaitility.Awaitility;
 import org.junit.After;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/rescon/memory/ResourceManagerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/rescon/memory/ResourceManagerTest.java
index 3c169f6..efa285f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/rescon/memory/ResourceManagerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/rescon/memory/ResourceManagerTest.java
@@ -32,18 +32,18 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.TimeIndexLevel;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.constant.TestConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/rescon/memory/TimePartitionManagerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/rescon/memory/TimePartitionManagerTest.java
index 2c2a051..518340a 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/rescon/memory/TimePartitionManagerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/rescon/memory/TimePartitionManagerTest.java
@@ -25,8 +25,8 @@
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/MLogParserTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/MLogParserTest.java
index 70277e8..6b5e59d 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/MLogParserTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/MLogParserTest.java
@@ -31,10 +31,10 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.write.req.SchemaRegionWritePlanFactory;
 import org.apache.iotdb.db.tools.schema.MLogParser;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/PBTreeFileSketchTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/PBTreeFileSketchTest.java
index 9311022..0629945 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/PBTreeFileSketchTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/PBTreeFileSketchTest.java
@@ -31,10 +31,10 @@
 import org.apache.iotdb.db.schemaengine.schemaregion.mtree.loader.MNodeFactoryLoader;
 import org.apache.iotdb.db.tools.schema.PBTreeFileSketchTool;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/TsFileAndModSettleToolTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/TsFileAndModSettleToolTest.java
index b20fac6..d7bbee6 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/TsFileAndModSettleToolTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/TsFileAndModSettleToolTest.java
@@ -31,17 +31,17 @@
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.tools.settle.TsFileAndModSettleTool;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.record.datapoint.LongDataPoint;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -54,7 +54,7 @@
 import java.util.List;
 import java.util.Map;
 
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.TSFILE_SUFFIX;
+import static org.apache.tsfile.common.constant.TsFileConstant.TSFILE_SUFFIX;
 
 public class TsFileAndModSettleToolTest {
   private final long newPartitionInterval = 3600_000;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/TsFileOverlapValidationAndRepairToolTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/TsFileOverlapValidationAndRepairToolTest.java
index c4e15fb..eb3d70e 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/TsFileOverlapValidationAndRepairToolTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/TsFileOverlapValidationAndRepairToolTest.java
@@ -24,10 +24,10 @@
 import org.apache.iotdb.db.storageengine.dataregion.compaction.AbstractCompactionTest;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import org.apache.iotdb.db.tools.validate.TsFileOverlapValidationAndRepairTool;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.write.writer.TsFileIOWriter;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/TsFileSelfCheckToolTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/TsFileSelfCheckToolTest.java
index 01488d0..75fc48b 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/TsFileSelfCheckToolTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/TsFileSelfCheckToolTest.java
@@ -19,22 +19,22 @@
 package org.apache.iotdb.db.tools;
 
 import org.apache.iotdb.db.exception.TsFileTimeseriesMetadataException;
-import org.apache.iotdb.tsfile.exception.TsFileStatisticsMistakesException;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.file.metadata.statistics.LongStatistics;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.TsFileStatisticsMistakesException;
+import org.apache.tsfile.file.metadata.TimeseriesMetadata;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.file.metadata.statistics.LongStatistics;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteForEncodingUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.Schema;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/TsFileSketchToolTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/TsFileSketchToolTest.java
index 160dd2b..e6dd2f9 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/TsFileSketchToolTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/TsFileSketchToolTest.java
@@ -19,20 +19,19 @@
 
 package org.apache.iotdb.db.tools;
 
-import org.apache.iotdb.tsfile.file.metadata.ChunkGroupMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.MeasurementGroup;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.ChunkGroupMetadata;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.utils.MeasurementGroup;
+import org.apache.tsfile.write.TsFileWriter;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.Schema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/trigger/executor/TriggerExecuteTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/trigger/executor/TriggerExecuteTest.java
index 8fcfb5c..1c05cc2 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/trigger/executor/TriggerExecuteTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/trigger/executor/TriggerExecuteTest.java
@@ -30,10 +30,10 @@
 import org.apache.iotdb.trigger.api.TriggerAttributes;
 import org.apache.iotdb.trigger.api.enums.FailureStrategy;
 import org.apache.iotdb.trigger.api.enums.TriggerEvent;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.record.Tablet;
+import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/DateTimeUtilsTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/DateTimeUtilsTest.java
index 8df917e..f528e30 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/DateTimeUtilsTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/DateTimeUtilsTest.java
@@ -18,8 +18,7 @@
  */
 package org.apache.iotdb.db.utils;
 
-import org.apache.iotdb.tsfile.utils.TimeDuration;
-
+import org.apache.tsfile.utils.TimeDuration;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/EncodingInferenceUtilsTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/EncodingInferenceUtilsTest.java
index a91ca2f..ff13a2f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/EncodingInferenceUtilsTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/EncodingInferenceUtilsTest.java
@@ -20,8 +20,8 @@
 
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
index c433a28e..04443ba 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
@@ -48,14 +48,14 @@
 import org.apache.iotdb.db.utils.constant.TestConstant;
 import org.apache.iotdb.rpc.TConfigurationConst;
 import org.apache.iotdb.rpc.TSocketWrapper;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.utils.FilePathUtils;
 import org.apache.iotdb.udf.api.exception.UDFManagementException;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.thrift.TConfiguration;
 import org.apache.thrift.transport.TTransport;
 import org.apache.thrift.transport.TTransportException;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
+import org.apache.tsfile.utils.FilePathUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/MemUtilsTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/MemUtilsTest.java
index fee4512..caf02e5 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/MemUtilsTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/MemUtilsTest.java
@@ -22,19 +22,19 @@
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertTabletNode;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.BooleanDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.DoubleDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.StringDataPoint;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.write.record.TSRecord;
+import org.apache.tsfile.write.record.datapoint.BooleanDataPoint;
+import org.apache.tsfile.write.record.datapoint.DataPoint;
+import org.apache.tsfile.write.record.datapoint.DoubleDataPoint;
+import org.apache.tsfile.write.record.datapoint.FloatDataPoint;
+import org.apache.tsfile.write.record.datapoint.IntDataPoint;
+import org.apache.tsfile.write.record.datapoint.LongDataPoint;
+import org.apache.tsfile.write.record.datapoint.StringDataPoint;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/QueryDataSetUtilsTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/QueryDataSetUtilsTest.java
index 52df61d..ffae8fb 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/QueryDataSetUtilsTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/QueryDataSetUtilsTest.java
@@ -22,14 +22,14 @@
 import org.apache.iotdb.commons.exception.IoTDBException;
 import org.apache.iotdb.db.queryengine.plan.execution.IQueryExecution;
 import org.apache.iotdb.service.rpc.thrift.TSQueryDataSet;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TsBlockSerde;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.read.common.block.column.TsBlockSerde;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.Pair;
 import org.junit.Test;
 import org.mockito.Mockito;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/SchemaRegionSnapshotParserTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/SchemaRegionSnapshotParserTest.java
index 1a676ae..e893ab7 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/SchemaRegionSnapshotParserTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/SchemaRegionSnapshotParserTest.java
@@ -39,11 +39,11 @@
 import org.apache.iotdb.db.schemaengine.template.Template;
 import org.apache.iotdb.db.tools.schema.SRStatementGenerator;
 import org.apache.iotdb.db.tools.schema.SchemaRegionSnapshotParser;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.CompressionType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/SchemaTestUtils.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/SchemaTestUtils.java
index b36bbc6..0534525 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/SchemaTestUtils.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/SchemaTestUtils.java
@@ -21,10 +21,11 @@
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.MeasurementPath;
 import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+
+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.write.schema.MeasurementSchema;
 
 public class SchemaTestUtils {
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/SchemaUtilsTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/SchemaUtilsTest.java
index 7c76d5b..818117c 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/SchemaUtilsTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/SchemaUtilsTest.java
@@ -22,9 +22,9 @@
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.MeasurementPath;
 import org.apache.iotdb.db.utils.constant.SqlConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/SerializeUtilsTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/SerializeUtilsTest.java
index 3db730a..8badb6e 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/SerializeUtilsTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/SerializeUtilsTest.java
@@ -19,16 +19,16 @@
 package org.apache.iotdb.db.utils;
 
 import org.apache.iotdb.commons.utils.SerializeUtils;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.DescReadBatchData;
-import org.apache.iotdb.tsfile.read.common.DescReadWriteBatchData;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.read.common.DescReadBatchData;
+import org.apache.tsfile.read.common.DescReadWriteBatchData;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BytesUtils;
+import org.apache.tsfile.utils.TsPrimitiveType;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/TypeInferenceUtilsTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/TypeInferenceUtilsTest.java
index a51e64a..9933d61 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/TypeInferenceUtilsTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/TypeInferenceUtilsTest.java
@@ -22,9 +22,9 @@
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/AlignedTVListTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/AlignedTVListTest.java
index e758666..f7a0bb6 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/AlignedTVListTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/AlignedTVListTest.java
@@ -18,12 +18,11 @@
  */
 package org.apache.iotdb.db.utils.datastructure;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-
 import org.apache.commons.lang3.ArrayUtils;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/BinaryTVListTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/BinaryTVListTest.java
index 9ccb03e..1208ce4 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/BinaryTVListTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/BinaryTVListTest.java
@@ -18,11 +18,10 @@
  */
 package org.apache.iotdb.db.utils.datastructure;
 
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-
 import org.apache.commons.lang3.ArrayUtils;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.BytesUtils;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/BooleanTVListTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/BooleanTVListTest.java
index 27466d3..3c5aa43 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/BooleanTVListTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/BooleanTVListTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.iotdb.db.utils.datastructure;
 
-import org.apache.iotdb.tsfile.utils.BitMap;
-
 import org.apache.commons.lang3.ArrayUtils;
+import org.apache.tsfile.utils.BitMap;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/DoubleTVListTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/DoubleTVListTest.java
index 1cce1de..8186fce 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/DoubleTVListTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/DoubleTVListTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.iotdb.db.utils.datastructure;
 
-import org.apache.iotdb.tsfile.utils.BitMap;
-
 import org.apache.commons.lang3.ArrayUtils;
+import org.apache.tsfile.utils.BitMap;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/FloatTVListTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/FloatTVListTest.java
index a861ca5..2e97bbe 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/FloatTVListTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/FloatTVListTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.iotdb.db.utils.datastructure;
 
-import org.apache.iotdb.tsfile.utils.BitMap;
-
 import org.apache.commons.lang3.ArrayUtils;
+import org.apache.tsfile.utils.BitMap;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/IntTVListTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/IntTVListTest.java
index 6f91edd..35ddbee 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/IntTVListTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/IntTVListTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.iotdb.db.utils.datastructure;
 
-import org.apache.iotdb.tsfile.utils.BitMap;
-
 import org.apache.commons.lang3.ArrayUtils;
+import org.apache.tsfile.utils.BitMap;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/LongTVListTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/LongTVListTest.java
index 995cd3e..584d901 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/LongTVListTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/LongTVListTest.java
@@ -18,11 +18,10 @@
  */
 package org.apache.iotdb.db.utils.datastructure;
 
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsLong;
-
 import org.apache.commons.lang3.ArrayUtils;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.utils.BitMap;
+import org.apache.tsfile.utils.TsPrimitiveType.TsLong;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/MergeSortHeapTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/MergeSortHeapTest.java
index d2ea251..a84b443 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/MergeSortHeapTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/MergeSortHeapTest.java
@@ -23,12 +23,12 @@
 import org.apache.iotdb.db.queryengine.plan.statement.component.OrderByKey;
 import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
 import org.apache.iotdb.db.queryengine.plan.statement.component.SortItem;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.tsfile.utils.Binary;
 import org.junit.Test;
 
 import java.util.Arrays;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/PrimitiveArrayManagerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/PrimitiveArrayManagerTest.java
index 80adce3..bf4351e 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/PrimitiveArrayManagerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/PrimitiveArrayManagerTest.java
@@ -22,9 +22,9 @@
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.storageengine.rescon.memory.PrimitiveArrayManager;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/sort/SortUtilTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/sort/SortUtilTest.java
index f157117..b164677 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/sort/SortUtilTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/sort/SortUtilTest.java
@@ -23,14 +23,14 @@
 import org.apache.iotdb.commons.utils.FileUtils;
 import org.apache.iotdb.db.utils.datastructure.MergeSortKey;
 import org.apache.iotdb.db.utils.datastructure.SortKey;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.DoubleColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.exception.write.WriteProcessException;
+import org.apache.tsfile.read.common.block.TsBlock;
+import org.apache.tsfile.read.common.block.column.DoubleColumn;
+import org.apache.tsfile.read.common.block.column.TimeColumn;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/windowing/SlidingSizeWindowEvaluationHandlerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/windowing/SlidingSizeWindowEvaluationHandlerTest.java
index be88ad7..31eeeb4 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/windowing/SlidingSizeWindowEvaluationHandlerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/windowing/SlidingSizeWindowEvaluationHandlerTest.java
@@ -22,9 +22,9 @@
 import org.apache.iotdb.db.utils.windowing.exception.WindowingException;
 import org.apache.iotdb.db.utils.windowing.handler.SlidingSizeWindowEvaluationHandler;
 import org.apache.iotdb.db.utils.windowing.window.EvictableBatchList;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/windowing/SlidingTimeWindowEvaluationHandlerTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/windowing/SlidingTimeWindowEvaluationHandlerTest.java
index d0e3fe5..019aadd 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/windowing/SlidingTimeWindowEvaluationHandlerTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/windowing/SlidingTimeWindowEvaluationHandlerTest.java
@@ -22,9 +22,9 @@
 import org.apache.iotdb.db.utils.windowing.exception.WindowingException;
 import org.apache.iotdb.db.utils.windowing.handler.SlidingTimeWindowEvaluationHandler;
 import org.apache.iotdb.db.utils.windowing.window.EvictableBatchList;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/iotdb-core/metrics/interface/pom.xml b/iotdb-core/metrics/interface/pom.xml
index 2f03d38..1198392 100644
--- a/iotdb-core/metrics/interface/pom.xml
+++ b/iotdb-core/metrics/interface/pom.xml
@@ -46,14 +46,14 @@
             <version>1.3.2-SNAPSHOT</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>common</artifactId>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
diff --git a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricManager.java b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricManager.java
index b070d6e..0699aa7 100644
--- a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricManager.java
+++ b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricManager.java
@@ -33,7 +33,8 @@
 import org.apache.iotdb.metrics.utils.MetricInfo;
 import org.apache.iotdb.metrics.utils.MetricLevel;
 import org.apache.iotdb.metrics.utils.MetricType;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.ArrayList;
 import java.util.HashMap;
diff --git a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricService.java b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricService.java
index cd33c05..2caf1f0 100644
--- a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricService.java
+++ b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricService.java
@@ -37,8 +37,8 @@
 import org.apache.iotdb.metrics.utils.MetricLevel;
 import org.apache.iotdb.metrics.utils.MetricType;
 import org.apache.iotdb.metrics.utils.ReporterType;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/system/SystemMetrics.java b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/system/SystemMetrics.java
index 131ff9f..27f31bf 100644
--- a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/system/SystemMetrics.java
+++ b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/system/SystemMetrics.java
@@ -30,9 +30,9 @@
 import org.apache.iotdb.metrics.utils.SystemMetric;
 import org.apache.iotdb.metrics.utils.SystemTag;
 import org.apache.iotdb.metrics.utils.SystemType;
-import org.apache.iotdb.tsfile.utils.FSUtils;
 
 import com.sun.management.OperatingSystemMXBean;
+import org.apache.tsfile.utils.FSUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBReporter.java b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBReporter.java
index db1e915..0a37a38 100644
--- a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBReporter.java
+++ b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBReporter.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.metrics.type.IMetric;
 import org.apache.iotdb.metrics.utils.IoTDBMetricsUtils;
 import org.apache.iotdb.metrics.utils.MetricInfo;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBSessionReporter.java b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBSessionReporter.java
index a90fde3..09c3b50 100644
--- a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBSessionReporter.java
+++ b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBSessionReporter.java
@@ -31,8 +31,8 @@
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.pool.SessionPool;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.tsfile.enums.TSDataType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/IoTDBMetricsUtils.java b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/IoTDBMetricsUtils.java
index 96a22ca..9252184 100644
--- a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/IoTDBMetricsUtils.java
+++ b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/IoTDBMetricsUtils.java
@@ -24,8 +24,8 @@
 
 import java.util.Map;
 
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.BACK_QUOTE_STRING;
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.DOUBLE_BACK_QUOTE_STRING;
+import static org.apache.tsfile.common.constant.TsFileConstant.BACK_QUOTE_STRING;
+import static org.apache.tsfile.common.constant.TsFileConstant.DOUBLE_BACK_QUOTE_STRING;
 
 public class IoTDBMetricsUtils {
   private static final MetricConfig METRIC_CONFIG =
diff --git a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/MetricInfo.java b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/MetricInfo.java
index 1398d05..fdbf74a 100644
--- a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/MetricInfo.java
+++ b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/MetricInfo.java
@@ -19,8 +19,7 @@
 
 package org.apache.iotdb.metrics.utils;
 
-import org.apache.iotdb.tsfile.utils.Pair;
-
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/node-commons/pom.xml b/iotdb-core/node-commons/pom.xml
index 5180762..f599859 100644
--- a/iotdb-core/node-commons/pom.xml
+++ b/iotdb-core/node-commons/pom.xml
@@ -41,9 +41,9 @@
             <version>1.3.2-SNAPSHOT</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>${project.version}</version>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>common</artifactId>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
@@ -76,9 +76,9 @@
             <version>1.3.2-SNAPSHOT</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
+            <groupId>org.apache.tsfile</groupId>
             <artifactId>tsfile</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/role/LocalFileRoleAccessor.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/role/LocalFileRoleAccessor.java
index 609686f..3b77888 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/role/LocalFileRoleAccessor.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/role/LocalFileRoleAccessor.java
@@ -26,9 +26,9 @@
 import org.apache.iotdb.commons.utils.FileUtils;
 import org.apache.iotdb.commons.utils.IOUtils;
 import org.apache.iotdb.commons.utils.TestOnly;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/user/LocalFileUserAccessor.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/user/LocalFileUserAccessor.java
index e66d887..f140a78 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/user/LocalFileUserAccessor.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/user/LocalFileUserAccessor.java
@@ -26,9 +26,9 @@
 import org.apache.iotdb.commons.utils.FileUtils;
 import org.apache.iotdb.commons.utils.IOUtils;
 import org.apache.iotdb.commons.utils.TestOnly;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import org.apache.thrift.TException;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
index 22a8616..29ce653 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
@@ -24,8 +24,8 @@
 import org.apache.iotdb.commons.enums.HandleSystemErrorStrategy;
 import org.apache.iotdb.commons.utils.FileUtils;
 import org.apache.iotdb.commons.utils.KillPoint.KillPoint;
-import org.apache.iotdb.tsfile.fileSystem.FSType;
 
+import org.apache.tsfile.fileSystem.FSType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/ProgressIndexType.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/ProgressIndexType.java
index 3439b2d..c5c2ed6 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/ProgressIndexType.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/ProgressIndexType.java
@@ -26,7 +26,8 @@
 import org.apache.iotdb.commons.consensus.index.impl.RecoverProgressIndex;
 import org.apache.iotdb.commons.consensus.index.impl.SimpleProgressIndex;
 import org.apache.iotdb.commons.consensus.index.impl.TimeWindowStateProgressIndex;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/HybridProgressIndex.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/HybridProgressIndex.java
index e53522b..c3955ce 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/HybridProgressIndex.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/HybridProgressIndex.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.commons.consensus.index.ProgressIndex;
 import org.apache.iotdb.commons.consensus.index.ProgressIndexType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.annotation.Nonnull;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/IoTProgressIndex.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/IoTProgressIndex.java
index e1f1994..1d7c31b 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/IoTProgressIndex.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/IoTProgressIndex.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.commons.consensus.index.ProgressIndex;
 import org.apache.iotdb.commons.consensus.index.ProgressIndexType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.annotation.Nonnull;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/MetaProgressIndex.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/MetaProgressIndex.java
index 3f5e777..8fb6c26 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/MetaProgressIndex.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/MetaProgressIndex.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.commons.consensus.index.ProgressIndex;
 import org.apache.iotdb.commons.consensus.index.ProgressIndexType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.annotation.Nonnull;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/RecoverProgressIndex.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/RecoverProgressIndex.java
index db43849..d7dc1f0 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/RecoverProgressIndex.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/RecoverProgressIndex.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.commons.consensus.index.ProgressIndex;
 import org.apache.iotdb.commons.consensus.index.ProgressIndexType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.annotation.Nonnull;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/SimpleProgressIndex.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/SimpleProgressIndex.java
index a091670..677585c 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/SimpleProgressIndex.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/SimpleProgressIndex.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.commons.consensus.index.ProgressIndex;
 import org.apache.iotdb.commons.consensus.index.ProgressIndexType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.annotation.Nonnull;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/TimeWindowStateProgressIndex.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/TimeWindowStateProgressIndex.java
index 31db0c6..da7fc35 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/TimeWindowStateProgressIndex.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/TimeWindowStateProgressIndex.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.commons.consensus.index.ProgressIndex;
 import org.apache.iotdb.commons.consensus.index.ProgressIndexType;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.annotation.Nonnull;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeConnectorCriticalException.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeConnectorCriticalException.java
index 1325ca5..adbc31f 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeConnectorCriticalException.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeConnectorCriticalException.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.commons.exception.pipe;
 
 import org.apache.iotdb.commons.pipe.task.meta.PipeRuntimeMetaVersion;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeCriticalException.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeCriticalException.java
index 0d3c0c2..683a48e 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeCriticalException.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeCriticalException.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.commons.exception.pipe;
 
 import org.apache.iotdb.commons.pipe.task.meta.PipeRuntimeMetaVersion;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeExceptionType.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeExceptionType.java
index 287d0d1..f826f73 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeExceptionType.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeExceptionType.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.commons.exception.pipe;
 
 import org.apache.iotdb.commons.pipe.task.meta.PipeRuntimeMetaVersion;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeNonCriticalException.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeNonCriticalException.java
index 6b072a4..5027301 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeNonCriticalException.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeNonCriticalException.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.commons.exception.pipe;
 
 import org.apache.iotdb.commons.pipe.task.meta.PipeRuntimeMetaVersion;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeOutOfMemoryCriticalException.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeOutOfMemoryCriticalException.java
index b073152..240bb8a 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeOutOfMemoryCriticalException.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeOutOfMemoryCriticalException.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.commons.exception.pipe;
 
 import org.apache.iotdb.commons.pipe.task.meta.PipeRuntimeMetaVersion;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/executable/ExecutableManager.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/executable/ExecutableManager.java
index 912a49f..57f77e2 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/executable/ExecutableManager.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/executable/ExecutableManager.java
@@ -20,9 +20,9 @@
 package org.apache.iotdb.commons.executable;
 
 import org.apache.iotdb.commons.trigger.exception.TriggerJarTooLargeException;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/file/SystemFileFactory.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/file/SystemFileFactory.java
index 374f22f..fe7973b 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/file/SystemFileFactory.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/file/SystemFileFactory.java
@@ -20,9 +20,9 @@
 package org.apache.iotdb.commons.file;
 
 import org.apache.iotdb.commons.conf.CommonDescriptor;
-import org.apache.iotdb.tsfile.fileSystem.FSType;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.fileSystem.FSType;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/partition/DataPartition.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/partition/DataPartition.java
index 6648960..4acf680 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/partition/DataPartition.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/partition/DataPartition.java
@@ -24,7 +24,8 @@
 import org.apache.iotdb.commons.conf.CommonDescriptor;
 import org.apache.iotdb.commons.utils.PathUtils;
 import org.apache.iotdb.commons.utils.TimePartitionUtils;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
+
+import org.apache.tsfile.read.filter.basic.Filter;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/partition/DataPartitionTable.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/partition/DataPartitionTable.java
index f0eed6e..958f143 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/partition/DataPartitionTable.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/partition/DataPartitionTable.java
@@ -23,10 +23,10 @@
 import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
 import org.apache.iotdb.commons.utils.ThriftCommonsSerDeUtils;
 import org.apache.iotdb.confignode.rpc.thrift.TTimeSlotList;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.thrift.TException;
 import org.apache.thrift.protocol.TProtocol;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/partition/SchemaPartitionTable.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/partition/SchemaPartitionTable.java
index dca9107..ca67c8c 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/partition/SchemaPartitionTable.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/partition/SchemaPartitionTable.java
@@ -21,10 +21,10 @@
 import org.apache.iotdb.common.rpc.thrift.TConsensusGroupId;
 import org.apache.iotdb.common.rpc.thrift.TSeriesPartitionSlot;
 import org.apache.iotdb.commons.utils.ThriftCommonsSerDeUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.thrift.TException;
 import org.apache.thrift.protocol.TProtocol;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/partition/SeriesPartitionTable.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/partition/SeriesPartitionTable.java
index 764122c..890e46a 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/partition/SeriesPartitionTable.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/partition/SeriesPartitionTable.java
@@ -24,10 +24,10 @@
 import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
 import org.apache.iotdb.commons.utils.ThriftCommonsSerDeUtils;
 import org.apache.iotdb.confignode.rpc.thrift.TTimeSlotList;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.thrift.TException;
 import org.apache.thrift.protocol.TProtocol;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/AlignedPath.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/AlignedPath.java
index 6cdda34..7f0ff67 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/AlignedPath.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/AlignedPath.java
@@ -21,15 +21,15 @@
 
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.utils.PathUtils;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.VectorMeasurementSchema;
 
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.VectorMeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/MeasurementPath.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/MeasurementPath.java
index 6583bd6..10f7dd4 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/MeasurementPath.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/MeasurementPath.java
@@ -21,15 +21,15 @@
 import org.apache.iotdb.commons.conf.IoTDBConstant;
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.schema.view.LogicalViewSchema;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchemaType;
-import org.apache.iotdb.tsfile.write.schema.VectorMeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchemaType;
+import org.apache.tsfile.write.schema.VectorMeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PartialPath.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PartialPath.java
index 217fd3e..2ffeca5 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PartialPath.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PartialPath.java
@@ -22,17 +22,17 @@
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.utils.PathUtils;
 import org.apache.iotdb.commons.utils.TestOnly;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
 
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.IDeviceID;
+import org.apache.tsfile.file.metadata.PlainDeviceID;
+import org.apache.tsfile.read.common.Path;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathDeserializeUtil.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathDeserializeUtil.java
index e2eea5b..71683ec 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathDeserializeUtil.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathDeserializeUtil.java
@@ -18,7 +18,7 @@
  */
 package org.apache.iotdb.commons.path;
 
-import org.apache.iotdb.tsfile.read.common.Path;
+import org.apache.tsfile.read.common.Path;
 
 import java.nio.ByteBuffer;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathPatternNode.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathPatternNode.java
index 818297e..8ca7385 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathPatternNode.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathPatternNode.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.commons.path;
 
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathPatternTree.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathPatternTree.java
index 5c1d61d..3b40a3b 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathPatternTree.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathPatternTree.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.commons.conf.IoTDBConstant;
 import org.apache.iotdb.commons.path.PathPatternNode.VoidSerializer;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
+
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.utils.PublicBAOS;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathType.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathType.java
index 6513fa6..9077e6e 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathType.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathType.java
@@ -18,8 +18,8 @@
  */
 package org.apache.iotdb.commons.path;
 
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/client/IoTDBSyncClientManager.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/client/IoTDBSyncClientManager.java
index 9a20c0b..c262313 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/client/IoTDBSyncClientManager.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/client/IoTDBSyncClientManager.java
@@ -29,8 +29,8 @@
 import org.apache.iotdb.pipe.api.exception.PipeConnectionException;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferResp;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferFilePieceReq.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferFilePieceReq.java
index 1c6083a..909d43b 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferFilePieceReq.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferFilePieceReq.java
@@ -20,9 +20,10 @@
 package org.apache.iotdb.commons.pipe.connector.payload.thrift.request;
 
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferReq;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferFileSealReqV1.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferFileSealReqV1.java
index e112a51..0bc0342 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferFileSealReqV1.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferFileSealReqV1.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.commons.pipe.connector.payload.thrift.request;
 
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferReq;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferFileSealReqV2.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferFileSealReqV2.java
index 8af1615..3ed9999 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferFileSealReqV2.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferFileSealReqV2.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.commons.pipe.connector.payload.thrift.request;
 
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferReq;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferHandshakeV1Req.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferHandshakeV1Req.java
index c448629..7c0330a 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferHandshakeV1Req.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferHandshakeV1Req.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.commons.pipe.connector.payload.thrift.request;
 
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferReq;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferHandshakeV2Req.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferHandshakeV2Req.java
index 8c300eb..8ed63cd 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferHandshakeV2Req.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/request/PipeTransferHandshakeV2Req.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.commons.pipe.connector.payload.thrift.request;
 
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferReq;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/response/PipeTransferFilePieceResp.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/response/PipeTransferFilePieceResp.java
index 083223a..5b72791 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/response/PipeTransferFilePieceResp.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/payload/thrift/response/PipeTransferFilePieceResp.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferResp;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/protocol/IoTDBAirGapConnector.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/protocol/IoTDBAirGapConnector.java
index 33ebea1..1977c32 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/protocol/IoTDBAirGapConnector.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/protocol/IoTDBAirGapConnector.java
@@ -28,8 +28,8 @@
 import org.apache.iotdb.pipe.api.exception.PipeConnectionException;
 import org.apache.iotdb.pipe.api.exception.PipeException;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 
+import org.apache.tsfile.utils.BytesUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/protocol/IoTDBSslSyncConnector.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/protocol/IoTDBSslSyncConnector.java
index f9e5a87..e366584 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/protocol/IoTDBSslSyncConnector.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/protocol/IoTDBSslSyncConnector.java
@@ -32,9 +32,9 @@
 import org.apache.iotdb.pipe.api.exception.PipeConnectionException;
 import org.apache.iotdb.pipe.api.exception.PipeException;
 import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.utils.Pair;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/datastructure/queue/listening/AbstractPipeListeningQueue.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/datastructure/queue/listening/AbstractPipeListeningQueue.java
index d5d1edb..5e182d4 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/datastructure/queue/listening/AbstractPipeListeningQueue.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/datastructure/queue/listening/AbstractPipeListeningQueue.java
@@ -25,8 +25,8 @@
 import org.apache.iotdb.commons.pipe.event.PipeSnapshotEvent;
 import org.apache.iotdb.commons.pipe.task.PipeTask;
 import org.apache.iotdb.pipe.api.event.Event;
-import org.apache.iotdb.tsfile.utils.Pair;
 
+import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/datastructure/queue/listening/AbstractSerializableListeningQueue.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/datastructure/queue/listening/AbstractSerializableListeningQueue.java
index 414c6e4..21ef5d1 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/datastructure/queue/listening/AbstractSerializableListeningQueue.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/datastructure/queue/listening/AbstractSerializableListeningQueue.java
@@ -23,8 +23,8 @@
 import org.apache.iotdb.commons.pipe.datastructure.queue.serializer.PlainQueueSerializer;
 import org.apache.iotdb.commons.pipe.datastructure.queue.serializer.QueueSerializer;
 import org.apache.iotdb.commons.pipe.datastructure.queue.serializer.QueueSerializerType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/datastructure/queue/serializer/PlainQueueSerializer.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/datastructure/queue/serializer/PlainQueueSerializer.java
index 4dc3136..e2279ce 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/datastructure/queue/serializer/PlainQueueSerializer.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/datastructure/queue/serializer/PlainQueueSerializer.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.commons.pipe.datastructure.queue.serializer;
 
 import org.apache.iotdb.commons.pipe.datastructure.queue.ConcurrentIterableLinkedQueue;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/extractor/IoTDBNonDataRegionExtractor.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/extractor/IoTDBNonDataRegionExtractor.java
index ac47581..21670b2 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/extractor/IoTDBNonDataRegionExtractor.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/extractor/IoTDBNonDataRegionExtractor.java
@@ -28,7 +28,8 @@
 import org.apache.iotdb.commons.pipe.event.PipeSnapshotEvent;
 import org.apache.iotdb.pipe.api.event.Event;
 import org.apache.iotdb.pipe.api.exception.PipeException;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.util.LinkedList;
 import java.util.List;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/pattern/PrefixPipePattern.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/pattern/PrefixPipePattern.java
index 1373b01..5e9c3a5 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/pattern/PrefixPipePattern.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/pattern/PrefixPipePattern.java
@@ -22,9 +22,9 @@
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.pipe.config.constant.PipeExtractorConstant;
 import org.apache.iotdb.commons.utils.PathUtils;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.tsfile.common.constant.TsFileConstant;
 
 import java.util.Arrays;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/plugin/meta/ConfigNodePipePluginMetaKeeper.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/plugin/meta/ConfigNodePipePluginMetaKeeper.java
index 6df04ea..a5789a8 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/plugin/meta/ConfigNodePipePluginMetaKeeper.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/plugin/meta/ConfigNodePipePluginMetaKeeper.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.commons.pipe.plugin.meta;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/plugin/meta/PipePluginMeta.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/plugin/meta/PipePluginMeta.java
index 517d5f6..97a59da 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/plugin/meta/PipePluginMeta.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/plugin/meta/PipePluginMeta.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.commons.pipe.plugin.meta;
 
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/plugin/meta/PipePluginMetaKeeper.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/plugin/meta/PipePluginMetaKeeper.java
index 6b0df4c..63c6995 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/plugin/meta/PipePluginMetaKeeper.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/plugin/meta/PipePluginMetaKeeper.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.commons.pipe.plugin.builtin.BuiltinPipePlugin;
 import org.apache.iotdb.commons.pipe.plugin.service.PipePluginClassLoader;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/receiver/IoTDBFileReceiver.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/receiver/IoTDBFileReceiver.java
index 79fed02..91b8cbe 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/receiver/IoTDBFileReceiver.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/receiver/IoTDBFileReceiver.java
@@ -35,9 +35,9 @@
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.service.rpc.thrift.TPipeTransferResp;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.tsfile.common.constant.TsFileConstant;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeMeta.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeMeta.java
index 737313e..dbbc8fd 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeMeta.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeMeta.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.commons.pipe.task.meta;
 
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.PublicBAOS;
 
 import java.io.DataOutputStream;
 import java.io.FileInputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeMetaKeeper.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeMetaKeeper.java
index 742d2db..21dc5d2 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeMetaKeeper.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeMetaKeeper.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.commons.pipe.task.meta;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeRuntimeMeta.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeRuntimeMeta.java
index 6e5c4d2..729c9b6 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeRuntimeMeta.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeRuntimeMeta.java
@@ -28,8 +28,9 @@
 import org.apache.iotdb.commons.exception.pipe.PipeRuntimeCriticalException;
 import org.apache.iotdb.commons.exception.pipe.PipeRuntimeException;
 import org.apache.iotdb.commons.exception.pipe.PipeRuntimeExceptionType;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeRuntimeMetaVersion.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeRuntimeMetaVersion.java
index faa0e29..5dfd32b 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeRuntimeMetaVersion.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeRuntimeMetaVersion.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.commons.pipe.task.meta;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeStaticMeta.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeStaticMeta.java
index dd4cf5b..731d7e9 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeStaticMeta.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeStaticMeta.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.commons.pipe.task.meta;
 
 import org.apache.iotdb.pipe.api.customizer.parameter.PipeParameters;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeTaskMeta.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeTaskMeta.java
index 5571638..1b3ab0b 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeTaskMeta.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/meta/PipeTaskMeta.java
@@ -26,7 +26,8 @@
 import org.apache.iotdb.commons.exception.pipe.PipeRuntimeException;
 import org.apache.iotdb.commons.exception.pipe.PipeRuntimeExceptionType;
 import org.apache.iotdb.commons.exception.pipe.PipeRuntimeNonCriticalException;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilter.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilter.java
index ef76ddc..a9e5fea 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilter.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilter.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.commons.schema.filter.impl.TagFilter;
 import org.apache.iotdb.commons.schema.filter.impl.TemplateFilter;
 import org.apache.iotdb.commons.schema.filter.impl.ViewTypeFilter;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilterFactory.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilterFactory.java
index 05bb764..9c4c20d 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilterFactory.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/SchemaFilterFactory.java
@@ -25,7 +25,8 @@
 import org.apache.iotdb.commons.schema.filter.impl.TemplateFilter;
 import org.apache.iotdb.commons.schema.filter.impl.ViewTypeFilter;
 import org.apache.iotdb.commons.schema.view.ViewType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 public class SchemaFilterFactory {
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/DataTypeFilter.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/DataTypeFilter.java
index 520718b..2a274a8 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/DataTypeFilter.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/DataTypeFilter.java
@@ -21,7 +21,8 @@
 import org.apache.iotdb.commons.schema.filter.SchemaFilter;
 import org.apache.iotdb.commons.schema.filter.SchemaFilterType;
 import org.apache.iotdb.commons.schema.filter.SchemaFilterVisitor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import org.apache.tsfile.enums.TSDataType;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/PathContainsFilter.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/PathContainsFilter.java
index e0fdfae..9b40dfe 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/PathContainsFilter.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/PathContainsFilter.java
@@ -21,7 +21,8 @@
 import org.apache.iotdb.commons.schema.filter.SchemaFilter;
 import org.apache.iotdb.commons.schema.filter.SchemaFilterType;
 import org.apache.iotdb.commons.schema.filter.SchemaFilterVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/TagFilter.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/TagFilter.java
index 4fbe000..4ebdc97 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/TagFilter.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/TagFilter.java
@@ -21,7 +21,8 @@
 import org.apache.iotdb.commons.schema.filter.SchemaFilter;
 import org.apache.iotdb.commons.schema.filter.SchemaFilterType;
 import org.apache.iotdb.commons.schema.filter.SchemaFilterVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/TemplateFilter.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/TemplateFilter.java
index a5f6587..2c4b43f 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/TemplateFilter.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/TemplateFilter.java
@@ -21,7 +21,8 @@
 import org.apache.iotdb.commons.schema.filter.SchemaFilter;
 import org.apache.iotdb.commons.schema.filter.SchemaFilterType;
 import org.apache.iotdb.commons.schema.filter.SchemaFilterVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/MNodeType.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/MNodeType.java
index 133bc37..ec2df5d 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/MNodeType.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/MNodeType.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.commons.schema.node;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/common/AbstractMeasurementMNode.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/common/AbstractMeasurementMNode.java
index 9e4a742..01cd777 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/common/AbstractMeasurementMNode.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/common/AbstractMeasurementMNode.java
@@ -29,9 +29,9 @@
 import org.apache.iotdb.commons.schema.node.role.IMeasurementMNode;
 import org.apache.iotdb.commons.schema.node.utils.IMNodeContainer;
 import org.apache.iotdb.commons.schema.node.visitor.MNodeVisitor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/info/IMeasurementInfo.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/info/IMeasurementInfo.java
index ccb9254..1449edc 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/info/IMeasurementInfo.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/info/IMeasurementInfo.java
@@ -19,8 +19,9 @@
 package org.apache.iotdb.commons.schema.node.info;
 
 import org.apache.iotdb.commons.schema.node.role.IMeasurementMNode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 public interface IMeasurementInfo {
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/role/IMeasurementMNode.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/role/IMeasurementMNode.java
index cbee170..0aac6e3 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/role/IMeasurementMNode.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/role/IMeasurementMNode.java
@@ -20,8 +20,9 @@
 
 import org.apache.iotdb.commons.path.MeasurementPath;
 import org.apache.iotdb.commons.schema.node.IMNode;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 /** This interface defines a MeasurementMNode's operation interfaces. */
 public interface IMeasurementMNode<N extends IMNode<N>> extends IMNode<N> {
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/utils/IMNodeFactory.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/utils/IMNodeFactory.java
index 77645d3..50ce883 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/utils/IMNodeFactory.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/node/utils/IMNodeFactory.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.commons.schema.node.role.IDatabaseMNode;
 import org.apache.iotdb.commons.schema.node.role.IDeviceMNode;
 import org.apache.iotdb.commons.schema.node.role.IMeasurementMNode;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+
+import org.apache.tsfile.write.schema.IMeasurementSchema;
 
 public interface IMNodeFactory<N extends IMNode<N>> {
   IMeasurementMNode<N> createMeasurementMNode(
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/LogicalViewSchema.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/LogicalViewSchema.java
index c2c35f3..c54bdfb 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/LogicalViewSchema.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/LogicalViewSchema.java
@@ -24,13 +24,14 @@
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpression;
 import org.apache.iotdb.commons.schema.view.viewExpression.leaf.TimeSeriesViewOperand;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchemaType;
+
+import org.apache.tsfile.encoding.encoder.Encoder;
+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.ReadWriteIOUtils;
+import org.apache.tsfile.write.schema.IMeasurementSchema;
+import org.apache.tsfile.write.schema.MeasurementSchemaType;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/ViewExpression.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/ViewExpression.java
index 5efc0e1..2862acb 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/ViewExpression.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/ViewExpression.java
@@ -45,7 +45,8 @@
 import org.apache.iotdb.commons.schema.view.viewExpression.unary.NegationViewExpression;
 import org.apache.iotdb.commons.schema.view.viewExpression.unary.RegularViewExpression;
 import org.apache.iotdb.commons.schema.view.viewExpression.visitor.ViewExpressionVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/leaf/ConstantViewOperand.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/leaf/ConstantViewOperand.java
index a551eed..2f74260 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/leaf/ConstantViewOperand.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/leaf/ConstantViewOperand.java
@@ -21,10 +21,10 @@
 
 import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpressionType;
 import org.apache.iotdb.commons.schema.view.viewExpression.visitor.ViewExpressionVisitor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/leaf/TimeSeriesViewOperand.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/leaf/TimeSeriesViewOperand.java
index 1f6a21c..d506f43 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/leaf/TimeSeriesViewOperand.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/leaf/TimeSeriesViewOperand.java
@@ -21,7 +21,8 @@
 
 import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpressionType;
 import org.apache.iotdb.commons.schema.view.viewExpression.visitor.ViewExpressionVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/multi/FunctionViewExpression.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/multi/FunctionViewExpression.java
index 0d1c700..ada4e01 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/multi/FunctionViewExpression.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/multi/FunctionViewExpression.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpression;
 import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpressionType;
 import org.apache.iotdb.commons.schema.view.viewExpression.visitor.ViewExpressionVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/ternary/BetweenViewExpression.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/ternary/BetweenViewExpression.java
index e49a159..128cad9 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/ternary/BetweenViewExpression.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/ternary/BetweenViewExpression.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpression;
 import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpressionType;
 import org.apache.iotdb.commons.schema.view.viewExpression.visitor.ViewExpressionVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/unary/InViewExpression.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/unary/InViewExpression.java
index 709dbb1..d601739 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/unary/InViewExpression.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/unary/InViewExpression.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpression;
 import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpressionType;
 import org.apache.iotdb.commons.schema.view.viewExpression.visitor.ViewExpressionVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/unary/IsNullViewExpression.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/unary/IsNullViewExpression.java
index c066266..ea048da 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/unary/IsNullViewExpression.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/unary/IsNullViewExpression.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpression;
 import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpressionType;
 import org.apache.iotdb.commons.schema.view.viewExpression.visitor.ViewExpressionVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/unary/LikeViewExpression.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/unary/LikeViewExpression.java
index 916f242..bc3d37e 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/unary/LikeViewExpression.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/unary/LikeViewExpression.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpression;
 import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpressionType;
 import org.apache.iotdb.commons.schema.view.viewExpression.visitor.ViewExpressionVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/unary/RegularViewExpression.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/unary/RegularViewExpression.java
index f7edef2..0770161 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/unary/RegularViewExpression.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/unary/RegularViewExpression.java
@@ -22,9 +22,9 @@
 import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpression;
 import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpressionType;
 import org.apache.iotdb.commons.schema.view.viewExpression.visitor.ViewExpressionVisitor;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import org.apache.commons.lang3.Validate;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/consumer/ConsumerGroupMeta.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/consumer/ConsumerGroupMeta.java
index c9534e4..377a27e 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/consumer/ConsumerGroupMeta.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/consumer/ConsumerGroupMeta.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.commons.subscription.meta.consumer;
 
 import org.apache.iotdb.rpc.subscription.exception.SubscriptionException;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/consumer/ConsumerGroupMetaKeeper.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/consumer/ConsumerGroupMetaKeeper.java
index b037622..210ef5e 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/consumer/ConsumerGroupMetaKeeper.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/consumer/ConsumerGroupMetaKeeper.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.commons.subscription.meta.consumer;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/consumer/ConsumerMeta.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/consumer/ConsumerMeta.java
index 4ffda21..5f3c4fc 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/consumer/ConsumerMeta.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/consumer/ConsumerMeta.java
@@ -20,8 +20,9 @@
 package org.apache.iotdb.commons.subscription.meta.consumer;
 
 import org.apache.iotdb.rpc.subscription.config.ConsumerConfig;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/subscription/SubscriptionMeta.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/subscription/SubscriptionMeta.java
index b285b00..91bbb46 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/subscription/SubscriptionMeta.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/subscription/SubscriptionMeta.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.commons.subscription.meta.subscription;
 
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.FileOutputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/topic/TopicMeta.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/topic/TopicMeta.java
index 05cd0b53..816d41a 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/topic/TopicMeta.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/topic/TopicMeta.java
@@ -21,8 +21,9 @@
 
 import org.apache.iotdb.commons.pipe.config.constant.PipeConnectorConstant;
 import org.apache.iotdb.rpc.subscription.config.TopicConfig;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/topic/TopicMetaKeeper.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/topic/TopicMetaKeeper.java
index 2666965..42341da 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/topic/TopicMetaKeeper.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/topic/TopicMetaKeeper.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.commons.subscription.meta.topic;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/sync/PipeInfo.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/sync/PipeInfo.java
index bbf49c7..e99287f 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/sync/PipeInfo.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/sync/PipeInfo.java
@@ -19,9 +19,9 @@
 package org.apache.iotdb.commons.sync;
 
 import org.apache.iotdb.commons.exception.runtime.SerializationRunTimeException;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/sync/PipeMessage.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/sync/PipeMessage.java
index e386d75..ad550a7 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/sync/PipeMessage.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/sync/PipeMessage.java
@@ -18,7 +18,7 @@
  */
 package org.apache.iotdb.commons.sync;
 
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.ByteArrayOutputStream;
 import java.io.DataOutputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/sync/TsFilePipeInfo.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/sync/TsFilePipeInfo.java
index 62739c1..0168d8a 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/sync/TsFilePipeInfo.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/sync/TsFilePipeInfo.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.commons.sync;
 
 import org.apache.iotdb.commons.utils.TestOnly;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/trigger/TriggerInformation.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/trigger/TriggerInformation.java
index 04ea68a..39d715f 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/trigger/TriggerInformation.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/trigger/TriggerInformation.java
@@ -25,8 +25,9 @@
 import org.apache.iotdb.confignode.rpc.thrift.TTriggerState;
 import org.apache.iotdb.trigger.api.enums.FailureStrategy;
 import org.apache.iotdb.trigger.api.enums.TriggerEvent;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/trigger/TriggerTable.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/trigger/TriggerTable.java
index df58484..a10df79 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/trigger/TriggerTable.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/trigger/TriggerTable.java
@@ -21,7 +21,8 @@
 import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.confignode.rpc.thrift.TTriggerState;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.annotation.concurrent.NotThreadSafe;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/UDFInformation.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/UDFInformation.java
index 6b24e57..b09cc47 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/UDFInformation.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/UDFInformation.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.commons.udf;
 
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/UDFTable.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/UDFTable.java
index 2fe53c0..fe03137 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/UDFTable.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/UDFTable.java
@@ -22,7 +22,8 @@
 import org.apache.iotdb.commons.udf.builtin.BuiltinTimeSeriesGeneratingFunction;
 import org.apache.iotdb.commons.udf.service.UDFClassLoader;
 import org.apache.iotdb.commons.utils.TestOnly;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFConcat.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFConcat.java
index b84305c..7aec40f 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFConcat.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFConcat.java
@@ -18,11 +18,6 @@
  */
 package org.apache.iotdb.commons.udf.builtin.String;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -32,6 +27,12 @@
 import org.apache.iotdb.udf.api.customizer.strategy.MappableRowByRowAccessStrategy;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BytesUtils;
+
 import java.io.IOException;
 
 /*This function Returns the concat string by input series and targets.
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFEndsWith.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFEndsWith.java
index ec363ce..900c526 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFEndsWith.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFEndsWith.java
@@ -18,10 +18,6 @@
  */
 package org.apache.iotdb.commons.udf.builtin.String;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -31,6 +27,11 @@
 import org.apache.iotdb.udf.api.customizer.strategy.MappableRowByRowAccessStrategy;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.utils.Binary;
+
 import java.io.IOException;
 
 /*This function returns if input series ends with the specified suffix.*/
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFLower.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFLower.java
index 5c82353..2091cc9 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFLower.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFLower.java
@@ -18,11 +18,6 @@
  */
 package org.apache.iotdb.commons.udf.builtin.String;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -32,6 +27,12 @@
 import org.apache.iotdb.udf.api.customizer.strategy.MappableRowByRowAccessStrategy;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BytesUtils;
+
 import java.io.IOException;
 
 /*Returns a string with all characters of target changed to lowercase, or NULL if target is NULL*/
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFStartsWith.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFStartsWith.java
index 64c06a3..bcb0731 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFStartsWith.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFStartsWith.java
@@ -18,10 +18,6 @@
  */
 package org.apache.iotdb.commons.udf.builtin.String;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -31,6 +27,11 @@
 import org.apache.iotdb.udf.api.customizer.strategy.MappableRowByRowAccessStrategy;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.utils.Binary;
+
 import java.io.IOException;
 
 /*This function returns if input series starts with the specified prefix.*/
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFStrCompare.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFStrCompare.java
index 358f340..07e0431 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFStrCompare.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFStrCompare.java
@@ -18,10 +18,6 @@
  */
 package org.apache.iotdb.commons.udf.builtin.String;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -31,6 +27,11 @@
 import org.apache.iotdb.udf.api.customizer.strategy.MappableRowByRowAccessStrategy;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.utils.Binary;
+
 import java.io.IOException;
 
 /*This function returns  0 if targets are the same, -1 if targtet1 is smaller than targtet2,
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFStrLength.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFStrLength.java
index f9bfee6..0068a0c 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFStrLength.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFStrLength.java
@@ -18,10 +18,6 @@
  */
 package org.apache.iotdb.commons.udf.builtin.String;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -31,6 +27,11 @@
 import org.apache.iotdb.udf.api.customizer.strategy.MappableRowByRowAccessStrategy;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.utils.Binary;
+
 import java.io.IOException;
 
 /*This function returns length of string from an input series.*/
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFStrLocate.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFStrLocate.java
index 7568e02..51cd830 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFStrLocate.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFStrLocate.java
@@ -18,10 +18,6 @@
  */
 package org.apache.iotdb.commons.udf.builtin.String;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -31,6 +27,11 @@
 import org.apache.iotdb.udf.api.customizer.strategy.MappableRowByRowAccessStrategy;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.utils.Binary;
+
 import java.io.IOException;
 
 /*This function returns position of target in an input series.*/
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFTrim.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFTrim.java
index 8911e58..7d06c29 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFTrim.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFTrim.java
@@ -18,11 +18,6 @@
  */
 package org.apache.iotdb.commons.udf.builtin.String;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -32,6 +27,12 @@
 import org.apache.iotdb.udf.api.customizer.strategy.MappableRowByRowAccessStrategy;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BytesUtils;
+
 /*This function returns the string whose value is target, with all leading and trailing space removed.*/
 public class UDTFTrim implements UDTF {
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFUpper.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFUpper.java
index bb1cc0d..30f9d52 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFUpper.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/String/UDTFUpper.java
@@ -18,11 +18,6 @@
  */
 package org.apache.iotdb.commons.udf.builtin.String;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -32,6 +27,12 @@
 import org.apache.iotdb.udf.api.customizer.strategy.MappableRowByRowAccessStrategy;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BytesUtils;
+
 import java.io.IOException;
 
 /*Returns a string with all characters of target changed to uppercase, or NULL if target is NULL.*/
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFAbs.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFAbs.java
index 50cecf0..b57c32d 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFAbs.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFAbs.java
@@ -21,8 +21,6 @@
 
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
 import org.apache.iotdb.udf.api.customizer.config.UDTFConfigurations;
@@ -31,6 +29,9 @@
 import org.apache.iotdb.udf.api.exception.UDFInputSeriesDataTypeNotValidException;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+
 import java.io.IOException;
 
 public class UDTFAbs extends UDTFMath {
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFBottomK.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFBottomK.java
index f92c2b6..21bcbf1 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFBottomK.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFBottomK.java
@@ -20,10 +20,11 @@
 package org.apache.iotdb.commons.udf.builtin;
 
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
-import org.apache.iotdb.tsfile.utils.Pair;
 import org.apache.iotdb.udf.api.exception.UDFInputSeriesDataTypeNotValidException;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.utils.Pair;
+
 import java.util.Comparator;
 import java.util.Objects;
 import java.util.PriorityQueue;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFConst.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFConst.java
index 855433e..5c18cf9 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFConst.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFConst.java
@@ -21,11 +21,6 @@
 
 import org.apache.iotdb.commons.udf.utils.UDFBinaryTransformer;
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -35,6 +30,12 @@
 import org.apache.iotdb.udf.api.customizer.strategy.MappableRowByRowAccessStrategy;
 import org.apache.iotdb.udf.api.exception.UDFParameterNotValidException;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.BytesUtils;
+
 import java.io.IOException;
 import java.util.HashSet;
 import java.util.Set;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFConstE.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFConstE.java
index 3e25f77..67e09c8 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFConstE.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFConstE.java
@@ -19,8 +19,6 @@
 
 package org.apache.iotdb.commons.udf.builtin;
 
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -29,6 +27,9 @@
 import org.apache.iotdb.udf.api.customizer.strategy.MappableRowByRowAccessStrategy;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+
 import java.io.IOException;
 
 public class UDTFConstE implements UDTF {
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFConstPi.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFConstPi.java
index c25512c..9ad2fef 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFConstPi.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFConstPi.java
@@ -19,8 +19,6 @@
 
 package org.apache.iotdb.commons.udf.builtin;
 
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -29,6 +27,9 @@
 import org.apache.iotdb.udf.api.customizer.strategy.MappableRowByRowAccessStrategy;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+
 import java.io.IOException;
 
 public class UDTFConstPi implements UDTF {
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFContains.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFContains.java
index de6d1a6..239915a 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFContains.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFContains.java
@@ -19,10 +19,6 @@
 
 package org.apache.iotdb.commons.udf.builtin;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -33,6 +29,11 @@
 import org.apache.iotdb.udf.api.exception.UDFException;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.utils.Binary;
+
 import java.io.IOException;
 
 public class UDTFContains implements UDTF {
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFContinuouslySatisfy.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFContinuouslySatisfy.java
index 998cee0..de8a097 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFContinuouslySatisfy.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFContinuouslySatisfy.java
@@ -21,8 +21,6 @@
 
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -34,6 +32,9 @@
 import org.apache.iotdb.udf.api.exception.UDFInputSeriesDataTypeNotValidException;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
+
 import java.io.IOException;
 
 public abstract class UDTFContinuouslySatisfy implements UDTF {
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFEqualSizeBucketAggSample.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFEqualSizeBucketAggSample.java
index 09040c5..096ef8f 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFEqualSizeBucketAggSample.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFEqualSizeBucketAggSample.java
@@ -21,7 +21,6 @@
 
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.udf.api.access.RowWindow;
 import org.apache.iotdb.udf.api.collector.PointCollector;
 import org.apache.iotdb.udf.api.customizer.config.UDTFConfigurations;
@@ -33,6 +32,8 @@
 import org.apache.iotdb.udf.api.exception.UDFParameterNotValidException;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.enums.TSDataType;
+
 import java.io.IOException;
 
 public class UDTFEqualSizeBucketAggSample extends UDTFEqualSizeBucketSample {
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFEqualSizeBucketOutlierSample.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFEqualSizeBucketOutlierSample.java
index 82294ba..2658d75 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFEqualSizeBucketOutlierSample.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFEqualSizeBucketOutlierSample.java
@@ -21,7 +21,6 @@
 
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
-import org.apache.iotdb.tsfile.utils.Pair;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.access.RowWindow;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -34,6 +33,8 @@
 import org.apache.iotdb.udf.api.exception.UDFParameterNotValidException;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.utils.Pair;
+
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.Comparator;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFEqualSizeBucketSample.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFEqualSizeBucketSample.java
index e2d107a..306d35e 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFEqualSizeBucketSample.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFEqualSizeBucketSample.java
@@ -21,12 +21,13 @@
 
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.customizer.parameter.UDFParameterValidator;
 import org.apache.iotdb.udf.api.exception.UDFException;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.enums.TSDataType;
+
 public abstract class UDTFEqualSizeBucketSample implements UDTF {
 
   protected TSDataType dataType;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFInRange.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFInRange.java
index 79866ba..137d9d2 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFInRange.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFInRange.java
@@ -21,9 +21,6 @@
 
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -35,6 +32,10 @@
 import org.apache.iotdb.udf.api.exception.UDFInputSeriesDataTypeNotValidException;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+
 import java.io.IOException;
 
 public class UDTFInRange implements UDTF {
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFJexl.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFJexl.java
index 042aa92..fb365e4 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFJexl.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFJexl.java
@@ -21,7 +21,6 @@
 
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -37,6 +36,7 @@
 import org.apache.commons.jexl3.JexlBuilder;
 import org.apache.commons.jexl3.JexlEngine;
 import org.apache.commons.jexl3.JexlScript;
+import org.apache.tsfile.enums.TSDataType;
 
 import java.io.IOException;
 import java.util.HashMap;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFM4.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFM4.java
index 9aee812..0b8ba6c 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFM4.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFM4.java
@@ -21,7 +21,6 @@
 
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.RowWindow;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -35,6 +34,8 @@
 import org.apache.iotdb.udf.api.exception.UDFParameterNotValidException;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.enums.TSDataType;
+
 import java.io.IOException;
 
 /**
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFMatches.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFMatches.java
index b2cfce6..861d20b 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFMatches.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFMatches.java
@@ -19,10 +19,6 @@
 
 package org.apache.iotdb.commons.udf.builtin;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -33,6 +29,11 @@
 import org.apache.iotdb.udf.api.exception.UDFException;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.utils.Binary;
+
 import java.io.IOException;
 import java.util.regex.Pattern;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFMath.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFMath.java
index d01fcef..779cc27 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFMath.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFMath.java
@@ -21,9 +21,6 @@
 
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -35,6 +32,10 @@
 import org.apache.iotdb.udf.api.exception.UDFInputSeriesDataTypeNotValidException;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+
 import java.io.IOException;
 
 public abstract class UDTFMath implements UDTF {
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFOnOff.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFOnOff.java
index b4a51f1..e626af3 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFOnOff.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFOnOff.java
@@ -21,9 +21,6 @@
 
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -35,6 +32,10 @@
 import org.apache.iotdb.udf.api.exception.UDFInputSeriesDataTypeNotValidException;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
+
 import java.io.IOException;
 
 public class UDTFOnOff implements UDTF {
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFSelectK.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFSelectK.java
index 7e6ad07..09659c5 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFSelectK.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFSelectK.java
@@ -21,8 +21,6 @@
 
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Pair;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -34,6 +32,9 @@
 import org.apache.iotdb.udf.api.exception.UDFInputSeriesDataTypeNotValidException;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Pair;
+
 import java.io.IOException;
 import java.util.Comparator;
 import java.util.PriorityQueue;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFTopK.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFTopK.java
index 22bba30..c25864e 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFTopK.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFTopK.java
@@ -20,10 +20,11 @@
 package org.apache.iotdb.commons.udf.builtin;
 
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
-import org.apache.iotdb.tsfile.utils.Pair;
 import org.apache.iotdb.udf.api.exception.UDFInputSeriesDataTypeNotValidException;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.utils.Pair;
+
 import java.util.Comparator;
 import java.util.PriorityQueue;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFValueTrend.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFValueTrend.java
index b67808e..bc7d52f 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFValueTrend.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFValueTrend.java
@@ -20,7 +20,6 @@
 package org.apache.iotdb.commons.udf.builtin;
 
 import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -29,6 +28,8 @@
 import org.apache.iotdb.udf.api.exception.UDFInputSeriesDataTypeNotValidException;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.enums.TSDataType;
+
 import java.io.IOException;
 
 public abstract class UDTFValueTrend implements UDTF {
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/utils/UDFBinaryTransformer.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/utils/UDFBinaryTransformer.java
index 380e9ac..82a4c5e 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/utils/UDFBinaryTransformer.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/utils/UDFBinaryTransformer.java
@@ -19,19 +19,19 @@
 package org.apache.iotdb.commons.udf.utils;
 
 /**
- * Transform between {@link org.apache.iotdb.tsfile.utils.Binary} and {@link
+ * Transform between {@link org.apache.tsfile.utils.Binary} and {@link
  * org.apache.iotdb.udf.api.type.Binary}
  */
 public class UDFBinaryTransformer {
   private UDFBinaryTransformer() {}
 
-  public static org.apache.iotdb.tsfile.utils.Binary transformToBinary(
+  public static org.apache.tsfile.utils.Binary transformToBinary(
       org.apache.iotdb.udf.api.type.Binary binary) {
-    return binary == null ? null : new org.apache.iotdb.tsfile.utils.Binary(binary.getValues());
+    return binary == null ? null : new org.apache.tsfile.utils.Binary(binary.getValues());
   }
 
   public static org.apache.iotdb.udf.api.type.Binary transformToUDFBinary(
-      org.apache.iotdb.tsfile.utils.Binary binary) {
+      org.apache.tsfile.utils.Binary binary) {
     return binary == null ? null : new org.apache.iotdb.udf.api.type.Binary(binary.getValues());
   }
 }
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/utils/UDFDataTypeTransformer.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/utils/UDFDataTypeTransformer.java
index 285077c..d73379d 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/utils/UDFDataTypeTransformer.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/utils/UDFDataTypeTransformer.java
@@ -18,9 +18,10 @@
  */
 package org.apache.iotdb.commons.udf.utils;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.enums.TSDataType;
+
 import java.util.List;
 import java.util.stream.Collectors;
 
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/IOUtils.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/IOUtils.java
index 2cc51d1..48d0f95 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/IOUtils.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/IOUtils.java
@@ -23,7 +23,8 @@
 import org.apache.iotdb.commons.auth.entity.Role;
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.tsfile.utils.Pair;
+
+import org.apache.tsfile.utils.Pair;
 
 import java.io.DataInputStream;
 import java.io.File;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/JVMCommonUtils.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/JVMCommonUtils.java
index 4add837..6c7bb19 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/JVMCommonUtils.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/JVMCommonUtils.java
@@ -20,7 +20,8 @@
 package org.apache.iotdb.commons.utils;
 
 import org.apache.iotdb.commons.conf.CommonDescriptor;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
+
+import org.apache.tsfile.fileSystem.FSFactoryProducer;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/PathUtils.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/PathUtils.java
index 8f1a14c..e3af7aa 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/PathUtils.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/PathUtils.java
@@ -21,10 +21,11 @@
 import org.apache.iotdb.commons.conf.IoTDBConstant;
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.exception.MetadataException;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.exception.PathParseException;
-import org.apache.iotdb.tsfile.read.common.parser.PathNodesGenerator;
-import org.apache.iotdb.tsfile.read.common.parser.PathVisitor;
+
+import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.exception.PathParseException;
+import org.apache.tsfile.read.common.parser.PathNodesGenerator;
+import org.apache.tsfile.read.common.parser.PathVisitor;
 
 import java.util.ArrayList;
 import java.util.HashMap;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/SerializeUtils.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/SerializeUtils.java
index e66d8bf..853915b 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/SerializeUtils.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/SerializeUtils.java
@@ -19,14 +19,14 @@
 
 package org.apache.iotdb.commons.utils;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.BatchData.BatchDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
+import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.read.TimeValuePair;
+import org.apache.tsfile.read.common.BatchData;
+import org.apache.tsfile.read.common.BatchData.BatchDataType;
+import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.TsPrimitiveType;
 
 import java.io.ByteArrayOutputStream;
 import java.io.DataOutputStream;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/TimePartitionUtils.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/TimePartitionUtils.java
index 6721e1b..fe20e6b 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/TimePartitionUtils.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/TimePartitionUtils.java
@@ -20,7 +20,8 @@
 
 import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
 import org.apache.iotdb.commons.conf.CommonDescriptor;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
+
+import org.apache.tsfile.read.filter.basic.Filter;
 
 public class TimePartitionUtils {
 
diff --git a/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/partition/DataPartitionTableTest.java b/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/partition/DataPartitionTableTest.java
index 3125c96..33f0027 100644
--- a/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/partition/DataPartitionTableTest.java
+++ b/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/partition/DataPartitionTableTest.java
@@ -22,12 +22,12 @@
 import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
 import org.apache.iotdb.common.rpc.thrift.TSeriesPartitionSlot;
 import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
 import org.apache.thrift.TException;
 import org.apache.thrift.protocol.TBinaryProtocol;
 import org.apache.thrift.transport.TIOStreamTransport;
 import org.apache.thrift.transport.TTransport;
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/partition/SchemaPartitionTableTest.java b/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/partition/SchemaPartitionTableTest.java
index e8830d0..01c6424 100644
--- a/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/partition/SchemaPartitionTableTest.java
+++ b/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/partition/SchemaPartitionTableTest.java
@@ -21,12 +21,12 @@
 import org.apache.iotdb.common.rpc.thrift.TConsensusGroupId;
 import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
 import org.apache.iotdb.common.rpc.thrift.TSeriesPartitionSlot;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
 import org.apache.thrift.TException;
 import org.apache.thrift.protocol.TBinaryProtocol;
 import org.apache.thrift.transport.TIOStreamTransport;
 import org.apache.thrift.transport.TTransport;
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/partition/SeriesPartitionTableTest.java b/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/partition/SeriesPartitionTableTest.java
index ce0563d..ab63deb 100644
--- a/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/partition/SeriesPartitionTableTest.java
+++ b/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/partition/SeriesPartitionTableTest.java
@@ -21,12 +21,12 @@
 import org.apache.iotdb.common.rpc.thrift.TConsensusGroupId;
 import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
 import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
 import org.apache.thrift.TException;
 import org.apache.thrift.protocol.TBinaryProtocol;
 import org.apache.thrift.transport.TIOStreamTransport;
 import org.apache.thrift.transport.TTransport;
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/pipe/task/meta/PipeMetaDeSerTest.java b/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/pipe/task/meta/PipeMetaDeSerTest.java
index 50a4608..419baea 100644
--- a/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/pipe/task/meta/PipeMetaDeSerTest.java
+++ b/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/pipe/task/meta/PipeMetaDeSerTest.java
@@ -28,10 +28,10 @@
 import org.apache.iotdb.commons.consensus.index.impl.TimeWindowStateProgressIndex;
 import org.apache.iotdb.commons.exception.pipe.PipeRuntimeConnectorCriticalException;
 import org.apache.iotdb.commons.exception.pipe.PipeRuntimeCriticalException;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.tsfile.utils.Pair;
+import org.apache.tsfile.utils.PublicBAOS;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/utils/ThriftCommonsSerDeUtilsTest.java b/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/utils/ThriftCommonsSerDeUtilsTest.java
index ffc6980..9fd6ca3 100644
--- a/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/utils/ThriftCommonsSerDeUtilsTest.java
+++ b/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/utils/ThriftCommonsSerDeUtilsTest.java
@@ -27,8 +27,8 @@
 import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
 import org.apache.iotdb.common.rpc.thrift.TSeriesPartitionSlot;
 import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
 
+import org.apache.tsfile.utils.PublicBAOS;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/iotdb-core/pom.xml b/iotdb-core/pom.xml
index e4d00b1..9f443a5 100644
--- a/iotdb-core/pom.xml
+++ b/iotdb-core/pom.xml
@@ -36,6 +36,5 @@
         <module>datanode</module>
         <module>metrics</module>
         <module>node-commons</module>
-        <module>tsfile</module>
     </modules>
 </project>
diff --git a/iotdb-core/tsfile/README.md b/iotdb-core/tsfile/README.md
deleted file mode 100644
index 2afa2fb..0000000
--- a/iotdb-core/tsfile/README.md
+++ /dev/null
@@ -1,63 +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.
-
--->
-
-# TsFile Document
-<pre>
-___________    ___________.__.__          
-\__    ___/____\_   _____/|__|  |   ____  
-  |    | /  ___/|    __)  |  |  | _/ __ \ 
-  |    | \___ \ |     \   |  |  |_\  ___/ 
-  |____|/____  >\___  /   |__|____/\___  >  version 1.0.0
-             \/     \/                 \/  
-</pre>
-## Abstract
-
-TsFile is a columnar storage file format designed for time series data, which supports efficient compression and query. It is easy to integrate TsFile into your IoT big data processing frameworks.
-
-
-## Motivation
-
-Nowadays, the implementation of IoT is becoming increasingly popular in areas such as Industry 4.0, Smart Home, wearables and Connected Healthcare. Comparing with traditional IT infrastructure usage monitoring scenarios, applications like intelligent control and alarm reporting stimulate more advanced analytics requirements on time series data generated by sensors. Especially when IoT dives into industrial Internet, intelligent equipments produce one to two orders of magnitudes of data more than consumer-oriented IoT, where analytics comes more complicated to get actionable insights. As an illustrative example, a single wind turbine can generate hundreds of data points every 20 ms for fault detection or prediction through a set of sophisticated operations against time series by data scientists, such as signal decomposition and filtration, segmentation for varied working conditions, pattern matching, frequency domain analysis etc..
-
-Recent advances in time series data management system are developed for data center monitoring. Currently there is not a file format optimized specifically for time series data in above scenarios. So TsFile was born. TsFile is a specially designed file format rather than a database. Users can open, write, read, and close a TsFile easily like doing operations on a normal file. Besides, more interfaces are available on a TsFile.
-
-The target of TsFile project is to support: high ingestion rate up to tens of million data points per second and rare updates only for the correction of low quality data; compact data packaging and deep compression for long-live historical data; traditional sequential and conditional query, complex exploratory query, signal processing, data mining and machine learning.
-
-The features of TsFile is as follow:
-
-* **Write**
-	* Fast data import
-	* Efficiently compression
-	* diverse data encoding types
-* **Read**
-	* Efficiently query 
-	* Time-sorted query data set
-* **Integration**
-	* HDFS
-	* Spark and Hive
-	* etc. 
-
-## Online Documents
-* [Installation](https://github.com/thulab/tsfile/wiki/Installation)
-* [Get Started](https://github.com/thulab/tsfile/wiki/Get-Started)
-* [TsFile-Spark Connector](https://github.com/thulab/tsfile/wiki/TsFile-Spark-Connector)
-
- 
diff --git a/iotdb-core/tsfile/format-changelist.md b/iotdb-core/tsfile/format-changelist.md
deleted file mode 100644
index d4c7473..0000000
--- a/iotdb-core/tsfile/format-changelist.md
+++ /dev/null
@@ -1,56 +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.
-
--->
-
-# 0.10.x/0.11.x (version-2) -> 0.12.x/0.13.x (version-3)
-| PR#   | Name                                                        | Author          | Changes                                                      |
-| ----- | ----------------------------------------------------------- | --------------- | ------------------------------------------------------------ |
-| 2263  | Move memtable plan index from ChunkGroupFooter to a separate marker      | jt2594838       | Add min/max plan index after MetaMarker.OPERATION_INDEX_RANGE when a memtable is flush|
-| 2184  | [IOTDB-1081] New TsFile Format      | JackieTien97      | Please see [details](https://cwiki.apache.org/confluence/display/IOTDB/New+TsFile+Format)|
-| 2445  | Remove versionInfo in Tsfile and get rid of versions in memtable      | wshao08       | Delete version info in TsFile |
-
-
-# 0.9.x (version-1) -> 0.10.x (version-2)
-
-Last Updated on 2019-11-28 by Jialin Qiao.
-
-| PR#   | Name                                                        | Author          | Changes                                                      |
-| ---- | ------------------------------------------------------------ | --------------- | ------------------------------------------------------------ |
-| 553  | [IOTDB-279] Merge TsDigest into Statistics                   | jack870131      | Merge the function of TsDigest into Statistics class, which TsDisgest is the ByteBuffer format of Statistics |
-| 587  | [IOTDB-325] Refactor Statistics                              | qiaojialin      | Move start time, end time, count in PageHeader and ChunkMetadata into Statistics; Remove maxTombstoneTime in ChunkHeader |
-| 855  | [IOTDB-587] New TsFile version 2                             | HTHou           | Remove ChunkGroupMetadata, store ChunkMetadata list by series, Add TimeseriesMetadata for each series |
-| 1024 | [IOTDB-585] Fix recover version bug                          | qiaojialin      | Add MetaMarker.VERSION and version behind each flushing memtable (flushAllChunkGroups) |
-| 1047 | [IOTDB-593] Add metaOffset in TsFileMetadata                 | qiaojialin      | Add metaOffset in TsFileMetadata |
-| 1100 | [IOTDB-605] Add more levels of index in TsFileMetadata       | sunzesong       | Update the structure of deviceMetadata to a tree-level indexed TsFileMetadata |
-
-# 0.8.0 -> 0.9.x (version-1)
-
-Last Updated on 2019-10-27 by Lei Rui.
-
-| PR#   | Name                                                        | Author          | Changes                                                      |
-| ---- | ------------------------------------------------------------ | --------------- | ------------------------------------------------------------ |
-| 258  | [IOTDB-143]Development of merge                              | jt2594838       | Add totalChunkNum and invalidChunkNum to TsFileMetaData.     |
-| 409  | \[IOTDB-165\]\[TsFile\] Delete a current version and add a number version and an exception. | Genius_pig      | (1) Delete a current version in TsFileMetaData; <br />(2) Change the TsFile magic number from 12 bytes to: 6 bytes magic string ("TsFile") + 6 bytes version number ({"000001", "000002", ""000003"}) ("v0.8.0" is the first version (we treat it as "000000"));<br />(3) The tail of a TsFile only has "TsFile" magic string, without the version number. |
-| 466  | [IOTDB-208] Bloom filter                                     | SilverNarcissus | Add four fields for the bloom filter to TsFileMetaData: 1) bit vector byte array length, 2) bit vector byte array, 3) the number of bits, 4) the number of hash functions. |
-
-
-
-
-
diff --git a/iotdb-core/tsfile/pom.xml b/iotdb-core/tsfile/pom.xml
deleted file mode 100644
index d1c460c..0000000
--- a/iotdb-core/tsfile/pom.xml
+++ /dev/null
@@ -1,278 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-core</artifactId>
-        <version>1.3.2-SNAPSHOT</version>
-    </parent>
-    <artifactId>tsfile</artifactId>
-    <name>IoTDB: Core: TsFile</name>
-    <description>A columnar file format designed for time-series data</description>
-    <properties>
-        <tsfile.it.skip>${tsfile.test.skip}</tsfile.it.skip>
-        <tsfile.test.skip>false</tsfile.test.skip>
-        <tsfile.ut.skip>${tsfile.test.skip}</tsfile.ut.skip>
-    </properties>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.github.luben</groupId>
-            <artifactId>zstd-jni</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.xerial.snappy</groupId>
-            <artifactId>snappy-java</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.lz4</groupId>
-            <artifactId>lz4-java</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.tukaani</groupId>
-            <artifactId>xz</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.antlr</groupId>
-            <artifactId>antlr4-runtime</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-core</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-api-mockito2</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>com.google.code.gson</groupId>
-            <artifactId>gson</artifactId>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.antlr</groupId>
-                <artifactId>antlr4-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>antlr4</goal>
-                        </goals>
-                        <configuration>
-                            <listener>false</listener>
-                            <visitor>true</visitor>
-                            <libDirectory>src/main/antlr4/org/apache/tsfile/parser</libDirectory>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>add-source</id>
-                        <goals>
-                            <goal>add-source</goal>
-                        </goals>
-                        <phase>generate-sources</phase>
-                        <configuration>
-                            <sources>
-                                <source>${project.build.directory}/generated-sources/antlr4</source>
-                            </sources>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-clean-plugin</artifactId>
-                <configuration>
-                    <filesets>
-                        <fileset>
-                            <directory>${basedir}/gen</directory>
-                        </fileset>
-                        <fileset>
-                            <directory>${basedir}/src</directory>
-                            <includes>
-                                <include>**/*.tokens</include>
-                            </includes>
-                        </fileset>
-                    </filesets>
-                </configuration>
-            </plugin>
-            <!--
-              Generate an OSGI compatible MANIFEST file.
-            -->
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <configuration>
-                    <exportScr>true</exportScr>
-                    <instructions>
-                        <_include>-bnd.bnd</_include>
-                        <_removeheaders>Bnd-LastModified,Built-By</_removeheaders>
-                        <Embed-Dependency>dependencies</Embed-Dependency>
-                    </instructions>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>bundle-manifest</id>
-                        <goals>
-                            <goal>manifest</goal>
-                        </goals>
-                        <phase>process-classes</phase>
-                    </execution>
-                </executions>
-            </plugin>
-            <!--
-              Use the MANIFEST file generated by the maven-bundle-plugin.
-            -->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
-                    </archive>
-                </configuration>
-            </plugin>
-            <!--using `mvn test` to run UT, `mvn verify` to run ITs
-            Reference: https://antoniogoncalves.org/2012/12/13/lets-turn-integration-tests-with-maven-to-a-first-class-citizen/-->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <skipTests>${tsfile.ut.skip}</skipTests>
-                    <reuseForks>false</reuseForks>
-                    <runOrder>random</runOrder>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-failsafe-plugin</artifactId>
-                <configuration>
-                    <skipTests>${tsfile.test.skip}</skipTests>
-                    <skipITs>${tsfile.it.skip}</skipITs>
-                    <reuseForks>false</reuseForks>
-                    <runOrder>random</runOrder>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>run-integration-tests</id>
-                        <goals>
-                            <goal>integration-test</goal>
-                            <goal>verify</goal>
-                        </goals>
-                        <phase>integration-test</phase>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-    <profiles>
-        <profile>
-            <id>skipTsfileTests</id>
-            <activation>
-                <property>
-                    <name>skipTests</name>
-                    <value>true</value>
-                </property>
-            </activation>
-            <properties>
-                <tsfile.it.skip>true</tsfile.it.skip>
-                <tsfile.test.skip>true</tsfile.test.skip>
-                <tsfile.ut.skip>true</tsfile.ut.skip>
-            </properties>
-        </profile>
-        <profile>
-            <id>skipUT_TsFileTests</id>
-            <activation>
-                <property>
-                    <name>skipUTs</name>
-                    <value>true</value>
-                </property>
-            </activation>
-            <properties>
-                <tsfile.ut.skip>true</tsfile.ut.skip>
-            </properties>
-        </profile>
-        <profile>
-            <id>get-jar-with-dependencies</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-assembly-plugin</artifactId>
-                        <configuration>
-                            <descriptorRefs>
-                                <descriptorRef>jar-with-dependencies</descriptorRef>
-                            </descriptorRefs>
-                        </configuration>
-                        <executions>
-                            <execution>
-                                <id>make-assembly</id>
-                                <!-- bind to the packaging phase -->
-                                <goals>
-                                    <goal>single</goal>
-                                </goals>
-                                <!-- this is used for inheritance merges -->
-                                <phase>package</phase>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-</project>
diff --git a/iotdb-core/tsfile/src/main/antlr4/org/apache/tsfile/parser/PathLexer.g4 b/iotdb-core/tsfile/src/main/antlr4/org/apache/tsfile/parser/PathLexer.g4
deleted file mode 100644
index 0f682f4..0000000
--- a/iotdb-core/tsfile/src/main/antlr4/org/apache/tsfile/parser/PathLexer.g4
+++ /dev/null
@@ -1,212 +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.
- */
-
-lexer grammar PathLexer;
-
-ROOT
-    : R O O T
-    ;
-
-/**
- * 1. Whitespace
- */
-
-// Instead of discarding whitespace completely, send them to a channel invisable to the parser, so
-// that the lexer could still produce WS tokens for the CLI's highlighter.
-WS
-    :
-    [ \u000B\t\r\n]+ -> channel(HIDDEN)
-    ;
-
-/**
- * 2. Keywords, new keywords should be added into IdentifierParser.g4
- */
-
-// Common Keywords
-
-TIME
-    : T I M E
-    ;
-
-TIMESTAMP
-    : T I M E S T A M P
-    ;
-
-/**
- * 3. Operators
- */
-
-// Operators. Arithmetics
-
-MINUS : '-';
-PLUS : '+';
-DIV : '/';
-MOD : '%';
-
-
-// Operators. Comparation
-
-OPERATOR_DEQ : '==';
-OPERATOR_SEQ : '=';
-OPERATOR_GT : '>';
-OPERATOR_GTE : '>=';
-OPERATOR_LT : '<';
-OPERATOR_LTE : '<=';
-OPERATOR_NEQ : '!=' | '<>';
-
-OPERATOR_BITWISE_AND : '&';
-
-OPERATOR_LOGICAL_AND : '&&';
-
-OPERATOR_BITWISE_OR : '|';
-
-OPERATOR_LOGICAL_OR : '||';
-
-OPERATOR_NOT : '!';
-
-/**
- * 4. Constructors Symbols
- */
-
-DOT : '.';
-COMMA : ',';
-SEMI: ';';
-STAR: '*';
-DOUBLE_STAR: '**';
-LR_BRACKET : '(';
-RR_BRACKET : ')';
-LS_BRACKET : '[';
-RS_BRACKET : ']';
-DOUBLE_COLON: '::';
-
-/**
- * 5. Literals
- */
-
-// String Literal
-
-STRING_LITERAL
-    : DQUOTA_STRING
-    | SQUOTA_STRING
-    ;
-
-
-// Date & Time Literal
-
-DURATION_LITERAL
-    : (INTEGER_LITERAL+ (Y|M O|W|D|H|M|S|M S|U S|N S))+
-    ;
-
-DATETIME_LITERAL
-    : DATE_LITERAL ((T | WS) TIME_LITERAL (('+' | '-') INTEGER_LITERAL ':' INTEGER_LITERAL)?)?
-    ;
-
-fragment DATE_LITERAL
-    : INTEGER_LITERAL '-' INTEGER_LITERAL '-' INTEGER_LITERAL
-    | INTEGER_LITERAL '/' INTEGER_LITERAL '/' INTEGER_LITERAL
-    | INTEGER_LITERAL '.' INTEGER_LITERAL '.' INTEGER_LITERAL
-    ;
-
-fragment TIME_LITERAL
-    : INTEGER_LITERAL ':' INTEGER_LITERAL ':' INTEGER_LITERAL (DOT INTEGER_LITERAL)?
-    ;
-
-// Number Literal
-
-INTEGER_LITERAL
-    : DEC_DIGIT+
-    ;
-
-EXPONENT_NUM_PART
-    : DEC_DIGIT+ ('e'|'E') ('+'|'-')? DEC_DIGIT+
-    ;
-
-fragment DEC_DIGIT
-    : [0-9]
-    ;
-
-
-ID
-    : NAME_CHAR+
-    ;
-
-QUOTED_ID
-    : BQUOTA_STRING
-    ;
-
-
-
-fragment NAME_CHAR
-    : 'A'..'Z'
-    | 'a'..'z'
-    | '0'..'9'
-    | '_'
-    | ':'
-    | '@'
-    | '#'
-    | '$'
-    | '{'
-    | '}'
-    | CN_CHAR
-    ;
-
-fragment CN_CHAR
-    : '\u2E80'..'\u9FFF'
-    ;
-
-fragment DQUOTA_STRING
-    : '"' ( '""' | ~('"') )* '"'
-    ;
-
-fragment SQUOTA_STRING
-    : '\'' ( '\'\'' | ~('\'') )* '\''
-    ;
-
-fragment BQUOTA_STRING
-    : '`' ( '``' | ~('`') )* '`'
-    ;
-
-// Characters and write it this way for case sensitivity
-
-fragment A: [aA];
-fragment B: [bB];
-fragment C: [cC];
-fragment D: [dD];
-fragment E: [eE];
-fragment F: [fF];
-fragment G: [gG];
-fragment H: [hH];
-fragment I: [iI];
-fragment J: [jJ];
-fragment K: [kK];
-fragment L: [lL];
-fragment M: [mM];
-fragment N: [nN];
-fragment O: [oO];
-fragment P: [pP];
-fragment Q: [qQ];
-fragment R: [rR];
-fragment S: [sS];
-fragment T: [tT];
-fragment U: [uU];
-fragment V: [vV];
-fragment W: [wW];
-fragment X: [xX];
-fragment Y: [yY];
-fragment Z: [zZ];
\ No newline at end of file
diff --git a/iotdb-core/tsfile/src/main/antlr4/org/apache/tsfile/parser/PathParser.g4 b/iotdb-core/tsfile/src/main/antlr4/org/apache/tsfile/parser/PathParser.g4
deleted file mode 100644
index 91acbed..0000000
--- a/iotdb-core/tsfile/src/main/antlr4/org/apache/tsfile/parser/PathParser.g4
+++ /dev/null
@@ -1,67 +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.
- */
-
-parser grammar PathParser;
-
-options { tokenVocab=PathLexer; }
-
-
-/**
- * PartialPath and Path used by Session API and TsFile API should be parsed by Antlr4.
- */
-
-path
-    : prefixPath EOF
-    | suffixPath EOF
-    ;
-
-prefixPath
-    : ROOT (DOT nodeName)*
-    ;
-
-suffixPath
-    : nodeName (DOT nodeName)*
-    ;
-
-nodeName
-    : wildcard
-    | wildcard nodeNameSlice wildcard?
-    | nodeNameSlice wildcard
-    | nodeNameWithoutWildcard
-    ;
-
-nodeNameWithoutWildcard
-    : identifier
-    ;
-
-nodeNameSlice
-    : identifier
-    | INTEGER_LITERAL
-    ;
-
-identifier
-     : DURATION_LITERAL
-     | ID
-     | QUOTED_ID
-     ;
-
-wildcard
-    : STAR
-    | DOUBLE_STAR
-    ;
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/cache/Cache.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/cache/Cache.java
deleted file mode 100644
index 49e7318..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/cache/Cache.java
+++ /dev/null
@@ -1,31 +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.common.cache;
-
-import org.apache.iotdb.tsfile.exception.cache.CacheException;
-
-import java.io.IOException;
-
-public interface Cache<K, T> {
-
-  T get(K key) throws CacheException, IOException;
-
-  void clear();
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/cache/LRUCache.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/cache/LRUCache.java
deleted file mode 100644
index c7db1b5..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/cache/LRUCache.java
+++ /dev/null
@@ -1,68 +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.common.cache;
-
-import java.io.IOException;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-/** This class is not thread safe. */
-public abstract class LRUCache<K, T> implements Cache<K, T> {
-
-  protected Map<K, T> cache;
-
-  protected LRUCache(int cacheSize) {
-    this.cache =
-        new LinkedHashMap<K, T>(cacheSize, 0.75f, true) {
-          @Override
-          protected boolean removeEldestEntry(Map.Entry eldest) {
-            return size() > cacheSize;
-          }
-        };
-  }
-
-  @Override
-  public synchronized T get(K key) throws IOException {
-    if (cache.containsKey(key)) {
-      return cache.get(key);
-    } else {
-      T value = loadObjectByKey(key);
-      if (value != null) {
-        cache.put(key, value);
-      }
-      return value;
-    }
-  }
-
-  @Override
-  public synchronized void clear() {
-    cache.clear();
-  }
-
-  public synchronized void put(K key, T value) {
-    cache.put(key, value);
-  }
-
-  protected abstract T loadObjectByKey(K key) throws IOException;
-
-  public synchronized void removeItem(K key) {
-    cache.remove(key);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/conf/TSFileConfig.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/conf/TSFileConfig.java
deleted file mode 100644
index 8a257ca..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/conf/TSFileConfig.java
+++ /dev/null
@@ -1,528 +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.common.conf;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.fileSystem.FSType;
-import org.apache.iotdb.tsfile.utils.FSUtils;
-
-import java.io.Serializable;
-import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
-import java.util.Properties;
-
-/** TSFileConfig is a configuration class. Every variable is public and has default value. */
-public class TSFileConfig implements Serializable {
-
-  /** encoding configuration. */
-  public static final int RLE_MIN_REPEATED_NUM = 8;
-
-  public static final int RLE_MAX_REPEATED_NUM = 0x7FFF;
-  public static final int RLE_MAX_BIT_PACKED_NUM = 63;
-
-  public static final int FLOAT_VALUE_LENGTH = 6;
-  public static final int DOUBLE_VALUE_LENGTH = 7;
-
-  public static final int VALUE_BITS_LENGTH_32BIT = 32;
-  public static final int LEADING_ZERO_BITS_LENGTH_32BIT = 5;
-  public static final int MEANINGFUL_XOR_BITS_LENGTH_32BIT = 5;
-
-  public static final int VALUE_BITS_LENGTH_64BIT = 64;
-  public static final int LEADING_ZERO_BITS_LENGTH_64BIT = 6;
-  public static final int MEANINGFUL_XOR_BITS_LENGTH_64BIT = 6;
-
-  public static final int GORILLA_ENCODING_ENDING_INTEGER = Integer.MIN_VALUE;
-  public static final long GORILLA_ENCODING_ENDING_LONG = Long.MIN_VALUE;
-  public static final float GORILLA_ENCODING_ENDING_FLOAT = Float.NaN;
-  public static final double GORILLA_ENCODING_ENDING_DOUBLE = Double.NaN;
-
-  /** String encoder with UTF-8 encodes a character to at most 4 bytes. */
-  public static final int BYTE_SIZE_PER_CHAR = 4;
-
-  public static final String STRING_ENCODING = "UTF-8";
-  public static final Charset STRING_CHARSET = StandardCharsets.UTF_8;
-  public static final String CONFIG_FILE_NAME = "iotdb-common.properties";
-  public static final String MAGIC_STRING = "TsFile";
-  public static final String VERSION_NUMBER_V2 = "000002";
-  public static final String VERSION_NUMBER_V1 = "000001";
-  /** version number is changed to use 1 byte to represent since version 3. */
-  public static final byte VERSION_NUMBER = 0x03;
-
-  /** Bloom filter constrain. */
-  public static final double MIN_BLOOM_FILTER_ERROR_RATE = 0.01;
-
-  public static final double MAX_BLOOM_FILTER_ERROR_RATE = 0.1;
-
-  /** The primitive array capacity threshold. */
-  public static final int ARRAY_CAPACITY_THRESHOLD = 1000;
-  /** Memory size threshold for flushing to disk, default value is 128MB. */
-  private int groupSizeInByte = 128 * 1024 * 1024;
-  /** The memory size for each series writer to pack page, default value is 64KB. */
-  private int pageSizeInByte = 64 * 1024;
-  /** The maximum number of data points in a page, default value is 10000. */
-  private int maxNumberOfPointsInPage = 10_000;
-  /** The maximum degree of a metadataIndex node, default value is 256. */
-  private int maxDegreeOfIndexNode = 256;
-  /** Data type for input timestamp, TsFile supports INT64. */
-  private TSDataType timeSeriesDataType = TSDataType.INT64;
-  /** Max length limitation of input string. */
-  private int maxStringLength = 128;
-  /** Floating-point precision. */
-  private int floatPrecision = 2;
-  /**
-   * Encoder of time column, TsFile supports TS_2DIFF, PLAIN and RLE(run-length encoding) Default
-   * value is TS_2DIFF.
-   */
-  private String timeEncoding = "TS_2DIFF";
-  /**
-   * Encoder of value series. default value is PLAIN. For int, long data type, TsFile also supports
-   * TS_2DIFF, REGULAR, GORILLA and RLE(run-length encoding). For float, double data type, TsFile
-   * also supports TS_2DIFF, RLE(run-length encoding) and GORILLA. For text data type, TsFile only
-   * supports PLAIN.
-   */
-  private String valueEncoder = "PLAIN";
-  /** Default bit width of RLE encoding is 8. */
-  private int rleBitWidth = 8;
-  /** Default block size of two-diff. delta encoding is 128. */
-  private int deltaBlockSize = 128;
-  /** Default frequency type is SINGLE_FREQ. */
-  private String freqType = "SINGLE_FREQ";
-  /** Default PLA max error is 100. */
-  private double plaMaxError = 100;
-  /** Default SDT max error is 100. */
-  private double sdtMaxError = 100;
-  /** Default DFT satisfy rate is 0.1 */
-  private double dftSatisfyRate = 0.1;
-  /** Data compression method, TsFile supports UNCOMPRESSED, SNAPPY, ZSTD or LZ4. */
-  private CompressionType compressor = CompressionType.LZ4;
-  /** Line count threshold for checking page memory occupied size. */
-  private int pageCheckSizeThreshold = 100;
-  /** Default endian value is BIG_ENDIAN. */
-  private String endian = "BIG_ENDIAN";
-  /** Default storage is in local file system. */
-  private FSType[] tSFileStorageFs = new FSType[] {FSType.LOCAL};
-  /** Default core-site.xml file path is /etc/hadoop/conf/core-site.xml */
-  private String coreSitePath = "/etc/hadoop/conf/core-site.xml";
-  /** Default hdfs-site.xml file path is /etc/hadoop/conf/hdfs-site.xml */
-  private String hdfsSitePath = "/etc/hadoop/conf/hdfs-site.xml";
-  /** Default hdfs ip is localhost. */
-  private String hdfsIp = "localhost";
-  /** Default hdfs port is 9000. */
-  private String hdfsPort = "9000";
-  /** Default DFS NameServices is hdfsnamespace. */
-  private String dfsNameServices = "hdfsnamespace.";
-  /** Default DFS HA name nodes are nn1 and nn2. */
-  private String dfsHaNamenodes = "nn1,nn2";
-  /** Default DFS HA automatic failover is enabled. */
-  private boolean dfsHaAutomaticFailoverEnabled = true;
-  /**
-   * Default DFS client failover proxy provider is
-   * "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
-   */
-  private String dfsClientFailoverProxyProvider =
-      "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider";
-  /** whether use kerberos to authenticate hdfs. */
-  private boolean useKerberos = false;
-  /** full path of kerberos keytab file. */
-  private String kerberosKeytabFilePath = "/path";
-  /** kerberos pricipal. */
-  private String kerberosPrincipal = "principal";
-  /** The acceptable error rate of bloom filter. */
-  private double bloomFilterErrorRate = 0.05;
-  /** The amount of data iterate each time. */
-  private int batchSize = 1000;
-
-  /** Maximum capacity of a TsBlock, allow up to two pages. */
-  private int maxTsBlockSizeInBytes = 128 * 1024;
-
-  /** Maximum number of lines in a single TsBlock. */
-  private int maxTsBlockLineNumber = 1000;
-
-  private int patternMatchingThreshold = 1000000;
-
-  private String hdfsFile = "org.apache.iotdb.hadoop.fileSystem.HDFSFile";
-
-  private String hdfsTsFileInput = "org.apache.iotdb.hadoop.fileSystem.HDFSInput";
-
-  private String hdfsTsFileOutput = "org.apache.iotdb.hadoop.fileSystem.HDFSOutput";
-
-  private String objectStorageFile = "org.apache.iotdb.os.fileSystem.OSFile";
-
-  private String objectStorageTsFileInput = "org.apache.iotdb.os.fileSystem.OSTsFileInput";
-
-  private String objectStorageTsFileOutput = "org.apache.iotdb.os.fileSystem.OSTsFileOutput";
-
-  /** customizedProperties, this should be empty by default. */
-  private Properties customizedProperties = new Properties();
-
-  public TSFileConfig() {
-    // do nothing because we already give default value to each field when they are being declared
-  }
-
-  public int getGroupSizeInByte() {
-    return groupSizeInByte;
-  }
-
-  public void setGroupSizeInByte(int groupSizeInByte) {
-    this.groupSizeInByte = groupSizeInByte;
-  }
-
-  public int getPageSizeInByte() {
-    return pageSizeInByte;
-  }
-
-  public void setPageSizeInByte(int pageSizeInByte) {
-    this.pageSizeInByte = pageSizeInByte;
-  }
-
-  public int getMaxNumberOfPointsInPage() {
-    return maxNumberOfPointsInPage;
-  }
-
-  public void setMaxNumberOfPointsInPage(int maxNumberOfPointsInPage) {
-    this.maxNumberOfPointsInPage = maxNumberOfPointsInPage;
-  }
-
-  public int getMaxDegreeOfIndexNode() {
-    return maxDegreeOfIndexNode;
-  }
-
-  public void setMaxDegreeOfIndexNode(int maxDegreeOfIndexNode) {
-    this.maxDegreeOfIndexNode = maxDegreeOfIndexNode;
-  }
-
-  public TSDataType getTimeSeriesDataType() {
-    return timeSeriesDataType;
-  }
-
-  // TS_2DIFF configuration
-
-  public void setTimeSeriesDataType(TSDataType timeSeriesDataType) {
-    this.timeSeriesDataType = timeSeriesDataType;
-  }
-
-  public int getMaxStringLength() {
-    return maxStringLength;
-  }
-
-  // Freq encoder configuration
-
-  public void setMaxStringLength(int maxStringLength) {
-    this.maxStringLength = maxStringLength;
-  }
-
-  public int getFloatPrecision() {
-    return floatPrecision;
-  }
-
-  public void setFloatPrecision(int floatPrecision) {
-    this.floatPrecision = floatPrecision;
-  }
-
-  public String getTimeEncoder() {
-    return timeEncoding;
-  }
-
-  // Compression configuration
-
-  public void setTimeEncoder(String timeEncoder) {
-    this.timeEncoding = timeEncoder;
-  }
-
-  // Don't change the following configuration
-
-  public String getValueEncoder() {
-    return valueEncoder;
-  }
-
-  public void setValueEncoder(String valueEncoder) {
-    this.valueEncoder = valueEncoder;
-  }
-
-  public int getRleBitWidth() {
-    return rleBitWidth;
-  }
-
-  public void setRleBitWidth(int rleBitWidth) {
-    this.rleBitWidth = rleBitWidth;
-  }
-
-  public int getDeltaBlockSize() {
-    return deltaBlockSize;
-  }
-
-  public void setDeltaBlockSize(int deltaBlockSize) {
-    this.deltaBlockSize = deltaBlockSize;
-  }
-
-  public String getFreqType() {
-    return freqType;
-  }
-
-  public void setFreqType(String freqType) {
-    this.freqType = freqType;
-  }
-
-  public double getPlaMaxError() {
-    return plaMaxError;
-  }
-
-  public void setPlaMaxError(double plaMaxError) {
-    this.plaMaxError = plaMaxError;
-  }
-
-  public double getSdtMaxError() {
-    return sdtMaxError;
-  }
-
-  public void setSdtMaxError(double sdtMaxError) {
-    this.sdtMaxError = sdtMaxError;
-  }
-
-  public double getDftSatisfyRate() {
-    return dftSatisfyRate;
-  }
-
-  public void setDftSatisfyRate(double dftSatisfyRate) {
-    this.dftSatisfyRate = dftSatisfyRate;
-  }
-
-  public CompressionType getCompressor() {
-    return compressor;
-  }
-
-  public void setCompressor(String compressor) {
-    this.compressor = CompressionType.valueOf(compressor);
-  }
-
-  public int getPageCheckSizeThreshold() {
-    return pageCheckSizeThreshold;
-  }
-
-  public void setPageCheckSizeThreshold(int pageCheckSizeThreshold) {
-    this.pageCheckSizeThreshold = pageCheckSizeThreshold;
-  }
-
-  public String getEndian() {
-    return endian;
-  }
-
-  public void setEndian(String endian) {
-    this.endian = endian;
-  }
-
-  public boolean isUseKerberos() {
-    return useKerberos;
-  }
-
-  public void setUseKerberos(boolean useKerberos) {
-    this.useKerberos = useKerberos;
-  }
-
-  public String getKerberosKeytabFilePath() {
-    return kerberosKeytabFilePath;
-  }
-
-  public void setKerberosKeytabFilePath(String kerberosKeytabFilePath) {
-    this.kerberosKeytabFilePath = kerberosKeytabFilePath;
-  }
-
-  public String getKerberosPrincipal() {
-    return kerberosPrincipal;
-  }
-
-  public void setKerberosPrincipal(String kerberosPrincipal) {
-    this.kerberosPrincipal = kerberosPrincipal;
-  }
-
-  public double getBloomFilterErrorRate() {
-    return bloomFilterErrorRate;
-  }
-
-  public void setBloomFilterErrorRate(double bloomFilterErrorRate) {
-    this.bloomFilterErrorRate = bloomFilterErrorRate;
-  }
-
-  public FSType[] getTSFileStorageFs() {
-    return this.tSFileStorageFs;
-  }
-
-  public void setTSFileStorageFs(FSType[] fileStorageFs) {
-    this.tSFileStorageFs = fileStorageFs;
-    FSUtils.reload();
-  }
-
-  public String getCoreSitePath() {
-    return coreSitePath;
-  }
-
-  public void setCoreSitePath(String coreSitePath) {
-    this.coreSitePath = coreSitePath;
-  }
-
-  public String getHdfsSitePath() {
-    return hdfsSitePath;
-  }
-
-  public void setHdfsSitePath(String hdfsSitePath) {
-    this.hdfsSitePath = hdfsSitePath;
-  }
-
-  public String[] getHdfsIp() {
-    return hdfsIp.split(",");
-  }
-
-  public void setHdfsIp(String[] hdfsIp) {
-    this.hdfsIp = String.join(",", hdfsIp);
-  }
-
-  public String getHdfsPort() {
-    return this.hdfsPort;
-  }
-
-  public void setHdfsPort(String hdfsPort) {
-    this.hdfsPort = hdfsPort;
-  }
-
-  public String getDfsNameServices() {
-    return dfsNameServices;
-  }
-
-  public void setDfsNameServices(String dfsNameServices) {
-    this.dfsNameServices = dfsNameServices;
-  }
-
-  public String[] getDfsHaNamenodes() {
-    return dfsHaNamenodes.split(",");
-  }
-
-  public void setDfsHaNamenodes(String[] dfsHaNamenodes) {
-    this.dfsHaNamenodes = String.join(",", dfsHaNamenodes);
-  }
-
-  public boolean isDfsHaAutomaticFailoverEnabled() {
-    return dfsHaAutomaticFailoverEnabled;
-  }
-
-  public void setDfsHaAutomaticFailoverEnabled(boolean dfsHaAutomaticFailoverEnabled) {
-    this.dfsHaAutomaticFailoverEnabled = dfsHaAutomaticFailoverEnabled;
-  }
-
-  public String getDfsClientFailoverProxyProvider() {
-    return dfsClientFailoverProxyProvider;
-  }
-
-  public void setDfsClientFailoverProxyProvider(String dfsClientFailoverProxyProvider) {
-    this.dfsClientFailoverProxyProvider = dfsClientFailoverProxyProvider;
-  }
-
-  public int getBatchSize() {
-    return batchSize;
-  }
-
-  public void setBatchSize(int batchSize) {
-    this.batchSize = batchSize;
-  }
-
-  public int getMaxTsBlockSizeInBytes() {
-    return maxTsBlockSizeInBytes;
-  }
-
-  public void setMaxTsBlockSizeInBytes(int maxTsBlockSizeInBytes) {
-    this.maxTsBlockSizeInBytes = maxTsBlockSizeInBytes;
-  }
-
-  public int getMaxTsBlockLineNumber() {
-    return maxTsBlockLineNumber;
-  }
-
-  public void setMaxTsBlockLineNumber(int maxTsBlockLineNumber) {
-    this.maxTsBlockLineNumber = maxTsBlockLineNumber;
-  }
-
-  public int getPatternMatchingThreshold() {
-    return patternMatchingThreshold;
-  }
-
-  public void setPatternMatchingThreshold(int patternMatchingThreshold) {
-    this.patternMatchingThreshold = patternMatchingThreshold;
-  }
-
-  public Properties getCustomizedProperties() {
-    return customizedProperties;
-  }
-
-  public void setCustomizedProperties(Properties customizedProperties) {
-    this.customizedProperties = customizedProperties;
-  }
-
-  public String getSprintzPredictScheme() {
-    return "fire";
-  }
-
-  public String getHdfsFile() {
-    return hdfsFile;
-  }
-
-  public void setHdfsFile(String hdfsFile) {
-    this.hdfsFile = hdfsFile;
-  }
-
-  public String getHdfsTsFileInput() {
-    return hdfsTsFileInput;
-  }
-
-  public void setHdfsTsFileInput(String hdfsTsFileInput) {
-    this.hdfsTsFileInput = hdfsTsFileInput;
-  }
-
-  public String getHdfsTsFileOutput() {
-    return hdfsTsFileOutput;
-  }
-
-  public void setHdfsTsFileOutput(String hdfsTsFileOutput) {
-    this.hdfsTsFileOutput = hdfsTsFileOutput;
-  }
-
-  public String getObjectStorageFile() {
-    return objectStorageFile;
-  }
-
-  public void setObjectStorageFile(String objectStorageFile) {
-    this.objectStorageFile = objectStorageFile;
-  }
-
-  public String getObjectStorageTsFileInput() {
-    return objectStorageTsFileInput;
-  }
-
-  public void setObjectStorageTsFileInput(String objectStorageTsFileInput) {
-    this.objectStorageTsFileInput = objectStorageTsFileInput;
-  }
-
-  public String getObjectStorageTsFileOutput() {
-    return objectStorageTsFileOutput;
-  }
-
-  public void setObjectStorageTsFileOutput(String objectStorageTsFileOutput) {
-    this.objectStorageTsFileOutput = objectStorageTsFileOutput;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/conf/TSFileDescriptor.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/conf/TSFileDescriptor.java
deleted file mode 100644
index 09db06c..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/conf/TSFileDescriptor.java
+++ /dev/null
@@ -1,202 +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.common.conf;
-
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.utils.Loader;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Paths;
-import java.util.Optional;
-import java.util.Properties;
-import java.util.Set;
-import java.util.function.Consumer;
-import java.util.function.Function;
-
-/** TSFileDescriptor is used to load TSFileConfig and provide configure information. */
-public class TSFileDescriptor {
-
-  private static final Logger logger = LoggerFactory.getLogger(TSFileDescriptor.class);
-  private final TSFileConfig conf = new TSFileConfig();
-
-  /** The constructor just visible for test. */
-  /* private */ TSFileDescriptor() {
-    init();
-  }
-
-  public static TSFileDescriptor getInstance() {
-    return TsfileDescriptorHolder.INSTANCE;
-  }
-
-  public TSFileConfig getConfig() {
-    return conf;
-  }
-
-  private void init() {
-    loadProperties().ifPresent(this::overwriteConfigByCustomSettings);
-  }
-
-  public void overwriteConfigByCustomSettings(Properties properties) {
-    PropertiesOverWriter writer = new PropertiesOverWriter(properties);
-
-    writer.setInt(conf::setGroupSizeInByte, "group_size_in_byte");
-    writer.setInt(conf::setPageSizeInByte, "page_size_in_byte");
-    if (conf.getPageSizeInByte() > conf.getGroupSizeInByte()) {
-      int groupSizeInByte = conf.getGroupSizeInByte();
-      logger.warn(
-          "page_size is greater than group size, will set it as the same with group size {}",
-          groupSizeInByte);
-      conf.setPageSizeInByte(groupSizeInByte);
-    }
-    writer.setInt(conf::setMaxNumberOfPointsInPage, "max_number_of_points_in_page");
-    writer.setInt(conf::setMaxDegreeOfIndexNode, "max_degree_of_index_node");
-    writer.setInt(conf::setMaxStringLength, "max_string_length");
-    writer.setInt(conf::setFloatPrecision, "float_precision");
-    writer.setString(conf::setValueEncoder, "value_encoder");
-    writer.setString(conf::setCompressor, "compressor");
-    writer.setInt(conf::setBatchSize, "batch_size");
-  }
-
-  private static class PropertiesOverWriter {
-
-    private final Properties properties;
-
-    public PropertiesOverWriter(Properties properties) {
-      if (properties == null) {
-        throw new NullPointerException("properties should not be null");
-      }
-      this.properties = properties;
-    }
-
-    public void setInt(Consumer<Integer> setter, String propertyKey) {
-      set(setter, propertyKey, Integer::parseInt);
-    }
-
-    public void setDouble(Consumer<Double> setter, String propertyKey) {
-      set(setter, propertyKey, Double::parseDouble);
-    }
-
-    public void setString(Consumer<String> setter, String propertyKey) {
-      set(setter, propertyKey, Function.identity());
-    }
-
-    private <T> void set(
-        Consumer<T> setter, String propertyKey, Function<String, T> propertyValueConverter) {
-      String value = this.properties.getProperty(propertyKey);
-
-      if (value != null) {
-        try {
-          T v = propertyValueConverter.apply(value);
-          setter.accept(v);
-        } catch (Exception e) {
-          logger.warn("invalid value for {}, use the default value", propertyKey);
-        }
-      }
-    }
-  }
-
-  private Optional<Properties> loadProperties() {
-    String file = detectPropertiesFile();
-    if (file != null) {
-      logger.info("try loading {} from {}", TSFileConfig.CONFIG_FILE_NAME, file);
-      return loadPropertiesFromFile(file);
-    } else {
-      logger.warn("not found {}, use the default configs.", TSFileConfig.CONFIG_FILE_NAME);
-      return Optional.empty();
-    }
-  }
-
-  private Optional<Properties> loadPropertiesFromFile(String filePath) {
-    try (FileInputStream fileInputStream = new FileInputStream(filePath)) {
-      Properties properties = new Properties();
-      properties.load(new InputStreamReader(fileInputStream, StandardCharsets.UTF_8));
-      return Optional.of(properties);
-    } catch (FileNotFoundException e) {
-      logger.warn("Fail to find config file {}", filePath);
-      return Optional.empty();
-    } catch (IOException e) {
-      logger.warn("read file ({}) failure, please check the access permissions.", filePath);
-      return Optional.empty();
-    }
-  }
-
-  private String detectPropertiesFile() {
-    String confDirectory = System.getProperty(TsFileConstant.TSFILE_CONF);
-    if (confDirectory != null) {
-      return Paths.get(confDirectory, TSFileConfig.CONFIG_FILE_NAME).toAbsolutePath().toString();
-    }
-    String tsFileHome = System.getProperty(TsFileConstant.TSFILE_HOME);
-    if (tsFileHome != null) {
-      return Paths.get(tsFileHome, "conf", TSFileConfig.CONFIG_FILE_NAME)
-          .toAbsolutePath()
-          .toString();
-    }
-
-    return detectPropertiesFromClassPath();
-  }
-
-  private static URL getResource(String filename, ClassLoader classLoader) {
-    return Loader.getResource(filename, classLoader);
-  }
-
-  private String detectPropertiesFromClassPath() {
-    ClassLoader classLoader = Loader.getClassLoaderOfObject(this);
-    URL u = getResource(TSFileConfig.CONFIG_FILE_NAME, classLoader);
-    if (u == null) {
-      return null;
-    } else {
-      multiplicityWarning(TSFileConfig.CONFIG_FILE_NAME, classLoader);
-      return u.getFile();
-    }
-  }
-
-  private void multiplicityWarning(String resource, ClassLoader classLoader) {
-    try {
-      Set<URI> uriSet = Loader.getResources(resource, classLoader);
-      if (uriSet.size() > 1) {
-        logger.warn("Resource [{}] occurs multiple times on the classpath", resource);
-        for (URI uri : uriSet) {
-          logger.warn("Resource [{}] occurs at [{}]", resource, uri);
-        }
-      }
-    } catch (IOException | URISyntaxException e) {
-      logger.error("Failed to get url list for {}", resource);
-    }
-  }
-
-  private static class TsfileDescriptorHolder {
-
-    private TsfileDescriptorHolder() {
-      throw new IllegalAccessError("Utility class");
-    }
-
-    private static final TSFileDescriptor INSTANCE = new TSFileDescriptor();
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/constant/JsonFormatConstant.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/constant/JsonFormatConstant.java
deleted file mode 100644
index f48615a..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/constant/JsonFormatConstant.java
+++ /dev/null
@@ -1,44 +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.common.constant;
-
-/** This class define several constant string variables used in tsfile schema's keys. */
-public class JsonFormatConstant {
-  public static final String JSON_SCHEMA = "schema";
-  public static final String DELTA_TYPE = "delta_type";
-  public static final String MEASUREMENT_UID = "measurement_id";
-  public static final String DATA_TYPE = "data_type";
-  public static final String MEASUREMENT_ENCODING = "encoding";
-  public static final String ENUM_VALUES = "enum_values";
-  public static final String ENUM_VALUES_SEPARATOR = ",";
-  public static final String MAX_POINT_NUMBER = "max_point_number";
-  public static final String COMPRESS_TYPE = "compressor";
-  public static final String FREQ_TYPE = "freq_type";
-  public static final String TSRECORD_SEPARATOR = ",";
-  public static final String MAX_STRING_LENGTH = "max_string_length";
-
-  public static final String ROW_GROUP_SIZE = "row_group_size";
-  public static final String PAGE_SIZE = "page_size";
-
-  public static final String DEFAULT_DELTA_TYPE = "default_delta_type";
-  public static final String PROPERTIES = "properties";
-
-  private JsonFormatConstant() {}
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/constant/QueryConstant.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/constant/QueryConstant.java
deleted file mode 100644
index 67e41ef..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/constant/QueryConstant.java
+++ /dev/null
@@ -1,33 +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.common.constant;
-
-public class QueryConstant {
-  public static final String RESERVED_TIME = "time";
-
-  public static final String BOOLEAN = "BOOLEAN";
-  public static final String INT32 = "INT32";
-  public static final String INT64 = "INT64";
-  public static final String FLOAT = "FLOAT";
-  public static final String DOUBLE = "DOUBLE";
-  public static final String BYTE_ARRAY = "BYTE_ARRAY";
-
-  private QueryConstant() {}
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/constant/TsFileConstant.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/constant/TsFileConstant.java
deleted file mode 100644
index ae3dc1b..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/constant/TsFileConstant.java
+++ /dev/null
@@ -1,52 +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.common.constant;
-
-import java.util.regex.Pattern;
-
-public class TsFileConstant {
-
-  public static final String TSFILE_SUFFIX = ".tsfile";
-  public static final String TSFILE_HOME = "TSFILE_HOME";
-  public static final String TSFILE_CONF = "TSFILE_CONF";
-  public static final String PATH_ROOT = "root";
-  public static final String TMP_SUFFIX = "tmp";
-  public static final String PATH_SEPARATOR = ".";
-  public static final char PATH_SEPARATOR_CHAR = '.';
-  public static final String PATH_SEPARATER_NO_REGEX = "\\.";
-  public static final char DOUBLE_QUOTE = '"';
-  public static final char BACK_QUOTE = '`';
-  public static final String BACK_QUOTE_STRING = "`";
-  public static final String DOUBLE_BACK_QUOTE_STRING = "``";
-
-  public static final byte TIME_COLUMN_MASK = (byte) 0x80;
-  public static final byte VALUE_COLUMN_MASK = (byte) 0x40;
-
-  // measurementID of aligned time chunk
-  public static final String TIME_COLUMN_ID = "";
-
-  private static final String IDENTIFIER_MATCHER = "([a-zA-Z0-9_\\u2E80-\\u9FFF]+)";
-  public static final Pattern IDENTIFIER_PATTERN = Pattern.compile(IDENTIFIER_MATCHER);
-
-  private static final String NODE_NAME_MATCHER = "(\\*{0,2}[a-zA-Z0-9_\\u2E80-\\u9FFF]+\\*{0,2})";
-  public static final Pattern NODE_NAME_PATTERN = Pattern.compile(NODE_NAME_MATCHER);
-
-  private TsFileConstant() {}
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/compress/ICompressor.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/compress/ICompressor.java
deleted file mode 100644
index cf1fa56..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/compress/ICompressor.java
+++ /dev/null
@@ -1,466 +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.compress;
-
-import org.apache.iotdb.tsfile.exception.compress.CompressionTypeNotSupportedException;
-import org.apache.iotdb.tsfile.exception.compress.GZIPCompressOverflowException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-
-import com.github.luben.zstd.Zstd;
-import net.jpountz.lz4.LZ4Compressor;
-import net.jpountz.lz4.LZ4Factory;
-import org.tukaani.xz.LZMA2Options;
-import org.tukaani.xz.XZInputStream;
-import org.tukaani.xz.XZOutputStream;
-import org.xerial.snappy.Snappy;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.util.zip.GZIPInputStream;
-import java.util.zip.GZIPOutputStream;
-
-import static org.apache.iotdb.tsfile.file.metadata.enums.CompressionType.GZIP;
-import static org.apache.iotdb.tsfile.file.metadata.enums.CompressionType.LZ4;
-import static org.apache.iotdb.tsfile.file.metadata.enums.CompressionType.LZMA2;
-import static org.apache.iotdb.tsfile.file.metadata.enums.CompressionType.SNAPPY;
-import static org.apache.iotdb.tsfile.file.metadata.enums.CompressionType.ZSTD;
-
-/** compress data according to type in schema. */
-public interface ICompressor extends Serializable {
-
-  static ICompressor getCompressor(String name) {
-    return getCompressor(CompressionType.valueOf(name));
-  }
-
-  /**
-   * get Compressor according to CompressionType.
-   *
-   * @param name CompressionType
-   * @return the Compressor of specified CompressionType
-   */
-  static ICompressor getCompressor(CompressionType name) {
-    if (name == null) {
-      throw new CompressionTypeNotSupportedException("NULL");
-    }
-    switch (name) {
-      case UNCOMPRESSED:
-        return new NoCompressor();
-      case SNAPPY:
-        return new SnappyCompressor();
-      case LZ4:
-        return new IOTDBLZ4Compressor();
-      case GZIP:
-        return new GZIPCompressor();
-      case ZSTD:
-        return new ZstdCompressor();
-      case LZMA2:
-        return new LZMA2Compressor();
-      default:
-        throw new CompressionTypeNotSupportedException(name.toString());
-    }
-  }
-
-  byte[] compress(byte[] data) throws IOException;
-
-  /**
-   * abstract method of compress. this method has an important overhead due to the fact that it
-   * needs to allocate a byte array to compress into, and then needs to resize this buffer to the
-   * actual compressed length.
-   *
-   * @return byte array of compressed data.
-   */
-  byte[] compress(byte[] data, int offset, int length) throws IOException;
-
-  /**
-   * abstract method of compress.
-   *
-   * @return byte length of compressed data.
-   */
-  int compress(byte[] data, int offset, int length, byte[] compressed) throws IOException;
-
-  /**
-   * If the data is large, this function is better than byte[].
-   *
-   * @param data MUST be DirectByteBuffer for Snappy.
-   * @param compressed MUST be DirectByteBuffer for Snappy.
-   * @return byte length of compressed data.
-   */
-  int compress(ByteBuffer data, ByteBuffer compressed) throws IOException;
-
-  /**
-   * Get the maximum byte size needed for compressing data of the given byte size. For GZIP, this
-   * method is insecure and may cause {@code GZIPCompressOverflowException}
-   *
-   * @param uncompressedDataSize byte size of the data to compress
-   * @return maximum byte size of the compressed data
-   */
-  int getMaxBytesForCompression(int uncompressedDataSize);
-
-  CompressionType getType();
-
-  /** NoCompressor will do nothing for data and return the input data directly. */
-  class NoCompressor implements ICompressor {
-
-    @Override
-    public byte[] compress(byte[] data) {
-      return data;
-    }
-
-    @Override
-    public byte[] compress(byte[] data, int offset, int length) throws IOException {
-      throw new IOException("No Compressor does not support compression function");
-    }
-
-    @Override
-    public int compress(byte[] data, int offset, int length, byte[] compressed) throws IOException {
-      throw new IOException("No Compressor does not support compression function");
-    }
-
-    @Override
-    public int compress(ByteBuffer data, ByteBuffer compressed) throws IOException {
-      throw new IOException("No Compressor does not support compression function");
-    }
-
-    @Override
-    public int getMaxBytesForCompression(int uncompressedDataSize) {
-      return uncompressedDataSize;
-    }
-
-    @Override
-    public CompressionType getType() {
-      return CompressionType.UNCOMPRESSED;
-    }
-  }
-
-  class SnappyCompressor implements ICompressor {
-
-    @Override
-    public byte[] compress(byte[] data) throws IOException {
-      if (data == null) {
-        return new byte[0];
-      }
-      return Snappy.compress(data);
-    }
-
-    @Override
-    public byte[] compress(byte[] data, int offset, int length) throws IOException {
-      byte[] maxCompressed = new byte[getMaxBytesForCompression(length)];
-      int compressedSize = Snappy.compress(data, offset, length, maxCompressed, 0);
-      byte[] compressed = null;
-      if (compressedSize < maxCompressed.length) {
-        compressed = new byte[compressedSize];
-        System.arraycopy(maxCompressed, 0, compressed, 0, compressedSize);
-      } else {
-        compressed = maxCompressed;
-      }
-      return compressed;
-    }
-
-    @Override
-    public int compress(byte[] data, int offset, int length, byte[] compressed) throws IOException {
-      return Snappy.compress(data, offset, length, compressed, 0);
-    }
-
-    @Override
-    public int compress(ByteBuffer data, ByteBuffer compressed) throws IOException {
-      return Snappy.compress(data, compressed);
-    }
-
-    @Override
-    public int getMaxBytesForCompression(int uncompressedDataSize) {
-      return Snappy.maxCompressedLength(uncompressedDataSize);
-    }
-
-    @Override
-    public CompressionType getType() {
-      return SNAPPY;
-    }
-  }
-
-  class IOTDBLZ4Compressor implements ICompressor {
-    /**
-     * This instance should be cached to avoid performance problem. See:
-     * https://github.com/lz4/lz4-java/issues/152 and https://github.com/apache/spark/pull/24905
-     */
-    private static final LZ4Factory factory = LZ4Factory.fastestInstance();
-
-    private static final LZ4Compressor compressor = factory.fastCompressor();
-
-    public static LZ4Factory getFactory() {
-      return factory;
-    }
-
-    public IOTDBLZ4Compressor() {
-      super();
-    }
-
-    @Override
-    public byte[] compress(byte[] data) {
-      if (data == null) {
-        return new byte[0];
-      }
-      return compressor.compress(data);
-    }
-
-    @Override
-    public byte[] compress(byte[] data, int offset, int length) throws IOException {
-      return compressor.compress(data, offset, length);
-    }
-
-    @Override
-    public int compress(byte[] data, int offset, int length, byte[] compressed) {
-      return compressor.compress(data, offset, length, compressed, 0);
-    }
-
-    @Override
-    public int compress(ByteBuffer data, ByteBuffer compressed) {
-      int startPosition = compressed.position();
-      compressor.compress(data, compressed);
-      return compressed.position() - startPosition;
-    }
-
-    @Override
-    public int getMaxBytesForCompression(int uncompressedDataSize) {
-      return compressor.maxCompressedLength(uncompressedDataSize);
-    }
-
-    @Override
-    public CompressionType getType() {
-      return LZ4;
-    }
-  }
-
-  class GZIPCompress {
-    public static byte[] compress(byte[] data) throws IOException {
-      ByteArrayOutputStream out = new ByteArrayOutputStream();
-      GZIPOutputStream gzip = new GZIPOutputStream(out);
-      gzip.write(data);
-      gzip.close();
-      return out.toByteArray();
-    }
-
-    public static byte[] uncompress(byte[] data) throws IOException {
-      ByteArrayOutputStream out = new ByteArrayOutputStream();
-      ByteArrayInputStream in = new ByteArrayInputStream(data);
-
-      GZIPInputStream ungzip = new GZIPInputStream(in);
-      byte[] buffer = new byte[256];
-      int n;
-      while ((n = ungzip.read(buffer)) > 0) {
-        out.write(buffer, 0, n);
-      }
-      in.close();
-
-      return out.toByteArray();
-    }
-  }
-
-  class GZIPCompressor implements ICompressor {
-    @Override
-    public byte[] compress(byte[] data) throws IOException {
-      if (null == data) {
-        return new byte[0];
-      }
-
-      return GZIPCompress.compress(data);
-    }
-
-    @Override
-    public byte[] compress(byte[] data, int offset, int length) throws IOException {
-      byte[] dataBefore = new byte[length];
-      System.arraycopy(data, offset, dataBefore, 0, length);
-      return GZIPCompress.compress(dataBefore);
-    }
-
-    /** @exception GZIPCompressOverflowException if compressed byte array is too small. */
-    @Override
-    public int compress(byte[] data, int offset, int length, byte[] compressed) throws IOException {
-      byte[] dataBefore = new byte[length];
-      System.arraycopy(data, offset, dataBefore, 0, length);
-      byte[] res = GZIPCompress.compress(dataBefore);
-      if (res.length > compressed.length) {
-        throw new GZIPCompressOverflowException();
-      }
-      System.arraycopy(res, 0, compressed, 0, res.length);
-      return res.length;
-    }
-
-    /** @exception GZIPCompressOverflowException if compressed ByteBuffer is too small. */
-    @Override
-    public int compress(ByteBuffer data, ByteBuffer compressed) throws IOException {
-      int length = data.remaining();
-      byte[] dataBefore = new byte[length];
-      data.get(dataBefore, 0, length);
-      byte[] res = GZIPCompress.compress(dataBefore);
-      if (res.length > compressed.capacity()) {
-        throw new GZIPCompressOverflowException();
-      }
-      compressed.put(res);
-      return res.length;
-    }
-
-    @Override
-    public int getMaxBytesForCompression(int uncompressedDataSize) {
-      // hard to estimate
-      return Math.max(40 + uncompressedDataSize / 2, uncompressedDataSize);
-    }
-
-    @Override
-    public CompressionType getType() {
-      return GZIP;
-    }
-  }
-
-  class ZstdCompressor implements ICompressor {
-
-    private int compressionLevel;
-
-    public ZstdCompressor() {
-      super();
-      compressionLevel = Zstd.maxCompressionLevel();
-    }
-
-    @Override
-    public byte[] compress(byte[] data) throws IOException {
-      return Zstd.compress(data, compressionLevel);
-    }
-
-    @Override
-    public byte[] compress(byte[] data, int offset, int length) throws IOException {
-      if (data == null) {
-        return new byte[0];
-      }
-      byte[] compressedData = new byte[getMaxBytesForCompression(length)];
-      int compressedSize = compress(data, offset, length, compressedData);
-      byte[] result = new byte[compressedSize];
-      System.arraycopy(compressedData, 0, result, 0, compressedSize);
-      return result;
-    }
-
-    @Override
-    public int compress(byte[] data, int offset, int length, byte[] compressed) throws IOException {
-      return (int)
-          Zstd.compressByteArray(
-              compressed, 0, compressed.length, data, offset, length, compressionLevel);
-    }
-
-    /**
-     * @param data MUST be DirectByteBuffer for Zstd.
-     * @param compressed MUST be DirectByteBuffer for Zstd.
-     * @return byte length of compressed data.
-     */
-    @Override
-    public int compress(ByteBuffer data, ByteBuffer compressed) throws IOException {
-      return Zstd.compress(compressed, data, compressionLevel);
-    }
-
-    @Override
-    public int getMaxBytesForCompression(int uncompressedDataSize) {
-      return (int) Zstd.compressBound(uncompressedDataSize);
-    }
-
-    @Override
-    public CompressionType getType() {
-      return ZSTD;
-    }
-  }
-
-  class LZMA2Compress {
-
-    public static byte[] compress(byte[] data) throws IOException {
-      LZMA2Options options = new LZMA2Options();
-      ByteArrayOutputStream out = new ByteArrayOutputStream();
-      XZOutputStream lzma2 = new XZOutputStream(out, options);
-      lzma2.write(data);
-      lzma2.close();
-      byte[] r = out.toByteArray();
-      return r;
-    }
-
-    public static byte[] uncompress(byte[] data) throws IOException {
-      ByteArrayOutputStream out = new ByteArrayOutputStream();
-      ByteArrayInputStream in = new ByteArrayInputStream(data);
-
-      XZInputStream unlzma2 = new XZInputStream(in);
-
-      byte[] buffer = new byte[256];
-      int n;
-      while ((n = unlzma2.read(buffer)) > 0) {
-        out.write(buffer, 0, n);
-      }
-      in.close();
-      byte[] r = out.toByteArray();
-      return r;
-    }
-  }
-
-  class LZMA2Compressor implements ICompressor {
-
-    @Override
-    public byte[] compress(byte[] data) throws IOException {
-      if (null == data) {
-        return new byte[0];
-      }
-      byte[] r = LZMA2Compress.compress(data);
-      return r;
-    }
-
-    @Override
-    public byte[] compress(byte[] data, int offset, int length) throws IOException {
-      byte[] dataBefore = new byte[length];
-      System.arraycopy(data, offset, dataBefore, 0, length);
-      byte[] r = LZMA2Compress.compress(dataBefore);
-      return r;
-    }
-
-    @Override
-    public int compress(byte[] data, int offset, int length, byte[] compressed) throws IOException {
-      byte[] dataBefore = new byte[length];
-      System.arraycopy(data, offset, dataBefore, 0, length);
-      byte[] res = LZMA2Compress.compress(dataBefore);
-      System.arraycopy(res, 0, compressed, 0, res.length);
-      return res.length;
-    }
-
-    @Override
-    public int compress(ByteBuffer data, ByteBuffer compressed) throws IOException {
-      int length = data.remaining();
-      byte[] dataBefore = new byte[length];
-      data.get(dataBefore, 0, length);
-      byte[] res = LZMA2Compress.compress(dataBefore);
-      compressed.put(res);
-      return res.length;
-    }
-
-    @Override
-    public int getMaxBytesForCompression(int uncompressedDataSize) {
-      // hard to estimate
-      return 100 + uncompressedDataSize;
-    }
-
-    @Override
-    public CompressionType getType() {
-      return LZMA2;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/compress/IUnCompressor.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/compress/IUnCompressor.java
deleted file mode 100644
index f2d40dc..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/compress/IUnCompressor.java
+++ /dev/null
@@ -1,405 +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.compress;
-
-import org.apache.iotdb.tsfile.exception.compress.CompressionTypeNotSupportedException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-
-import com.github.luben.zstd.Zstd;
-import net.jpountz.lz4.LZ4Compressor;
-import net.jpountz.lz4.LZ4SafeDecompressor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xerial.snappy.Snappy;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-/** uncompress data according to type in metadata. */
-public interface IUnCompressor {
-
-  /**
-   * get the UnCompressor based on the CompressionType.
-   *
-   * @param name CompressionType
-   * @return the UnCompressor of specified CompressionType
-   */
-  static IUnCompressor getUnCompressor(CompressionType name) {
-    if (name == null) {
-      throw new CompressionTypeNotSupportedException("NULL");
-    }
-    switch (name) {
-      case UNCOMPRESSED:
-        return new NoUnCompressor();
-      case SNAPPY:
-        return new SnappyUnCompressor();
-      case LZ4:
-        return new LZ4UnCompressor();
-      case GZIP:
-        return new GZIPUnCompressor();
-      case ZSTD:
-        return new ZstdUnCompressor();
-      case LZMA2:
-        return new LZMA2UnCompressor();
-      default:
-        throw new CompressionTypeNotSupportedException(name.toString());
-    }
-  }
-
-  int getUncompressedLength(byte[] array, int offset, int length) throws IOException;
-
-  /**
-   * get the uncompressed length.
-   *
-   * @param buffer MUST be DirectByteBuffer
-   */
-  int getUncompressedLength(ByteBuffer buffer) throws IOException;
-
-  /**
-   * uncompress the byte array.
-   *
-   * @param byteArray to be uncompressed bytes
-   * @return bytes after uncompressed
-   */
-  byte[] uncompress(byte[] byteArray) throws IOException;
-
-  /**
-   * uncompress the byte array.
-   *
-   * @param byteArray -to be uncompressed bytes
-   * @param offset -offset
-   * @param length -length
-   * @param output -output byte
-   * @param outOffset -
-   * @return the valid length of the output array
-   */
-  int uncompress(byte[] byteArray, int offset, int length, byte[] output, int outOffset)
-      throws IOException;
-
-  /**
-   * if the data is large, using this function is better.
-   *
-   * @param compressed MUST be DirectByteBuffer
-   * @param uncompressed MUST be DirectByteBuffer
-   */
-  int uncompress(ByteBuffer compressed, ByteBuffer uncompressed) throws IOException;
-
-  CompressionType getCodecName();
-
-  class NoUnCompressor implements IUnCompressor {
-
-    @Override
-    public int getUncompressedLength(byte[] array, int offset, int length) {
-      return length;
-    }
-
-    @Override
-    public int getUncompressedLength(ByteBuffer buffer) {
-      return buffer.remaining();
-    }
-
-    @Override
-    public byte[] uncompress(byte[] byteArray) {
-      return byteArray;
-    }
-
-    @Override
-    public int uncompress(byte[] byteArray, int offset, int length, byte[] output, int outOffset) {
-      System.arraycopy(byteArray, offset, output, outOffset, length);
-      return length;
-    }
-
-    @Override
-    public int uncompress(ByteBuffer compressed, ByteBuffer uncompressed) throws IOException {
-      throw new IOException("NoUnCompressor does not support this method.");
-    }
-
-    @Override
-    public CompressionType getCodecName() {
-      return CompressionType.UNCOMPRESSED;
-    }
-  }
-
-  class SnappyUnCompressor implements IUnCompressor {
-
-    private static final Logger logger = LoggerFactory.getLogger(SnappyUnCompressor.class);
-
-    @Override
-    public int getUncompressedLength(byte[] array, int offset, int length) throws IOException {
-      return Snappy.uncompressedLength(array, offset, length);
-    }
-
-    @Override
-    public int getUncompressedLength(ByteBuffer buffer) throws IOException {
-      return Snappy.uncompressedLength(buffer);
-    }
-
-    @Override
-    public byte[] uncompress(byte[] bytes) {
-      if (bytes == null) {
-        return new byte[0];
-      }
-
-      try {
-        return Snappy.uncompress(bytes);
-      } catch (IOException e) {
-        logger.error(
-            "tsfile-compression SnappyUnCompressor: errors occurs when uncompress input byte", e);
-      }
-      return new byte[0];
-    }
-
-    @Override
-    public int uncompress(byte[] byteArray, int offset, int length, byte[] output, int outOffset)
-        throws IOException {
-      return Snappy.uncompress(byteArray, offset, length, output, outOffset);
-    }
-
-    @Override
-    public int uncompress(ByteBuffer compressed, ByteBuffer uncompressed) {
-      if (compressed == null || !compressed.hasRemaining()) {
-        return 0;
-      }
-
-      try {
-        return Snappy.uncompress(compressed, uncompressed);
-      } catch (IOException e) {
-        logger.error(
-            "tsfile-compression SnappyUnCompressor: errors occurs when uncompress input byte", e);
-      }
-      return 0;
-    }
-
-    @Override
-    public CompressionType getCodecName() {
-      return CompressionType.SNAPPY;
-    }
-  }
-
-  class LZ4UnCompressor implements IUnCompressor {
-
-    private static final Logger logger = LoggerFactory.getLogger(LZ4Compressor.class);
-    private static final String UNCOMPRESS_INPUT_ERROR =
-        "tsfile-compression LZ4UnCompressor: errors occurs when uncompress input byte";
-
-    private static final int MAX_COMPRESS_RATIO = 255;
-    private static final LZ4SafeDecompressor decompressor =
-        ICompressor.IOTDBLZ4Compressor.getFactory().safeDecompressor();
-
-    public LZ4UnCompressor() {}
-
-    @Override
-    public int getUncompressedLength(byte[] array, int offset, int length) {
-      throw new UnsupportedOperationException("unsupported get uncompress length");
-    }
-
-    @Override
-    public int getUncompressedLength(ByteBuffer buffer) {
-      throw new UnsupportedOperationException("unsupported get uncompress length");
-    }
-
-    /**
-     * We don't recommend using this method because we have to allocate MAX_COMPRESS_RATIO *
-     * compressedSize to ensure uncompress safety, you can use other method if you know the
-     * uncompressed size
-     */
-    @Override
-    public byte[] uncompress(byte[] bytes) throws IOException {
-      if (bytes == null) {
-        return new byte[0];
-      }
-
-      try {
-        return decompressor.decompress(bytes, MAX_COMPRESS_RATIO * bytes.length);
-      } catch (RuntimeException e) {
-        logger.error(UNCOMPRESS_INPUT_ERROR, e);
-        throw new IOException(e);
-      }
-    }
-
-    @Override
-    public int uncompress(byte[] byteArray, int offset, int length, byte[] output, int outOffset)
-        throws IOException {
-      try {
-        return decompressor.decompress(byteArray, offset, length, output, outOffset);
-      } catch (RuntimeException e) {
-        logger.error(UNCOMPRESS_INPUT_ERROR, e);
-        throw new IOException(e);
-      }
-    }
-
-    @Override
-    public int uncompress(ByteBuffer compressed, ByteBuffer uncompressed) throws IOException {
-      if (compressed == null || !compressed.hasRemaining()) {
-        return 0;
-      }
-
-      try {
-        decompressor.decompress(compressed, uncompressed);
-        return compressed.limit();
-      } catch (RuntimeException e) {
-        logger.error(UNCOMPRESS_INPUT_ERROR, e);
-        throw new IOException(e);
-      }
-    }
-
-    @Override
-    public CompressionType getCodecName() {
-      return CompressionType.LZ4;
-    }
-  }
-
-  class GZIPUnCompressor implements IUnCompressor {
-
-    @Override
-    public int getUncompressedLength(byte[] array, int offset, int length) {
-      throw new UnsupportedOperationException("unsupported get uncompress length");
-    }
-
-    @Override
-    public int getUncompressedLength(ByteBuffer buffer) {
-      throw new UnsupportedOperationException("unsupported get uncompress length");
-    }
-
-    @Override
-    public byte[] uncompress(byte[] byteArray) throws IOException {
-      if (null == byteArray) {
-        return new byte[0];
-      }
-
-      return ICompressor.GZIPCompress.uncompress(byteArray);
-    }
-
-    @Override
-    public int uncompress(byte[] byteArray, int offset, int length, byte[] output, int outOffset)
-        throws IOException {
-      byte[] dataBefore = new byte[length];
-      System.arraycopy(byteArray, offset, dataBefore, 0, length);
-      byte[] res = ICompressor.GZIPCompress.uncompress(dataBefore);
-      System.arraycopy(res, 0, output, outOffset, res.length);
-      return res.length;
-    }
-
-    @Override
-    public int uncompress(ByteBuffer compressed, ByteBuffer uncompressed) throws IOException {
-      int length = compressed.remaining();
-      byte[] dataBefore = new byte[length];
-      compressed.get(dataBefore, 0, length);
-
-      byte[] res = ICompressor.GZIPCompress.uncompress(dataBefore);
-      uncompressed.put(res);
-
-      return res.length;
-    }
-
-    @Override
-    public CompressionType getCodecName() {
-      return CompressionType.GZIP;
-    }
-  }
-
-  class ZstdUnCompressor implements IUnCompressor {
-
-    @Override
-    public int getUncompressedLength(byte[] array, int offset, int length) throws IOException {
-      return (int) Zstd.decompressedSize(array, offset, length);
-    }
-
-    @Override
-    public int getUncompressedLength(ByteBuffer buffer) throws IOException {
-      return (int) Zstd.decompressedSize(buffer);
-    }
-
-    @Override
-    public byte[] uncompress(byte[] byteArray) throws IOException {
-      return Zstd.decompress(byteArray, getUncompressedLength(byteArray, 0, byteArray.length));
-    }
-
-    @Override
-    public int uncompress(byte[] byteArray, int offset, int length, byte[] output, int outOffset)
-        throws IOException {
-      return (int)
-          Zstd.decompressByteArray(
-              output, outOffset, output.length, byteArray, offset, byteArray.length);
-    }
-
-    /**
-     * @param compressed MUST be DirectByteBuffer for Zstd.
-     * @param uncompressed MUST be DirectByteBuffer for Zstd.
-     * @return byte length of compressed data.
-     */
-    @Override
-    public int uncompress(ByteBuffer compressed, ByteBuffer uncompressed) throws IOException {
-      return Zstd.decompress(uncompressed, compressed);
-    }
-
-    @Override
-    public CompressionType getCodecName() {
-      return CompressionType.ZSTD;
-    }
-  }
-
-  class LZMA2UnCompressor implements IUnCompressor {
-
-    @Override
-    public int getUncompressedLength(byte[] array, int offset, int length) {
-      throw new UnsupportedOperationException("unsupported get uncompress length");
-    }
-
-    @Override
-    public int getUncompressedLength(ByteBuffer buffer) {
-      throw new UnsupportedOperationException("unsupported get uncompress length");
-    }
-
-    @Override
-    public byte[] uncompress(byte[] byteArray) throws IOException {
-      if (null == byteArray) {
-        return new byte[0];
-      }
-      return ICompressor.LZMA2Compress.uncompress(byteArray);
-    }
-
-    @Override
-    public int uncompress(byte[] byteArray, int offset, int length, byte[] output, int outOffset)
-        throws IOException {
-      byte[] dataBefore = new byte[length];
-      System.arraycopy(byteArray, offset, dataBefore, 0, length);
-      byte[] res = ICompressor.LZMA2Compress.uncompress(dataBefore);
-      System.arraycopy(res, 0, output, outOffset, res.length);
-      return res.length;
-    }
-
-    @Override
-    public int uncompress(ByteBuffer compressed, ByteBuffer uncompressed) throws IOException {
-      int length = compressed.remaining();
-      byte[] dataBefore = new byte[length];
-      compressed.get(dataBefore, 0, length);
-
-      byte[] res = ICompressor.LZMA2Compress.uncompress(dataBefore);
-      uncompressed.put(res);
-      return res.length;
-    }
-
-    @Override
-    public CompressionType getCodecName() {
-      return CompressionType.LZMA2;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/bitpacking/IntPacker.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/bitpacking/IntPacker.java
deleted file mode 100644
index bada5a6..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/bitpacking/IntPacker.java
+++ /dev/null
@@ -1,162 +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.encoding.bitpacking;
-
-/**
- * This class is used to encode(decode) Integer in Java with specified bit-width. User need to
- * guarantee that the length of every given Integer in binary mode is less than or equal to the
- * bit-width.
- *
- * <p>e.g., if bit-width is 4, then Integer '16'(10000)b is not allowed but '15'(1111)b is allowed.
- */
-public class IntPacker {
-  /*
-   * For a full example, Width: 3 Input: 5 4 7 3 0 1 3 2
-   * Output:
-   * +-----------------------+ +-----------------------+ +-----------------------+
-   * |1 |0 |1 |1 |0 |0 |1 |1 | |1 |0 |1 |1 |0 |0 |0 |0 | |0 |1 |0 |1 |1 |0 |1 |0 |
-   * +-----------------------+ +-----------------------+ +-----------------------+
-   * +-----+ +-----+ +---------+ +-----+ +-----+ +---------+ +-----+ +-----+ 5 4 7
-   * 3 0 1 3 2
-   */
-  /** Number of Integers for each pack operation. */
-  private static final int NUM_OF_INTS = 8;
-  /** bit-width. */
-  private int width;
-
-  public IntPacker(int width) {
-    this.width = width;
-  }
-
-  /**
-   * Encode 8 ({@link IntPacker#NUM_OF_INTS}) Integers from the array 'values' with specified
-   * bit-width to bytes.
-   *
-   * @param values - array where '8 Integers' are in
-   * @param offset - the offset of first Integer to be encoded
-   * @param buf - encoded bytes, buf size must be equal to ({@link IntPacker#NUM_OF_INTS} * {@link
-   *     IntPacker#width} / 8)
-   */
-  public void pack8Values(int[] values, int offset, byte[] buf) {
-    int bufIdx = 0;
-    int valueIdx = offset;
-    // remaining bits for the current unfinished Integer
-    int leftBit = 0;
-
-    while (valueIdx < NUM_OF_INTS + offset) {
-      // buffer is used for saving 32 bits as a part of result
-      int buffer = 0;
-      // remaining size of bits in the 'buffer'
-      int leftSize = 32;
-
-      // encode the left bits of current Integer to 'buffer'
-      if (leftBit > 0) {
-        buffer |= (values[valueIdx] << (32 - leftBit));
-        leftSize -= leftBit;
-        leftBit = 0;
-        valueIdx++;
-      }
-
-      while (leftSize >= width && valueIdx < NUM_OF_INTS + offset) {
-        // encode one Integer to the 'buffer'
-        buffer |= (values[valueIdx] << (leftSize - width));
-        leftSize -= width;
-        valueIdx++;
-      }
-      // If the remaining space of the buffer can not save the bits for one Integer,
-      if (leftSize > 0 && valueIdx < NUM_OF_INTS + offset) {
-        // put the first 'leftSize' bits of the Integer into remaining space of the
-        // buffer
-        buffer |= (values[valueIdx] >>> (width - leftSize));
-        leftBit = width - leftSize;
-      }
-
-      // put the buffer into the final result
-      for (int j = 0; j < 4; j++) {
-        buf[bufIdx] = (byte) ((buffer >>> ((3 - j) * 8)) & 0xFF);
-        bufIdx++;
-        if (bufIdx >= width) {
-          return;
-        }
-      }
-    }
-  }
-
-  /**
-   * decode Integers from byte array.
-   *
-   * @param buf - array where bytes are in.
-   * @param offset - offset of first byte to be decoded in buf
-   * @param values - decoded result , the length of 'values' should be @{link IntPacker#NUM_OF_INTS}
-   */
-  public void unpack8Values(byte[] buf, int offset, int[] values) {
-    int byteIdx = offset;
-    long buffer = 0;
-    // total bits which have read from 'buf' to 'buffer'. i.e.,
-    // number of available bits to be decoded.
-    int totalBits = 0;
-    int valueIdx = 0;
-
-    while (valueIdx < NUM_OF_INTS) {
-      // If current available bits are not enough to decode one Integer,
-      // then add next byte from buf to 'buffer' until totalBits >= width
-      while (totalBits < width) {
-        buffer = (buffer << 8) | (buf[byteIdx] & 0xFF);
-        byteIdx++;
-        totalBits += 8;
-      }
-
-      // If current available bits are enough to decode one Integer,
-      // then decode one Integer one by one until left bits in 'buffer' is
-      // not enough to decode one Integer.
-      while (totalBits >= width && valueIdx < 8) {
-        values[valueIdx] = (int) (buffer >>> (totalBits - width));
-        valueIdx++;
-        totalBits -= width;
-        buffer = buffer & ((1 << totalBits) - 1);
-      }
-    }
-  }
-
-  /**
-   * decode all values from 'buf' with specified offset and length decoded result will be saved in
-   * the array named 'values'.
-   *
-   * @param buf array where all bytes are in.
-   * @param length length of bytes to be decoded in buf.
-   * @param values decoded result.
-   */
-  public void unpackAllValues(byte[] buf, int length, int[] values) {
-    int idx = 0;
-    int k = 0;
-    while (idx < length) {
-      int[] tv = new int[8];
-      // decode 8 values one time, current result will be saved in the array named 'tv'
-      unpack8Values(buf, idx, tv);
-      System.arraycopy(tv, 0, values, k, 8);
-      idx += width;
-      k += 8;
-    }
-  }
-
-  public void setWidth(int width) {
-    this.width = width;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/bitpacking/LongPacker.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/bitpacking/LongPacker.java
deleted file mode 100644
index c6eabe5..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/bitpacking/LongPacker.java
+++ /dev/null
@@ -1,176 +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.encoding.bitpacking;
-
-/**
- * This class is used to encode(decode) Long in Java with specified bit-width. User need to
- * guarantee that the length of every given Long in binary mode is less than or equal to the
- * bit-width.
- *
- * <p>e.g., if bit-width is 31, then Long '2147483648'(2^31) is not allowed but '2147483647'(2^31-1)
- * is allowed.
- */
-public class LongPacker {
-  /*
-   * For a full example, Width: 3 Input: 5 4 7 3 0 1 3 2
-   * Output:
-   * +-----------------------+ +-----------------------+ +-----------------------+
-   * |1 |0 |1 |1 |0 |0 |1 |1 | |1 |0 |1 |1 |0 |0 |0 |0 | |0 |1 |0 |1 |1 |0 |1 |0 |
-   * +-----------------------+ +-----------------------+ +-----------------------+
-   * +-----+ +-----+ +---------+ +-----+ +-----+ +---------+ +-----+ +-----+ 5 4 7
-   * 3 0 1 3 2
-   */
-  /** Number of Long values for each pack operation. */
-  private static final int NUM_OF_LONGS = 8;
-  /** bit-width. */
-  private int width;
-
-  public LongPacker(int width) {
-    this.width = width;
-  }
-
-  /**
-   * Encode 8 ({@link LongPacker#NUM_OF_LONGS}) Longs from the array 'values' with specified
-   * bit-width to bytes.
-   *
-   * @param values - array where '8 Longs' are in
-   * @param offset - the offset of first Long to be encoded
-   * @param buf - encoded bytes, buf size must be equal to ({@link LongPacker#NUM_OF_LONGS}} *
-   *     {@link IntPacker#width} / 8)
-   */
-  public void pack8Values(long[] values, int offset, byte[] buf) {
-
-    int bufIdx = 0;
-    int valueIdx = offset;
-    // remaining bits for the current unfinished Integer
-    int leftBit = 0;
-
-    while (valueIdx < NUM_OF_LONGS + offset) {
-      // buffer is used for saving 64 bits as a part of result
-      long buffer = 0;
-      // remaining size of bits in the 'buffer'
-      int leftSize = 64;
-
-      // encode the left bits of current Long to 'buffer'
-      if (leftBit > 0) {
-        buffer |= (values[valueIdx] << (64 - leftBit));
-        leftSize -= leftBit;
-        leftBit = 0;
-        valueIdx++;
-      }
-
-      while (leftSize >= width && valueIdx < NUM_OF_LONGS + offset) {
-        // encode one Long to the 'buffer'
-        buffer |= (values[valueIdx] << (leftSize - width));
-        leftSize -= width;
-        valueIdx++;
-      }
-      // If the remaining space of the buffer can not save the bits for one Long
-      if (leftSize > 0 && valueIdx < NUM_OF_LONGS + offset) {
-        // put the first 'leftSize' bits of the Long into remaining space of the buffer
-        buffer |= (values[valueIdx] >>> (width - leftSize));
-        leftBit = width - leftSize;
-      }
-
-      // put the buffer into the final result
-      for (int j = 0; j < 8; j++) {
-        buf[bufIdx] = (byte) ((buffer >>> ((8 - j - 1) * 8)) & 0xFF);
-        bufIdx++;
-        if (bufIdx >= width * 8 / 8) {
-          return;
-        }
-      }
-    }
-  }
-
-  /**
-   * decode values from byte array.
-   *
-   * @param buf - array where bytes are in.
-   * @param offset - offset of first byte to be decoded in buf
-   * @param values - decoded result , the size of values should be 8
-   */
-  public void unpack8Values(byte[] buf, int offset, long[] values) {
-    int byteIdx = offset;
-    int valueIdx = 0;
-    // left bit(s) available for current byte in 'buf'
-    int leftBits = 8;
-    // bits that has been read for current long value which is to be decoded
-    int totalBits = 0;
-
-    // decode long value one by one
-    while (valueIdx < 8) {
-      // set all the 64 bits in current value to '0'
-      values[valueIdx] = 0;
-      // read until 'totalBits' is equal to width
-      while (totalBits < width) {
-        // If 'leftBits' in current byte belongs to current long value
-        if (width - totalBits >= leftBits) {
-          // then put left bits in current byte to current long value
-          values[valueIdx] = values[valueIdx] << leftBits;
-          values[valueIdx] = values[valueIdx] | (((1L << leftBits) - 1) & buf[byteIdx]);
-          totalBits += leftBits;
-          // get next byte
-          byteIdx++;
-          // set 'leftBits' in next byte to 8 because the next byte has not been used
-          leftBits = 8;
-          // Else take part of bits in 'leftBits' to current value.
-        } else {
-          // numbers of bits to be take
-          int t = width - totalBits;
-          values[valueIdx] = values[valueIdx] << t;
-          values[valueIdx] =
-              values[valueIdx] | (((1L << leftBits) - 1) & buf[byteIdx]) >>> (leftBits - t);
-          leftBits -= t;
-          totalBits += t;
-        }
-      }
-      // Start to decode next long value
-      valueIdx++;
-      totalBits = 0;
-    }
-  }
-
-  /**
-   * decode all values from 'buf' with specified offset and length decoded result will be saved in
-   * array named 'values'.
-   *
-   * @param buf array where all bytes are in.
-   * @param length length of bytes to be decoded in buf.
-   * @param values decoded result
-   */
-  public void unpackAllValues(byte[] buf, int length, long[] values) {
-    int idx = 0;
-    int k = 0;
-    while (idx < length) {
-      long[] tv = new long[8];
-      // decode 8 values one time, current result will be saved in the array named
-      // 'tv'
-      unpack8Values(buf, idx, tv);
-      System.arraycopy(tv, 0, values, k, 8);
-      idx += width;
-      k += 8;
-    }
-  }
-
-  public void setWidth(int width) {
-    this.width = width;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/BitmapDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/BitmapDecoder.java
deleted file mode 100644
index b274b0e..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/BitmapDecoder.java
+++ /dev/null
@@ -1,221 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.exception.encoding.TsFileDecodingException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Decoder switch or enums value using bitmap, bitmap-encoding:. {@code <length> <num>
- * <encoded-data>}
- *
- * @deprecated (2019.1.25, The bitmap data type has been removed., We can reserve this class, and
- *     reuse it later.)
- */
-@Deprecated
-public class BitmapDecoder extends Decoder {
-
-  private static final Logger logger = LoggerFactory.getLogger(BitmapDecoder.class);
-
-  /** how many bytes for all encoded data in input stream. */
-  private int length;
-
-  /** number of encoded data. */
-  private int number;
-
-  /** number of data left for reading in current buffer. */
-  private int currentCount;
-
-  /**
-   * each time decoder receives a inputstream, decoder creates a buffer to save all encoded data.
-   */
-  private ByteBuffer byteCache;
-
-  /** decoder reads all bitmap index from byteCache and save in Map(value, bitmap index). */
-  private Map<Integer, byte[]> buffer;
-
-  /** BitmapDecoder constructor. */
-  public BitmapDecoder() {
-    super(TSEncoding.BITMAP);
-    this.reset();
-    logger.debug("tsfile-encoding BitmapDecoder: init bitmap decoder");
-  }
-
-  @Override
-  public int readInt(ByteBuffer buffer) {
-    if (currentCount == 0) {
-      reset();
-      getLengthAndNumber(buffer);
-      readNext();
-    }
-    int result = 0;
-    int index = (number - currentCount) / 8;
-    int offset = 7 - ((number - currentCount) % 8);
-    for (Map.Entry<Integer, byte[]> entry : this.buffer.entrySet()) {
-      byte[] tmp = entry.getValue();
-      if (((tmp[index] & 0xff) & ((byte) 1 << offset)) != 0) {
-        result = entry.getKey();
-      }
-    }
-    currentCount--;
-    return result;
-  }
-
-  private void getLengthAndNumber(ByteBuffer buffer) {
-    this.length = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-    this.number = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-    // TODO maybe this.byteCache = buffer is faster, but not safe
-    byte[] tmp = new byte[length];
-    buffer.get(tmp, 0, length);
-    this.byteCache = ByteBuffer.wrap(tmp);
-  }
-
-  /** Decode all data from buffer and save them. */
-  private void readNext() {
-    int len = (this.number + 7) / 8;
-    while (byteCache.remaining() > 0) {
-      int value = ReadWriteForEncodingUtils.readUnsignedVarInt(byteCache);
-      byte[] tmp = new byte[len];
-      byteCache.get(tmp, 0, len);
-      buffer.put(value, tmp);
-    }
-    currentCount = number;
-  }
-
-  @Override
-  public void reset() {
-    this.length = 0;
-    this.number = 0;
-    this.currentCount = 0;
-    if (this.byteCache == null) {
-      this.byteCache = ByteBuffer.allocate(0);
-    } else {
-      this.byteCache.position(0);
-    }
-    if (this.buffer == null) {
-      this.buffer = new HashMap<>();
-    } else {
-      this.buffer.clear();
-    }
-  }
-
-  /**
-   * For special value in page list, get its bitmap index.
-   *
-   * @param target value to get its bitmap index
-   * @param pageList input page list
-   * @return List(Pair of ( length, bitmap index) )
-   */
-  public List<Pair<Integer, byte[]>> decodeAll(int target, List<ByteBuffer> pageList) {
-    List<Pair<Integer, byte[]>> resultList = new ArrayList<>();
-    for (ByteBuffer bufferPage : pageList) {
-      reset();
-      getLengthAndNumber(bufferPage);
-      int byteArrayLength = (this.number + 7) / 8;
-      byte[] tmp = new byte[byteArrayLength];
-      while (byteCache.remaining() > 0) {
-        int value = ReadWriteForEncodingUtils.readUnsignedVarInt(byteCache);
-        if (value == target) {
-          byteCache.get(tmp, 0, byteArrayLength);
-          break;
-        } else {
-          byteCache.position(byteCache.position() + byteArrayLength);
-        }
-      }
-
-      resultList.add(new Pair<>(this.number, tmp));
-      logger.debug(
-          "tsfile-encoding BitmapDecoder: number {} in current page, byte length {}",
-          this.number,
-          byteArrayLength);
-    }
-    return resultList;
-  }
-
-  /**
-   * Check whether there is number left for reading.
-   *
-   * @param buffer : decoded data saved in InputStream
-   * @return true or false to indicate whether there is number left
-   * @throws IOException cannot read next value
-   */
-  @Override
-  public boolean hasNext(ByteBuffer buffer) {
-    if (currentCount > 0 || buffer.remaining() > 0) {
-      return true;
-    }
-    return false;
-  }
-
-  /**
-   * In current version, boolean value is equal to Enums value in schema.
-   *
-   * @param buffer : decoded data saved in InputStream
-   * @throws TsFileDecodingException cannot read next value
-   */
-  @Override
-  public boolean readBoolean(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readBoolean is not supported by BitmapDecoder");
-  }
-
-  @Override
-  public short readShort(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readShort is not supported by BitmapDecoder");
-  }
-
-  @Override
-  public long readLong(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readLong is not supported by BitmapDecoder");
-  }
-
-  @Override
-  public float readFloat(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readFloat is not supported by BitmapDecoder");
-  }
-
-  @Override
-  public double readDouble(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readDouble is not supported by BitmapDecoder");
-  }
-
-  @Override
-  public Binary readBinary(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readBinary is not supported by BitmapDecoder");
-  }
-
-  @Override
-  public BigDecimal readBigDecimal(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readBigDecimal is not supported by BitmapDecoder");
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/Decoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/Decoder.java
deleted file mode 100644
index 7a01964..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/Decoder.java
+++ /dev/null
@@ -1,204 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.exception.encoding.TsFileDecodingException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.nio.ByteBuffer;
-
-public abstract class Decoder {
-
-  private static final String ERROR_MSG = "Decoder not found: %s , DataType is : %s";
-
-  private TSEncoding type;
-
-  public Decoder(TSEncoding type) {
-    this.type = type;
-  }
-
-  public void setType(TSEncoding type) {
-    this.type = type;
-  }
-
-  public TSEncoding getType() {
-    return type;
-  }
-
-  public static Decoder getDecoderByType(TSEncoding encoding, TSDataType dataType) {
-    switch (encoding) {
-      case PLAIN:
-        return new PlainDecoder();
-      case RLE:
-        switch (dataType) {
-          case BOOLEAN:
-          case INT32:
-            return new IntRleDecoder();
-          case INT64:
-          case VECTOR:
-            return new LongRleDecoder();
-          case FLOAT:
-          case DOUBLE:
-            return new FloatDecoder(TSEncoding.valueOf(encoding.toString()), dataType);
-          default:
-            throw new TsFileDecodingException(String.format(ERROR_MSG, encoding, dataType));
-        }
-      case TS_2DIFF:
-        switch (dataType) {
-          case INT32:
-            return new DeltaBinaryDecoder.IntDeltaDecoder();
-          case INT64:
-          case VECTOR:
-            return new DeltaBinaryDecoder.LongDeltaDecoder();
-          case FLOAT:
-          case DOUBLE:
-            return new FloatDecoder(TSEncoding.valueOf(encoding.toString()), dataType);
-          default:
-            throw new TsFileDecodingException(String.format(ERROR_MSG, encoding, dataType));
-        }
-      case GORILLA_V1:
-        switch (dataType) {
-          case FLOAT:
-            return new SinglePrecisionDecoderV1();
-          case DOUBLE:
-            return new DoublePrecisionDecoderV1();
-          default:
-            throw new TsFileDecodingException(String.format(ERROR_MSG, encoding, dataType));
-        }
-      case REGULAR:
-        switch (dataType) {
-          case INT32:
-            return new RegularDataDecoder.IntRegularDecoder();
-          case INT64:
-          case VECTOR:
-            return new RegularDataDecoder.LongRegularDecoder();
-          default:
-            throw new TsFileDecodingException(String.format(ERROR_MSG, encoding, dataType));
-        }
-      case GORILLA:
-        switch (dataType) {
-          case FLOAT:
-            return new SinglePrecisionDecoderV2();
-          case DOUBLE:
-            return new DoublePrecisionDecoderV2();
-          case INT32:
-            return new IntGorillaDecoder();
-          case INT64:
-          case VECTOR:
-            return new LongGorillaDecoder();
-          default:
-            throw new TsFileDecodingException(String.format(ERROR_MSG, encoding, dataType));
-        }
-      case DICTIONARY:
-        return new DictionaryDecoder();
-      case ZIGZAG:
-        switch (dataType) {
-          case INT32:
-            return new IntZigzagDecoder();
-          case INT64:
-            return new LongZigzagDecoder();
-          default:
-            throw new TsFileDecodingException(String.format(ERROR_MSG, encoding, dataType));
-        }
-      case CHIMP:
-        switch (dataType) {
-          case FLOAT:
-            return new SinglePrecisionChimpDecoder();
-          case DOUBLE:
-            return new DoublePrecisionChimpDecoder();
-          case INT32:
-            return new IntChimpDecoder();
-          case INT64:
-          case VECTOR:
-            return new LongChimpDecoder();
-          default:
-            throw new TsFileDecodingException(String.format(ERROR_MSG, encoding, dataType));
-        }
-      case SPRINTZ:
-        switch (dataType) {
-          case INT32:
-            return new IntSprintzDecoder();
-          case INT64:
-            return new LongSprintzDecoder();
-          case FLOAT:
-            return new FloatSprintzDecoder();
-          case DOUBLE:
-            return new DoubleSprintzDecoder();
-          default:
-            throw new TsFileDecodingException(String.format(ERROR_MSG, encoding, dataType));
-        }
-      case RLBE:
-        switch (dataType) {
-          case INT32:
-            return new IntRLBEDecoder();
-          case INT64:
-            return new LongRLBEDecoder();
-          case FLOAT:
-            return new FloatRLBEDecoder();
-          case DOUBLE:
-            return new DoubleRLBEDecoder();
-          default:
-            throw new TsFileDecodingException(String.format(ERROR_MSG, encoding, dataType));
-        }
-      default:
-        throw new TsFileDecodingException(String.format(ERROR_MSG, encoding, dataType));
-    }
-  }
-
-  public int readInt(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readInt is not supported by Decoder");
-  }
-
-  public boolean readBoolean(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readBoolean is not supported by Decoder");
-  }
-
-  public short readShort(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readShort is not supported by Decoder");
-  }
-
-  public long readLong(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readLong is not supported by Decoder");
-  }
-
-  public float readFloat(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readFloat is not supported by Decoder");
-  }
-
-  public double readDouble(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readDouble is not supported by Decoder");
-  }
-
-  public Binary readBinary(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readBinary is not supported by Decoder");
-  }
-
-  public BigDecimal readBigDecimal(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readBigDecimal is not supported by Decoder");
-  }
-
-  public abstract boolean hasNext(ByteBuffer buffer) throws IOException;
-
-  public abstract void reset();
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DeltaBinaryDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DeltaBinaryDecoder.java
deleted file mode 100644
index 7f50cd4..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DeltaBinaryDecoder.java
+++ /dev/null
@@ -1,247 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.encoding.encoder.DeltaBinaryEncoder;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-/**
- * This class is a decoder for decoding the byte array that encoded by {@code
- * DeltaBinaryEncoder}.DeltaBinaryDecoder just supports integer and long values.<br>
- * .
- *
- * @see DeltaBinaryEncoder
- */
-public abstract class DeltaBinaryDecoder extends Decoder {
-
-  protected long count = 0;
-  protected byte[] deltaBuf;
-
-  /** the first value in one pack. */
-  protected int readIntTotalCount = 0;
-
-  protected int nextReadIndex = 0;
-  /** max bit length of all value in a pack. */
-  protected int packWidth;
-  /** data number in this pack. */
-  protected int packNum;
-
-  /** how many bytes data takes after encoding. */
-  protected int encodingLength;
-
-  public DeltaBinaryDecoder() {
-    super(TSEncoding.TS_2DIFF);
-  }
-
-  protected abstract void readHeader(ByteBuffer buffer) throws IOException;
-
-  protected abstract void allocateDataArray();
-
-  protected abstract void readValue(int i);
-
-  /**
-   * calculate the bytes length containing v bits.
-   *
-   * @param v - number of bits
-   * @return number of bytes
-   */
-  protected int ceil(int v) {
-    return (int) Math.ceil((double) (v) / 8.0);
-  }
-
-  @Override
-  public boolean hasNext(ByteBuffer buffer) throws IOException {
-    return (nextReadIndex < readIntTotalCount) || buffer.remaining() > 0;
-  }
-
-  public static class IntDeltaDecoder extends DeltaBinaryDecoder {
-
-    private int firstValue;
-    private int[] data;
-    private int previous;
-    /** minimum value for all difference. */
-    private int minDeltaBase;
-
-    public IntDeltaDecoder() {
-      super();
-    }
-
-    /**
-     * if there's no decoded data left, decode next pack into {@code data}.
-     *
-     * @param buffer ByteBuffer
-     * @return int
-     */
-    protected int readT(ByteBuffer buffer) {
-      if (nextReadIndex == readIntTotalCount) {
-        return loadIntBatch(buffer);
-      }
-      return data[nextReadIndex++];
-    }
-
-    @Override
-    public int readInt(ByteBuffer buffer) {
-      return readT(buffer);
-    }
-
-    /**
-     * if remaining data has been run out, load next pack from InputStream.
-     *
-     * @param buffer ByteBuffer
-     * @return int
-     */
-    protected int loadIntBatch(ByteBuffer buffer) {
-      packNum = ReadWriteIOUtils.readInt(buffer);
-      packWidth = ReadWriteIOUtils.readInt(buffer);
-      count++;
-      readHeader(buffer);
-
-      encodingLength = ceil(packNum * packWidth);
-      deltaBuf = new byte[encodingLength];
-      buffer.get(deltaBuf);
-      allocateDataArray();
-
-      previous = firstValue;
-      readIntTotalCount = packNum;
-      nextReadIndex = 0;
-      readPack();
-      return firstValue;
-    }
-
-    private void readPack() {
-      for (int i = 0; i < packNum; i++) {
-        readValue(i);
-        previous = data[i];
-      }
-    }
-
-    @Override
-    protected void readHeader(ByteBuffer buffer) {
-      minDeltaBase = ReadWriteIOUtils.readInt(buffer);
-      firstValue = ReadWriteIOUtils.readInt(buffer);
-    }
-
-    @Override
-    protected void allocateDataArray() {
-      data = new int[packNum];
-    }
-
-    @Override
-    protected void readValue(int i) {
-      int v = BytesUtils.bytesToInt(deltaBuf, packWidth * i, packWidth);
-      data[i] = previous + minDeltaBase + v;
-    }
-
-    @Override
-    public void reset() {
-      // do nothing
-    }
-  }
-
-  public static class LongDeltaDecoder extends DeltaBinaryDecoder {
-
-    private long firstValue;
-    private long[] data;
-    private long previous;
-    /** minimum value for all difference. */
-    private long minDeltaBase;
-
-    public LongDeltaDecoder() {
-      super();
-    }
-
-    /**
-     * if there's no decoded data left, decode next pack into {@code data}.
-     *
-     * @param buffer ByteBuffer
-     * @return long value
-     */
-    protected long readT(ByteBuffer buffer) {
-      if (nextReadIndex == readIntTotalCount) {
-        return loadIntBatch(buffer);
-      }
-      return data[nextReadIndex++];
-    }
-
-    /**
-     * if remaining data has been run out, load next pack from InputStream.
-     *
-     * @param buffer ByteBuffer
-     * @return long value
-     */
-    protected long loadIntBatch(ByteBuffer buffer) {
-      packNum = ReadWriteIOUtils.readInt(buffer);
-      packWidth = ReadWriteIOUtils.readInt(buffer);
-      count++;
-      readHeader(buffer);
-
-      encodingLength = ceil(packNum * packWidth);
-      deltaBuf = new byte[encodingLength];
-      buffer.get(deltaBuf);
-      allocateDataArray();
-
-      previous = firstValue;
-      readIntTotalCount = packNum;
-      nextReadIndex = 0;
-      readPack();
-      return firstValue;
-    }
-
-    private void readPack() {
-      for (int i = 0; i < packNum; i++) {
-        readValue(i);
-        previous = data[i];
-      }
-    }
-
-    @Override
-    public long readLong(ByteBuffer buffer) {
-
-      return readT(buffer);
-    }
-
-    @Override
-    protected void readHeader(ByteBuffer buffer) {
-      minDeltaBase = ReadWriteIOUtils.readLong(buffer);
-      firstValue = ReadWriteIOUtils.readLong(buffer);
-    }
-
-    @Override
-    protected void allocateDataArray() {
-      data = new long[packNum];
-    }
-
-    @Override
-    protected void readValue(int i) {
-      long v = BytesUtils.bytesToLong(deltaBuf, packWidth * i, packWidth);
-      data[i] = previous + minDeltaBase + v;
-    }
-
-    @Override
-    public void reset() {
-      // do nothing
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DictionaryDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DictionaryDecoder.java
deleted file mode 100644
index aff030a..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DictionaryDecoder.java
+++ /dev/null
@@ -1,86 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-public class DictionaryDecoder extends Decoder {
-  private static final Logger logger = LoggerFactory.getLogger(DictionaryDecoder.class);
-
-  private List<Binary> entryIndex;
-  private IntRleDecoder valueDecoder;
-
-  public DictionaryDecoder() {
-    super(TSEncoding.DICTIONARY);
-
-    valueDecoder = new IntRleDecoder();
-  }
-
-  @Override
-  public boolean hasNext(ByteBuffer buffer) {
-    if (entryIndex == null) {
-      initMap(buffer);
-    }
-
-    try {
-      return valueDecoder.hasNext(buffer);
-    } catch (IOException e) {
-      logger.error("tsfile-decoding DictionaryDecoder: error occurs when decoding", e);
-    }
-
-    return false;
-  }
-
-  @Override
-  public Binary readBinary(ByteBuffer buffer) {
-    if (entryIndex == null) {
-      initMap(buffer);
-    }
-    int code = valueDecoder.readInt(buffer);
-    return entryIndex.get(code);
-  }
-
-  private void initMap(ByteBuffer buffer) {
-    int length = ReadWriteForEncodingUtils.readVarInt(buffer);
-    entryIndex = new ArrayList<>(length);
-    for (int i = 0; i < length; i++) {
-      int binaryLength = ReadWriteForEncodingUtils.readVarInt(buffer);
-      byte[] buf = new byte[binaryLength];
-      buffer.get(buf, 0, binaryLength);
-      entryIndex.add(new Binary(buf));
-    }
-  }
-
-  @Override
-  public void reset() {
-    entryIndex = null;
-    valueDecoder.reset();
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DoublePrecisionChimpDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DoublePrecisionChimpDecoder.java
deleted file mode 100644
index a6e8ddf..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DoublePrecisionChimpDecoder.java
+++ /dev/null
@@ -1,50 +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.encoding.decoder;
-
-import java.nio.ByteBuffer;
-
-/**
- * This class includes code modified from Panagiotis Liakos chimp project.
- *
- * <p>Copyright: 2022- Panagiotis Liakos, Katia Papakonstantinopoulou and Yannis Kotidis
- *
- * <p>Project page: https://github.com/panagiotisl/chimp
- *
- * <p>License: http://www.apache.org/licenses/LICENSE-2.0
- */
-public class DoublePrecisionChimpDecoder extends LongChimpDecoder {
-
-  private static final long CHIMP_ENCODING_ENDING = Double.doubleToRawLongBits(Double.NaN);
-
-  @Override
-  public final double readDouble(ByteBuffer in) {
-    return Double.longBitsToDouble(readLong(in));
-  }
-
-  @Override
-  protected long cacheNext(ByteBuffer in) {
-    readNext(in);
-    if (storedValues[current] == CHIMP_ENCODING_ENDING) {
-      hasNext = false;
-    }
-    return storedValues[current];
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DoublePrecisionDecoderV1.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DoublePrecisionDecoderV1.java
deleted file mode 100644
index 3207adc5..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DoublePrecisionDecoderV1.java
+++ /dev/null
@@ -1,117 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-/** Decoder for value value using gorilla. */
-public class DoublePrecisionDecoderV1 extends GorillaDecoderV1 {
-
-  private static final Logger logger = LoggerFactory.getLogger(DoublePrecisionDecoderV1.class);
-  private long preValue;
-
-  public DoublePrecisionDecoderV1() {
-    // do nothing
-  }
-
-  @Override
-  public double readDouble(ByteBuffer buffer) {
-    if (!flag) {
-      flag = true;
-      try {
-        int[] buf = new int[8];
-        for (int i = 0; i < 8; i++) {
-          buf[i] = ReadWriteIOUtils.read(buffer);
-        }
-        long res = 0L;
-        for (int i = 0; i < 8; i++) {
-          res += ((long) buf[i] << (i * 8));
-        }
-        preValue = res;
-        double tmp = Double.longBitsToDouble(preValue);
-        leadingZeroNum = Long.numberOfLeadingZeros(preValue);
-        tailingZeroNum = Long.numberOfTrailingZeros(preValue);
-        fillBuffer(buffer);
-        getNextValue(buffer);
-        return tmp;
-      } catch (IOException e) {
-        logger.error("DoublePrecisionDecoderV1 cannot read first double number", e);
-      }
-    } else {
-      try {
-        double tmp = Double.longBitsToDouble(preValue);
-        getNextValue(buffer);
-        return tmp;
-      } catch (IOException e) {
-        logger.error("DoublePrecisionDecoderV1 cannot read following double number", e);
-      }
-    }
-    return Double.NaN;
-  }
-
-  /**
-   * check whether there is any value to encode left.
-   *
-   * @param buffer stream to read
-   * @throws IOException cannot read from stream
-   */
-  private void getNextValue(ByteBuffer buffer) throws IOException {
-    nextFlag1 = readBit(buffer);
-    // case: '0'
-    if (!nextFlag1) {
-      return;
-    }
-    nextFlag2 = readBit(buffer);
-
-    if (!nextFlag2) {
-      // case: '10'
-      long tmp = 0;
-      for (int i = 0;
-          i < TSFileConfig.VALUE_BITS_LENGTH_64BIT - leadingZeroNum - tailingZeroNum;
-          i++) {
-        long bit = readBit(buffer) ? 1 : 0;
-        tmp |= (bit << (TSFileConfig.VALUE_BITS_LENGTH_64BIT - 1 - leadingZeroNum - i));
-      }
-      tmp ^= preValue;
-      preValue = tmp;
-    } else {
-      // case: '11'
-      int leadingZeroNumTmp =
-          readIntFromStream(buffer, TSFileConfig.LEADING_ZERO_BITS_LENGTH_64BIT);
-      int lenTmp = readIntFromStream(buffer, TSFileConfig.DOUBLE_VALUE_LENGTH);
-      long tmp = readLongFromStream(buffer, lenTmp);
-      tmp <<= (TSFileConfig.VALUE_BITS_LENGTH_64BIT - leadingZeroNumTmp - lenTmp);
-      tmp ^= preValue;
-      preValue = tmp;
-    }
-    leadingZeroNum = Long.numberOfLeadingZeros(preValue);
-    tailingZeroNum = Long.numberOfTrailingZeros(preValue);
-    if (Double.isNaN(Double.longBitsToDouble(preValue))) {
-      isEnd = true;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DoublePrecisionDecoderV2.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DoublePrecisionDecoderV2.java
deleted file mode 100644
index 47b56f1..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DoublePrecisionDecoderV2.java
+++ /dev/null
@@ -1,53 +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.encoding.decoder;
-
-import java.nio.ByteBuffer;
-
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.GORILLA_ENCODING_ENDING_DOUBLE;
-
-/**
- * This class includes code modified from Michael Burman's gorilla-tsc project.
- *
- * <p>Copyright: 2016-2018 Michael Burman and/or other contributors
- *
- * <p>Project page: https://github.com/burmanm/gorilla-tsc
- *
- * <p>License: http://www.apache.org/licenses/LICENSE-2.0
- */
-public class DoublePrecisionDecoderV2 extends LongGorillaDecoder {
-
-  private static final long GORILLA_ENCODING_ENDING =
-      Double.doubleToRawLongBits(GORILLA_ENCODING_ENDING_DOUBLE);
-
-  @Override
-  public final double readDouble(ByteBuffer in) {
-    return Double.longBitsToDouble(readLong(in));
-  }
-
-  @Override
-  protected long cacheNext(ByteBuffer in) {
-    readNext(in);
-    if (storedValue == GORILLA_ENCODING_ENDING) {
-      hasNext = false;
-    }
-    return storedValue;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DoubleRLBEDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DoubleRLBEDecoder.java
deleted file mode 100644
index 5068457..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DoubleRLBEDecoder.java
+++ /dev/null
@@ -1,197 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
-import java.nio.ByteBuffer;
-
-public class DoubleRLBEDecoder extends Decoder {
-  /** constructor of DoubleRLBEDecoder */
-  public DoubleRLBEDecoder() {
-    super(TSEncoding.RLBE);
-    numberLeftInBuffer = 0;
-    byteBuffer = 0;
-  }
-
-  /** how many numbers expected to decode in following block */
-  private int blocksize;
-
-  /** origin values are stored in data */
-  private double[] data;
-
-  /** whether the first value is decoded */
-  private int writeindex = -1;
-
-  /** the pointer of current last value */
-  private int readindex = -1;
-
-  /** fibonacci values are stored in fibonacci */
-  private long[] fibonacci;
-
-  /** read bits from input stream to byteBuffer and get bit from byteBuffer */
-  private byte byteBuffer;
-
-  /** valid bits in byteBuffer */
-  private int numberLeftInBuffer;
-
-  /**
-   * read the header of a block, determine the size of block and malloc space values
-   *
-   * @param buffer inputstream buffer
-   */
-  private void readhead(ByteBuffer buffer) {
-    for (int i = 0; i <= writeindex; i++) {
-      data[i] = 0;
-    }
-    writeindex = -1;
-    readindex = -1;
-    clearBuffer(buffer);
-    readblocksize(buffer);
-    data = new double[blocksize * 2 + 1];
-    fibonacci = new long[blocksize * 2 + 1];
-    for (int i = 0; i < blocksize * 2; i++) {
-      data[i] = 0;
-      fibonacci[i] = 0;
-    }
-    fibonacci[0] = 1;
-    fibonacci[1] = 1;
-  }
-
-  /**
-   * read a block from inputstream buffer
-   *
-   * @param buffer inputstream buffer
-   */
-  private void readT(ByteBuffer buffer) {
-    // read the header of the block
-    readhead(buffer);
-    while (writeindex < blocksize - 1) {
-      int seglength = 0, runlength = 0;
-      // read first 7 bits: length of each binary words.
-      for (int j = 6; j >= 0; j--) {
-        seglength |= (readbit(buffer) << j);
-      }
-
-      // generate repeat time of rle on delta
-      int now = readbit(buffer);
-      int next = readbit(buffer);
-
-      int j = 1;
-      while (true) {
-        if (j > 1) fibonacci[j] = fibonacci[j - 1] + fibonacci[j - 2];
-        if (now == 1) runlength += fibonacci[j];
-        // when now and next are both 1, the 1 of next is the symbol of ending of fibonacci code
-        if (now == 1 && next == 1) break;
-        j++;
-        now = next;
-        next = readbit(buffer);
-      }
-      // read the delta value one by one
-      for (int i = 1; i <= runlength; i++) {
-
-        long readlongtemp = 0;
-        for (int k = seglength - 1; k >= 0; k--) {
-          readlongtemp += ((long) readbit(buffer) << k);
-        }
-        if (seglength == 64) readlongtemp -= ((long) 1 << 63);
-        double readdoubletemp = Double.longBitsToDouble(readlongtemp);
-        if (writeindex == -1) {
-          data[++writeindex] = readdoubletemp;
-        } else {
-          ++writeindex;
-          data[writeindex] = data[writeindex - 1] + readdoubletemp;
-        }
-      }
-    }
-  }
-
-  @Override
-  public double readDouble(ByteBuffer buffer) {
-    if (readindex < writeindex) {
-      return data[++readindex];
-    } else {
-      readT(buffer);
-      return data[++readindex];
-    }
-  }
-
-  @Override
-  public boolean hasNext(ByteBuffer buffer) {
-    return (buffer.remaining() > 0 || readindex < writeindex);
-  }
-
-  @Override
-  public void reset() {
-    // do nothing
-  }
-
-  /**
-   * get a bit from byteBuffer, when there is no bit in byteBuffer, get new 8 bits from inputstream
-   * buffer
-   *
-   * @param buffer inputstream buffer
-   * @return the top bit of byteBuffer
-   */
-  private int readbit(ByteBuffer buffer) {
-    if (numberLeftInBuffer == 0) {
-      loadBuffer(buffer);
-      numberLeftInBuffer = 8;
-    }
-    int top = ((byteBuffer >> 7) & 1);
-    byteBuffer <<= 1;
-    numberLeftInBuffer--;
-    return top;
-  }
-
-  /**
-   * get 8 bits from inputstream buffer to byteBuffer
-   *
-   * @param buffer inputstream buffer
-   */
-  private void loadBuffer(ByteBuffer buffer) {
-    byteBuffer = buffer.get();
-  }
-
-  /**
-   * clear all remaining bits in byteBuffer
-   *
-   * @param buffer inputstream buffer
-   */
-  private void clearBuffer(ByteBuffer buffer) {
-    while (numberLeftInBuffer > 0) {
-      readbit(buffer);
-    }
-  }
-
-  /**
-   * read the first integer of the block: blocksize
-   *
-   * @param buffer inputstream buffer
-   */
-  private void readblocksize(ByteBuffer buffer) {
-    blocksize = 0;
-    for (int i = 31; i >= 0; i--) {
-      if (readbit(buffer) == 1) {
-        blocksize |= (1 << i);
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DoubleSprintzDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DoubleSprintzDecoder.java
deleted file mode 100644
index 6419deb..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DoubleSprintzDecoder.java
+++ /dev/null
@@ -1,139 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.encoding.bitpacking.LongPacker;
-import org.apache.iotdb.tsfile.encoding.fire.LongFire;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-
-public class DoubleSprintzDecoder extends SprintzDecoder {
-  LongPacker packer;
-  LongFire firePred;
-  private double preValue;
-  private final double[] currentBuffer;
-  private final long[] convertBuffer;
-  private double currentValue;
-  private final String predictScheme =
-      TSFileDescriptor.getInstance().getConfig().getSprintzPredictScheme();
-
-  public DoubleSprintzDecoder() {
-    super();
-    currentBuffer = new double[Block_size + 1];
-    convertBuffer = new long[Block_size];
-    firePred = new LongFire(3);
-    reset();
-  }
-
-  @Override
-  public boolean hasNext(ByteBuffer buffer) throws IOException {
-    // int minLenth = Long.BYTES + 1;
-    return (isBlockReaded && currentCount < Block_size) || buffer.remaining() > 0;
-  }
-
-  @Override
-  public void reset() {
-    super.reset();
-    preValue = 0;
-    currentValue = 0;
-    currentCount = 0;
-    Arrays.fill(currentBuffer, 0);
-    Arrays.fill(convertBuffer, 0);
-  }
-
-  @Override
-  protected void decodeBlock(ByteBuffer in) throws IOException {
-    bitWidth = ReadWriteForEncodingUtils.readIntLittleEndianPaddedOnBitWidth(in, 1);
-    if ((bitWidth & (1 << 7)) != 0) {
-      decodeSize = bitWidth & ~(1 << 7);
-      DoublePrecisionDecoderV2 decoder = new DoublePrecisionDecoderV2();
-      for (int i = 0; i < decodeSize; i++) {
-        currentBuffer[i] = decoder.readDouble(in);
-      }
-    } else {
-      decodeSize = Block_size + 1;
-      preValue = in.getDouble();
-      currentBuffer[0] = preValue;
-      long[] tmpBuffer = new long[8];
-      packer = new LongPacker(bitWidth);
-      byte[] packcle = new byte[bitWidth];
-      for (int i = 0; i < bitWidth; i++) {
-        packcle[i] = in.get();
-      }
-      packer.unpack8Values(packcle, 0, tmpBuffer);
-      for (int i = 0; i < 8; i++) convertBuffer[i] = tmpBuffer[i];
-      recalculate();
-    }
-    isBlockReaded = true;
-  }
-
-  @Override
-  protected void recalculate() {
-    for (int i = 0; i < Block_size; i++) {
-      if (convertBuffer[i] % 2 == 0) convertBuffer[i] = -convertBuffer[i] / 2;
-      else convertBuffer[i] = (convertBuffer[i] + 1) / 2;
-    }
-    if (predictScheme.equals("delta")) {
-      convertBuffer[0] = convertBuffer[0] + Double.doubleToLongBits(preValue);
-      currentBuffer[1] = Double.longBitsToDouble(convertBuffer[0]);
-      for (int i = 1; i < Block_size; i++) {
-        convertBuffer[i] += convertBuffer[i - 1];
-        currentBuffer[i + 1] = Double.longBitsToDouble(convertBuffer[i]);
-      }
-    } else if (predictScheme.equals("fire")) {
-      firePred.reset();
-      long p = firePred.predict(Double.doubleToLongBits(preValue));
-      long e = convertBuffer[0];
-      convertBuffer[0] += p;
-      currentBuffer[1] = Double.longBitsToDouble(convertBuffer[0]);
-      firePred.train(Double.doubleToLongBits(preValue), convertBuffer[0], e);
-      for (int i = 1; i < Block_size; i++) {
-        long pred = firePred.predict(convertBuffer[i - 1]);
-        long err = convertBuffer[i];
-        convertBuffer[i] += pred;
-        currentBuffer[i + 1] = Double.longBitsToDouble(convertBuffer[i]);
-        firePred.train(convertBuffer[i - 1], convertBuffer[i], err);
-      }
-    } else {
-      throw new UnsupportedOperationException("Sprintz predictive method {} is not supported.");
-    }
-  }
-
-  @Override
-  public double readDouble(ByteBuffer buffer) {
-    if (!isBlockReaded) {
-      try {
-        decodeBlock(buffer);
-      } catch (IOException e) {
-        logger.error("Error occured when readInt with Sprintz Decoder.", e);
-      }
-    }
-    currentValue = currentBuffer[currentCount++];
-    if (currentCount == decodeSize) {
-      isBlockReaded = false;
-      currentCount = 0;
-    }
-    return currentValue;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/FloatDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/FloatDecoder.java
deleted file mode 100644
index eb627a5..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/FloatDecoder.java
+++ /dev/null
@@ -1,146 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.encoding.encoder.FloatEncoder;
-import org.apache.iotdb.tsfile.exception.encoding.TsFileDecodingException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-/**
- * Decoder for float or double value using rle or two diff. For more info about encoding pattern,
- * see{@link FloatEncoder}
- */
-public class FloatDecoder extends Decoder {
-
-  private static final Logger logger = LoggerFactory.getLogger(FloatDecoder.class);
-  private Decoder decoder;
-
-  /** maxPointValue = 10^(maxPointNumber). maxPointNumber can be read from the stream. */
-  private double maxPointValue;
-
-  /** flag that indicates whether we have read maxPointNumber and calculated maxPointValue. */
-  private boolean isMaxPointNumberRead;
-
-  public FloatDecoder(TSEncoding encodingType, TSDataType dataType) {
-    super(encodingType);
-    if (encodingType == TSEncoding.RLE) {
-      if (dataType == TSDataType.FLOAT) {
-        decoder = new IntRleDecoder();
-        logger.debug("tsfile-encoding FloatDecoder: init decoder using int-rle and float");
-      } else if (dataType == TSDataType.DOUBLE) {
-        decoder = new LongRleDecoder();
-        logger.debug("tsfile-encoding FloatDecoder: init decoder using long-rle and double");
-      } else {
-        throw new TsFileDecodingException(
-            String.format("data type %s is not supported by FloatDecoder", dataType));
-      }
-    } else if (encodingType == TSEncoding.TS_2DIFF) {
-      if (dataType == TSDataType.FLOAT) {
-        decoder = new DeltaBinaryDecoder.IntDeltaDecoder();
-        logger.debug("tsfile-encoding FloatDecoder: init decoder using int-delta and float");
-      } else if (dataType == TSDataType.DOUBLE) {
-        decoder = new DeltaBinaryDecoder.LongDeltaDecoder();
-        logger.debug("tsfile-encoding FloatDecoder: init decoder using long-delta and double");
-      } else {
-        throw new TsFileDecodingException(
-            String.format("data type %s is not supported by FloatDecoder", dataType));
-      }
-    } else {
-      throw new TsFileDecodingException(
-          String.format("%s encoding is not supported by FloatDecoder", encodingType));
-    }
-    isMaxPointNumberRead = false;
-  }
-
-  @Override
-  public float readFloat(ByteBuffer buffer) {
-    readMaxPointValue(buffer);
-    int value = decoder.readInt(buffer);
-    double result = value / maxPointValue;
-    return (float) result;
-  }
-
-  @Override
-  public double readDouble(ByteBuffer buffer) {
-    readMaxPointValue(buffer);
-    long value = decoder.readLong(buffer);
-    return value / maxPointValue;
-  }
-
-  private void readMaxPointValue(ByteBuffer buffer) {
-    if (!isMaxPointNumberRead) {
-      int maxPointNumber = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-      if (maxPointNumber <= 0) {
-        maxPointValue = 1;
-      } else {
-        maxPointValue = Math.pow(10, maxPointNumber);
-      }
-      isMaxPointNumberRead = true;
-    }
-  }
-
-  @Override
-  public boolean hasNext(ByteBuffer buffer) throws IOException {
-    if (decoder == null) {
-      return false;
-    }
-    return decoder.hasNext(buffer);
-  }
-
-  @Override
-  public Binary readBinary(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readBinary is not supported by FloatDecoder");
-  }
-
-  @Override
-  public boolean readBoolean(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readBoolean is not supported by FloatDecoder");
-  }
-
-  @Override
-  public short readShort(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readShort is not supported by FloatDecoder");
-  }
-
-  @Override
-  public int readInt(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readInt is not supported by FloatDecoder");
-  }
-
-  @Override
-  public long readLong(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readLong is not supported by FloatDecoder");
-  }
-
-  @Override
-  public void reset() {
-    this.decoder.reset();
-    this.isMaxPointNumberRead = false;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/FloatRLBEDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/FloatRLBEDecoder.java
deleted file mode 100644
index 5726897..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/FloatRLBEDecoder.java
+++ /dev/null
@@ -1,197 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
-import java.nio.ByteBuffer;
-
-public class FloatRLBEDecoder extends Decoder {
-  /** constructor of FloatRLBEDecoder */
-  public FloatRLBEDecoder() {
-    super(TSEncoding.RLBE);
-    numberLeftInBuffer = 0;
-    byteBuffer = 0;
-  }
-
-  /** how many numbers expected to decode in following block */
-  private int blocksize;
-
-  /** origin values are stored in data */
-  private float[] data;
-
-  /** whether the first value is decoded */
-  private int writeindex = -1;
-
-  /** the pointer of current last value */
-  private int readindex = -1;
-
-  /** fibonacci values are stored in fibonacci */
-  private int[] fibonacci;
-
-  /** read bits from input stream to byteBuffer and get bit from byteBuffer */
-  private byte byteBuffer;
-
-  /** valid bits in byteBuffer */
-  private int numberLeftInBuffer;
-
-  /**
-   * read the header of a block, determine the size of block and malloc space values
-   *
-   * @param buffer inputstream buffer
-   */
-  private void readhead(ByteBuffer buffer) {
-    for (int i = 0; i <= writeindex; i++) {
-      data[i] = 0;
-    }
-    writeindex = -1;
-    readindex = -1;
-    clearBuffer(buffer);
-    readblocksize(buffer);
-    data = new float[blocksize * 2 + 1];
-    fibonacci = new int[blocksize * 2 + 1];
-    for (int i = 0; i < blocksize * 2; i++) {
-      data[i] = 0;
-      fibonacci[i] = 0;
-    }
-    fibonacci[0] = 1;
-    fibonacci[1] = 1;
-  }
-
-  /**
-   * read a block from inputstream buffer
-   *
-   * @param buffer inputstream buffer
-   */
-  private void readT(ByteBuffer buffer) {
-    // read the header of the block
-    readhead(buffer);
-    while (writeindex < blocksize - 1) {
-      int seglength = 0, runlength = 0;
-      // read first 6 bits: length of each binary words.
-      for (int j = 5; j >= 0; j--) {
-        seglength |= (readbit(buffer) << j);
-      }
-
-      // generate repeat time of rle on delta
-      int now = readbit(buffer);
-      int next = readbit(buffer);
-
-      int j = 1;
-      while (true) {
-        if (j > 1) fibonacci[j] = fibonacci[j - 1] + fibonacci[j - 2];
-        if (now == 1) runlength += fibonacci[j];
-        // when now and next are both 1, the 1 of next is the symbol of ending of fibonacci code
-        if (now == 1 && next == 1) break;
-        j++;
-        now = next;
-        next = readbit(buffer);
-      }
-      // read the delta value one by one
-      for (int i = 1; i <= runlength; i++) {
-
-        int readinttemp = 0;
-        for (int k = seglength - 1; k >= 0; k--) {
-          readinttemp += (readbit(buffer) << k);
-        }
-        if (seglength == 32) readinttemp -= (1 << 31);
-        float readfloattemp = Float.intBitsToFloat(readinttemp);
-        if (writeindex == -1) {
-          data[++writeindex] = readfloattemp;
-        } else {
-          ++writeindex;
-          data[writeindex] = data[writeindex - 1] + readfloattemp;
-        }
-      }
-    }
-  }
-
-  @Override
-  public float readFloat(ByteBuffer buffer) {
-    if (readindex < writeindex) {
-      return data[++readindex];
-    } else {
-      readT(buffer);
-      return data[++readindex];
-    }
-  }
-
-  @Override
-  public boolean hasNext(ByteBuffer buffer) {
-    return (buffer.remaining() > 0 || readindex < writeindex);
-  }
-
-  @Override
-  public void reset() {
-    // do nothing
-  }
-
-  /**
-   * get a bit from byteBuffer, when there is no bit in byteBuffer, get new 8 bits from inputstream
-   * buffer
-   *
-   * @param buffer inputstream buffer
-   * @return the top bit of byteBuffer
-   */
-  private int readbit(ByteBuffer buffer) {
-    if (numberLeftInBuffer == 0) {
-      loadBuffer(buffer);
-      numberLeftInBuffer = 8;
-    }
-    int top = ((byteBuffer >> 7) & 1);
-    byteBuffer <<= 1;
-    numberLeftInBuffer--;
-    return top;
-  }
-
-  /**
-   * get 8 bits from inputstream buffer to byteBuffer
-   *
-   * @param buffer inputstream buffer
-   */
-  private void loadBuffer(ByteBuffer buffer) {
-    byteBuffer = buffer.get();
-  }
-
-  /**
-   * clear all remaining bits in byteBuffer
-   *
-   * @param buffer inputstream buffer
-   */
-  private void clearBuffer(ByteBuffer buffer) {
-    while (numberLeftInBuffer > 0) {
-      readbit(buffer);
-    }
-  }
-
-  /**
-   * read the first integer of the block: blocksize
-   *
-   * @param buffer inputstream buffer
-   */
-  private void readblocksize(ByteBuffer buffer) {
-    blocksize = 0;
-    for (int i = 31; i >= 0; i--) {
-      if (readbit(buffer) == 1) {
-        blocksize |= (1 << i);
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/FloatSprintzDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/FloatSprintzDecoder.java
deleted file mode 100644
index 9fd732e..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/FloatSprintzDecoder.java
+++ /dev/null
@@ -1,141 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.encoding.bitpacking.IntPacker;
-import org.apache.iotdb.tsfile.encoding.fire.IntFire;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-
-public class FloatSprintzDecoder extends SprintzDecoder {
-
-  IntPacker packer;
-  IntFire firePred;
-  private float preValue;
-  private final float[] currentBuffer;
-  private final int[] convertBuffer;
-  private float currentValue;
-  private final String predictScheme =
-      TSFileDescriptor.getInstance().getConfig().getSprintzPredictScheme();
-
-  public FloatSprintzDecoder() {
-    super();
-    currentBuffer = new float[Block_size + 1];
-    convertBuffer = new int[Block_size];
-    firePred = new IntFire(2);
-    reset();
-  }
-
-  @Override
-  public boolean hasNext(ByteBuffer buffer) throws IOException {
-    int minLenth = Float.BYTES + 1;
-    return (isBlockReaded && currentCount < Block_size) || buffer.remaining() >= minLenth;
-  }
-
-  @Override
-  public void reset() {
-    super.reset();
-    currentValue = 0;
-    preValue = 0;
-    currentCount = 0;
-    Arrays.fill(currentBuffer, 0);
-    Arrays.fill(convertBuffer, 0);
-  }
-
-  @Override
-  protected void decodeBlock(ByteBuffer in) throws IOException {
-    bitWidth = ReadWriteForEncodingUtils.readIntLittleEndianPaddedOnBitWidth(in, 1);
-    if ((bitWidth & (1 << 7)) != 0) {
-      decodeSize = bitWidth & ~(1 << 7);
-      SinglePrecisionDecoderV2 decoder = new SinglePrecisionDecoderV2();
-      for (int i = 0; i < decodeSize; i++) {
-        currentBuffer[i] = decoder.readFloat(in);
-      }
-    } else {
-      decodeSize = Block_size + 1;
-      preValue = in.getFloat();
-      currentBuffer[0] = preValue;
-      int[] tmpBuffer = new int[8];
-      packer = new IntPacker(bitWidth);
-      byte[] packcle = new byte[bitWidth];
-      for (int i = 0; i < bitWidth; i++) {
-        packcle[i] = in.get();
-      }
-      packer.unpack8Values(packcle, 0, tmpBuffer);
-      for (int i = 0; i < 8; i++) convertBuffer[i] = tmpBuffer[i];
-      recalculate();
-    }
-    isBlockReaded = true;
-  }
-
-  @Override
-  protected void recalculate() {
-    for (int i = 0; i < Block_size; i++) {
-      if (convertBuffer[i] % 2 == 0) convertBuffer[i] = -convertBuffer[i] / 2;
-      else convertBuffer[i] = (convertBuffer[i] + 1) / 2;
-    }
-    if (predictScheme.equals("delta")) {
-      convertBuffer[0] = convertBuffer[0] + Float.floatToIntBits(preValue);
-      currentBuffer[1] = Float.intBitsToFloat(convertBuffer[0]);
-      for (int i = 1; i < Block_size; i++) {
-        convertBuffer[i] += convertBuffer[i - 1];
-        currentBuffer[i + 1] = Float.intBitsToFloat(convertBuffer[i]);
-      }
-    } else if (predictScheme.equals("fire")) {
-      firePred.reset();
-      int p = firePred.predict(Float.floatToIntBits(preValue));
-      int e = convertBuffer[0];
-      convertBuffer[0] += p;
-      currentBuffer[1] = Float.intBitsToFloat(convertBuffer[0]);
-      firePred.train(Float.floatToIntBits(preValue), convertBuffer[0], e);
-      for (int i = 1; i < Block_size; i++) {
-        int pred = firePred.predict(convertBuffer[i - 1]);
-        int err = convertBuffer[i];
-        convertBuffer[i] += pred;
-        currentBuffer[i + 1] = Float.intBitsToFloat(convertBuffer[i]);
-        firePred.train(convertBuffer[i - 1], convertBuffer[i], err);
-      }
-    } else {
-      throw new UnsupportedOperationException("Sprintz predictive method {} is not supported.");
-    }
-  }
-
-  @Override
-  public float readFloat(ByteBuffer buffer) {
-    if (!isBlockReaded) {
-      try {
-        decodeBlock(buffer);
-      } catch (IOException e) {
-        logger.error("Error occured when readInt with Sprintz Decoder.", e);
-      }
-    }
-    currentValue = currentBuffer[currentCount];
-    currentCount++;
-    if (currentCount == decodeSize) {
-      isBlockReaded = false;
-      currentCount = 0;
-    }
-    return currentValue;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/GorillaDecoderV1.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/GorillaDecoderV1.java
deleted file mode 100644
index 6737cd6..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/GorillaDecoderV1.java
+++ /dev/null
@@ -1,128 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-public abstract class GorillaDecoderV1 extends Decoder {
-
-  protected static final int EOF = -1;
-  private static final Logger logger = LoggerFactory.getLogger(GorillaDecoderV1.class);
-  // flag to indicate whether the first value is read from stream
-  protected boolean flag;
-  protected int leadingZeroNum;
-  protected int tailingZeroNum;
-  protected boolean isEnd;
-  // 8-bit buffer of bits to write out
-  protected int buffer;
-  // number of bits remaining in buffer
-  protected int numberLeftInBuffer;
-
-  protected boolean nextFlag1;
-  protected boolean nextFlag2;
-
-  protected GorillaDecoderV1() {
-    super(TSEncoding.GORILLA_V1);
-    reset();
-  }
-
-  @Override
-  public void reset() {
-    this.flag = false;
-    this.isEnd = false;
-    this.numberLeftInBuffer = 0;
-  }
-
-  @Override
-  public boolean hasNext(ByteBuffer buffer) throws IOException {
-    return buffer.remaining() > 0 || !isEnd;
-  }
-
-  protected boolean isEmpty() {
-    return buffer == EOF;
-  }
-
-  protected boolean readBit(ByteBuffer buffer) throws IOException {
-    if (numberLeftInBuffer == 0 && !isEnd) {
-      fillBuffer(buffer);
-    }
-    if (isEmpty()) {
-      throw new IOException("Reading from empty buffer");
-    }
-    numberLeftInBuffer--;
-    return ((this.buffer >> numberLeftInBuffer) & 1) == 1;
-  }
-
-  /**
-   * read one byte and save it in the buffer.
-   *
-   * @param buffer ByteBuffer to read
-   */
-  protected void fillBuffer(ByteBuffer buffer) {
-    if (buffer.remaining() >= 1) {
-      this.buffer = ReadWriteIOUtils.read(buffer);
-      numberLeftInBuffer = 8;
-    } else {
-      logger.error("Failed to fill a new buffer, because there is no byte to read");
-      this.buffer = EOF;
-      numberLeftInBuffer = -1;
-    }
-  }
-
-  /**
-   * read some bits and convert them to an int value.
-   *
-   * @param buffer stream to read
-   * @param len number of bit to read
-   * @return converted int value
-   * @throws IOException cannot read from stream
-   */
-  protected int readIntFromStream(ByteBuffer buffer, int len) throws IOException {
-    int num = 0;
-    for (int i = 0; i < len; i++) {
-      int bit = readBit(buffer) ? 1 : 0;
-      num |= bit << (len - 1 - i);
-    }
-    return num;
-  }
-
-  /**
-   * read some bits and convert them to a long value.
-   *
-   * @param buffer stream to read
-   * @param len number of bit to read
-   * @return converted long value
-   * @throws IOException cannot read from stream
-   */
-  protected long readLongFromStream(ByteBuffer buffer, int len) throws IOException {
-    long num = 0;
-    for (int i = 0; i < len; i++) {
-      long bit = readBit(buffer) ? 1 : 0;
-      num |= bit << (len - 1 - i);
-    }
-    return num;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/GorillaDecoderV2.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/GorillaDecoderV2.java
deleted file mode 100644
index a7c7875..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/GorillaDecoderV2.java
+++ /dev/null
@@ -1,123 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
-import java.nio.ByteBuffer;
-
-/**
- * This class includes code modified from Michael Burman's gorilla-tsc project.
- *
- * <p>Copyright: 2016-2018 Michael Burman and/or other contributors
- *
- * <p>Project page: https://github.com/burmanm/gorilla-tsc
- *
- * <p>License: http://www.apache.org/licenses/LICENSE-2.0
- */
-public abstract class GorillaDecoderV2 extends Decoder {
-
-  protected boolean firstValueWasRead = false;
-  protected int storedLeadingZeros = Integer.MAX_VALUE;
-  protected int storedTrailingZeros = 0;
-  protected boolean hasNext = true;
-
-  private byte buffer = 0;
-  private int bitsLeft = 0;
-
-  protected GorillaDecoderV2() {
-    super(TSEncoding.GORILLA);
-  }
-
-  @Override
-  public final boolean hasNext(ByteBuffer in) {
-    return hasNext;
-  }
-
-  @Override
-  public void reset() {
-    firstValueWasRead = false;
-    storedLeadingZeros = Integer.MAX_VALUE;
-    storedTrailingZeros = 0;
-    hasNext = true;
-
-    buffer = 0;
-    bitsLeft = 0;
-  }
-
-  /**
-   * Reads the next bit and returns a boolean representing it.
-   *
-   * @return true if the next bit is 1, otherwise 0.
-   */
-  protected boolean readBit(ByteBuffer in) {
-    boolean bit = ((buffer >> (bitsLeft - 1)) & 1) == 1;
-    bitsLeft--;
-    flipByte(in);
-    return bit;
-  }
-
-  /**
-   * Reads a long from the next X bits that represent the least significant bits in the long value.
-   *
-   * @param bits How many next bits are read from the stream
-   * @return long value that was read from the stream
-   */
-  protected long readLong(int bits, ByteBuffer in) {
-    long value = 0;
-    while (bits > 0) {
-      if (bits > bitsLeft || bits == Byte.SIZE) {
-        // Take only the bitsLeft "least significant" bits
-        byte d = (byte) (buffer & ((1 << bitsLeft) - 1));
-        value = (value << bitsLeft) + (d & 0xFF);
-        bits -= bitsLeft;
-        bitsLeft = 0;
-      } else {
-        // Shift to correct position and take only least significant bits
-        byte d = (byte) ((buffer >>> (bitsLeft - bits)) & ((1 << bits) - 1));
-        value = (value << bits) + (d & 0xFF);
-        bitsLeft -= bits;
-        bits = 0;
-      }
-      flipByte(in);
-    }
-    return value;
-  }
-
-  protected byte readNextClearBit(int maxBits, ByteBuffer in) {
-    byte value = 0x00;
-    for (int i = 0; i < maxBits; i++) {
-      value <<= 1;
-      if (readBit(in)) {
-        value |= 0x01;
-      } else {
-        break;
-      }
-    }
-    return value;
-  }
-
-  protected void flipByte(ByteBuffer in) {
-    if (bitsLeft == 0) {
-      buffer = in.get();
-      bitsLeft = Byte.SIZE;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/IntChimpDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/IntChimpDecoder.java
deleted file mode 100644
index 41bae7e..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/IntChimpDecoder.java
+++ /dev/null
@@ -1,156 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
-import java.nio.ByteBuffer;
-
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.VALUE_BITS_LENGTH_32BIT;
-
-/**
- * This class includes code modified from Panagiotis Liakos chimp project.
- *
- * <p>Copyright: 2022- Panagiotis Liakos, Katia Papakonstantinopoulou and Yannis Kotidis
- *
- * <p>Project page: https://github.com/panagiotisl/chimp
- *
- * <p>License: http://www.apache.org/licenses/LICENSE-2.0
- */
-public class IntChimpDecoder extends GorillaDecoderV2 {
-
-  private static final short[] LEADING_REPRESENTATION = {0, 8, 12, 16, 18, 20, 22, 24};
-  private static final int PREVIOUS_VALUES = 64;
-  private static final int PREVIOUS_VALUES_LOG2 = (int) (Math.log(PREVIOUS_VALUES) / Math.log(2));
-  private static final int CASE_ONE_METADATA_LENGTH = PREVIOUS_VALUES_LOG2 + 8;
-
-  private int storedValue = 0;
-  protected int storedValues[] = new int[PREVIOUS_VALUES];
-  protected int current = 0;
-
-  public IntChimpDecoder() {
-    this.setType(TSEncoding.CHIMP);
-    this.hasNext = true;
-    firstValueWasRead = false;
-    storedLeadingZeros = Integer.MAX_VALUE;
-    storedTrailingZeros = 0;
-    this.current = 0;
-    this.storedValue = 0;
-    this.storedValues = new int[PREVIOUS_VALUES];
-  }
-
-  @Override
-  public void reset() {
-    super.reset();
-
-    this.current = 0;
-    this.storedValue = 0;
-    this.storedValues = new int[PREVIOUS_VALUES];
-  }
-
-  @Override
-  public final int readInt(ByteBuffer in) {
-    int returnValue = storedValue;
-    if (!firstValueWasRead) {
-      flipByte(in);
-      storedValue = (int) readLong(VALUE_BITS_LENGTH_32BIT, in);
-      storedValues[current] = storedValue;
-      firstValueWasRead = true;
-      returnValue = storedValue;
-    }
-    cacheNext(in);
-    return returnValue;
-  }
-
-  protected int cacheNext(ByteBuffer in) {
-    readNext(in);
-    if (storedValues[current] == Integer.MIN_VALUE) {
-      hasNext = false;
-    }
-    return storedValues[current];
-  }
-
-  protected int readNext(ByteBuffer in) {
-    // read the two control bits
-    byte controlBits = readNextNBits(2, in);
-    int value;
-    switch (controlBits) {
-      case 3:
-        // case 11: read the length of the number of leading
-        // zeros in the next 3 bits, then read the
-        // meaningful bits of the XORed value.
-        storedLeadingZeros = LEADING_REPRESENTATION[(int) readLong(3, in)];
-        value = (int) readLong(VALUE_BITS_LENGTH_32BIT - storedLeadingZeros, in);
-        storedValue = storedValue ^ value;
-        current = (current + 1) % PREVIOUS_VALUES;
-        storedValues[current] = storedValue;
-        return storedValue;
-        // case 10: use the previous leading zeros and
-        // and just read the meaningful XORed value.
-      case 2:
-        value = (int) readLong(VALUE_BITS_LENGTH_32BIT - storedLeadingZeros, in);
-        storedValue = storedValue ^ value;
-        current = (current + 1) % PREVIOUS_VALUES;
-        storedValues[current] = storedValue;
-        return storedValue;
-        // case 01:  read the index of the previous value, the length of
-        // the number of leading zeros in the next 3 bits, then read
-        // the length of the meaningful XORed value in the next 5
-        // bits. Finally read the meaningful bits of the XORed value.
-      case 1:
-        int fill = CASE_ONE_METADATA_LENGTH;
-        int temp = (int) readLong(fill, in);
-        int index = temp >>> (fill -= PREVIOUS_VALUES_LOG2) & (1 << PREVIOUS_VALUES_LOG2) - 1;
-        storedLeadingZeros = LEADING_REPRESENTATION[temp >>> (fill -= 3) & (1 << 3) - 1];
-        int significantBits = temp >>> (fill -= 5) & (1 << 5) - 1;
-        storedValue = storedValues[index];
-        if (significantBits == 0) {
-          significantBits = VALUE_BITS_LENGTH_32BIT;
-        }
-        storedTrailingZeros = VALUE_BITS_LENGTH_32BIT - significantBits - storedLeadingZeros;
-        value =
-            (int) readLong(VALUE_BITS_LENGTH_32BIT - storedLeadingZeros - storedTrailingZeros, in);
-        value <<= storedTrailingZeros;
-        storedValue = storedValue ^ value;
-        current = (current + 1) % PREVIOUS_VALUES;
-        storedValues[current] = storedValue;
-        return storedValue;
-        // case 00: the values are identical, just read
-        // the index of the previous value
-      default:
-        int previousIndex = (int) readLong(PREVIOUS_VALUES_LOG2, in);
-        storedValue = storedValues[previousIndex];
-        current = (current + 1) % PREVIOUS_VALUES;
-        storedValues[current] = storedValue;
-        return storedValue;
-    }
-  }
-
-  private byte readNextNBits(int n, ByteBuffer in) {
-    byte value = 0x00;
-    for (int i = 0; i < n; i++) {
-      value <<= 1;
-      if (readBit(in)) {
-        value |= 0x01;
-      }
-    }
-    return value;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/IntGorillaDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/IntGorillaDecoder.java
deleted file mode 100644
index b52d199..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/IntGorillaDecoder.java
+++ /dev/null
@@ -1,90 +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.encoding.decoder;
-
-import java.nio.ByteBuffer;
-
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.GORILLA_ENCODING_ENDING_INTEGER;
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.LEADING_ZERO_BITS_LENGTH_32BIT;
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.MEANINGFUL_XOR_BITS_LENGTH_32BIT;
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.VALUE_BITS_LENGTH_32BIT;
-
-/**
- * This class includes code modified from Michael Burman's gorilla-tsc project.
- *
- * <p>Copyright: 2016-2018 Michael Burman and/or other contributors
- *
- * <p>Project page: https://github.com/burmanm/gorilla-tsc
- *
- * <p>License: http://www.apache.org/licenses/LICENSE-2.0
- */
-public class IntGorillaDecoder extends GorillaDecoderV2 {
-
-  protected int storedValue = 0;
-
-  @Override
-  public void reset() {
-    super.reset();
-    storedValue = 0;
-  }
-
-  @Override
-  public final int readInt(ByteBuffer in) {
-    int returnValue = storedValue;
-    if (!firstValueWasRead) {
-      flipByte(in);
-      storedValue = (int) readLong(VALUE_BITS_LENGTH_32BIT, in);
-      firstValueWasRead = true;
-      returnValue = storedValue;
-    }
-    cacheNext(in);
-    return returnValue;
-  }
-
-  protected int cacheNext(ByteBuffer in) {
-    readNext(in);
-    if (storedValue == GORILLA_ENCODING_ENDING_INTEGER) {
-      hasNext = false;
-    }
-    return storedValue;
-  }
-
-  @SuppressWarnings("squid:S128")
-  protected int readNext(ByteBuffer in) {
-    byte controlBits = readNextClearBit(2, in);
-
-    switch (controlBits) {
-      case 3: // case '11': use new leading and trailing zeros
-        storedLeadingZeros = (int) readLong(LEADING_ZERO_BITS_LENGTH_32BIT, in);
-        byte significantBits = (byte) readLong(MEANINGFUL_XOR_BITS_LENGTH_32BIT, in);
-        significantBits++;
-        storedTrailingZeros = VALUE_BITS_LENGTH_32BIT - significantBits - storedLeadingZeros;
-        // missing break is intentional, we want to overflow to next one
-      case 2: // case '10': use stored leading and trailing zeros
-        int xor =
-            (int) readLong(VALUE_BITS_LENGTH_32BIT - storedLeadingZeros - storedTrailingZeros, in);
-        xor <<= storedTrailingZeros;
-        storedValue ^= xor;
-        // missing break is intentional, we want to overflow to next one
-      default: // case '0': use stored value
-        return storedValue;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/IntRLBEDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/IntRLBEDecoder.java
deleted file mode 100644
index eb4b423..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/IntRLBEDecoder.java
+++ /dev/null
@@ -1,196 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
-import java.nio.ByteBuffer;
-
-public class IntRLBEDecoder extends Decoder {
-  /** constructor of IntRLBEDecoder */
-  public IntRLBEDecoder() {
-    super(TSEncoding.RLBE);
-    numberLeftInBuffer = 0;
-    byteBuffer = 0;
-  }
-
-  /** how many numbers expected to decode in following block */
-  private int blocksize;
-
-  /** origin values are stored in data */
-  private int[] data;
-
-  /** whether the first value is decoded */
-  private int writeindex = -1;
-
-  /** the pointer of current last value */
-  private int readindex = -1;
-
-  /** fibonacci values are stored in fibonacci */
-  private int[] fibonacci;
-
-  /** read bits from input stream to byteBuffer and get bit from byteBuffer */
-  private byte byteBuffer;
-
-  /** valid bits in byteBuffer */
-  private int numberLeftInBuffer;
-
-  /**
-   * read the header of a block, determine the size of block and malloc space values
-   *
-   * @param buffer inputstream buffer
-   */
-  private void readhead(ByteBuffer buffer) {
-    for (int i = 0; i <= writeindex; i++) {
-      data[i] = 0;
-    }
-    writeindex = -1;
-    readindex = -1;
-    clearBuffer(buffer);
-    readblocksize(buffer);
-    data = new int[blocksize * 2 + 1];
-    fibonacci = new int[blocksize * 2 + 1];
-    for (int i = 0; i < blocksize * 2; i++) {
-      data[i] = 0;
-      fibonacci[i] = 0;
-    }
-    fibonacci[0] = 1;
-    fibonacci[1] = 1;
-  }
-
-  /**
-   * read a block from inputstream buffer
-   *
-   * @param buffer inputstream buffer
-   */
-  private void readT(ByteBuffer buffer) {
-    // read the header of the block
-    readhead(buffer);
-    while (writeindex < blocksize - 1) {
-      int seglength = 0, runlength = 0;
-      // read first 6 bits: length of each binary words.
-      for (int j = 5; j >= 0; j--) {
-        seglength |= (readbit(buffer) << j);
-      }
-
-      // generate repeat time of rle on delta
-      int now = readbit(buffer);
-      int next = readbit(buffer);
-
-      int j = 1;
-      while (true) {
-        if (j > 1) fibonacci[j] = fibonacci[j - 1] + fibonacci[j - 2];
-        if (now == 1) runlength += fibonacci[j];
-        // when now and next are both 1, the 1 of next is the symbol of ending of fibonacci code
-        if (now == 1 && next == 1) break;
-        j++;
-        now = next;
-        next = readbit(buffer);
-      }
-      // read the delta value one by one
-      for (int i = 1; i <= runlength; i++) {
-
-        int readinttemp = 0;
-        for (int k = seglength - 1; k >= 0; k--) {
-          readinttemp += (readbit(buffer) << k);
-        }
-        if (seglength == 32) readinttemp -= (1 << 31);
-        if (writeindex == -1) {
-          data[++writeindex] = readinttemp;
-        } else {
-          ++writeindex;
-          data[writeindex] = data[writeindex - 1] + readinttemp;
-        }
-      }
-    }
-  }
-
-  @Override
-  public int readInt(ByteBuffer buffer) {
-    if (readindex < writeindex) {
-      return data[++readindex];
-    } else {
-      readT(buffer);
-      return data[++readindex];
-    }
-  }
-
-  @Override
-  public boolean hasNext(ByteBuffer buffer) {
-    return (buffer.remaining() > 0 || readindex < writeindex);
-  }
-
-  @Override
-  public void reset() {
-    // do nothing
-  }
-
-  /**
-   * get a bit from byteBuffer, when there is no bit in byteBuffer, get new 8 bits from inputstream
-   * buffer
-   *
-   * @param buffer inputstream buffer
-   * @return the top bit of byteBuffer
-   */
-  private int readbit(ByteBuffer buffer) {
-    if (numberLeftInBuffer == 0) {
-      loadBuffer(buffer);
-      numberLeftInBuffer = 8;
-    }
-    int top = ((byteBuffer >> 7) & 1);
-    byteBuffer <<= 1;
-    numberLeftInBuffer--;
-    return top;
-  }
-
-  /**
-   * get 8 bits from inputstream buffer to byteBuffer
-   *
-   * @param buffer inputstream buffer
-   */
-  private void loadBuffer(ByteBuffer buffer) {
-    byteBuffer = buffer.get();
-  }
-
-  /**
-   * clear all remaining bits in byteBuffer
-   *
-   * @param buffer inputstream buffer
-   */
-  private void clearBuffer(ByteBuffer buffer) {
-    while (numberLeftInBuffer > 0) {
-      readbit(buffer);
-    }
-  }
-
-  /**
-   * read the first integer of the block: blocksize
-   *
-   * @param buffer inputstream buffer
-   */
-  private void readblocksize(ByteBuffer buffer) {
-    blocksize = 0;
-    for (int i = 31; i >= 0; i--) {
-      if (readbit(buffer) == 1) {
-        blocksize |= (1 << i);
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/IntRleDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/IntRleDecoder.java
deleted file mode 100644
index 219a35c..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/IntRleDecoder.java
+++ /dev/null
@@ -1,124 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.encoding.bitpacking.IntPacker;
-import org.apache.iotdb.tsfile.exception.encoding.TsFileDecodingException;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-/** Decoder for int value using rle or bit-packing. */
-public class IntRleDecoder extends RleDecoder {
-
-  private static final Logger logger = LoggerFactory.getLogger(IntRleDecoder.class);
-
-  /** current value for rle repeated value. */
-  private int currentValue;
-
-  /** buffer to save all values in group using bit-packing. */
-  private int[] currentBuffer;
-
-  /** packer for unpacking int values. */
-  private IntPacker packer;
-
-  public IntRleDecoder() {
-    super();
-    currentValue = 0;
-  }
-
-  @Override
-  public boolean readBoolean(ByteBuffer buffer) {
-    return this.readInt(buffer) == 0 ? false : true;
-  }
-
-  /**
-   * read an int value from InputStream.
-   *
-   * @param buffer - ByteBuffer
-   * @return value - current valid value
-   */
-  @Override
-  public int readInt(ByteBuffer buffer) {
-    if (!isLengthAndBitWidthReaded) {
-      // start to read a new rle+bit-packing pattern
-      readLengthAndBitWidth(buffer);
-    }
-
-    if (currentCount == 0) {
-      try {
-        readNext();
-      } catch (IOException e) {
-        logger.error(
-            "tsfile-encoding IntRleDecoder: error occurs when reading all encoding number,"
-                + " length is {}, bit width is {}",
-            length,
-            bitWidth,
-            e);
-      }
-    }
-    --currentCount;
-    int result;
-    switch (mode) {
-      case RLE:
-        result = currentValue;
-        break;
-      case BIT_PACKED:
-        result = currentBuffer[bitPackingNum - currentCount - 1];
-        break;
-      default:
-        throw new TsFileDecodingException(
-            String.format("tsfile-encoding IntRleDecoder: not a valid mode %s", mode));
-    }
-
-    if (!hasNextPackage()) {
-      isLengthAndBitWidthReaded = false;
-    }
-    return result;
-  }
-
-  @Override
-  protected void initPacker() {
-    packer = new IntPacker(bitWidth);
-  }
-
-  @Override
-  protected void readNumberInRle() throws IOException {
-    currentValue =
-        ReadWriteForEncodingUtils.readIntLittleEndianPaddedOnBitWidth(byteCache, bitWidth);
-  }
-
-  @Override
-  protected void readBitPackingBuffer(int bitPackedGroupCount, int lastBitPackedNum) {
-    currentBuffer = new int[bitPackedGroupCount * TSFileConfig.RLE_MIN_REPEATED_NUM];
-    byte[] bytes = new byte[bitPackedGroupCount * bitWidth];
-    int bytesToRead = bitPackedGroupCount * bitWidth;
-    bytesToRead = Math.min(bytesToRead, byteCache.remaining());
-    byteCache.get(bytes, 0, bytesToRead);
-
-    // save all int values in currentBuffer
-    packer.unpackAllValues(bytes, bytesToRead, currentBuffer);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/IntSprintzDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/IntSprintzDecoder.java
deleted file mode 100644
index 97b8a31..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/IntSprintzDecoder.java
+++ /dev/null
@@ -1,129 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.encoding.bitpacking.IntPacker;
-import org.apache.iotdb.tsfile.encoding.fire.IntFire;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-
-public class IntSprintzDecoder extends SprintzDecoder {
-
-  IntPacker packer;
-  IntFire firePred;
-  private int preValue;
-  private final int[] currentBuffer;
-  private int currentValue;
-  private final String predictScheme =
-      TSFileDescriptor.getInstance().getConfig().getSprintzPredictScheme();
-
-  public IntSprintzDecoder() {
-    super();
-    currentBuffer = new int[Block_size + 1];
-    firePred = new IntFire(2);
-    reset();
-  }
-
-  @Override
-  public boolean hasNext(ByteBuffer buffer) throws IOException {
-    int minLenth = Integer.BYTES + 1;
-    return (isBlockReaded && currentCount < Block_size) || buffer.remaining() >= minLenth;
-  }
-
-  @Override
-  public void reset() {
-    super.reset();
-    currentValue = 0;
-    preValue = 0;
-    currentCount = 0;
-    Arrays.fill(currentBuffer, 0);
-  }
-
-  @Override
-  protected void decodeBlock(ByteBuffer in) throws IOException {
-    bitWidth = ReadWriteForEncodingUtils.readIntLittleEndianPaddedOnBitWidth(in, 1);
-    if ((bitWidth & (1 << 7)) != 0) {
-      decodeSize = bitWidth & ~(1 << 7);
-      IntRleDecoder decoder = new IntRleDecoder();
-      for (int i = 0; i < decodeSize; i++) {
-        currentBuffer[i] = decoder.readInt(in);
-      }
-    } else {
-      decodeSize = Block_size + 1;
-      preValue = ReadWriteForEncodingUtils.readUnsignedVarInt(in);
-      currentBuffer[0] = preValue;
-      int[] tmpBuffer = new int[8];
-      packer = new IntPacker(bitWidth);
-      byte[] packcle = new byte[bitWidth];
-      for (int i = 0; i < bitWidth; i++) {
-        packcle[i] = in.get();
-      }
-      packer.unpack8Values(packcle, 0, tmpBuffer);
-      for (int i = 0; i < 8; i++) currentBuffer[i + 1] = tmpBuffer[i];
-      recalculate();
-    }
-    isBlockReaded = true;
-  }
-
-  @Override
-  protected void recalculate() {
-    for (int i = 1; i <= Block_size; i++) {
-      if (currentBuffer[i] % 2 == 0) currentBuffer[i] = -currentBuffer[i] / 2;
-      else currentBuffer[i] = (currentBuffer[i] + 1) / 2;
-    }
-    if (predictScheme.equals("delta")) {
-      for (int i = 1; i < currentBuffer.length; i++) {
-        currentBuffer[i] += currentBuffer[i - 1];
-      }
-    } else if (predictScheme.equals("fire")) {
-      firePred.reset();
-      int pre = currentBuffer[0];
-      for (int i = 1; i <= Block_size; i++) {
-        int pred = firePred.predict(currentBuffer[i - 1]);
-        int err = currentBuffer[i];
-        currentBuffer[i] = pred + err;
-        firePred.train(currentBuffer[i - 1], currentBuffer[i], err);
-      }
-    } else {
-      throw new UnsupportedOperationException("Sprintz predictive method {} is not supported.");
-    }
-  }
-
-  @Override
-  public int readInt(ByteBuffer buffer) {
-    if (!isBlockReaded) {
-      try {
-        decodeBlock(buffer);
-      } catch (IOException e) {
-        logger.error("Error occured when readInt with Sprintz Decoder.", e);
-      }
-    }
-    currentValue = currentBuffer[currentCount++];
-    if (currentCount == decodeSize) {
-      isBlockReaded = false;
-      currentCount = 0;
-    }
-    return currentValue;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/IntZigzagDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/IntZigzagDecoder.java
deleted file mode 100644
index af35058..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/IntZigzagDecoder.java
+++ /dev/null
@@ -1,94 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.nio.ByteBuffer;
-
-public class IntZigzagDecoder extends Decoder {
-  private static final Logger logger = LoggerFactory.getLogger(IntZigzagDecoder.class);
-
-  /** how many bytes for all encoded data in input stream. */
-  private int length;
-
-  /** number of encoded data. */
-  private int number;
-
-  /** number of data left for reading in current buffer. */
-  private int currentCount;
-
-  /**
-   * each time decoder receives a inputstream, decoder creates a buffer to save all encoded data.
-   */
-  private ByteBuffer byteCache;
-
-  public IntZigzagDecoder() {
-    super(TSEncoding.ZIGZAG);
-    this.reset();
-    logger.debug("tsfile-decoding IntZigzagDecoder: int zigzag decoder");
-  }
-
-  /** decoding */
-  @Override
-  public int readInt(ByteBuffer buffer) {
-    if (currentCount == 0) {
-      reset();
-      getLengthAndNumber(buffer);
-      currentCount = number;
-    }
-    int n = ReadWriteForEncodingUtils.readUnsignedVarInt(byteCache);
-    currentCount--;
-    return (n >>> 1) ^ -(n & 1); // back to two's-complement
-  }
-
-  private void getLengthAndNumber(ByteBuffer buffer) {
-    this.length = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-    this.number = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-    // TODO maybe this.byteCache = buffer is faster, but not safe
-    byte[] tmp = new byte[length];
-    buffer.get(tmp, 0, length);
-    this.byteCache = ByteBuffer.wrap(tmp);
-  }
-
-  @Override
-  public boolean hasNext(ByteBuffer buffer) {
-    if (currentCount > 0 || buffer.remaining() > 0) {
-      return true;
-    }
-    return false;
-  }
-
-  @Override
-  public void reset() {
-    this.length = 0;
-    this.number = 0;
-    this.currentCount = 0;
-    if (this.byteCache == null) {
-      this.byteCache = ByteBuffer.allocate(0);
-    } else {
-      this.byteCache.position(0);
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/LongChimpDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/LongChimpDecoder.java
deleted file mode 100644
index 59d063c..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/LongChimpDecoder.java
+++ /dev/null
@@ -1,155 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
-import java.nio.ByteBuffer;
-
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.VALUE_BITS_LENGTH_64BIT;
-
-/**
- * This class includes code modified from Panagiotis Liakos chimp project.
- *
- * <p>Copyright: 2022- Panagiotis Liakos, Katia Papakonstantinopoulou and Yannis Kotidis
- *
- * <p>Project page: https://github.com/panagiotisl/chimp
- *
- * <p>License: http://www.apache.org/licenses/LICENSE-2.0
- */
-public class LongChimpDecoder extends GorillaDecoderV2 {
-
-  private static final short[] LEADING_REPRESENTATION = {0, 8, 12, 16, 18, 20, 22, 24};
-  private static final int PREVIOUS_VALUES = 128;
-  private static final int PREVIOUS_VALUES_LOG2 = (int) (Math.log(PREVIOUS_VALUES) / Math.log(2));
-  private static final int CASE_ONE_METADATA_LENGTH = PREVIOUS_VALUES_LOG2 + 9;
-
-  private long storedValue = 0;
-  protected long storedValues[] = new long[PREVIOUS_VALUES];
-  protected int current = 0;
-
-  public LongChimpDecoder() {
-    this.setType(TSEncoding.CHIMP);
-    this.hasNext = true;
-    firstValueWasRead = false;
-    storedLeadingZeros = Integer.MAX_VALUE;
-    storedTrailingZeros = 0;
-    this.current = 0;
-    this.storedValue = 0;
-    this.storedValues = new long[PREVIOUS_VALUES];
-  }
-
-  @Override
-  public void reset() {
-    super.reset();
-
-    this.current = 0;
-    this.storedValue = 0;
-    this.storedValues = new long[PREVIOUS_VALUES];
-  }
-
-  @Override
-  public final long readLong(ByteBuffer in) {
-    long returnValue = storedValue;
-    if (!firstValueWasRead) {
-      flipByte(in);
-      storedValue = readLong(VALUE_BITS_LENGTH_64BIT, in);
-      storedValues[current] = storedValue;
-      firstValueWasRead = true;
-      returnValue = storedValue;
-    }
-    cacheNext(in);
-    return returnValue;
-  }
-
-  protected long cacheNext(ByteBuffer in) {
-    readNext(in);
-    if (storedValues[current] == Long.MIN_VALUE) {
-      hasNext = false;
-    }
-    return storedValues[current];
-  }
-
-  protected long readNext(ByteBuffer in) {
-    // read the two control bits
-    byte controlBits = readNextNBits(2, in);
-    long value;
-    switch (controlBits) {
-        // case 11: read the length of the number of leading
-        // zeros in the next 3 bits, then read the
-        // meaningful bits of the XORed value.
-      case 3:
-        storedLeadingZeros = LEADING_REPRESENTATION[(int) readLong(3, in)];
-        value = readLong(VALUE_BITS_LENGTH_64BIT - storedLeadingZeros, in);
-        storedValue = storedValue ^ value;
-        current = (current + 1) % PREVIOUS_VALUES;
-        storedValues[current] = storedValue;
-        return storedValue;
-        // case 10: use the previous leading zeros and
-        // and just read the meaningful XORed value.
-      case 2:
-        value = readLong(VALUE_BITS_LENGTH_64BIT - storedLeadingZeros, in);
-        storedValue = storedValue ^ value;
-        current = (current + 1) % PREVIOUS_VALUES;
-        storedValues[current] = storedValue;
-        return storedValue;
-        // case 01:  read the index of the previous value, the length of
-        // the number of leading zeros in the next 3 bits, then read
-        // the length of the meaningful XORed value in the next 6
-        // bits. Finally read the meaningful bits of the XORed value.
-      case 1:
-        int fill = CASE_ONE_METADATA_LENGTH;
-        int temp = (int) readLong(fill, in);
-        int index = temp >>> (fill -= PREVIOUS_VALUES_LOG2) & (1 << PREVIOUS_VALUES_LOG2) - 1;
-        storedLeadingZeros = LEADING_REPRESENTATION[temp >>> (fill -= 3) & (1 << 3) - 1];
-        int significantBits = temp >>> (fill -= 6) & (1 << 6) - 1;
-        storedValue = storedValues[index];
-        if (significantBits == 0) {
-          significantBits = VALUE_BITS_LENGTH_64BIT;
-        }
-        storedTrailingZeros = VALUE_BITS_LENGTH_64BIT - significantBits - storedLeadingZeros;
-        value = readLong(VALUE_BITS_LENGTH_64BIT - storedLeadingZeros - storedTrailingZeros, in);
-        value <<= storedTrailingZeros;
-        storedValue = storedValue ^ value;
-        current = (current + 1) % PREVIOUS_VALUES;
-        storedValues[current] = storedValue;
-        return storedValue;
-        // case 00: the values are identical, just read
-        // the index of the previous value
-      default:
-        int previousIndex = (int) readLong(PREVIOUS_VALUES_LOG2, in);
-        storedValue = storedValues[previousIndex];
-        current = (current + 1) % PREVIOUS_VALUES;
-        storedValues[current] = storedValue;
-        return storedValue;
-    }
-  }
-
-  private byte readNextNBits(int n, ByteBuffer in) {
-    byte value = 0x00;
-    for (int i = 0; i < n; i++) {
-      value <<= 1;
-      if (readBit(in)) {
-        value |= 0x01;
-      }
-    }
-    return value;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/LongGorillaDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/LongGorillaDecoder.java
deleted file mode 100644
index 6143121..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/LongGorillaDecoder.java
+++ /dev/null
@@ -1,89 +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.encoding.decoder;
-
-import java.nio.ByteBuffer;
-
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.GORILLA_ENCODING_ENDING_LONG;
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.LEADING_ZERO_BITS_LENGTH_64BIT;
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.MEANINGFUL_XOR_BITS_LENGTH_64BIT;
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.VALUE_BITS_LENGTH_64BIT;
-
-/**
- * This class includes code modified from Michael Burman's gorilla-tsc project.
- *
- * <p>Copyright: 2016-2018 Michael Burman and/or other contributors
- *
- * <p>Project page: https://github.com/burmanm/gorilla-tsc
- *
- * <p>License: http://www.apache.org/licenses/LICENSE-2.0
- */
-public class LongGorillaDecoder extends GorillaDecoderV2 {
-
-  protected long storedValue = 0;
-
-  @Override
-  public void reset() {
-    super.reset();
-    storedValue = 0;
-  }
-
-  @Override
-  public final long readLong(ByteBuffer in) {
-    long returnValue = storedValue;
-    if (!firstValueWasRead) {
-      flipByte(in);
-      storedValue = readLong(VALUE_BITS_LENGTH_64BIT, in);
-      firstValueWasRead = true;
-      returnValue = storedValue;
-    }
-    cacheNext(in);
-    return returnValue;
-  }
-
-  protected long cacheNext(ByteBuffer in) {
-    readNext(in);
-    if (storedValue == GORILLA_ENCODING_ENDING_LONG) {
-      hasNext = false;
-    }
-    return storedValue;
-  }
-
-  @SuppressWarnings("squid:S128")
-  protected long readNext(ByteBuffer in) {
-    byte controlBits = readNextClearBit(2, in);
-
-    switch (controlBits) {
-      case 3: // case '11': use new leading and trailing zeros
-        storedLeadingZeros = (int) readLong(LEADING_ZERO_BITS_LENGTH_64BIT, in);
-        byte significantBits = (byte) readLong(MEANINGFUL_XOR_BITS_LENGTH_64BIT, in);
-        significantBits++;
-        storedTrailingZeros = VALUE_BITS_LENGTH_64BIT - significantBits - storedLeadingZeros;
-        // missing break is intentional, we want to overflow to next one
-      case 2: // case '10': use stored leading and trailing zeros
-        long xor = readLong(VALUE_BITS_LENGTH_64BIT - storedLeadingZeros - storedTrailingZeros, in);
-        xor <<= storedTrailingZeros;
-        storedValue ^= xor;
-        // missing break is intentional, we want to overflow to next one
-      default: // case '0': use stored value
-        return storedValue;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/LongRLBEDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/LongRLBEDecoder.java
deleted file mode 100644
index 974ad99..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/LongRLBEDecoder.java
+++ /dev/null
@@ -1,196 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
-import java.nio.ByteBuffer;
-
-public class LongRLBEDecoder extends Decoder {
-  /** constructor of LongRLBEDecoder */
-  public LongRLBEDecoder() {
-    super(TSEncoding.RLBE);
-    numberLeftInBuffer = 0;
-    byteBuffer = 0;
-  }
-
-  /** how many numbers expected to decode in following block */
-  private int blocksize;
-
-  /** origin values are stored in data */
-  private long[] data;
-
-  /** whether the first value is decoded */
-  private int writeindex = -1;
-
-  /** the pointer of current last value */
-  private int readindex = -1;
-
-  /** fibonacci values are stored in fibonacci */
-  private long[] fibonacci;
-
-  /** read bits from input stream to byteBuffer and get bit from byteBuffer */
-  private byte byteBuffer;
-
-  /** valid bits in byteBuffer */
-  private int numberLeftInBuffer;
-
-  /**
-   * read the header of a block, determine the size of block and malloc space values
-   *
-   * @param buffer inputstream buffer
-   */
-  private void readhead(ByteBuffer buffer) {
-    for (int i = 0; i <= writeindex; i++) {
-      data[i] = 0;
-    }
-    writeindex = -1;
-    readindex = -1;
-    clearBuffer(buffer);
-    readblocksize(buffer);
-    data = new long[blocksize * 2 + 1];
-    fibonacci = new long[blocksize * 2 + 1];
-    for (int i = 0; i < blocksize * 2; i++) {
-      data[i] = 0;
-      fibonacci[i] = 0;
-    }
-    fibonacci[0] = 1;
-    fibonacci[1] = 1;
-  }
-
-  /**
-   * read a block from inputstream buffer
-   *
-   * @param buffer inputstream buffer
-   */
-  private void readT(ByteBuffer buffer) {
-    // read the header of the block
-    readhead(buffer);
-    while (writeindex < blocksize - 1) {
-      int seglength = 0, runlength = 0;
-      // read first 7 bits: length of each binary words.
-      for (int j = 6; j >= 0; j--) {
-        seglength |= (readbit(buffer) << j);
-      }
-
-      // generate repeat time of rle on delta
-      int now = readbit(buffer);
-      int next = readbit(buffer);
-
-      int j = 1;
-      while (true) {
-        if (j > 1) fibonacci[j] = fibonacci[j - 1] + fibonacci[j - 2];
-        if (now == 1) runlength += fibonacci[j];
-        // when now and next are both 1, the 1 of next is the symbol of ending of fibonacci code
-        if (now == 1 && next == 1) break;
-        j++;
-        now = next;
-        next = readbit(buffer);
-      }
-      // read the delta value one by one
-      for (int i = 1; i <= runlength; i++) {
-
-        long readlongtemp = 0;
-        for (int k = seglength - 1; k >= 0; k--) {
-          readlongtemp += ((long) readbit(buffer) << k);
-        }
-        if (seglength == 64) readlongtemp -= ((long) 1 << 63);
-        if (writeindex == -1) {
-          data[++writeindex] = readlongtemp;
-        } else {
-          ++writeindex;
-          data[writeindex] = data[writeindex - 1] + readlongtemp;
-        }
-      }
-    }
-  }
-
-  @Override
-  public long readLong(ByteBuffer buffer) {
-    if (readindex < writeindex) {
-      return data[++readindex];
-    } else {
-      readT(buffer);
-      return data[++readindex];
-    }
-  }
-
-  @Override
-  public boolean hasNext(ByteBuffer buffer) {
-    return (buffer.remaining() > 0 || readindex < writeindex);
-  }
-
-  @Override
-  public void reset() {
-    // do nothing
-  }
-
-  /**
-   * get a bit from byteBuffer, when there is no bit in byteBuffer, get new 8 bits from inputstream
-   * buffer
-   *
-   * @param buffer inputstream buffer
-   * @return the top bit of byteBuffer
-   */
-  private int readbit(ByteBuffer buffer) {
-    if (numberLeftInBuffer == 0) {
-      loadBuffer(buffer);
-      numberLeftInBuffer = 8;
-    }
-    int top = ((byteBuffer >> 7) & 1);
-    byteBuffer <<= 1;
-    numberLeftInBuffer--;
-    return top;
-  }
-
-  /**
-   * get 8 bits from inputstream buffer to byteBuffer
-   *
-   * @param buffer inputstream buffer
-   */
-  private void loadBuffer(ByteBuffer buffer) {
-    byteBuffer = buffer.get();
-  }
-
-  /**
-   * clear all remaining bits in byteBuffer
-   *
-   * @param buffer inputstream buffer
-   */
-  private void clearBuffer(ByteBuffer buffer) {
-    while (numberLeftInBuffer > 0) {
-      readbit(buffer);
-    }
-  }
-
-  /**
-   * read the first integer of the block: blocksize
-   *
-   * @param buffer inputstream buffer
-   */
-  private void readblocksize(ByteBuffer buffer) {
-    blocksize = 0;
-    for (int i = 31; i >= 0; i--) {
-      if (readbit(buffer) == 1) {
-        blocksize |= (1 << i);
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/LongRleDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/LongRleDecoder.java
deleted file mode 100644
index 5721fd2..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/LongRleDecoder.java
+++ /dev/null
@@ -1,119 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.encoding.bitpacking.LongPacker;
-import org.apache.iotdb.tsfile.exception.encoding.TsFileDecodingException;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-/** Decoder for long value using rle or bit-packing. */
-public class LongRleDecoder extends RleDecoder {
-
-  private static final Logger logger = LoggerFactory.getLogger(LongRleDecoder.class);
-
-  /** current value for rle repeated value. */
-  private long currentValue;
-
-  /** buffer to save all values in group using bit-packing. */
-  private long[] currentBuffer;
-
-  /** packer for unpacking long value. */
-  private LongPacker packer;
-
-  public LongRleDecoder() {
-    super();
-    currentValue = 0;
-  }
-
-  /**
-   * read a long value from InputStream.
-   *
-   * @param buffer - InputStream
-   * @return value - current valid value
-   */
-  @Override
-  public long readLong(ByteBuffer buffer) {
-    if (!isLengthAndBitWidthReaded) {
-      // start to read a new rle+bit-packing pattern
-      readLengthAndBitWidth(buffer);
-    }
-
-    if (currentCount == 0) {
-      try {
-        readNext();
-      } catch (IOException e) {
-        logger.error(
-            "tsfile-encoding IntRleDecoder: error occurs when reading all encoding number, length "
-                + "is {}, bit width is {}",
-            length,
-            bitWidth,
-            e);
-      }
-    }
-    --currentCount;
-    long result;
-    switch (mode) {
-      case RLE:
-        result = currentValue;
-        break;
-      case BIT_PACKED:
-        result = currentBuffer[bitPackingNum - currentCount - 1];
-        break;
-      default:
-        throw new TsFileDecodingException(
-            String.format("tsfile-encoding LongRleDecoder: not a valid mode %s", mode));
-    }
-
-    if (!hasNextPackage()) {
-      isLengthAndBitWidthReaded = false;
-    }
-    return result;
-  }
-
-  @Override
-  protected void initPacker() {
-    packer = new LongPacker(bitWidth);
-  }
-
-  @Override
-  protected void readNumberInRle() throws IOException {
-    currentValue =
-        ReadWriteForEncodingUtils.readLongLittleEndianPaddedOnBitWidth(byteCache, bitWidth);
-  }
-
-  @Override
-  protected void readBitPackingBuffer(int bitPackedGroupCount, int lastBitPackedNum) {
-    currentBuffer = new long[bitPackedGroupCount * TSFileConfig.RLE_MIN_REPEATED_NUM];
-    byte[] bytes = new byte[bitPackedGroupCount * bitWidth];
-    int bytesToRead = bitPackedGroupCount * bitWidth;
-    bytesToRead = Math.min(bytesToRead, byteCache.remaining());
-    byteCache.get(bytes, 0, bytesToRead);
-
-    // save all long values in currentBuffer
-    packer.unpackAllValues(bytes, bytesToRead, currentBuffer);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/LongSprintzDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/LongSprintzDecoder.java
deleted file mode 100644
index 9f0b2ec..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/LongSprintzDecoder.java
+++ /dev/null
@@ -1,127 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.encoding.bitpacking.LongPacker;
-import org.apache.iotdb.tsfile.encoding.fire.LongFire;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-
-public class LongSprintzDecoder extends SprintzDecoder {
-  LongPacker packer;
-  LongFire firePred;
-  private long preValue;
-  private final long[] currentBuffer;
-  private long currentValue;
-  private final String predictScheme =
-      TSFileDescriptor.getInstance().getConfig().getSprintzPredictScheme();
-
-  public LongSprintzDecoder() {
-    super();
-    firePred = new LongFire(3);
-    currentBuffer = new long[Block_size + 1];
-    reset();
-  }
-
-  @Override
-  public boolean hasNext(ByteBuffer buffer) throws IOException {
-    // int minLenth = Long.BYTES + 1;
-    return (isBlockReaded && currentCount < Block_size) || buffer.remaining() > 0;
-  }
-
-  @Override
-  public void reset() {
-    super.reset();
-    preValue = 0;
-    currentValue = 0;
-    currentCount = 0;
-    Arrays.fill(currentBuffer, 0);
-  }
-
-  @Override
-  protected void decodeBlock(ByteBuffer in) throws IOException {
-    bitWidth = ReadWriteForEncodingUtils.readIntLittleEndianPaddedOnBitWidth(in, 1);
-    if ((bitWidth & (1 << 7)) != 0) {
-      decodeSize = bitWidth & ~(1 << 7);
-      LongRleDecoder decoder = new LongRleDecoder();
-      for (int i = 0; i < decodeSize; i++) {
-        currentBuffer[i] = decoder.readLong(in);
-      }
-    } else {
-      decodeSize = Block_size + 1;
-      preValue = in.getLong();
-      currentBuffer[0] = preValue;
-      long[] tmpBuffer = new long[8];
-      packer = new LongPacker(bitWidth);
-      byte[] packcle = new byte[bitWidth];
-      for (int i = 0; i < bitWidth; i++) {
-        packcle[i] = in.get();
-      }
-      packer.unpack8Values(packcle, 0, tmpBuffer);
-      for (int i = 0; i < 8; i++) currentBuffer[i + 1] = tmpBuffer[i];
-      recalculate();
-    }
-    isBlockReaded = true;
-  }
-
-  @Override
-  protected void recalculate() {
-    for (int i = 1; i <= Block_size; i++) {
-      if (currentBuffer[i] % 2 == 0) currentBuffer[i] = -currentBuffer[i] / 2;
-      else currentBuffer[i] = (currentBuffer[i] + 1) / 2;
-    }
-    if (predictScheme.equals("delta")) {
-      for (int i = 1; i < currentBuffer.length; i++) {
-        currentBuffer[i] += currentBuffer[i - 1];
-      }
-    } else if (predictScheme.equals("fire")) {
-      firePred.reset();
-      for (int i = 1; i <= Block_size; i++) {
-        long pred = firePred.predict(currentBuffer[i - 1]);
-        long err = currentBuffer[i];
-        currentBuffer[i] = pred + err;
-        firePred.train(currentBuffer[i - 1], currentBuffer[i], err);
-      }
-    } else {
-      throw new UnsupportedOperationException("Sprintz predictive method {} is not supported.");
-    }
-  }
-
-  @Override
-  public long readLong(ByteBuffer buffer) {
-    if (!isBlockReaded) {
-      try {
-        decodeBlock(buffer);
-      } catch (IOException e) {
-        logger.error("Error occured when readInt with Sprintz Decoder.", e);
-      }
-    }
-    currentValue = currentBuffer[currentCount++];
-    if (currentCount == decodeSize) {
-      isBlockReaded = false;
-      currentCount = 0;
-    }
-    return currentValue;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/LongZigzagDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/LongZigzagDecoder.java
deleted file mode 100644
index 931fcf5..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/LongZigzagDecoder.java
+++ /dev/null
@@ -1,101 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.nio.ByteBuffer;
-
-public class LongZigzagDecoder extends Decoder {
-  private static final Logger logger = LoggerFactory.getLogger(IntZigzagDecoder.class);
-
-  /** how many bytes for all encoded data in input stream. */
-  private int length;
-
-  /** number of encoded data. */
-  private int number;
-
-  /** number of data left for reading in current buffer. */
-  private int currentCount;
-
-  /**
-   * each time decoder receives a inputstream, decoder creates a buffer to save all encoded data.
-   */
-  private ByteBuffer byteCache;
-
-  public LongZigzagDecoder() {
-    super(TSEncoding.ZIGZAG);
-    this.reset();
-    logger.debug("tsfile-encoding LongZigzagDecoder: long zigzag decoder");
-  }
-
-  /** decoding */
-  @Override
-  public long readLong(ByteBuffer buffer) {
-    if (currentCount == 0) {
-      reset();
-      getLengthAndNumber(buffer);
-      currentCount = number;
-    }
-    long n = 0;
-    int i = 0;
-    long b = 0;
-
-    while (byteCache.hasRemaining() && ((b = byteCache.get()) & 0x80) != 0) {
-      n |= (b & 0x7F) << i;
-      i += 7;
-    }
-    n = n | (b << i);
-    currentCount--;
-    return (n >>> 1) ^ -(n & 1); // back to two's-complement
-  }
-
-  private void getLengthAndNumber(ByteBuffer buffer) {
-    this.length = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-    this.number = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-    byte[] tmp = new byte[length];
-    buffer.get(tmp, 0, length);
-    this.byteCache = ByteBuffer.wrap(tmp);
-  }
-
-  @Override
-  public boolean hasNext(ByteBuffer buffer) {
-    if (currentCount > 0 || buffer.remaining() > 0) {
-      return true;
-    }
-    return false;
-  }
-
-  @Override
-  public void reset() {
-    this.length = 0;
-    this.number = 0;
-    this.currentCount = 0;
-    if (this.byteCache == null) {
-      this.byteCache = ByteBuffer.allocate(0);
-    } else {
-      this.byteCache.position(0);
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/PlainDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/PlainDecoder.java
deleted file mode 100644
index 4af1779..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/PlainDecoder.java
+++ /dev/null
@@ -1,88 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.exception.encoding.TsFileDecodingException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import java.math.BigDecimal;
-import java.nio.ByteBuffer;
-
-public class PlainDecoder extends Decoder {
-
-  public PlainDecoder() {
-    super(TSEncoding.PLAIN);
-  }
-
-  @Override
-  public boolean readBoolean(ByteBuffer buffer) {
-    return buffer.get() != 0;
-  }
-
-  @Override
-  public short readShort(ByteBuffer buffer) {
-    return buffer.getShort();
-  }
-
-  @Override
-  public int readInt(ByteBuffer buffer) {
-    return ReadWriteForEncodingUtils.readVarInt(buffer);
-  }
-
-  @Override
-  public long readLong(ByteBuffer buffer) {
-    return buffer.getLong();
-  }
-
-  @Override
-  public float readFloat(ByteBuffer buffer) {
-    return buffer.getFloat();
-  }
-
-  @Override
-  public double readDouble(ByteBuffer buffer) {
-    return buffer.getDouble();
-  }
-
-  @Override
-  public Binary readBinary(ByteBuffer buffer) {
-    int length = readInt(buffer);
-    byte[] buf = new byte[length];
-    buffer.get(buf, 0, buf.length);
-    return new Binary(buf);
-  }
-
-  @Override
-  public boolean hasNext(ByteBuffer buffer) {
-    return buffer.remaining() > 0;
-  }
-
-  @Override
-  public BigDecimal readBigDecimal(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readBigDecimal is not supported by PlainDecoder");
-  }
-
-  @Override
-  public void reset() {
-    // do nothing
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/RegularDataDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/RegularDataDecoder.java
deleted file mode 100644
index bfe455b..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/RegularDataDecoder.java
+++ /dev/null
@@ -1,282 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.encoding.encoder.RegularDataEncoder;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.BitSet;
-
-/**
- * This class is a decoder for decoding the byte array that encoded by {@code RegularDataEncoder}.
- * RegularDataDecoder only supports integer and long values.<br>
- * .
- *
- * @see RegularDataEncoder
- */
-public abstract class RegularDataDecoder extends Decoder {
-
-  /** the first value in one pack. */
-  protected int readIntTotalCount = 0;
-
-  protected int nextReadIndex = 0;
-  /** data number in this pack. */
-  protected int packNum;
-
-  public RegularDataDecoder() {
-    super(TSEncoding.REGULAR);
-  }
-
-  protected abstract void readHeader(ByteBuffer buffer) throws IOException;
-
-  protected abstract void allocateDataArray();
-
-  protected abstract void readValue(int i);
-
-  @Override
-  public boolean hasNext(ByteBuffer buffer) throws IOException {
-    return (nextReadIndex < readIntTotalCount) || buffer.remaining() > 0;
-  }
-
-  public static class IntRegularDecoder extends RegularDataDecoder {
-
-    private int[] data;
-    private int firstValue;
-    private int previous;
-    private boolean isMissingPoint;
-    private BitSet bitmap;
-    private int bitmapIndex;
-    /** minimum value for all difference. */
-    private int minDeltaBase;
-
-    public IntRegularDecoder() {
-      super();
-    }
-
-    /**
-     * if there's no decoded data left, decode next pack into {@code data}.
-     *
-     * @param buffer ByteBuffer
-     * @return long value
-     */
-    protected int readT(ByteBuffer buffer) {
-      if (nextReadIndex == readIntTotalCount) {
-        isMissingPoint = ReadWriteIOUtils.readBool(buffer);
-        if (isMissingPoint) {
-          readBitmap(buffer);
-        }
-        return loadIntBatch(buffer); // load first value
-      }
-      if (isMissingPoint) {
-        bitmapIndex++;
-        return loadWithBitmap(buffer);
-      }
-      return data[nextReadIndex++];
-    }
-
-    private void readBitmap(ByteBuffer buffer) {
-      int length = ReadWriteIOUtils.readInt(buffer);
-      byte[] byteArr = new byte[length];
-      buffer.get(byteArr);
-      bitmap = BitSet.valueOf(byteArr);
-      bitmapIndex = 0;
-    }
-
-    /**
-     * load the data with bitmap (when bitmap denote the element with false, load next element)
-     *
-     * @param buffer
-     * @return long value
-     */
-    protected int loadWithBitmap(ByteBuffer buffer) {
-      while (!bitmap.get(bitmapIndex)) {
-        bitmapIndex++;
-      }
-      nextReadIndex = bitmapIndex - 1;
-      return data[nextReadIndex];
-    }
-
-    /**
-     * if remaining data has been run out, load next pack from InputStream.
-     *
-     * @param buffer ByteBuffer
-     * @return int value
-     */
-    protected int loadIntBatch(ByteBuffer buffer) {
-      packNum = ReadWriteIOUtils.readInt(buffer);
-      readHeader(buffer);
-
-      allocateDataArray();
-
-      readIntTotalCount = isMissingPoint ? (packNum - 2) : (packNum - 1);
-      previous = firstValue;
-      nextReadIndex = 0;
-      readPack();
-      return firstValue;
-    }
-
-    private void readPack() {
-      for (int i = 0; i < data.length; i++) {
-        readValue(i);
-        previous = data[i];
-      }
-    }
-
-    @Override
-    public int readInt(ByteBuffer buffer) {
-      return readT(buffer);
-    }
-
-    @Override
-    protected void readHeader(ByteBuffer buffer) {
-      minDeltaBase = ReadWriteIOUtils.readInt(buffer);
-      firstValue = ReadWriteIOUtils.readInt(buffer);
-    }
-
-    @Override
-    protected void allocateDataArray() {
-      data = new int[packNum - 1];
-    }
-
-    @Override
-    protected void readValue(int i) {
-      data[i] = previous + minDeltaBase;
-    }
-
-    @Override
-    public void reset() {
-      // do nothing
-    }
-  }
-
-  public static class LongRegularDecoder extends RegularDataDecoder {
-
-    private long[] data;
-    private long firstValue;
-    private long previous;
-    private boolean isMissingPoint;
-    private BitSet bitmap;
-    private int bitmapIndex;
-    /** minimum value for all difference. */
-    private long minDeltaBase;
-
-    public LongRegularDecoder() {
-      super();
-    }
-
-    /**
-     * if there's no decoded data left, decode next pack into {@code data}.
-     *
-     * @param buffer ByteBuffer
-     * @return long value
-     */
-    protected long readT(ByteBuffer buffer) {
-      if (nextReadIndex == readIntTotalCount) {
-        isMissingPoint = ReadWriteIOUtils.readBool(buffer);
-        if (isMissingPoint) {
-          readBitmap(buffer);
-        }
-        return loadIntBatch(buffer); // load first value
-      }
-      if (isMissingPoint) {
-        bitmapIndex++;
-        return loadWithBitmap(buffer);
-      }
-      return data[nextReadIndex++];
-    }
-
-    private void readBitmap(ByteBuffer buffer) {
-      int length = ReadWriteIOUtils.readInt(buffer);
-      byte[] byteArr = new byte[length];
-      buffer.get(byteArr);
-      bitmap = BitSet.valueOf(byteArr);
-      bitmapIndex = 0;
-    }
-
-    /**
-     * load the data with bitmap (when bitmap denote the element with false, load next element)
-     *
-     * @param buffer
-     * @return long value
-     */
-    protected long loadWithBitmap(ByteBuffer buffer) {
-      while (!bitmap.get(bitmapIndex)) {
-        bitmapIndex++;
-      }
-      nextReadIndex = bitmapIndex - 1;
-      return data[nextReadIndex];
-    }
-
-    /**
-     * if remaining data has been run out, load next pack from InputStream.
-     *
-     * @param buffer ByteBuffer
-     * @return long value
-     */
-    protected long loadIntBatch(ByteBuffer buffer) {
-      packNum = ReadWriteIOUtils.readInt(buffer);
-      readHeader(buffer);
-
-      allocateDataArray();
-
-      readIntTotalCount = isMissingPoint ? (packNum - 2) : (packNum - 1);
-      previous = firstValue;
-      nextReadIndex = 0;
-      readPack();
-      return firstValue;
-    }
-
-    private void readPack() {
-      for (int i = 0; i < data.length; i++) {
-        readValue(i);
-        previous = data[i];
-      }
-    }
-
-    @Override
-    public long readLong(ByteBuffer buffer) {
-      return readT(buffer);
-    }
-
-    @Override
-    protected void readHeader(ByteBuffer buffer) {
-      minDeltaBase = ReadWriteIOUtils.readLong(buffer);
-      firstValue = ReadWriteIOUtils.readLong(buffer);
-    }
-
-    @Override
-    protected void allocateDataArray() {
-      data = new long[packNum - 1];
-    }
-
-    @Override
-    protected void readValue(int i) {
-      data[i] = previous + minDeltaBase;
-    }
-
-    @Override
-    public void reset() {
-      // do nothing
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/RleDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/RleDecoder.java
deleted file mode 100644
index 53f8124..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/RleDecoder.java
+++ /dev/null
@@ -1,230 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.encoding.TsFileDecodingException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.nio.ByteBuffer;
-
-/**
- * Abstract class for all rle decoder. Decoding values according to following grammar: {@code
- * <length> <bitwidth> <encoded-data>}. For more information about rle format, see RleEncoder
- */
-public abstract class RleDecoder extends Decoder {
-
-  protected TSFileConfig config = TSFileDescriptor.getInstance().getConfig();
-  /** mode to indicate current encoding type 0 - RLE 1 - BIT_PACKED. */
-  protected Mode mode;
-  /** bit width for bit-packing and rle to decode. */
-  protected int bitWidth;
-  /** number of data left for reading in current buffer. */
-  protected int currentCount;
-  /**
-   * how many bytes for all encoded data like [{@code <bitwidth> <encoded-data>}] in inputstream.
-   */
-  protected int length;
-  /**
-   * a flag to indicate whether current pattern is end. false - need to start reading a new page
-   * true - current page isn't over.
-   */
-  protected boolean isLengthAndBitWidthReaded;
-  /** buffer to save data format like [{@code <bitwidth> <encoded-data>}] for decoder. */
-  protected ByteBuffer byteCache;
-  /** number of bit-packing group in which is saved in header. */
-  protected int bitPackingNum;
-
-  /** a constructor, init with endianType, default encoding is <code>TSEncoding.RLE</code>. */
-  protected RleDecoder() {
-    super(TSEncoding.RLE);
-    reset();
-  }
-
-  @Override
-  public void reset() {
-    currentCount = 0;
-    isLengthAndBitWidthReaded = false;
-    bitPackingNum = 0;
-    byteCache = ByteBuffer.allocate(0);
-  }
-
-  /**
-   * get header for both rle and bit-packing current encode mode which is saved in first bit of
-   * header.
-   *
-   * @return int value
-   * @throws IOException cannot get header
-   */
-  public int getHeader() throws IOException {
-    int header = ReadWriteForEncodingUtils.readUnsignedVarInt(byteCache);
-    mode = (header & 1) == 0 ? Mode.RLE : Mode.BIT_PACKED;
-    return header;
-  }
-
-  /**
-   * get all encoded data according to mode.
-   *
-   * @throws IOException cannot read next value
-   */
-  protected void readNext() throws IOException {
-    int header = getHeader();
-    switch (mode) {
-      case RLE:
-        currentCount = header >> 1;
-        readNumberInRle();
-        break;
-      case BIT_PACKED:
-        callReadBitPackingBuffer(header);
-        break;
-      default:
-        throw new TsFileDecodingException(
-            String.format("tsfile-encoding IntRleDecoder: unknown encoding mode %s", mode));
-    }
-  }
-
-  protected void callReadBitPackingBuffer(int header) throws IOException {
-    int bitPackedGroupCount = header >> 1;
-    // in last bit-packing group, there may be some useless value,
-    // lastBitPackedNum indicates how many values is useful
-    int lastBitPackedNum = ReadWriteIOUtils.read(byteCache);
-    if (bitPackedGroupCount > 0) {
-
-      currentCount =
-          (bitPackedGroupCount - 1) * TSFileConfig.RLE_MIN_REPEATED_NUM + lastBitPackedNum;
-      bitPackingNum = currentCount;
-    } else {
-      throw new TsFileDecodingException(
-          String.format(
-              "tsfile-encoding IntRleDecoder: bitPackedGroupCount %d, smaller than 1",
-              bitPackedGroupCount));
-    }
-    readBitPackingBuffer(bitPackedGroupCount, lastBitPackedNum);
-  }
-
-  /**
-   * read length and bit width of current package before we decode number.
-   *
-   * @param buffer ByteBuffer
-   */
-  protected void readLengthAndBitWidth(ByteBuffer buffer) {
-    length = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-    byte[] tmp = new byte[length];
-    buffer.get(tmp, 0, length);
-    byteCache = ByteBuffer.wrap(tmp);
-    isLengthAndBitWidthReaded = true;
-    bitWidth = ReadWriteIOUtils.read(byteCache);
-    initPacker();
-  }
-
-  /**
-   * Check whether there is number left for reading.
-   *
-   * @param buffer decoded data saved in ByteBuffer
-   * @return true or false to indicate whether there is number left
-   * @throws IOException cannot check next value
-   */
-  @Override
-  public boolean hasNext(ByteBuffer buffer) throws IOException {
-    if (currentCount > 0 || buffer.remaining() > 0 || hasNextPackage()) {
-      return true;
-    }
-    return false;
-  }
-
-  /**
-   * Check whether there is another pattern left for reading.
-   *
-   * @return true or false to indicate whether there is another pattern left
-   */
-  protected boolean hasNextPackage() {
-    return currentCount > 0 || byteCache.remaining() > 0;
-  }
-
-  protected abstract void initPacker();
-
-  /**
-   * Read rle package and save them in buffer.
-   *
-   * @throws IOException cannot read number
-   */
-  protected abstract void readNumberInRle() throws IOException;
-
-  /**
-   * Read bit-packing package and save them in buffer.
-   *
-   * @param bitPackedGroupCount number of group number
-   * @param lastBitPackedNum number of useful value in last group
-   * @throws IOException cannot read bit pack
-   */
-  protected abstract void readBitPackingBuffer(int bitPackedGroupCount, int lastBitPackedNum)
-      throws IOException;
-
-  @Override
-  public boolean readBoolean(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readBoolean is not supproted by RleDecoder");
-  }
-
-  @Override
-  public short readShort(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readShort is not supproted by RleDecoder");
-  }
-
-  @Override
-  public int readInt(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readInt is not supproted by RleDecoder");
-  }
-
-  @Override
-  public long readLong(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readLong is not supproted by RleDecoder");
-  }
-
-  @Override
-  public float readFloat(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readFloat is not supproted by RleDecoder");
-  }
-
-  @Override
-  public double readDouble(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readDouble is not supproted by RleDecoder");
-  }
-
-  @Override
-  public Binary readBinary(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readBinary is not supproted by RleDecoder");
-  }
-
-  @Override
-  public BigDecimal readBigDecimal(ByteBuffer buffer) {
-    throw new TsFileDecodingException("Method readBigDecimal is not supproted by RleDecoder");
-  }
-
-  protected enum Mode {
-    RLE,
-    BIT_PACKED
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/SinglePrecisionChimpDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/SinglePrecisionChimpDecoder.java
deleted file mode 100644
index 33a2290..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/SinglePrecisionChimpDecoder.java
+++ /dev/null
@@ -1,50 +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.encoding.decoder;
-
-import java.nio.ByteBuffer;
-
-/**
- * This class includes code modified from Panagiotis Liakos chimp project.
- *
- * <p>Copyright: 2022- Panagiotis Liakos, Katia Papakonstantinopoulou and Yannis Kotidis
- *
- * <p>Project page: https://github.com/panagiotisl/chimp
- *
- * <p>License: http://www.apache.org/licenses/LICENSE-2.0
- */
-public class SinglePrecisionChimpDecoder extends IntChimpDecoder {
-
-  private static final int CHIMP_ENCODING_ENDING = Float.floatToRawIntBits(Float.NaN);
-
-  @Override
-  public final float readFloat(ByteBuffer in) {
-    return Float.intBitsToFloat(readInt(in));
-  }
-
-  @Override
-  protected int cacheNext(ByteBuffer in) {
-    readNext(in);
-    if (storedValues[current] == CHIMP_ENCODING_ENDING) {
-      hasNext = false;
-    }
-    return storedValues[current];
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/SinglePrecisionDecoderV1.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/SinglePrecisionDecoderV1.java
deleted file mode 100644
index 128bf17..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/SinglePrecisionDecoderV1.java
+++ /dev/null
@@ -1,113 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-/** Decoder for value value using gorilla. */
-public class SinglePrecisionDecoderV1 extends GorillaDecoderV1 {
-
-  private static final Logger logger = LoggerFactory.getLogger(SinglePrecisionDecoderV1.class);
-  private int preValue;
-
-  public SinglePrecisionDecoderV1() {
-    // do nothing
-  }
-
-  @Override
-  public float readFloat(ByteBuffer buffer) {
-    if (!flag) {
-      flag = true;
-      try {
-        int ch1 = ReadWriteIOUtils.read(buffer);
-        int ch2 = ReadWriteIOUtils.read(buffer);
-        int ch3 = ReadWriteIOUtils.read(buffer);
-        int ch4 = ReadWriteIOUtils.read(buffer);
-        preValue = ch1 + (ch2 << 8) + (ch3 << 16) + (ch4 << 24);
-        leadingZeroNum = Integer.numberOfLeadingZeros(preValue);
-        tailingZeroNum = Integer.numberOfTrailingZeros(preValue);
-        float tmp = Float.intBitsToFloat(preValue);
-        fillBuffer(buffer);
-        getNextValue(buffer);
-        return tmp;
-      } catch (IOException e) {
-        logger.error("SinglePrecisionDecoderV1 cannot read first float number", e);
-      }
-    } else {
-      try {
-        float tmp = Float.intBitsToFloat(preValue);
-        getNextValue(buffer);
-        return tmp;
-      } catch (IOException e) {
-        logger.error("SinglePrecisionDecoderV1 cannot read following float number", e);
-      }
-    }
-    return Float.NaN;
-  }
-
-  /**
-   * check whether there is any value to encode left.
-   *
-   * @param buffer stream to read
-   * @throws IOException cannot read from stream
-   */
-  private void getNextValue(ByteBuffer buffer) throws IOException {
-    nextFlag1 = readBit(buffer);
-    // case: '0'
-    if (!nextFlag1) {
-      return;
-    }
-    nextFlag2 = readBit(buffer);
-
-    if (!nextFlag2) {
-      // case: '10'
-      int tmp = 0;
-      for (int i = 0;
-          i < TSFileConfig.VALUE_BITS_LENGTH_32BIT - leadingZeroNum - tailingZeroNum;
-          i++) {
-        int bit = readBit(buffer) ? 1 : 0;
-        tmp |= bit << (TSFileConfig.VALUE_BITS_LENGTH_32BIT - 1 - leadingZeroNum - i);
-      }
-      tmp ^= preValue;
-      preValue = tmp;
-    } else {
-      // case: '11'
-      int leadingZeroNumTmp =
-          readIntFromStream(buffer, TSFileConfig.LEADING_ZERO_BITS_LENGTH_32BIT);
-      int lenTmp = readIntFromStream(buffer, TSFileConfig.FLOAT_VALUE_LENGTH);
-      int tmp = readIntFromStream(buffer, lenTmp);
-      tmp <<= (TSFileConfig.VALUE_BITS_LENGTH_32BIT - leadingZeroNumTmp - lenTmp);
-      tmp ^= preValue;
-      preValue = tmp;
-    }
-    leadingZeroNum = Integer.numberOfLeadingZeros(preValue);
-    tailingZeroNum = Integer.numberOfTrailingZeros(preValue);
-    if (Float.isNaN(Float.intBitsToFloat(preValue))) {
-      isEnd = true;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/SinglePrecisionDecoderV2.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/SinglePrecisionDecoderV2.java
deleted file mode 100644
index ea3d7bc..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/SinglePrecisionDecoderV2.java
+++ /dev/null
@@ -1,53 +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.encoding.decoder;
-
-import java.nio.ByteBuffer;
-
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.GORILLA_ENCODING_ENDING_FLOAT;
-
-/**
- * This class includes code modified from Michael Burman's gorilla-tsc project.
- *
- * <p>Copyright: 2016-2018 Michael Burman and/or other contributors
- *
- * <p>Project page: https://github.com/burmanm/gorilla-tsc
- *
- * <p>License: http://www.apache.org/licenses/LICENSE-2.0
- */
-public class SinglePrecisionDecoderV2 extends IntGorillaDecoder {
-
-  private static final int GORILLA_ENCODING_ENDING =
-      Float.floatToRawIntBits(GORILLA_ENCODING_ENDING_FLOAT);
-
-  @Override
-  public final float readFloat(ByteBuffer in) {
-    return Float.intBitsToFloat(readInt(in));
-  }
-
-  @Override
-  protected int cacheNext(ByteBuffer in) {
-    readNext(in);
-    if (storedValue == GORILLA_ENCODING_ENDING) {
-      hasNext = false;
-    }
-    return storedValue;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/SprintzDecoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/SprintzDecoder.java
deleted file mode 100644
index 0d1debf..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/SprintzDecoder.java
+++ /dev/null
@@ -1,54 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.encoding.encoder.SprintzEncoder;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-public abstract class SprintzDecoder extends Decoder {
-  protected static final Logger logger = LoggerFactory.getLogger(SprintzEncoder.class);
-  protected int bitWidth;
-  protected int Block_size = 8;
-  protected boolean isBlockReaded;
-  protected int currentCount;
-  protected int decodeSize;
-
-  public SprintzDecoder() {
-    super(TSEncoding.SPRINTZ);
-    isBlockReaded = false;
-    currentCount = 0;
-  }
-
-  @Override
-  public void reset() {
-    isBlockReaded = false;
-    currentCount = 0;
-  }
-
-  protected abstract void decodeBlock(ByteBuffer in) throws IOException;
-
-  protected abstract void recalculate();
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/BitmapEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/BitmapEncoder.java
deleted file mode 100644
index a258397..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/BitmapEncoder.java
+++ /dev/null
@@ -1,131 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- * Encodes values using bitmap, according to the following grammar:
- *
- * <pre>{@code
- * bitmap-encoding: <length> <num> <encoded-data>
- * length := length of the <encoded-data> in bytes stored as unsigned var int
- * num := number for all encoded data in <encoded-data> stored as unsigned var int
- * encoded-data := <run>*
- * run := <value> <bit-index>
- * value := value in the data after deduplication. Use varint-encode and store as unsigned var int
- * bit-index := a list of 01 sequence to record the position of the value above
- * }</pre>
- *
- * <p>Decode switch or enum values using bitmap, bitmap-encode.{@code <length> <num> <encoded data>
- * }
- */
-public class BitmapEncoder extends Encoder {
-
-  private static final Logger logger = LoggerFactory.getLogger(BitmapEncoder.class);
-
-  /** Bitmap Encoder stores all current values in a list temporally. */
-  private List<Integer> values;
-
-  /** BitmapEncoder constructor. */
-  public BitmapEncoder() {
-    super(TSEncoding.BITMAP);
-    this.values = new ArrayList<>();
-    logger.debug("tsfile-encoding BitmapEncoder: init bitmap encoder");
-  }
-
-  /**
-   * Each time encoder receives a value, encoder doesn't write it to OutputStream immediately.
-   * Encoder stores current value in a list. When all value is received, flush() method will be
-   * invoked. Encoder encodes all values and writes them to OutputStream.
-   *
-   * @param value value to encode
-   * @param out OutputStream to write encoded stream
-   * @throws IOException cannot encode value
-   * @see Encoder#encode(int, java.io.ByteArrayOutputStream)
-   */
-  @Override
-  public void encode(int value, ByteArrayOutputStream out) {
-    values.add(value);
-  }
-
-  /**
-   * When all data received, encoder now encodes values in list and write them to OutputStream.
-   *
-   * @param out OutputStream to write encoded stream
-   * @throws IOException cannot flush to OutputStream
-   * @see Encoder#flush(java.io.ByteArrayOutputStream)
-   */
-  @Override
-  public void flush(ByteArrayOutputStream out) throws IOException {
-    // byteCache stores all <encoded-data> and we know its size
-    ByteArrayOutputStream byteCache = new ByteArrayOutputStream();
-    Set<Integer> valueType = new HashSet<>(values);
-    int byteNum = (values.size() + 7) / 8;
-    if (byteNum == 0) {
-      reset();
-      return;
-    }
-    int len = values.size();
-    for (int value : valueType) {
-      byte[] buffer = new byte[byteNum];
-      for (int i = 0; i < len; i++) {
-        if (values.get(i) == value) {
-          int index = i / 8;
-          int offset = 7 - (i % 8);
-          // Encoder use 1 bit in byte to indicate that value appears
-          buffer[index] |= ((byte) 1 << offset);
-        }
-      }
-      ReadWriteForEncodingUtils.writeUnsignedVarInt(value, byteCache);
-      byteCache.write(buffer);
-    }
-    ReadWriteForEncodingUtils.writeUnsignedVarInt(byteCache.size(), out);
-    ReadWriteForEncodingUtils.writeUnsignedVarInt(len, out);
-    out.write(byteCache.toByteArray());
-    reset();
-  }
-
-  private void reset() {
-    values.clear();
-  }
-
-  @Override
-  public int getOneItemMaxSize() {
-    return 1;
-  }
-
-  @Override
-  public long getMaxByteSize() {
-    // byteCacheSize + byteDictSize + (byte array + array length) * byteDictSize
-    return (long) 4 + 4 + ((values.size() + 7) / 8 + 4) * values.size();
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DeltaBinaryEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DeltaBinaryEncoder.java
deleted file mode 100644
index adac76f..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DeltaBinaryEncoder.java
+++ /dev/null
@@ -1,336 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-
-/**
- * DeltaBinaryEncoder is a encoder for compressing data in type of integer and long. We adapt a
- * hypothesis that contiguous data points have similar values. Thus the difference value of two
- * adjacent points is smaller than those two point values. One integer in java takes 32-bits. If a
- * positive number is less than 2^m, the bits of this integer which index from m to 31 are all 0.
- * Given an array which length is n, if all values in input data array are all positive and less
- * than 2^m, we need actually m*n, but not 32*n bits to store the array.
- *
- * <p>DeltaBinaryEncoder calculates difference between two adjacent points and record the minimum of
- * those difference values firstly. Then it saves two_diff value that difference minus minimum of
- * them, to make sure all two_diff values are positive. Then it statistics the longest bit length
- * {@code m} it takes for each two_diff value, which means the bit length that maximum two_diff
- * value takes. Only the low m bits are saved into result byte array for all two_diff values.
- */
-public abstract class DeltaBinaryEncoder extends Encoder {
-
-  protected static final int BLOCK_DEFAULT_SIZE = 128;
-  private static final Logger logger = LoggerFactory.getLogger(DeltaBinaryEncoder.class);
-  protected ByteArrayOutputStream out;
-  protected int blockSize;
-  // input value is stored in deltaBlackBuffer temporarily
-  protected byte[] encodingBlockBuffer;
-
-  protected int writeIndex = -1;
-  protected int writeWidth = 0;
-
-  /**
-   * constructor of DeltaBinaryEncoder.
-   *
-   * @param size - the number how many numbers to be packed into a block.
-   */
-  protected DeltaBinaryEncoder(int size) {
-    super(TSEncoding.TS_2DIFF);
-    blockSize = size;
-  }
-
-  protected abstract void writeHeader() throws IOException;
-
-  protected abstract void writeValueToBytes(int i);
-
-  protected abstract void calcTwoDiff(int i);
-
-  protected abstract void reset();
-
-  protected abstract int calculateBitWidthsForDeltaBlockBuffer();
-
-  /** write all data into {@code encodingBlockBuffer}. */
-  private void writeDataWithMinWidth() {
-    for (int i = 0; i < writeIndex; i++) {
-      writeValueToBytes(i);
-    }
-    int encodingLength = (int) Math.ceil((writeIndex * writeWidth) / 8.0);
-    out.write(encodingBlockBuffer, 0, encodingLength);
-  }
-
-  private void writeHeaderToBytes() throws IOException {
-    ReadWriteIOUtils.write(writeIndex, out);
-    ReadWriteIOUtils.write(writeWidth, out);
-    writeHeader();
-  }
-
-  private void flushBlockBuffer(ByteArrayOutputStream out) throws IOException {
-    if (writeIndex == -1) {
-      return;
-    }
-    // since we store the min delta, the deltas will be converted to be the
-    // difference to min delta and all positive
-    this.out = out;
-    for (int i = 0; i < writeIndex; i++) {
-      calcTwoDiff(i);
-    }
-    writeWidth = calculateBitWidthsForDeltaBlockBuffer();
-    writeHeaderToBytes();
-    writeDataWithMinWidth();
-
-    reset();
-    writeIndex = -1;
-  }
-
-  /** calling this method to flush all values which haven't encoded to result byte array. */
-  @Override
-  public void flush(ByteArrayOutputStream out) {
-    try {
-      flushBlockBuffer(out);
-    } catch (IOException e) {
-      logger.error("flush data to stream failed!", e);
-    }
-  }
-
-  public static class IntDeltaEncoder extends DeltaBinaryEncoder {
-
-    private int[] deltaBlockBuffer;
-    private int firstValue;
-    private int previousValue;
-    private int minDeltaBase;
-
-    public IntDeltaEncoder() {
-      this(BLOCK_DEFAULT_SIZE);
-    }
-
-    /**
-     * constructor of IntDeltaEncoder which is a sub-class of DeltaBinaryEncoder.
-     *
-     * @param size - the number how many numbers to be packed into a block.
-     */
-    public IntDeltaEncoder(int size) {
-      super(size);
-      deltaBlockBuffer = new int[this.blockSize];
-      encodingBlockBuffer = new byte[blockSize * 4];
-      reset();
-    }
-
-    @Override
-    protected int calculateBitWidthsForDeltaBlockBuffer() {
-      int width = 0;
-      for (int i = 0; i < writeIndex; i++) {
-        width = Math.max(width, getValueWidth(deltaBlockBuffer[i]));
-      }
-      return width;
-    }
-
-    private void calcDelta(int value) {
-      int delta = value - previousValue; // calculate delta
-      if (delta < minDeltaBase) {
-        minDeltaBase = delta;
-      }
-      deltaBlockBuffer[writeIndex++] = delta;
-    }
-
-    /**
-     * input a integer.
-     *
-     * @param value value to encode
-     * @param out the ByteArrayOutputStream which data encode into
-     */
-    public void encodeValue(int value, ByteArrayOutputStream out) {
-      if (writeIndex == -1) {
-        writeIndex++;
-        firstValue = value;
-        previousValue = firstValue;
-        return;
-      }
-      calcDelta(value);
-      previousValue = value;
-      if (writeIndex == blockSize) {
-        flush(out);
-      }
-    }
-
-    @Override
-    protected void reset() {
-      firstValue = 0;
-      previousValue = 0;
-      minDeltaBase = Integer.MAX_VALUE;
-      for (int i = 0; i < blockSize; i++) {
-        encodingBlockBuffer[i] = 0;
-        deltaBlockBuffer[i] = 0;
-      }
-    }
-
-    private int getValueWidth(int v) {
-      return 32 - Integer.numberOfLeadingZeros(v);
-    }
-
-    @Override
-    protected void writeValueToBytes(int i) {
-      BytesUtils.intToBytes(deltaBlockBuffer[i], encodingBlockBuffer, writeWidth * i, writeWidth);
-    }
-
-    @Override
-    protected void calcTwoDiff(int i) {
-      deltaBlockBuffer[i] = deltaBlockBuffer[i] - minDeltaBase;
-    }
-
-    @Override
-    protected void writeHeader() throws IOException {
-      ReadWriteIOUtils.write(minDeltaBase, out);
-      ReadWriteIOUtils.write(firstValue, out);
-    }
-
-    @Override
-    public void encode(int value, ByteArrayOutputStream out) {
-      encodeValue(value, out);
-    }
-
-    @Override
-    public int getOneItemMaxSize() {
-      return 4;
-    }
-
-    @Override
-    public long getMaxByteSize() {
-      // The meaning of 24 is: index(4)+width(4)+minDeltaBase(4)+firstValue(4)
-      return (long) 24 + writeIndex * 4;
-    }
-  }
-
-  public static class LongDeltaEncoder extends DeltaBinaryEncoder {
-
-    private long[] deltaBlockBuffer;
-    private long firstValue;
-    private long previousValue;
-    private long minDeltaBase;
-
-    public LongDeltaEncoder() {
-      this(BLOCK_DEFAULT_SIZE);
-    }
-
-    /**
-     * constructor of LongDeltaEncoder which is a sub-class of DeltaBinaryEncoder.
-     *
-     * @param size - the number how many numbers to be packed into a block.
-     */
-    public LongDeltaEncoder(int size) {
-      super(size);
-      deltaBlockBuffer = new long[this.blockSize];
-      encodingBlockBuffer = new byte[blockSize * 8];
-      reset();
-    }
-
-    private void calcDelta(long value) {
-      long delta = value - previousValue; // calculate delta
-      if (delta < minDeltaBase) {
-        minDeltaBase = delta;
-      }
-      deltaBlockBuffer[writeIndex++] = delta;
-    }
-
-    @Override
-    protected void reset() {
-      firstValue = 0L;
-      previousValue = 0L;
-      minDeltaBase = Long.MAX_VALUE;
-      for (int i = 0; i < blockSize; i++) {
-        encodingBlockBuffer[i] = 0;
-        deltaBlockBuffer[i] = 0L;
-      }
-    }
-
-    private int getValueWidth(long v) {
-      return 64 - Long.numberOfLeadingZeros(v);
-    }
-
-    @Override
-    protected void writeValueToBytes(int i) {
-      BytesUtils.longToBytes(deltaBlockBuffer[i], encodingBlockBuffer, writeWidth * i, writeWidth);
-    }
-
-    @Override
-    protected void calcTwoDiff(int i) {
-      deltaBlockBuffer[i] = deltaBlockBuffer[i] - minDeltaBase;
-    }
-
-    @Override
-    protected void writeHeader() throws IOException {
-      out.write(BytesUtils.longToBytes(minDeltaBase));
-      out.write(BytesUtils.longToBytes(firstValue));
-    }
-
-    @Override
-    public void encode(long value, ByteArrayOutputStream out) {
-      encodeValue(value, out);
-    }
-
-    @Override
-    public int getOneItemMaxSize() {
-      return 8;
-    }
-
-    @Override
-    public long getMaxByteSize() {
-      // The meaning of 24 is: index(4)+width(4)+minDeltaBase(8)+firstValue(8)
-      return (long) 24 + writeIndex * 8;
-    }
-
-    /**
-     * input a integer or long value.
-     *
-     * @param value value to encode
-     * @param out - the ByteArrayOutputStream which data encode into
-     */
-    public void encodeValue(long value, ByteArrayOutputStream out) {
-      if (writeIndex == -1) {
-        writeIndex++;
-        firstValue = value;
-        previousValue = firstValue;
-        return;
-      }
-      calcDelta(value);
-      previousValue = value;
-      if (writeIndex == blockSize) {
-        flush(out);
-      }
-    }
-
-    @Override
-    protected int calculateBitWidthsForDeltaBlockBuffer() {
-      int width = 0;
-      for (int i = 0; i < writeIndex; i++) {
-        width = Math.max(width, getValueWidth(deltaBlockBuffer[i]));
-      }
-      return width;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DictionaryEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DictionaryEncoder.java
deleted file mode 100644
index 948edc6..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DictionaryEncoder.java
+++ /dev/null
@@ -1,116 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-/**
- * An encoder implementing dictionary encoding.
- *
- * <pre>Encoding format: {@code
- * <map> <indexes>
- * <map> := <map length> <map data>
- * <map data> := [<entry size><entry data>]...
- * <indexes> := [<index>]...
- * }</pre>
- */
-public class DictionaryEncoder extends Encoder {
-  private static final Logger logger = LoggerFactory.getLogger(DictionaryEncoder.class);
-
-  private HashMap<Binary, Integer> entryIndex;
-  private List<Binary> indexEntry;
-  private IntRleEncoder valuesEncoder;
-  private long mapSize;
-
-  public DictionaryEncoder() {
-    super(TSEncoding.DICTIONARY);
-
-    entryIndex = new HashMap<>();
-    indexEntry = new ArrayList<>();
-    valuesEncoder = new IntRleEncoder();
-    mapSize = 0;
-  }
-
-  @Override
-  public void encode(Binary value, ByteArrayOutputStream out) {
-    int i =
-        entryIndex.computeIfAbsent(
-            value,
-            v -> {
-              indexEntry.add(v);
-              mapSize += v.getLength();
-              return entryIndex.size();
-            });
-    valuesEncoder.encode(i, out);
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) {
-    try {
-      writeMap(out);
-      writeEncodedData(out);
-    } catch (IOException e) {
-      logger.error("tsfile-encoding DictionaryEncoder: error occurs when flushing", e);
-    }
-    reset();
-  }
-
-  @Override
-  public int getOneItemMaxSize() {
-    // map + one encoded value = (map size + map value) + one encoded value = (4 + 4) + 4
-    return 12;
-  }
-
-  @Override
-  public long getMaxByteSize() {
-    // has max size when when all points are unique
-    return 4 + mapSize + valuesEncoder.getMaxByteSize();
-  }
-
-  private void writeMap(ByteArrayOutputStream out) throws IOException {
-    ReadWriteForEncodingUtils.writeVarInt(indexEntry.size(), out);
-    for (Binary value : indexEntry) {
-      ReadWriteForEncodingUtils.writeVarInt(value.getLength(), out);
-      out.write(value.getValues());
-    }
-  }
-
-  private void writeEncodedData(ByteArrayOutputStream out) throws IOException {
-    valuesEncoder.flush(out);
-  }
-
-  private void reset() {
-    entryIndex.clear();
-    indexEntry.clear();
-    valuesEncoder.reset();
-    mapSize = 0;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DoublePrecisionChimpEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DoublePrecisionChimpEncoder.java
deleted file mode 100644
index cf762de..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DoublePrecisionChimpEncoder.java
+++ /dev/null
@@ -1,55 +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.encoding.encoder;
-
-import java.io.ByteArrayOutputStream;
-
-/**
- * This class includes code modified from Panagiotis Liakos chimp project.
- *
- * <p>Copyright: 2022- Panagiotis Liakos, Katia Papakonstantinopoulou and Yannis Kotidis
- *
- * <p>Project page: https://github.com/panagiotisl/chimp
- *
- * <p>License: http://www.apache.org/licenses/LICENSE-2.0
- */
-public class DoublePrecisionChimpEncoder extends LongChimpEncoder {
-
-  private static final long CHIMP_ENCODING_ENDING = Double.doubleToRawLongBits(Double.NaN);
-
-  @Override
-  public final void encode(double value, ByteArrayOutputStream out) {
-    encode(Double.doubleToRawLongBits(value), out);
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) {
-    // ending stream
-    encode(CHIMP_ENCODING_ENDING, out);
-
-    // flip the byte no matter it is empty or not
-    // the empty ending byte is necessary when decoding
-    bitsLeft = 0;
-    flipByte(out);
-
-    // the encoder may be reused, so let us reset it
-    reset();
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DoublePrecisionEncoderV1.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DoublePrecisionEncoderV1.java
deleted file mode 100644
index 3ddb33d..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DoublePrecisionEncoderV1.java
+++ /dev/null
@@ -1,117 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-
-import java.io.ByteArrayOutputStream;
-
-/** Encoder for int value using gorilla encoding. */
-public class DoublePrecisionEncoderV1 extends GorillaEncoderV1 {
-
-  private long preValue;
-
-  public DoublePrecisionEncoderV1() {
-    // do nothing
-  }
-
-  @Override
-  public void encode(double value, ByteArrayOutputStream out) {
-    if (!flag) {
-      // case: write first 8 byte value without any encoding
-      flag = true;
-      preValue = Double.doubleToLongBits(value);
-      leadingZeroNum = Long.numberOfLeadingZeros(preValue);
-      tailingZeroNum = Long.numberOfTrailingZeros(preValue);
-      byte[] bufferLittle = new byte[8];
-
-      for (int i = 0; i < 8; i++) {
-        bufferLittle[i] = (byte) (((preValue) >> (i * 8)) & 0xFF);
-      }
-      out.write(bufferLittle, 0, bufferLittle.length);
-    } else {
-      long nextValue = Double.doubleToLongBits(value);
-      long tmp = nextValue ^ preValue;
-      if (tmp == 0) {
-        // case: write '0'
-        writeBit(false, out);
-      } else {
-        int leadingZeroNumTmp = Long.numberOfLeadingZeros(tmp);
-        int tailingZeroNumTmp = Long.numberOfTrailingZeros(tmp);
-        if (leadingZeroNumTmp >= leadingZeroNum && tailingZeroNumTmp >= tailingZeroNum) {
-          // case: write '10' and effective bits without first leadingZeroNum '0'
-          // and last tailingZeroNum '0'
-          writeBit(true, out);
-          writeBit(false, out);
-          writeBits(
-              tmp, out, TSFileConfig.VALUE_BITS_LENGTH_64BIT - 1 - leadingZeroNum, tailingZeroNum);
-        } else {
-          // case: write '11', leading zero num of value, effective bits len and effective
-          // bit value
-          writeBit(true, out);
-          writeBit(true, out);
-          writeBits(leadingZeroNumTmp, out, TSFileConfig.LEADING_ZERO_BITS_LENGTH_64BIT - 1, 0);
-          writeBits(
-              (long) TSFileConfig.VALUE_BITS_LENGTH_64BIT - leadingZeroNumTmp - tailingZeroNumTmp,
-              out,
-              TSFileConfig.DOUBLE_VALUE_LENGTH - 1,
-              0);
-          writeBits(
-              tmp,
-              out,
-              TSFileConfig.VALUE_BITS_LENGTH_64BIT - 1 - leadingZeroNumTmp,
-              tailingZeroNumTmp);
-        }
-      }
-      preValue = nextValue;
-      leadingZeroNum = Long.numberOfLeadingZeros(preValue);
-      tailingZeroNum = Long.numberOfTrailingZeros(preValue);
-    }
-  }
-
-  private void writeBits(long num, ByteArrayOutputStream out, int start, int end) {
-    for (int i = start; i >= end; i--) {
-      long bit = num & (1L << i);
-      writeBit(bit, out);
-    }
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) {
-    encode(Double.NaN, out);
-    clearBuffer(out);
-    reset();
-  }
-
-  @Override
-  public int getOneItemMaxSize() {
-    // case '11'
-    // 2bit + 6bit + 7bit + 64bit = 79bit
-    return 10;
-  }
-
-  @Override
-  public long getMaxByteSize() {
-    // max(first 8 byte, case '11' 2bit + 6bit + 7bit + 64bit = 79bit )
-    // + NaN(2bit + 6bit + 7bit + 64bit = 79bit) =
-    // 158bit
-    return 20;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DoublePrecisionEncoderV2.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DoublePrecisionEncoderV2.java
deleted file mode 100644
index 3a6224e..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DoublePrecisionEncoderV2.java
+++ /dev/null
@@ -1,55 +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.encoding.encoder;
-
-import java.io.ByteArrayOutputStream;
-
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.GORILLA_ENCODING_ENDING_DOUBLE;
-
-/**
- * This class includes code modified from Michael Burman's gorilla-tsc project.
- *
- * <p>Copyright: 2016-2018 Michael Burman and/or other contributors
- *
- * <p>Project page: https://github.com/burmanm/gorilla-tsc
- *
- * <p>License: http://www.apache.org/licenses/LICENSE-2.0
- */
-public class DoublePrecisionEncoderV2 extends LongGorillaEncoder {
-
-  @Override
-  public final void encode(double value, ByteArrayOutputStream out) {
-    encode(Double.doubleToRawLongBits(value), out);
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) {
-    // ending stream
-    encode(GORILLA_ENCODING_ENDING_DOUBLE, out);
-
-    // flip the byte no matter it is empty or not
-    // the empty ending byte is necessary when decoding
-    bitsLeft = 0;
-    flipByte(out);
-
-    // the encoder may be reused, so let us reset it
-    reset();
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DoubleRLBE.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DoubleRLBE.java
deleted file mode 100644
index a9becdc..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DoubleRLBE.java
+++ /dev/null
@@ -1,293 +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.encoding.encoder;
-
-import java.io.ByteArrayOutputStream;
-
-public class DoubleRLBE extends RLBE {
-  // delta values
-  private final double[] diffValue = new double[blockSize + 1];
-
-  // repeat times on length code
-  private final long[] lengRLE = new long[blockSize + 1];
-
-  // previous value of original value
-  private double previousValue;
-
-  // constructor of DoubleRLBE
-  public DoubleRLBE() {
-    super();
-    reset();
-  }
-
-  protected void reset() {
-    writeIndex = -1;
-    LengthCode = new int[blockSize + 1];
-    for (int i = 0; i < blockSize; i++) {
-      diffValue[i] = 0;
-      LengthCode[i] = 0;
-      byteBuffer = 0;
-      numberLeftInBuffer = 0;
-      lengRLE[i] = 0;
-    }
-  }
-
-  /**
-   * calculate the binary code length of given long integer.
-   *
-   * @param val the long integer to calculate length
-   * @return the length of val's binary code
-   */
-  private int calBinarylength(long val) {
-    if (val == 0) {
-      return 1;
-    }
-    int i = 64;
-    while ((((long) 1 << (i - 1)) & val) == 0 && i > 0) {
-      i--;
-    }
-    return i;
-  }
-
-  /**
-   * calculate the binary code length of given double note: double is transfered into long first.
-   *
-   * @param v the double to calculate length
-   * @return the length of val's binary code
-   */
-  private int calBinarylength(double v) {
-    long val = Double.doubleToRawLongBits(v);
-    if (val == 0) {
-      return 1;
-    }
-    int i = 64;
-    while ((((long) 1 << (i - 1)) & val) == 0 && i > 0) {
-      i--;
-    }
-    return i;
-  }
-
-  /**
-   * encode one input integer value.
-   *
-   * @param value the integer to be encoded
-   * @param out the output stream to flush in when buffer is full
-   */
-  public void encodeValue(double value, ByteArrayOutputStream out) {
-    if (writeIndex == -1) {
-      // when the first value hasn't encoded yet
-      diffValue[++writeIndex] = value;
-      LengthCode[writeIndex] = calBinarylength(value);
-      previousValue = value;
-      return;
-    }
-    // calculate delta value
-    diffValue[++writeIndex] = value - previousValue;
-    // caldulate the length of delta value
-    LengthCode[writeIndex] = calBinarylength(diffValue[writeIndex]);
-    previousValue = value;
-    if (writeIndex == blockSize - 1) {
-      // when encoded number reach to blocksize
-      flush(out);
-    }
-  }
-
-  @Override
-  public void encode(double value, ByteArrayOutputStream out) {
-    encodeValue(value, out);
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) {
-    flushBlock(out);
-  }
-
-  /**
-   * calculate fibonacci code of input long integer.
-   *
-   * @param val the long integer to be fibonacci-encoded
-   * @return the reverse fibonacci code of val in binary code
-   */
-  protected long calcFibonacci(long val) {
-    // fibonacci values are stored in Fib
-    long[] fib = new long[blockSize * 2 + 1];
-    fib[0] = 1;
-    fib[1] = 1;
-    int i;
-    // generate fibonacci values from 1 to the first one larger than val
-    for (i = 2; fib[i - 1] <= val; i++) {
-      fib[i] = fib[i - 1] + fib[i - 2];
-    }
-
-    i--;
-    long valfib = 0;
-    // calculate fibonacci code
-    while (val > 0) {
-      while (fib[i] > val && i >= 1) {
-        i--;
-      }
-      valfib |= (1 << (i - 1));
-      val -= fib[i];
-    }
-    return valfib;
-  }
-
-  /** run length on DiffValue then store length at the first index in Lengrle. */
-  private void rleonlengthcode() {
-    int i = 0;
-    while (i <= writeIndex) {
-      int j = i;
-      int temprlecal = 0;
-      while (LengthCode[j] == LengthCode[i] && j <= writeIndex) {
-        j++;
-        temprlecal++;
-      }
-      // store repeat time at the first repeating value's position
-      lengRLE[i] = temprlecal;
-      i = j;
-    }
-  }
-
-  /**
-   * flush all encoded values in a block to output stream.
-   *
-   * @param out the output stream to be flushed to
-   */
-  protected void flushBlock(ByteArrayOutputStream out) {
-    if (writeIndex == -1) {
-      return;
-    }
-    // store the number of values
-    writewriteIndex(out);
-    // calculate length code of delta binary length
-    rleonlengthcode();
-    for (int i = 0; i <= writeIndex; i++) {
-      if (lengRLE[i] > 0) { // flush the adjacent same length delta values
-        flushSegment(i, out);
-      }
-    }
-    clearBuffer(out);
-    reset();
-  }
-
-  /**
-   * flush the adjacent same-length delta values.
-   *
-   * @param i the position of the first delta value
-   * @param out output stream
-   */
-  private void flushSegment(int i, ByteArrayOutputStream out) {
-    // write the first 6 bits: length code in binary words.
-    for (int j = 6; j >= 0; j--) {
-      if ((LengthCode[i] & (1 << j)) > 0) {
-        writeBit(true, out);
-      } else {
-        writeBit(false, out);
-      }
-    }
-    // write the fibonacci code in normal direction
-    long fib = calcFibonacci(lengRLE[i]);
-    int fiblen = calBinarylength(fib);
-    for (int j = 0; j < fiblen; j++) {
-      if ((fib & (1 << j)) > 0) {
-        writeBit(true, out);
-      } else {
-        writeBit(false, out);
-      }
-    }
-    // write '1' to note the end of fibonacci code
-    writeBit(true, out);
-
-    // write Binary code words
-    int j = i;
-    do {
-      int tempDifflen = calBinarylength(diffValue[j]);
-      long tempDiff = Double.doubleToRawLongBits(diffValue[j]);
-      for (int k = tempDifflen - 1; k >= 0; k--) {
-        if ((tempDiff & ((long) 1 << k)) > 0) {
-          writeBit(true, out);
-        } else {
-          writeBit(false, out);
-        }
-      }
-      j++;
-    } while (lengRLE[j] == 0 && j <= writeIndex);
-  }
-
-  @Override
-  public int getOneItemMaxSize() {
-    return 4 * 4 * 2;
-  }
-
-  @Override
-  public long getMaxByteSize() {
-    return 5L * 4 * blockSize * 2;
-  }
-
-  /**
-   * write one bit to byteBuffer, when byteBuffer is full, flush byteBuffer to output stream
-   *
-   * @param b the bit to be written
-   * @param out output stream
-   */
-  protected void writeBit(boolean b, ByteArrayOutputStream out) {
-    byteBuffer <<= 1;
-    if (b) {
-      byteBuffer |= 1;
-    }
-
-    numberLeftInBuffer++;
-    if (numberLeftInBuffer == 8) {
-      clearBuffer(out);
-    }
-  }
-
-  /**
-   * flush bits left in byteBuffer to output stream.
-   *
-   * @param out output stream
-   */
-  protected void clearBuffer(ByteArrayOutputStream out) {
-    if (numberLeftInBuffer == 0) {
-      return;
-    }
-    if (numberLeftInBuffer > 0) {
-      byteBuffer <<= (8 - numberLeftInBuffer);
-    }
-    out.write(byteBuffer);
-    numberLeftInBuffer = 0;
-    byteBuffer = 0;
-  }
-
-  /**
-   * write the number of encoded values to output stream
-   *
-   * @param out output stream
-   */
-  private void writewriteIndex(ByteArrayOutputStream out) {
-    for (int i = 31; i >= 0; i--) {
-      if ((writeIndex + 1 & (1 << i)) > 0) {
-        writeBit(true, out);
-      } else {
-        writeBit(false, out);
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DoubleSprintzEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DoubleSprintzEncoder.java
deleted file mode 100644
index 9a9ba4c..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/DoubleSprintzEncoder.java
+++ /dev/null
@@ -1,162 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.encoding.bitpacking.LongPacker;
-import org.apache.iotdb.tsfile.encoding.fire.LongFire;
-import org.apache.iotdb.tsfile.exception.encoding.TsFileEncodingException;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Vector;
-
-public class DoubleSprintzEncoder extends SprintzEncoder {
-
-  // bit packer
-  LongPacker packer;
-
-  // Long Fire Predictor
-  LongFire firePred;
-
-  // we save all value in a list and calculate its bitWidth
-  protected Vector<Double> values;
-
-  // convert to Long Buffer
-  long[] convertBuffer;
-
-  public DoubleSprintzEncoder() {
-    super();
-    values = new Vector<>();
-    firePred = new LongFire(3);
-    convertBuffer = new long[Block_size];
-  }
-
-  @Override
-  protected void reset() {
-    super.reset();
-    values.clear();
-  }
-
-  @Override
-  public int getOneItemMaxSize() {
-    return 1 + (1 + Block_size) * Double.BYTES;
-  }
-
-  @Override
-  public long getMaxByteSize() {
-    return 1 + (long) (values.size() + 1) * Double.BYTES;
-  }
-
-  protected long predict(Double value, Double preVlaue) throws TsFileEncodingException {
-    long pred;
-    if (predictMethod.equals("delta")) {
-      pred = delta(value, preVlaue);
-    } else if (predictMethod.equals("fire")) {
-      pred = fire(value, preVlaue);
-    } else {
-      throw new TsFileEncodingException(
-          "Config: Predict Method {} of SprintzEncoder is not supported.");
-    }
-    if (pred <= 0) {
-      pred = -2 * pred;
-    } else {
-      pred = 2 * pred - 1; // TODO:overflow
-    }
-    return pred;
-  }
-
-  @Override
-  protected void bitPack() throws IOException {
-    final double preValue = values.get(0);
-    values.remove(0);
-    Vector<Long> convertBufferList = new Vector<>();
-    for (long itemBuffer : convertBuffer) {
-      convertBufferList.add(itemBuffer);
-    }
-    this.bitWidth = ReadWriteForEncodingUtils.getLongMaxBitWidth(convertBufferList);
-    packer = new LongPacker(this.bitWidth);
-    byte[] bytes = new byte[bitWidth];
-    packer.pack8Values(convertBuffer, 0, bytes);
-    ReadWriteForEncodingUtils.writeIntLittleEndianPaddedOnBitWidth(bitWidth, byteCache, 1);
-    byteCache.write(ByteBuffer.allocate(8).putDouble(preValue).array());
-    byteCache.write(bytes, 0, bytes.length);
-  }
-
-  protected long delta(Double value, Double preValue) {
-    return Double.doubleToLongBits(value) - Double.doubleToLongBits(preValue);
-  }
-
-  protected long fire(Double value, Double preValue) {
-    long prev = Double.doubleToLongBits(preValue);
-    long val = Double.doubleToLongBits(value);
-    long pred = firePred.predict(prev);
-    long err = val - pred;
-    firePred.train(prev, val, err);
-    return err;
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) throws IOException {
-    if (byteCache.size() > 0) {
-      byteCache.writeTo(out);
-    }
-    if (!values.isEmpty()) {
-      int size = values.size();
-      size |= (1 << 7);
-      ReadWriteForEncodingUtils.writeIntLittleEndianPaddedOnBitWidth(size, out, 1);
-      DoublePrecisionEncoderV2 encoder = new DoublePrecisionEncoderV2();
-      for (double val : values) {
-        encoder.encode(val, out);
-      }
-      encoder.flush(out);
-    }
-    reset();
-  }
-
-  @Override
-  public void encode(double value, ByteArrayOutputStream out) {
-    if (!isFirstCached) {
-      values.add(value);
-      isFirstCached = true;
-      return;
-    } else {
-      values.add(value);
-    }
-    if (values.size() == Block_size + 1) {
-      try {
-        firePred.reset();
-        for (int i = 1; i <= Block_size; i++) {
-          convertBuffer[i - 1] = predict(values.get(i), values.get(i - 1));
-        }
-        bitPack();
-        isFirstCached = false;
-        values.clear();
-        groupNum++;
-        if (groupNum == groupMax) {
-          flush(out);
-        }
-      } catch (IOException e) {
-        logger.error("Error occured when encoding INT32 Type value with with Sprintz", e);
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/Encoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/Encoder.java
deleted file mode 100644
index b201fb9..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/Encoder.java
+++ /dev/null
@@ -1,111 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.exception.encoding.TsFileEncodingException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.math.BigDecimal;
-
-/**
- * This class is the parent class of all Encoders. Every encoder has a specific {@code
- * <encoderType>} which represents the type of this encoder
- */
-public abstract class Encoder {
-
-  public static final String MAX_STRING_LENGTH = "max_string_length";
-  public static final String MAX_POINT_NUMBER = "max_point_number";
-
-  private TSEncoding type;
-
-  public void setType(TSEncoding type) {
-    this.type = type;
-  }
-
-  public TSEncoding getType() {
-    return type;
-  }
-
-  public Encoder(TSEncoding type) {
-    this.type = type;
-  }
-
-  public void encode(boolean value, ByteArrayOutputStream out) {
-    throw new TsFileEncodingException("Method encode boolean is not supported by Encoder");
-  }
-
-  public void encode(short value, ByteArrayOutputStream out) {
-    throw new TsFileEncodingException("Method encode short is not supported by Encoder");
-  }
-
-  public void encode(int value, ByteArrayOutputStream out) {
-    throw new TsFileEncodingException("Method encode int is not supported by Encoder");
-  }
-
-  public void encode(long value, ByteArrayOutputStream out) {
-    throw new TsFileEncodingException("Method encode long is not supported by Encoder");
-  }
-
-  public void encode(float value, ByteArrayOutputStream out) {
-    throw new TsFileEncodingException("Method encode float is not supported by Encoder");
-  }
-
-  public void encode(double value, ByteArrayOutputStream out) {
-    throw new TsFileEncodingException("Method encode double is not supported by Encoder");
-  }
-
-  public void encode(Binary value, ByteArrayOutputStream out) {
-    throw new TsFileEncodingException("Method encode Binary is not supported by Encoder");
-  }
-
-  public void encode(BigDecimal value, ByteArrayOutputStream out) {
-    throw new TsFileEncodingException("Method encode BigDecimal is not supported by Encoder");
-  }
-
-  /**
-   * Write all values buffered in memory cache to OutputStream.
-   *
-   * @param out - ByteArrayOutputStream
-   * @throws IOException cannot flush to OutputStream
-   */
-  public abstract void flush(ByteArrayOutputStream out) throws IOException;
-
-  /**
-   * When encoder accepts a new incoming data point, the maximal possible size in byte it takes to
-   * store in memory.
-   *
-   * @return the maximal possible size of one data item encoded by this encoder
-   */
-  public int getOneItemMaxSize() {
-    throw new UnsupportedOperationException();
-  }
-
-  /**
-   * The maximal possible memory size occupied by current Encoder. This statistic value doesn't
-   * involve OutputStream.
-   *
-   * @return the maximal size of possible memory occupied by current encoder
-   */
-  public long getMaxByteSize() {
-    throw new UnsupportedOperationException();
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/FloatEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/FloatEncoder.java
deleted file mode 100644
index 2d477cb..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/FloatEncoder.java
+++ /dev/null
@@ -1,138 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.exception.encoding.TsFileEncodingException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-
-/**
- * Encoder for float or double value using rle or two-diff according to following grammar.
- *
- * <pre>{@code
- * float encoder: <maxPointvalue> <encoded-data>
- * maxPointvalue := number for accuracy of decimal places, store as unsigned var int
- * encoded-data := same as encoder's pattern
- * }</pre>
- */
-public class FloatEncoder extends Encoder {
-
-  private Encoder encoder;
-
-  /** number for accuracy of decimal places. */
-  private int maxPointNumber;
-
-  /** maxPointValue = 10^(maxPointNumber). */
-  private double maxPointValue;
-
-  /** flag to check whether maxPointNumber is saved in the stream. */
-  private boolean isMaxPointNumberSaved;
-
-  public FloatEncoder(TSEncoding encodingType, TSDataType dataType, int maxPointNumber) {
-    super(encodingType);
-    this.maxPointNumber = maxPointNumber;
-    calculateMaxPonitNum();
-    isMaxPointNumberSaved = false;
-    if (encodingType == TSEncoding.RLE) {
-      if (dataType == TSDataType.FLOAT) {
-        encoder = new IntRleEncoder();
-      } else if (dataType == TSDataType.DOUBLE) {
-        encoder = new LongRleEncoder();
-      } else {
-        throw new TsFileEncodingException(
-            String.format("data type %s is not supported by FloatEncoder", dataType));
-      }
-    } else if (encodingType == TSEncoding.TS_2DIFF) {
-      if (dataType == TSDataType.FLOAT) {
-        encoder = new DeltaBinaryEncoder.IntDeltaEncoder();
-      } else if (dataType == TSDataType.DOUBLE) {
-        encoder = new DeltaBinaryEncoder.LongDeltaEncoder();
-      } else {
-        throw new TsFileEncodingException(
-            String.format("data type %s is not supported by FloatEncoder", dataType));
-      }
-    } else {
-      throw new TsFileEncodingException(
-          String.format("%s encoding is not supported by FloatEncoder", encodingType));
-    }
-  }
-
-  @Override
-  public void encode(float value, ByteArrayOutputStream out) {
-    saveMaxPointNumber(out);
-    int valueInt = convertFloatToInt(value);
-    encoder.encode(valueInt, out);
-  }
-
-  @Override
-  public void encode(double value, ByteArrayOutputStream out) {
-    saveMaxPointNumber(out);
-    long valueLong = convertDoubleToLong(value);
-    encoder.encode(valueLong, out);
-  }
-
-  private void calculateMaxPonitNum() {
-    if (maxPointNumber <= 0) {
-      maxPointNumber = 0;
-      maxPointValue = 1;
-    } else {
-      maxPointValue = Math.pow(10, maxPointNumber);
-    }
-  }
-
-  private int convertFloatToInt(float value) {
-    return (int) Math.round(value * maxPointValue);
-  }
-
-  private long convertDoubleToLong(double value) {
-    return Math.round(value * maxPointValue);
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) throws IOException {
-    encoder.flush(out);
-    reset();
-  }
-
-  private void reset() {
-    isMaxPointNumberSaved = false;
-  }
-
-  private void saveMaxPointNumber(ByteArrayOutputStream out) {
-    if (!isMaxPointNumberSaved) {
-      ReadWriteForEncodingUtils.writeUnsignedVarInt(maxPointNumber, out);
-      isMaxPointNumberSaved = true;
-    }
-  }
-
-  @Override
-  public int getOneItemMaxSize() {
-    return encoder.getOneItemMaxSize();
-  }
-
-  @Override
-  public long getMaxByteSize() {
-    return encoder.getMaxByteSize();
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/FloatRLBE.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/FloatRLBE.java
deleted file mode 100644
index ee3677e..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/FloatRLBE.java
+++ /dev/null
@@ -1,273 +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.encoding.encoder;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-
-public class FloatRLBE extends RLBE {
-  /** delta values */
-  private float[] DiffValue = new float[blockSize + 1];
-
-  /** repeat times on length code */
-  private int[] Lengrle = new int[blockSize + 1];
-
-  /** previous value of original value */
-  private float previousvalue;
-
-  /** constructor of FloatRLBE */
-  public FloatRLBE() {
-    super();
-    reset();
-  }
-
-  protected void reset() {
-    writeIndex = -1;
-    LengthCode = new int[blockSize + 1];
-    for (int i = 0; i < blockSize; i++) {
-      DiffValue[i] = 0;
-      LengthCode[i] = 0;
-      byteBuffer = 0;
-      numberLeftInBuffer = 0;
-      Lengrle[i] = 0;
-    }
-  }
-
-  /**
-   * calculate the binary code length of given float note: binary code of float is transfered into
-   * binary code of int first
-   *
-   * @param v the integer to calculate length
-   * @return the length of val's binary code
-   */
-  private int calBinarylength(float v) {
-    int val = Float.floatToRawIntBits(v);
-    if (val == 0) return 1;
-    int i = 32;
-    while (((1 << (i - 1)) & val) == 0 && i > 0) i--;
-    return i;
-  }
-
-  /**
-   * calculate the binary code length of given integer
-   *
-   * @param val the integer to calculate length
-   * @return the length of val's binary code
-   */
-  private int calBinarylength(int val) {
-    if (val == 0) return 1;
-    int i = 32;
-    while (((1 << (i - 1)) & val) == 0 && i > 0) i--;
-    return i;
-  }
-
-  /**
-   * encode one input float value
-   *
-   * @param value the float to be encoded
-   * @param out the output stream to flush in when buffer is full
-   */
-  public void encodeValue(float value, ByteArrayOutputStream out) {
-    if (writeIndex == -1) {
-      // when the first value hasn't encoded yet
-      DiffValue[++writeIndex] = value;
-      LengthCode[writeIndex] = calBinarylength(value);
-      previousvalue = value;
-      return;
-    }
-    // calculate delta value
-    DiffValue[++writeIndex] = value - previousvalue;
-    // caldulate the length of delta value
-    LengthCode[writeIndex] = calBinarylength(DiffValue[writeIndex]);
-    previousvalue = value;
-    if (writeIndex == blockSize - 1) {
-      // when encoded number reach to blocksize
-      flush(out);
-    }
-  }
-
-  @Override
-  public void encode(float value, ByteArrayOutputStream out) {
-    encodeValue(value, out);
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) {
-    flushBlock(out);
-  }
-
-  /**
-   * calculate fibonacci code of input integer
-   *
-   * @param val the integer to be fibonacci-encoded
-   * @return the reverse fibonacci code of val in binary code
-   */
-  protected int calcFibonacci(int val) {
-    // fibonacci values are stored in Fib
-    int[] Fib = new int[blockSize * 2 + 1];
-    Fib[0] = 1;
-    Fib[1] = 1;
-    int i;
-    // generate fibonacci values from 1 to the first one larger than val
-    for (i = 2; Fib[i - 1] <= val; i++) {
-      Fib[i] = Fib[i - 1] + Fib[i - 2];
-    }
-
-    i--;
-    int valfib = 0;
-    // calculate fibonacci code
-    while (val > 0) {
-      while (Fib[i] > val && i >= 1) i--;
-      valfib |= (1 << (i - 1));
-      val -= Fib[i];
-    }
-    return valfib;
-  }
-
-  /** run length on DiffValue then store length at the first index in Lengrle. */
-  private void rleonlengthcode() {
-    int i = 0;
-    while (i <= writeIndex) {
-      int j = i;
-      int temprlecal = 0;
-      while (LengthCode[j] == LengthCode[i] && j <= writeIndex) {
-        j++;
-        temprlecal++;
-      }
-      // store repeat time at the first repeating value's position
-      Lengrle[i] = temprlecal;
-      i = j;
-    }
-  }
-
-  /**
-   * flush all encoded values in a block to output stream
-   *
-   * @param out the output stream to be flushed to
-   */
-  protected void flushBlock(ByteArrayOutputStream out) {
-    if (writeIndex == -1) {
-      return;
-    }
-    // store the number of values
-    writewriteIndex(out);
-    // calculate length code of delta binary length
-    rleonlengthcode();
-    for (int i = 0; i <= writeIndex; i++) {
-      if (Lengrle[i] > 0) // flush the adjacent same length delta values
-      try {
-          flushsegment(i, out);
-        } catch (IOException e) {
-          logger.error("flush data to stream failed!", e);
-        }
-    }
-    clearBuffer(out);
-    reset();
-  }
-
-  /**
-   * flush the adjacent same-length delta values
-   *
-   * @param i the position of the first delta value
-   * @param out output stream
-   * @throws IOException
-   */
-  private void flushsegment(int i, ByteArrayOutputStream out) throws IOException {
-    // write the first 6 bits: length code in binary words.
-    for (int j = 5; j >= 0; j--) {
-      if ((LengthCode[i] & (1 << j)) > 0) writeBit(true, out);
-      else writeBit(false, out);
-    }
-    // write the fibonacci code in normal direction
-    int fib = calcFibonacci(Lengrle[i]);
-    int fiblen = calBinarylength(fib);
-    for (int j = 0; j < fiblen; j++) {
-      if ((fib & (1 << j)) > 0) writeBit(true, out);
-      else writeBit(false, out);
-    }
-    // write '1' to note the end of fibonacci code
-    writeBit(true, out);
-
-    // write Binary code words
-    int j = i;
-    do {
-      int tempDifflen = calBinarylength(DiffValue[j]);
-      int tempDiff = Float.floatToRawIntBits(DiffValue[j]);
-      for (int k = tempDifflen - 1; k >= 0; k--) {
-        if ((tempDiff & (1 << k)) > 0) writeBit(true, out);
-        else writeBit(false, out);
-      }
-      j++;
-    } while (Lengrle[j] == 0 && j <= writeIndex);
-  }
-
-  @Override
-  public int getOneItemMaxSize() {
-    return 4 * 4;
-  }
-
-  @Override
-  public long getMaxByteSize() {
-    return 5 * 4 * blockSize;
-  }
-
-  /**
-   * write one bit to byteBuffer, when byteBuffer is full, flush byteBuffer to output stream
-   *
-   * @param b the bit to be written
-   * @param out output stream
-   */
-  protected void writeBit(boolean b, ByteArrayOutputStream out) {
-    byteBuffer <<= 1;
-    if (b) {
-      byteBuffer |= 1;
-    }
-
-    numberLeftInBuffer++;
-    if (numberLeftInBuffer == 8) {
-      clearBuffer(out);
-    }
-  }
-
-  /**
-   * flush bits left in byteBuffer to output stream
-   *
-   * @param out output stream
-   */
-  protected void clearBuffer(ByteArrayOutputStream out) {
-    if (numberLeftInBuffer == 0) return;
-    if (numberLeftInBuffer > 0) byteBuffer <<= (8 - numberLeftInBuffer);
-    out.write(byteBuffer);
-    numberLeftInBuffer = 0;
-    byteBuffer = 0;
-  }
-
-  /**
-   * write the number of encoded values to output stream
-   *
-   * @param out output stream
-   */
-  private void writewriteIndex(ByteArrayOutputStream out) {
-    for (int i = 31; i >= 0; i--) {
-      if ((writeIndex + 1 & (1 << i)) > 0) writeBit(true, out);
-      else writeBit(false, out);
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/FloatSprintzEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/FloatSprintzEncoder.java
deleted file mode 100644
index 3100514..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/FloatSprintzEncoder.java
+++ /dev/null
@@ -1,156 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.encoding.bitpacking.IntPacker;
-import org.apache.iotdb.tsfile.encoding.fire.IntFire;
-import org.apache.iotdb.tsfile.exception.encoding.TsFileEncodingException;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Vector;
-
-public class FloatSprintzEncoder extends SprintzEncoder {
-
-  /** bit packer */
-  IntPacker packer;
-
-  /** Int Fire Predictor * */
-  IntFire firePred;
-
-  /** we save all value in a list and calculate its bitwidth. */
-  protected Vector<Float> values;
-
-  /** convert to integer Buffer * */
-  int[] convertBuffer;
-
-  public FloatSprintzEncoder() {
-    super();
-    values = new Vector<Float>();
-    firePred = new IntFire(2);
-    convertBuffer = new int[Block_size];
-  }
-
-  protected void reset() {
-    super.reset();
-    values.clear();
-  }
-
-  @Override
-  public int getOneItemMaxSize() {
-    return 1 + (1 + Block_size) * Integer.BYTES;
-  }
-
-  @Override
-  public long getMaxByteSize() {
-    return 1 + (long) (values.size() + 1) * Integer.BYTES;
-  }
-
-  protected int predict(Float value, Float preVlaue) throws TsFileEncodingException {
-    int pred;
-    if (predictMethod.equals("delta")) {
-      pred = delta(value, preVlaue);
-    } else if (predictMethod.equals("fire")) {
-      pred = fire(value, preVlaue);
-    } else {
-      throw new TsFileEncodingException(
-          "Config: Predict Method {} of SprintzEncoder is not supported.");
-    }
-    if (pred <= 0) pred = -2 * pred;
-    else pred = 2 * pred - 1; // TODO:overflow
-    return pred;
-  }
-
-  @Override
-  protected void bitPack() throws IOException {
-    float preValue = values.get(0);
-    values.remove(0);
-    Vector<Integer> convertBufferList = new Vector<>();
-    for (int itemBuffer : convertBuffer) convertBufferList.add(itemBuffer);
-    this.bitWidth = ReadWriteForEncodingUtils.getIntMaxBitWidth(convertBufferList);
-    packer = new IntPacker(this.bitWidth);
-    byte[] bytes = new byte[bitWidth];
-    packer.pack8Values(convertBuffer, 0, bytes);
-    ReadWriteForEncodingUtils.writeIntLittleEndianPaddedOnBitWidth(bitWidth, byteCache, 1);
-    byteCache.write(ByteBuffer.allocate(Float.BYTES).putFloat(preValue).array());
-    byteCache.write(bytes, 0, bytes.length);
-  }
-
-  protected int delta(Float value, Float preValue) {
-    return Float.floatToIntBits(value) - Float.floatToIntBits(preValue);
-  }
-
-  protected int fire(Float value, Float preValue) {
-    int prev = Float.floatToIntBits(preValue);
-    int val = Float.floatToIntBits(value);
-    int pred = firePred.predict(prev);
-    int err = val - pred;
-    firePred.train(prev, val, err);
-    return err;
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) throws IOException {
-    if (byteCache.size() > 0) {
-      byteCache.writeTo(out);
-    }
-    if (!values.isEmpty()) {
-      int size = values.size();
-      size |= (1 << 7);
-      ReadWriteForEncodingUtils.writeIntLittleEndianPaddedOnBitWidth(size, out, 1);
-      SinglePrecisionEncoderV2 encoder = new SinglePrecisionEncoderV2();
-      for (float val : values) {
-        encoder.encode(val, out);
-      }
-      encoder.flush(out);
-    }
-    reset();
-  }
-
-  @Override
-  public void encode(float value, ByteArrayOutputStream out) {
-    if (!isFirstCached) {
-      values.add(value);
-      isFirstCached = true;
-      return;
-    } else {
-      values.add(value);
-    }
-    if (values.size() == Block_size + 1) {
-      try {
-        firePred.reset();
-        for (int i = 1; i <= Block_size; i++) {
-          convertBuffer[i - 1] = predict(values.get(i), values.get(i - 1));
-        }
-        bitPack();
-        isFirstCached = false;
-        values.clear();
-        groupNum++;
-        if (groupNum == groupMax) {
-          flush(out);
-        }
-      } catch (IOException e) {
-        logger.error("Error occured when encoding Float Type value with with Sprintz", e);
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/GorillaEncoderV1.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/GorillaEncoderV1.java
deleted file mode 100644
index 7121390..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/GorillaEncoderV1.java
+++ /dev/null
@@ -1,85 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
-import java.io.ByteArrayOutputStream;
-
-/**
- * Gorilla encoding. For more information about how it works, please see
- * http://www.vldb.org/pvldb/vol8/p1816-teller.pdf
- */
-public abstract class GorillaEncoderV1 extends Encoder {
-
-  // flag to indicate whether the first value is saved
-  protected boolean flag;
-  protected int leadingZeroNum;
-  protected int tailingZeroNum;
-  // 8-bit buffer of bits to write out
-  protected byte buffer;
-  // number of bits remaining in buffer
-  protected int numberLeftInBuffer;
-
-  protected GorillaEncoderV1() {
-    super(TSEncoding.GORILLA_V1);
-    this.flag = false;
-  }
-
-  protected void writeBit(boolean b, ByteArrayOutputStream out) {
-    // add bit to buffer
-    buffer <<= 1;
-    if (b) {
-      buffer |= 1;
-    }
-
-    // if buffer is full (8 bits), write out as a single byte
-    numberLeftInBuffer++;
-    if (numberLeftInBuffer == 8) {
-      clearBuffer(out);
-    }
-  }
-
-  protected void writeBit(int i, ByteArrayOutputStream out) {
-    writeBit(i != 0, out);
-  }
-
-  protected void writeBit(long i, ByteArrayOutputStream out) {
-    writeBit(i != 0, out);
-  }
-
-  protected void clearBuffer(ByteArrayOutputStream out) {
-    if (numberLeftInBuffer == 0) {
-      return;
-    }
-    if (numberLeftInBuffer > 0) {
-      buffer <<= (8 - numberLeftInBuffer);
-    }
-    out.write(buffer);
-    numberLeftInBuffer = 0;
-    buffer = 0;
-  }
-
-  protected void reset() {
-    this.flag = false;
-    this.numberLeftInBuffer = 0;
-    this.buffer = 0;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/GorillaEncoderV2.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/GorillaEncoderV2.java
deleted file mode 100644
index 9af575b..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/GorillaEncoderV2.java
+++ /dev/null
@@ -1,105 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
-import java.io.ByteArrayOutputStream;
-
-/**
- * This class includes code modified from Michael Burman's gorilla-tsc project.
- *
- * <p>Copyright: 2016-2018 Michael Burman and/or other contributors
- *
- * <p>Project page: https://github.com/burmanm/gorilla-tsc
- *
- * <p>License: http://www.apache.org/licenses/LICENSE-2.0
- */
-public abstract class GorillaEncoderV2 extends Encoder {
-
-  protected boolean firstValueWasWritten = false;
-  protected int storedLeadingZeros = Integer.MAX_VALUE;
-  protected int storedTrailingZeros = 0;
-
-  private byte buffer = 0;
-  protected int bitsLeft = Byte.SIZE;
-
-  protected GorillaEncoderV2() {
-    super(TSEncoding.GORILLA);
-  }
-
-  @Override
-  public final long getMaxByteSize() {
-    return 0;
-  }
-
-  protected void reset() {
-    firstValueWasWritten = false;
-    storedLeadingZeros = Integer.MAX_VALUE;
-    storedTrailingZeros = 0;
-
-    buffer = 0;
-    bitsLeft = Byte.SIZE;
-  }
-
-  /** Stores a 0 and increases the count of bits by 1. */
-  protected void skipBit(ByteArrayOutputStream out) {
-    bitsLeft--;
-    flipByte(out);
-  }
-
-  /** Stores a 1 and increases the count of bits by 1. */
-  protected void writeBit(ByteArrayOutputStream out) {
-    buffer |= (1 << (bitsLeft - 1));
-    bitsLeft--;
-    flipByte(out);
-  }
-
-  /**
-   * Writes the given long value using the defined amount of least significant bits.
-   *
-   * @param value The long value to be written
-   * @param bits How many bits are stored to the stream
-   */
-  protected void writeBits(long value, int bits, ByteArrayOutputStream out) {
-    while (bits > 0) {
-      int shift = bits - bitsLeft;
-      if (shift >= 0) {
-        buffer |= (byte) ((value >> shift) & ((1 << bitsLeft) - 1));
-        bits -= bitsLeft;
-        bitsLeft = 0;
-      } else {
-        shift = bitsLeft - bits;
-        buffer |= (byte) (value << shift);
-        bitsLeft -= bits;
-        bits = 0;
-      }
-      flipByte(out);
-    }
-  }
-
-  protected void flipByte(ByteArrayOutputStream out) {
-    if (bitsLeft == 0) {
-      out.write(buffer);
-      buffer = 0;
-      bitsLeft = Byte.SIZE;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/IntChimpEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/IntChimpEncoder.java
deleted file mode 100644
index 03c0141..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/IntChimpEncoder.java
+++ /dev/null
@@ -1,188 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
-import java.io.ByteArrayOutputStream;
-
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.LEADING_ZERO_BITS_LENGTH_32BIT;
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.MEANINGFUL_XOR_BITS_LENGTH_32BIT;
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.VALUE_BITS_LENGTH_32BIT;
-
-/**
- * This class includes code modified from Panagiotis Liakos chimp project.
- *
- * <p>Copyright: 2022- Panagiotis Liakos, Katia Papakonstantinopoulou and Yannis Kotidis
- *
- * <p>Project page: https://github.com/panagiotisl/chimp
- *
- * <p>License: http://www.apache.org/licenses/LICENSE-2.0
- */
-public class IntChimpEncoder extends GorillaEncoderV2 {
-
-  private static final int PREVIOUS_VALUES = 64;
-  private static final int PREVIOUS_VALUES_LOG2 = (int) (Math.log(PREVIOUS_VALUES) / Math.log(2));
-  private static final int THRESHOLD = 5 + PREVIOUS_VALUES_LOG2;
-  private static final int SET_LSB = (int) Math.pow(2, THRESHOLD + 1d) - 1;
-  private static final int CASE_ZERO_METADATA_LENGTH = PREVIOUS_VALUES_LOG2 + 2;
-  private static final int CASE_ONE_METADATA_LENGTH = PREVIOUS_VALUES_LOG2 + 10;
-  protected static final short[] LEADING_REPRESENTATION = {
-    0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7,
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
-  };
-
-  protected static final short[] LEADING_ROUND = {
-    0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 12, 12, 12, 12, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 24,
-    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24
-  };
-
-  private int[] storedValues;
-  private int[] indices;
-  private int index = 0;
-  private int current = 0;
-
-  public IntChimpEncoder() {
-    this.setType(TSEncoding.CHIMP);
-    this.indices = new int[(int) Math.pow(2, THRESHOLD + 1d)];
-    this.storedValues = new int[PREVIOUS_VALUES];
-  }
-
-  private static final int ONE_ITEM_MAX_SIZE =
-      (2
-                  + LEADING_ZERO_BITS_LENGTH_32BIT
-                  + MEANINGFUL_XOR_BITS_LENGTH_32BIT
-                  + VALUE_BITS_LENGTH_32BIT)
-              / Byte.SIZE
-          + 1;
-
-  @Override
-  public final int getOneItemMaxSize() {
-    return ONE_ITEM_MAX_SIZE;
-  }
-
-  @Override
-  protected void reset() {
-    super.reset();
-    this.current = 0;
-    this.index = 0;
-    this.indices = new int[(int) Math.pow(2, THRESHOLD + 1d)];
-    this.storedValues = new int[PREVIOUS_VALUES];
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) {
-    // ending stream
-    encode(Integer.MIN_VALUE, out);
-
-    // flip the byte no matter it is empty or not
-    // the empty ending byte is necessary when decoding
-    bitsLeft = 0;
-    flipByte(out);
-
-    // the encoder may be reused, so let us reset it
-    reset();
-  }
-
-  @Override
-  public final void encode(int value, ByteArrayOutputStream out) {
-    if (firstValueWasWritten) {
-      compressValue(value, out);
-    } else {
-      writeFirst(value, out);
-      firstValueWasWritten = true;
-    }
-  }
-
-  // the first value is stored with no compression
-  private void writeFirst(int value, ByteArrayOutputStream out) {
-    storedValues[current] = value;
-    writeBits(value, VALUE_BITS_LENGTH_32BIT, out);
-    indices[value & SET_LSB] = index;
-  }
-
-  private void compressValue(int value, ByteArrayOutputStream out) {
-    // find the best previous value
-    int key = value & SET_LSB;
-    int xor;
-    int previousIndex;
-    int trailingZeros = 0;
-    int currIndex = indices[key];
-    if ((index - currIndex) < PREVIOUS_VALUES) {
-      int tempXor = value ^ storedValues[currIndex % PREVIOUS_VALUES];
-      trailingZeros = Integer.numberOfTrailingZeros(tempXor);
-      if (trailingZeros > THRESHOLD) {
-        previousIndex = currIndex % PREVIOUS_VALUES;
-        xor = tempXor;
-      } else {
-        previousIndex = index % PREVIOUS_VALUES;
-        xor = storedValues[previousIndex] ^ value;
-      }
-    } else {
-      previousIndex = index % PREVIOUS_VALUES;
-      xor = storedValues[previousIndex] ^ value;
-    }
-
-    // case 00: the values are identical, write 00 control bits
-    // and the index of the previous value
-    if (xor == 0) {
-      writeBits(previousIndex, CASE_ZERO_METADATA_LENGTH, out);
-      storedLeadingZeros = VALUE_BITS_LENGTH_32BIT + 1;
-    } else {
-      int leadingZeros = LEADING_ROUND[Integer.numberOfLeadingZeros(xor)];
-      // case 01:  store the index, the length of
-      // the number of leading zeros in the next 3 bits, then store
-      // the length of the meaningful XORed value in the next 5
-      // bits. Finally store the meaningful bits of the XORed value.
-      if (trailingZeros > THRESHOLD) {
-        int significantBits = VALUE_BITS_LENGTH_32BIT - leadingZeros - trailingZeros;
-        writeBits(
-            256L * (PREVIOUS_VALUES + previousIndex)
-                + 32L * LEADING_REPRESENTATION[leadingZeros]
-                + significantBits,
-            CASE_ONE_METADATA_LENGTH,
-            out);
-        writeBits(xor >>> trailingZeros, significantBits, out); // Store the meaningful bits of XOR
-        storedLeadingZeros = VALUE_BITS_LENGTH_32BIT + 1;
-        // case 10: If the number of leading zeros is exactly
-        // equal to the previous leading zeros, use that information
-        // and just store 01 control bits and the meaningful XORed value.
-      } else if (leadingZeros == storedLeadingZeros) {
-        writeBit(out);
-        skipBit(out);
-        int significantBits = VALUE_BITS_LENGTH_32BIT - leadingZeros;
-        writeBits(xor, significantBits, out);
-        // case 11: store 11 control bits, the length of the number of leading
-        // zeros in the next 3 bits, then store the
-        // meaningful bits of the XORed value.
-      } else {
-        storedLeadingZeros = leadingZeros;
-        int significantBits = VALUE_BITS_LENGTH_32BIT - leadingZeros;
-        writeBits(24L + LEADING_REPRESENTATION[leadingZeros], 5, out);
-        writeBits(xor, significantBits, out);
-      }
-    }
-    current = (current + 1) % PREVIOUS_VALUES;
-    storedValues[current] = value;
-    index++;
-    indices[key] = index;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/IntGorillaEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/IntGorillaEncoder.java
deleted file mode 100644
index fdb4f79..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/IntGorillaEncoder.java
+++ /dev/null
@@ -1,158 +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.encoding.encoder;
-
-import java.io.ByteArrayOutputStream;
-
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.GORILLA_ENCODING_ENDING_INTEGER;
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.LEADING_ZERO_BITS_LENGTH_32BIT;
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.MEANINGFUL_XOR_BITS_LENGTH_32BIT;
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.VALUE_BITS_LENGTH_32BIT;
-
-/**
- * This class includes code modified from Michael Burman's gorilla-tsc project.
- *
- * <p>Copyright: 2016-2018 Michael Burman and/or other contributors
- *
- * <p>Project page: https://github.com/burmanm/gorilla-tsc
- *
- * <p>License: http://www.apache.org/licenses/LICENSE-2.0
- */
-public class IntGorillaEncoder extends GorillaEncoderV2 {
-
-  private static final int ONE_ITEM_MAX_SIZE =
-      (2
-                  + LEADING_ZERO_BITS_LENGTH_32BIT
-                  + MEANINGFUL_XOR_BITS_LENGTH_32BIT
-                  + VALUE_BITS_LENGTH_32BIT)
-              / Byte.SIZE
-          + 1;
-
-  private int storedValue = 0;
-
-  @Override
-  public final int getOneItemMaxSize() {
-    return ONE_ITEM_MAX_SIZE;
-  }
-
-  @Override
-  public final void encode(int value, ByteArrayOutputStream out) {
-    if (firstValueWasWritten) {
-      compressValue(value, out);
-    } else {
-      writeFirst(value, out);
-      firstValueWasWritten = true;
-    }
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) {
-    // ending stream
-    encode(GORILLA_ENCODING_ENDING_INTEGER, out);
-
-    // flip the byte no matter it is empty or not
-    // the empty ending byte is necessary when decoding
-    bitsLeft = 0;
-    flipByte(out);
-
-    // the encoder may be reused, so let us reset it
-    reset();
-  }
-
-  @Override
-  protected void reset() {
-    super.reset();
-    storedValue = 0;
-  }
-
-  private void writeFirst(int value, ByteArrayOutputStream out) {
-    storedValue = value;
-    writeBits(value, VALUE_BITS_LENGTH_32BIT, out);
-  }
-
-  private void compressValue(int value, ByteArrayOutputStream out) {
-    int xor = storedValue ^ value;
-    storedValue = value;
-
-    if (xor == 0) {
-      skipBit(out);
-    } else {
-      writeBit(out);
-
-      int leadingZeros = Integer.numberOfLeadingZeros(xor);
-      int trailingZeros = Integer.numberOfTrailingZeros(xor);
-      if (leadingZeros >= storedLeadingZeros && trailingZeros >= storedTrailingZeros) {
-        writeExistingLeading(xor, out);
-      } else {
-        writeNewLeading(xor, leadingZeros, trailingZeros, out);
-      }
-    }
-  }
-
-  /**
-   * If there at least as many leading zeros and as many trailing zeros as previous value, control
-   * bit = 0 (type a).
-   *
-   * <p>store the meaningful XORed value
-   *
-   * @param xor XOR between previous value and current
-   */
-  private void writeExistingLeading(int xor, ByteArrayOutputStream out) {
-    skipBit(out);
-
-    int significantBits = VALUE_BITS_LENGTH_32BIT - storedLeadingZeros - storedTrailingZeros;
-    writeBits(xor >>> storedTrailingZeros, significantBits, out);
-  }
-
-  /**
-   * Stores the length of the number of leading zeros in the next 5 bits.
-   *
-   * <p>Stores the length of the meaningful XORed value in the next 5 bits
-   *
-   * <p>Stores the meaningful bits of the XORed value
-   *
-   * <p>(type b)
-   *
-   * @param xor XOR between previous value and current
-   * @param leadingZeros New leading zeros
-   * @param trailingZeros New trailing zeros
-   */
-  private void writeNewLeading(
-      int xor, int leadingZeros, int trailingZeros, ByteArrayOutputStream out) {
-    writeBit(out);
-
-    int significantBits = VALUE_BITS_LENGTH_32BIT - leadingZeros - trailingZeros;
-
-    // Number of leading zeros in the next 5 bits
-    // Maximum number of leadingZeros is stored with 5 bits to allow up to 31 leading zeros, which
-    // are necessary when storing int values
-    // Note that in this method the number of leading zeros won't be 32
-    writeBits(leadingZeros, LEADING_ZERO_BITS_LENGTH_32BIT, out);
-    // Length of meaningful bits in the next 5 bits
-    // Note that in this method the number of meaningful bits is always positive and could be 32,
-    // so we have to use (significantBits - 1) in storage
-    writeBits((long) significantBits - 1, MEANINGFUL_XOR_BITS_LENGTH_32BIT, out);
-    // Store the meaningful bits of XOR
-    writeBits(xor >>> trailingZeros, significantBits, out);
-
-    storedLeadingZeros = leadingZeros;
-    storedTrailingZeros = trailingZeros;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/IntRLBE.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/IntRLBE.java
deleted file mode 100644
index 43401f2..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/IntRLBE.java
+++ /dev/null
@@ -1,280 +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.encoding.encoder;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayOutputStream;
-
-public class IntRLBE extends RLBE {
-  // delta values
-  private final int[] diffValue = new int[blockSize + 1];
-
-  // repeat times on length code
-  private final int[] lengRLE = new int[blockSize + 1];
-
-  // previous value of original value
-  private int previousValue;
-
-  // logger
-  private static final Logger logger = LoggerFactory.getLogger(IntRLBE.class);
-
-  // constructor of IntRLBE
-  public IntRLBE() {
-    super();
-    reset();
-  }
-
-  protected void reset() {
-    writeIndex = -1;
-    LengthCode = new int[blockSize + 1];
-    for (int i = 0; i < blockSize; i++) {
-      diffValue[i] = 0;
-      LengthCode[i] = 0;
-      byteBuffer = 0;
-      numberLeftInBuffer = 0;
-      lengRLE[i] = 0;
-    }
-  }
-
-  /**
-   * calculate the binary code length of given integer.
-   *
-   * @param val the integer to calculate length
-   * @return the length of val's binary code
-   */
-  private int calBinarylength(int val) {
-    if (val == 0) {
-      return 1;
-    }
-    int i = 32;
-    while (((1 << (i - 1)) & val) == 0 && i > 0) {
-      i--;
-    }
-    return i;
-  }
-
-  /**
-   * encode one input integer value.
-   *
-   * @param value the integer to be encoded
-   * @param out the output stream to flush in when buffer is full
-   */
-  public void encodeValue(int value, ByteArrayOutputStream out) {
-    if (writeIndex == -1) {
-      // when the first value hasn't encoded yet
-      diffValue[++writeIndex] = value;
-      LengthCode[writeIndex] = calBinarylength(value);
-      previousValue = value;
-      return;
-    }
-    // calculate delta value
-    diffValue[++writeIndex] = value - previousValue;
-    // caldulate the length of delta value
-    LengthCode[writeIndex] = calBinarylength(diffValue[writeIndex]);
-    previousValue = value;
-    if (writeIndex == blockSize - 1) {
-      // when encoded number reach to blocksize
-      flush(out);
-    }
-  }
-
-  @Override
-  public void encode(int value, ByteArrayOutputStream out) {
-    encodeValue(value, out);
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) {
-    flushBlock(out);
-  }
-
-  /**
-   * calculate fibonacci code of input integer.
-   *
-   * @param val the integer to be fibonacci-encoded
-   * @return the reverse fibonacci code of val in binary code
-   */
-  protected int calcFibonacci(int val) {
-    // fibonacci values are stored in Fib
-    int[] fib = new int[blockSize * 2 + 1];
-    fib[0] = 1;
-    fib[1] = 1;
-    int i;
-    // generate fibonacci values from 1 to the first one larger than val
-    for (i = 2; fib[i - 1] <= val; i++) {
-      fib[i] = fib[i - 1] + fib[i - 2];
-    }
-
-    i--;
-    int valfib = 0;
-    // calculate fibonacci code
-    while (val > 0) {
-      while (fib[i] > val && i >= 1) {
-        i--;
-      }
-      valfib |= (1 << (i - 1));
-      val -= fib[i];
-    }
-    return valfib;
-  }
-
-  /** run length on DiffValue then store length at the first index in Lengrle. */
-  private void rleonlengthcode() {
-    int i = 0;
-    while (i <= writeIndex) {
-      int j = i;
-      int temprlecal = 0;
-      while (LengthCode[j] == LengthCode[i] && j <= writeIndex) {
-        j++;
-        temprlecal++;
-      }
-      // store repeat time at the first repeating value's position
-      lengRLE[i] = temprlecal;
-      i = j;
-    }
-  }
-
-  /**
-   * flush all encoded values in a block to output stream.
-   *
-   * @param out the output stream to be flushed to
-   */
-  protected void flushBlock(ByteArrayOutputStream out) {
-    if (writeIndex == -1) {
-      return;
-    }
-    // store the number of values
-    writewriteIndex(out);
-    // calculate length code of delta binary length
-    rleonlengthcode();
-    for (int i = 0; i <= writeIndex; i++) {
-      if (lengRLE[i] > 0) { // flush the adjacent same length delta values
-        flushSegment(i, out);
-      }
-    }
-    clearBuffer(out);
-    reset();
-  }
-
-  /**
-   * flush the adjacent same-length delta values.
-   *
-   * @param i the position of the first delta value
-   * @param out output stream
-   */
-  private void flushSegment(int i, ByteArrayOutputStream out) {
-    // write the first 6 bits: length code in binary words.
-    for (int j = 5; j >= 0; j--) {
-      if ((LengthCode[i] & (1 << j)) > 0) {
-        writeBit(true, out);
-      } else {
-        writeBit(false, out);
-      }
-    }
-    // write the fibonacci code in normal direction
-    int fib = calcFibonacci(lengRLE[i]);
-    int fiblen = calBinarylength(fib);
-    for (int j = 0; j < fiblen; j++) {
-      if ((fib & (1 << j)) > 0) {
-        writeBit(true, out);
-      } else {
-        writeBit(false, out);
-      }
-    }
-    // write '1' to note the end of fibonacci code
-    writeBit(true, out);
-
-    // write Binary code words
-    int j = i;
-    do {
-      int tempDifflen = calBinarylength(diffValue[j]);
-      for (int k = tempDifflen - 1; k >= 0; k--) {
-        if ((diffValue[j] & (1 << k)) > 0) {
-          writeBit(true, out);
-        } else {
-          writeBit(false, out);
-        }
-      }
-      j++;
-    } while (lengRLE[j] == 0 && j <= writeIndex);
-  }
-
-  @Override
-  public int getOneItemMaxSize() {
-    return 4 * 4;
-  }
-
-  @Override
-  public long getMaxByteSize() {
-    return 5L * 4 * blockSize;
-  }
-
-  /**
-   * write one bit to byteBuffer, when byteBuffer is full, flush byteBuffer to output stream.
-   *
-   * @param b the bit to be written
-   * @param out output stream
-   */
-  protected void writeBit(boolean b, ByteArrayOutputStream out) {
-    byteBuffer <<= 1;
-    if (b) {
-      byteBuffer |= 1;
-    }
-
-    numberLeftInBuffer++;
-    if (numberLeftInBuffer == 8) {
-      clearBuffer(out);
-    }
-  }
-
-  /**
-   * flush bits left in byteBuffer to output stream.
-   *
-   * @param out output stream
-   */
-  protected void clearBuffer(ByteArrayOutputStream out) {
-    if (numberLeftInBuffer == 0) {
-      return;
-    }
-    if (numberLeftInBuffer > 0) {
-      byteBuffer <<= (8 - numberLeftInBuffer);
-    }
-    out.write(byteBuffer);
-    numberLeftInBuffer = 0;
-    byteBuffer = 0;
-  }
-
-  /**
-   * write the number of encoded values to output stream.
-   *
-   * @param out output stream
-   */
-  private void writewriteIndex(ByteArrayOutputStream out) {
-    for (int i = 31; i >= 0; i--) {
-      if ((writeIndex + 1 & (1 << i)) > 0) {
-        writeBit(true, out);
-      } else {
-        writeBit(false, out);
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/IntRleEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/IntRleEncoder.java
deleted file mode 100644
index c6873cc..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/IntRleEncoder.java
+++ /dev/null
@@ -1,129 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.encoding.bitpacking.IntPacker;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-
-/** Encoder for int value using rle or bit-packing. */
-public class IntRleEncoder extends RleEncoder<Integer> {
-
-  /** Packer for packing int values. */
-  private IntPacker packer;
-
-  public IntRleEncoder() {
-    super();
-    bufferedValues = new Integer[TSFileConfig.RLE_MIN_REPEATED_NUM];
-    preValue = 0;
-    values = new ArrayList<>();
-  }
-
-  @Override
-  public void encode(int value, ByteArrayOutputStream out) {
-    values.add(value);
-  }
-
-  @Override
-  public void encode(boolean value, ByteArrayOutputStream out) {
-    if (value) {
-      this.encode(1, out);
-    } else {
-      this.encode(0, out);
-    }
-  }
-
-  /**
-   * write all values buffered in the cache to an OutputStream.
-   *
-   * @param out - byteArrayOutputStream
-   * @throws IOException cannot flush to OutputStream
-   */
-  @Override
-  public void flush(ByteArrayOutputStream out) throws IOException {
-    // we get bit width after receiving all data
-    this.bitWidth = ReadWriteForEncodingUtils.getIntMaxBitWidth(values);
-    packer = new IntPacker(bitWidth);
-    for (Integer value : values) {
-      encodeValue(value);
-    }
-    super.flush(out);
-  }
-
-  @Override
-  protected void reset() {
-    super.reset();
-    preValue = 0;
-  }
-
-  /** write bytes to an outputStream using rle format: [header][value]. */
-  @Override
-  protected void writeRleRun() throws IOException {
-    endPreviousBitPackedRun(TSFileConfig.RLE_MIN_REPEATED_NUM);
-    ReadWriteForEncodingUtils.writeUnsignedVarInt(repeatCount << 1, byteCache);
-    ReadWriteForEncodingUtils.writeIntLittleEndianPaddedOnBitWidth(preValue, byteCache, bitWidth);
-    repeatCount = 0;
-    numBufferedValues = 0;
-  }
-
-  @Override
-  protected void clearBuffer() {
-
-    for (int i = numBufferedValues; i < TSFileConfig.RLE_MIN_REPEATED_NUM; i++) {
-      bufferedValues[i] = 0;
-    }
-  }
-
-  @Override
-  protected void convertBuffer() {
-    byte[] bytes = new byte[bitWidth];
-
-    int[] tmpBuffer = new int[TSFileConfig.RLE_MIN_REPEATED_NUM];
-    for (int i = 0; i < TSFileConfig.RLE_MIN_REPEATED_NUM; i++) {
-      tmpBuffer[i] = bufferedValues[i];
-    }
-    packer.pack8Values(tmpBuffer, 0, bytes);
-    // we'll not write bit-packing group to OutputStream immediately
-    // we buffer them in list
-    bytesBuffer.add(bytes);
-  }
-
-  @Override
-  public int getOneItemMaxSize() {
-    // The meaning of 45 is:
-    // 4 + 4 + max(4+4,1 + 4 + 4 * 8)
-    // length + bitwidth + max(rle-header + num, bit-header + lastNum + 8packer)
-    return 45;
-  }
-
-  @Override
-  public long getMaxByteSize() {
-    if (values == null) {
-      return 0;
-    }
-    // try to caculate max value
-    int groupNum = (values.size() / 8 + 1) / 63 + 1;
-    return (long) 8 + groupNum * 5 + values.size() * 4;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/IntSprintzEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/IntSprintzEncoder.java
deleted file mode 100644
index ad77970..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/IntSprintzEncoder.java
+++ /dev/null
@@ -1,158 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.encoding.bitpacking.IntPacker;
-import org.apache.iotdb.tsfile.encoding.fire.IntFire;
-import org.apache.iotdb.tsfile.exception.encoding.TsFileEncodingException;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.Vector;
-
-public class IntSprintzEncoder extends SprintzEncoder {
-
-  // bit packer
-  IntPacker packer;
-
-  // Fire predictor
-  IntFire firePred;
-
-  // we save all value in a list and calculate its bitwidth.
-  protected Vector<Integer> values;
-
-  public IntSprintzEncoder() {
-    super();
-    values = new Vector<>();
-    firePred = new IntFire(2);
-  }
-
-  @Override
-  protected void reset() {
-    super.reset();
-    values.clear();
-  }
-
-  @Override
-  public int getOneItemMaxSize() {
-    return 1 + (1 + Block_size) * Integer.BYTES;
-  }
-
-  @Override
-  public long getMaxByteSize() {
-    return 1 + (long) (values.size() + 1) * Integer.BYTES;
-  }
-
-  protected Integer predict(Integer value, Integer preVlaue) throws TsFileEncodingException {
-    Integer pred;
-    if (predictMethod.equals("delta")) {
-      pred = delta(value, preVlaue);
-    } else if (predictMethod.equals("fire")) {
-      pred = fire(value, preVlaue);
-    } else {
-      throw new TsFileEncodingException(
-          "Config: Predict Method {} of SprintzEncoder is not supported.");
-    }
-    if (pred <= 0) {
-      pred = -2 * pred;
-    } else {
-      pred = 2 * pred - 1; // TODO:overflow
-    }
-    return pred;
-  }
-
-  @Override
-  protected void bitPack() throws IOException {
-    final int preValue = values.get(0);
-    values.remove(0);
-    this.bitWidth = ReadWriteForEncodingUtils.getIntMaxBitWidth(values);
-    packer = new IntPacker(this.bitWidth);
-    byte[] bytes = new byte[bitWidth];
-    int[] tmpBuffer = new int[Block_size];
-    for (int i = 0; i < Block_size; i++) {
-      tmpBuffer[i] = values.get(i);
-    }
-    packer.pack8Values(tmpBuffer, 0, bytes);
-    ReadWriteForEncodingUtils.writeIntLittleEndianPaddedOnBitWidth(bitWidth, byteCache, 1);
-    ReadWriteForEncodingUtils.writeUnsignedVarInt(preValue, byteCache);
-    byteCache.write(bytes, 0, bytes.length);
-  }
-
-  protected Integer delta(Integer value, Integer preValue) {
-    return value - preValue;
-  }
-
-  protected Integer fire(Integer value, Integer preValue) {
-    int pred = firePred.predict(preValue);
-    int err = value - pred;
-    firePred.train(preValue, value, err);
-    return err;
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) throws IOException {
-    if (byteCache.size() > 0) {
-      byteCache.writeTo(out);
-    }
-    if (!values.isEmpty()) {
-      int size = values.size();
-      size |= (1 << 7);
-      ReadWriteForEncodingUtils.writeIntLittleEndianPaddedOnBitWidth(size, out, 1);
-      IntRleEncoder encoder = new IntRleEncoder();
-      for (int val : values) {
-        encoder.encode(val, out);
-      }
-      encoder.flush(out);
-    }
-    reset();
-  }
-
-  @Override
-  public void encode(int value, ByteArrayOutputStream out) {
-    if (!isFirstCached) {
-      values.add(value);
-      isFirstCached = true;
-      return;
-    } else {
-      values.add(value);
-    }
-    if (values.size() == Block_size + 1) {
-      try {
-        int pre = values.get(0);
-        firePred.reset();
-        for (int i = 1; i <= Block_size; i++) {
-          int tmp = values.get(i);
-          values.set(i, predict(values.get(i), pre));
-          pre = tmp;
-        }
-        bitPack();
-        isFirstCached = false;
-        values.clear();
-        groupNum++;
-        if (groupNum == groupMax) {
-          flush(out);
-        }
-      } catch (IOException e) {
-        logger.error("Error occured when encoding INT32 Type value with with Sprintz", e);
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/IntZigzagEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/IntZigzagEncoder.java
deleted file mode 100644
index 6e145dc..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/IntZigzagEncoder.java
+++ /dev/null
@@ -1,101 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Encoder for int value using Zigzag . For more information, see
- * https://gist.github.com/mfuerstenau/ba870a29e16536fdbaba
- */
-public class IntZigzagEncoder extends Encoder {
-  private static final Logger logger = LoggerFactory.getLogger(IntZigzagEncoder.class);
-  private List<Integer> values;
-  byte[] buf = new byte[5];
-
-  public IntZigzagEncoder() {
-    super(TSEncoding.ZIGZAG);
-    this.values = new ArrayList<>();
-    logger.debug("tsfile-encoding IntZigzagEncoder: int zigzag encoder");
-  }
-
-  /** encoding and bit packing. */
-  private byte[] encodeInt(int n) {
-    n = (n << 1) ^ (n >> 31);
-    int idx = 0;
-    if ((n & ~0x7F) != 0) {
-      buf[idx++] = (byte) ((n | 0x80) & 0xFF);
-      n >>>= 7;
-      while (n > 0x7F) {
-        buf[idx++] = (byte) ((n | 0x80) & 0xFF);
-        n >>>= 7;
-      }
-    }
-    buf[idx++] = (byte) n;
-    return Arrays.copyOfRange(buf, 0, idx);
-  }
-
-  public void encode(int value, ByteArrayOutputStream out) {
-    values.add(value);
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) throws IOException {
-    // byteCache stores all <encoded-data> and we know its size
-    ByteArrayOutputStream byteCache = new ByteArrayOutputStream();
-    final int len = values.size();
-    if (values.size() == 0) {
-      return;
-    }
-    for (int value : values) {
-      byte[] bytes = encodeInt(value);
-      byteCache.write(bytes, 0, bytes.length);
-    }
-    // store encoded bytes size
-    ReadWriteForEncodingUtils.writeUnsignedVarInt(byteCache.size(), out);
-    // store initial list size
-    ReadWriteForEncodingUtils.writeUnsignedVarInt(len, out);
-    out.write(byteCache.toByteArray());
-    reset();
-  }
-
-  private void reset() {
-    values.clear();
-  }
-
-  @Override
-  public long getMaxByteSize() {
-    if (values == null) {
-      return 0;
-    }
-    // try to caculate max value
-    return (long) 8 + values.size() * 4;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/LongChimpEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/LongChimpEncoder.java
deleted file mode 100644
index f8bb108..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/LongChimpEncoder.java
+++ /dev/null
@@ -1,199 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
-import java.io.ByteArrayOutputStream;
-
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.LEADING_ZERO_BITS_LENGTH_64BIT;
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.MEANINGFUL_XOR_BITS_LENGTH_64BIT;
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.VALUE_BITS_LENGTH_64BIT;
-
-/**
- * This class includes code modified from Panagiotis Liakos chimp project.
- *
- * <p>Copyright: 2022- Panagiotis Liakos, Katia Papakonstantinopoulou and Yannis Kotidis
- *
- * <p>Project page: https://github.com/panagiotisl/chimp
- *
- * <p>License: http://www.apache.org/licenses/LICENSE-2.0
- */
-public class LongChimpEncoder extends GorillaEncoderV2 {
-
-  private static final int PREVIOUS_VALUES = 128;
-  private static final int PREVIOUS_VALUES_LOG2 = (int) (Math.log(PREVIOUS_VALUES) / Math.log(2));
-  private static final int THRESHOLD = 6 + PREVIOUS_VALUES_LOG2;
-  private static final int SET_LSB = (int) Math.pow(2, THRESHOLD + 1d) - 1;
-  private static final int CASE_ZERO_METADATA_LENGTH = PREVIOUS_VALUES_LOG2 + 2;
-  private static final int CASE_ONE_METADATA_LENGTH = PREVIOUS_VALUES_LOG2 + 11;
-  protected static final short[] LEADING_REPRESENTATION = {
-    0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7,
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
-  };
-
-  protected static final short[] LEADING_ROUND = {
-    0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 12, 12, 12, 12, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 24,
-    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24
-  };
-
-  private long[] storedValues;
-  private int[] indices;
-  private int index = 0;
-  private int current = 0;
-
-  public LongChimpEncoder() {
-    this.setType(TSEncoding.CHIMP);
-    this.indices = new int[(int) Math.pow(2, THRESHOLD + 1d)];
-    this.storedValues = new long[PREVIOUS_VALUES];
-  }
-
-  private static final int ONE_ITEM_MAX_SIZE =
-      (2
-                  + LEADING_ZERO_BITS_LENGTH_64BIT
-                  + MEANINGFUL_XOR_BITS_LENGTH_64BIT
-                  + VALUE_BITS_LENGTH_64BIT)
-              / Byte.SIZE
-          + 1;
-
-  protected static final short[] leadingRepresentation = {
-    0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7,
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
-  };
-
-  protected static final short[] leadingRound = {
-    0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 12, 12, 12, 12, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 24,
-    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24
-  };
-
-  @Override
-  public final int getOneItemMaxSize() {
-    return ONE_ITEM_MAX_SIZE;
-  }
-
-  @Override
-  protected void reset() {
-    super.reset();
-    this.current = 0;
-    this.index = 0;
-    this.indices = new int[(int) Math.pow(2, THRESHOLD + 1d)];
-    this.storedValues = new long[PREVIOUS_VALUES];
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) {
-    // ending stream
-    encode(Long.MIN_VALUE, out);
-
-    // flip the byte no matter it is empty or not
-    // the empty ending byte is necessary when decoding
-    bitsLeft = 0;
-    flipByte(out);
-
-    // the encoder may be reused, so let us reset it
-    reset();
-  }
-
-  @Override
-  public final void encode(long value, ByteArrayOutputStream out) {
-    if (firstValueWasWritten) {
-      compressValue(value, out);
-    } else {
-      writeFirst(value, out);
-      firstValueWasWritten = true;
-    }
-  }
-
-  // the first value is stored with no compression
-  private void writeFirst(long value, ByteArrayOutputStream out) {
-    storedValues[current] = value;
-    writeBits(value, VALUE_BITS_LENGTH_64BIT, out);
-    indices[(int) value & SET_LSB] = index;
-  }
-
-  private void compressValue(long value, ByteArrayOutputStream out) {
-    // find the best previous value
-    int key = (int) value & SET_LSB;
-    long xor;
-    int previousIndex;
-    int trailingZeros = 0;
-    int currIndex = indices[key];
-    if ((index - currIndex) < PREVIOUS_VALUES) {
-      long tempXor = value ^ storedValues[currIndex % PREVIOUS_VALUES];
-      trailingZeros = Long.numberOfTrailingZeros(tempXor);
-      if (trailingZeros > THRESHOLD) {
-        previousIndex = currIndex % PREVIOUS_VALUES;
-        xor = tempXor;
-      } else {
-        previousIndex = index % PREVIOUS_VALUES;
-        xor = storedValues[previousIndex] ^ value;
-      }
-    } else {
-      previousIndex = index % PREVIOUS_VALUES;
-      xor = storedValues[previousIndex] ^ value;
-    }
-
-    // case 00: the values are identical, write 00 control bits
-    // and the index of the previous value
-    if (xor == 0) {
-      writeBits(previousIndex, CASE_ZERO_METADATA_LENGTH, out);
-      storedLeadingZeros = VALUE_BITS_LENGTH_64BIT + 1;
-    } else {
-      int leadingZeros = leadingRound[Long.numberOfLeadingZeros(xor)];
-      // case 01:  store the index, the length of
-      // the number of leading zeros in the next 3 bits, then store
-      // the length of the meaningful XORed value in the next 6
-      // bits. Finally store the meaningful bits of the XORed value.
-      if (trailingZeros > THRESHOLD) {
-        int significantBits = VALUE_BITS_LENGTH_64BIT - leadingZeros - trailingZeros;
-        writeBits(
-            512L * (PREVIOUS_VALUES + previousIndex)
-                + 64L * leadingRepresentation[leadingZeros]
-                + significantBits,
-            CASE_ONE_METADATA_LENGTH,
-            out);
-        writeBits(xor >>> trailingZeros, significantBits, out); // Store the meaningful bits of XOR
-        storedLeadingZeros = VALUE_BITS_LENGTH_64BIT + 1;
-        // case 10: If the number of leading zeros is exactly
-        // equal to the previous leading zeros, use that information
-        // and just store 01 control bits and the meaningful XORed value.
-      } else if (leadingZeros == storedLeadingZeros) {
-        writeBit(out);
-        skipBit(out);
-        int significantBits = VALUE_BITS_LENGTH_64BIT - leadingZeros;
-        writeBits(xor, significantBits, out);
-        // case 11: store 11 control bits, the length of the number of leading
-        // zeros in the next 3 bits, then store the
-        // meaningful bits of the XORed value.
-      } else {
-        storedLeadingZeros = leadingZeros;
-        int significantBits = VALUE_BITS_LENGTH_64BIT - leadingZeros;
-        writeBits(24L + leadingRepresentation[leadingZeros], 5, out);
-        writeBits(xor, significantBits, out);
-      }
-    }
-    current = (current + 1) % PREVIOUS_VALUES;
-    storedValues[current] = value;
-    index++;
-    indices[key] = index;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/LongGorillaEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/LongGorillaEncoder.java
deleted file mode 100644
index 0b39592..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/LongGorillaEncoder.java
+++ /dev/null
@@ -1,158 +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.encoding.encoder;
-
-import java.io.ByteArrayOutputStream;
-
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.GORILLA_ENCODING_ENDING_LONG;
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.LEADING_ZERO_BITS_LENGTH_64BIT;
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.MEANINGFUL_XOR_BITS_LENGTH_64BIT;
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.VALUE_BITS_LENGTH_64BIT;
-
-/**
- * This class includes code modified from Michael Burman's gorilla-tsc project.
- *
- * <p>Copyright: 2016-2018 Michael Burman and/or other contributors
- *
- * <p>Project page: https://github.com/burmanm/gorilla-tsc
- *
- * <p>License: http://www.apache.org/licenses/LICENSE-2.0
- */
-public class LongGorillaEncoder extends GorillaEncoderV2 {
-
-  private static final int ONE_ITEM_MAX_SIZE =
-      (2
-                  + LEADING_ZERO_BITS_LENGTH_64BIT
-                  + MEANINGFUL_XOR_BITS_LENGTH_64BIT
-                  + VALUE_BITS_LENGTH_64BIT)
-              / Byte.SIZE
-          + 1;
-
-  private long storedValue = 0;
-
-  @Override
-  public final int getOneItemMaxSize() {
-    return ONE_ITEM_MAX_SIZE;
-  }
-
-  @Override
-  public final void encode(long value, ByteArrayOutputStream out) {
-    if (firstValueWasWritten) {
-      compressValue(value, out);
-    } else {
-      writeFirst(value, out);
-      firstValueWasWritten = true;
-    }
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) {
-    // ending stream
-    encode(GORILLA_ENCODING_ENDING_LONG, out);
-
-    // flip the byte no matter it is empty or not
-    // the empty ending byte is necessary when decoding
-    bitsLeft = 0;
-    flipByte(out);
-
-    // the encoder may be reused, so let us reset it
-    reset();
-  }
-
-  @Override
-  protected void reset() {
-    super.reset();
-    storedValue = 0;
-  }
-
-  private void writeFirst(long value, ByteArrayOutputStream out) {
-    storedValue = value;
-    writeBits(value, VALUE_BITS_LENGTH_64BIT, out);
-  }
-
-  private void compressValue(long value, ByteArrayOutputStream out) {
-    long xor = storedValue ^ value;
-    storedValue = value;
-
-    if (xor == 0) {
-      skipBit(out);
-    } else {
-      writeBit(out);
-
-      int leadingZeros = Long.numberOfLeadingZeros(xor);
-      int trailingZeros = Long.numberOfTrailingZeros(xor);
-      if (leadingZeros >= storedLeadingZeros && trailingZeros >= storedTrailingZeros) {
-        writeExistingLeading(xor, out);
-      } else {
-        writeNewLeading(xor, leadingZeros, trailingZeros, out);
-      }
-    }
-  }
-
-  /**
-   * If there at least as many leading zeros and as many trailing zeros as previous value, control
-   * bit = 0 (type a).
-   *
-   * <p>store the meaningful XORed value
-   *
-   * @param xor XOR between previous value and current
-   */
-  private void writeExistingLeading(long xor, ByteArrayOutputStream out) {
-    skipBit(out);
-
-    int significantBits = VALUE_BITS_LENGTH_64BIT - storedLeadingZeros - storedTrailingZeros;
-    writeBits(xor >>> storedTrailingZeros, significantBits, out);
-  }
-
-  /**
-   * Stores the length of the number of leading zeros in the next 6 bits.
-   *
-   * <p>Stores the length of the meaningful XORed value in the next 6 bits
-   *
-   * <p>Stores the meaningful bits of the XORed value
-   *
-   * <p>(type b)
-   *
-   * @param xor XOR between previous value and current
-   * @param leadingZeros New leading zeros
-   * @param trailingZeros New trailing zeros
-   */
-  private void writeNewLeading(
-      long xor, int leadingZeros, int trailingZeros, ByteArrayOutputStream out) {
-    writeBit(out);
-
-    int significantBits = VALUE_BITS_LENGTH_64BIT - leadingZeros - trailingZeros;
-
-    // Number of leading zeros in the next 6 bits
-    // Different from original, maximum number of leadingZeros is stored with 6 (original 5) bits to
-    // allow up to 63 leading zeros, which are necessary when storing long values
-    // Note that in this method the number of leading zeros won't be 64
-    writeBits(leadingZeros, LEADING_ZERO_BITS_LENGTH_64BIT, out);
-    // Length of meaningful bits in the next 6 bits
-    // Note that in this method the number of meaningful bits is always positive and could be 64,
-    // so we have to use (significantBits - 1) in storage
-    writeBits((long) significantBits - 1, MEANINGFUL_XOR_BITS_LENGTH_64BIT, out);
-    // Store the meaningful bits of XOR
-    writeBits(xor >>> trailingZeros, significantBits, out);
-
-    storedLeadingZeros = leadingZeros;
-    storedTrailingZeros = trailingZeros;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/LongRLBE.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/LongRLBE.java
deleted file mode 100644
index 7e489e3..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/LongRLBE.java
+++ /dev/null
@@ -1,276 +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.encoding.encoder;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-
-public class LongRLBE extends RLBE {
-  // delta values
-  private long[] diffValue = new long[blockSize + 1];
-
-  // repeat times on length code
-  private long[] lengRLE = new long[blockSize + 1];
-
-  // previous value of original value
-  private long previousValue;
-
-  // constructor of LongRLBE
-  public LongRLBE() {
-    super();
-    reset();
-  }
-
-  protected void reset() {
-    writeIndex = -1;
-    LengthCode = new int[blockSize + 1];
-    for (int i = 0; i < blockSize; i++) {
-      diffValue[i] = 0;
-      LengthCode[i] = 0;
-      byteBuffer = 0;
-      numberLeftInBuffer = 0;
-      lengRLE[i] = 0;
-    }
-  }
-
-  /**
-   * calculate the binary code length of given long integer.
-   *
-   * @param val the long integer to calculate length
-   * @return the length of val's binary code
-   */
-  private int calBinarylength(long val) {
-    if (val == 0) {
-      return 1;
-    }
-    int i = 64;
-    while ((((long) 1 << (i - 1)) & val) == 0 && i > 0) {
-      i--;
-    }
-    return i;
-  }
-
-  /**
-   * encode one input long integer value.
-   *
-   * @param value the long integer to be encoded
-   * @param out the output stream to flush in when buffer is full
-   */
-  public void encodeValue(long value, ByteArrayOutputStream out) {
-    if (writeIndex == -1) {
-      // when the first value hasn't encoded yet
-      diffValue[++writeIndex] = value;
-      LengthCode[writeIndex] = calBinarylength(value);
-      previousValue = value;
-      return;
-    }
-    // calculate delta value
-    diffValue[++writeIndex] = value - previousValue;
-    // caldulate the length of delta value
-    LengthCode[writeIndex] = calBinarylength(diffValue[writeIndex]);
-    previousValue = value;
-    if (writeIndex == blockSize - 1) {
-      // when encoded number reach to blocksize
-      flush(out);
-    }
-  }
-
-  @Override
-  public void encode(long value, ByteArrayOutputStream out) {
-    encodeValue(value, out);
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) {
-    flushBlock(out);
-  }
-
-  /**
-   * calculate fibonacci code of input long integer.
-   *
-   * @param val the long integer to be fibonacci-encoded
-   * @return the reverse fibonacci code of val in binary code
-   */
-  protected long calcFibonacci(long val) {
-    // fibonacci values are stored in Fib
-    long[] fib = new long[blockSize * 2 + 1];
-    fib[0] = 1;
-    fib[1] = 1;
-    int i;
-    // generate fibonacci values from 1 to the first one larger than val
-    for (i = 2; fib[i - 1] <= val; i++) {
-      fib[i] = fib[i - 1] + fib[i - 2];
-    }
-
-    i--;
-    long valfib = 0;
-    // calculate fibonacci code
-    while (val > 0) {
-      while (fib[i] > val && i >= 1) {
-        i--;
-      }
-      valfib |= (1 << (i - 1));
-      val -= fib[i];
-    }
-    return valfib;
-  }
-
-  /** run length on DiffValue then store length at the first index in Lengrle. */
-  private void rleOnLengthCode() {
-    int i = 0;
-    while (i <= writeIndex) {
-      int j = i;
-      int temprlecal = 0;
-      while (LengthCode[j] == LengthCode[i] && j <= writeIndex) {
-        j++;
-        temprlecal++;
-      }
-      // store repeat time at the first repeating value's position
-      lengRLE[i] = temprlecal;
-      i = j;
-    }
-  }
-
-  /**
-   * flush all encoded values in a block to output stream.
-   *
-   * @param out the output stream to be flushed to
-   */
-  protected void flushBlock(ByteArrayOutputStream out) {
-    if (writeIndex == -1) {
-      return;
-    }
-    // store the number of values
-    writewriteIndex(out);
-    // calculate length code of delta binary length
-    rleOnLengthCode();
-    for (int i = 0; i <= writeIndex; i++) {
-      if (lengRLE[i] > 0) {
-        flushsegment(i, out);
-      }
-    }
-    clearBuffer(out);
-    reset();
-  }
-
-  /**
-   * flush the adjacent same-length delta values.
-   *
-   * @param i the position of the first delta value
-   * @param out output stream
-   * @throws IOException
-   */
-  private void flushsegment(int i, ByteArrayOutputStream out) {
-    // write the first 7 bits: length code in binary words.
-    for (int j = 6; j >= 0; j--) {
-      if ((LengthCode[i] & (1 << j)) > 0) {
-        writeBit(true, out);
-      } else {
-        writeBit(false, out);
-      }
-    }
-    // write the fibonacci code in normal direction
-    long fib = calcFibonacci(lengRLE[i]);
-    int fiblen = calBinarylength(fib);
-    for (int j = 0; j < fiblen; j++) {
-      if ((fib & (1 << j)) > 0) {
-        writeBit(true, out);
-      } else {
-        writeBit(false, out);
-      }
-    }
-    // write '1' to note the end of fibonacci code
-    writeBit(true, out);
-
-    // write Binary code words
-    int j = i;
-    do {
-      int tempDifflen = calBinarylength(diffValue[j]);
-      for (int k = tempDifflen - 1; k >= 0; k--) {
-        if ((diffValue[j] & ((long) 1 << k)) > 0) {
-          writeBit(true, out);
-        } else {
-          writeBit(false, out);
-        }
-      }
-      j++;
-    } while (lengRLE[j] == 0 && j <= writeIndex);
-  }
-
-  @Override
-  public int getOneItemMaxSize() {
-    return 4 * 4 * 2;
-  }
-
-  @Override
-  public long getMaxByteSize() {
-    return 5L * 4 * blockSize * 2;
-  }
-
-  /**
-   * write one bit to byteBuffer, when byteBuffer is full, flush byteBuffer to output stream.
-   *
-   * @param b the bit to be written
-   * @param out output stream
-   */
-  protected void writeBit(boolean b, ByteArrayOutputStream out) {
-    byteBuffer <<= 1;
-    if (b) {
-      byteBuffer |= 1;
-    }
-
-    numberLeftInBuffer++;
-    if (numberLeftInBuffer == 8) {
-      clearBuffer(out);
-    }
-  }
-
-  /**
-   * flush bits left in byteBuffer to output stream.
-   *
-   * @param out output stream
-   */
-  protected void clearBuffer(ByteArrayOutputStream out) {
-    if (numberLeftInBuffer == 0) {
-      return;
-    }
-    if (numberLeftInBuffer > 0) {
-      byteBuffer <<= (8 - numberLeftInBuffer);
-    }
-    out.write(byteBuffer);
-    numberLeftInBuffer = 0;
-    byteBuffer = 0;
-  }
-
-  /**
-   * write the number of encoded values to output stream.
-   *
-   * @param out output stream
-   */
-  private void writewriteIndex(ByteArrayOutputStream out) {
-    for (int i = 31; i >= 0; i--) {
-      if ((writeIndex + 1 & (1 << i)) > 0) {
-        writeBit(true, out);
-      } else {
-        writeBit(false, out);
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/LongRleEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/LongRleEncoder.java
deleted file mode 100644
index 9636532..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/LongRleEncoder.java
+++ /dev/null
@@ -1,122 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.encoding.bitpacking.LongPacker;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-
-/** Encoder for long value using rle or bit-packing. */
-public class LongRleEncoder extends RleEncoder<Long> {
-
-  /** Packer for packing long value. */
-  private LongPacker packer;
-
-  /** Constructor of LongRleEncoder. */
-  public LongRleEncoder() {
-    super();
-    bufferedValues = new Long[TSFileConfig.RLE_MIN_REPEATED_NUM];
-    preValue = (long) 0;
-    values = new ArrayList<Long>();
-  }
-
-  @Override
-  public void encode(long value, ByteArrayOutputStream out) {
-    values.add(value);
-  }
-
-  /**
-   * write all values buffered in cache to OutputStream.
-   *
-   * @param out - byteArrayOutputStream
-   * @throws IOException cannot flush to OutputStream
-   */
-  @Override
-  public void flush(ByteArrayOutputStream out) throws IOException {
-    // we get bit width after receiving all data
-    this.bitWidth = ReadWriteForEncodingUtils.getLongMaxBitWidth(values);
-    packer = new LongPacker(bitWidth);
-    for (Long value : values) {
-      encodeValue(value);
-    }
-    super.flush(out);
-  }
-
-  @Override
-  protected void reset() {
-    super.reset();
-    preValue = (long) 0;
-  }
-
-  /**
-   * write bytes to OutputStream using rle rle format: [header][value].
-   *
-   * @throws IOException cannot write rle run
-   */
-  @Override
-  protected void writeRleRun() throws IOException {
-    endPreviousBitPackedRun(TSFileConfig.RLE_MIN_REPEATED_NUM);
-    ReadWriteForEncodingUtils.writeUnsignedVarInt(repeatCount << 1, byteCache);
-    ReadWriteForEncodingUtils.writeLongLittleEndianPaddedOnBitWidth(preValue, byteCache, bitWidth);
-    repeatCount = 0;
-    numBufferedValues = 0;
-  }
-
-  @Override
-  protected void clearBuffer() {
-    for (int i = numBufferedValues; i < TSFileConfig.RLE_MIN_REPEATED_NUM; i++) {
-      bufferedValues[i] = (long) 0;
-    }
-  }
-
-  @Override
-  protected void convertBuffer() {
-    byte[] bytes = new byte[bitWidth];
-    long[] tmpBuffer = new long[TSFileConfig.RLE_MIN_REPEATED_NUM];
-    for (int i = 0; i < TSFileConfig.RLE_MIN_REPEATED_NUM; i++) {
-      tmpBuffer[i] = bufferedValues[i];
-    }
-    packer.pack8Values(tmpBuffer, 0, bytes);
-    // we'll not write bit-packing group to OutputStream immediately
-    // we buffer them in list
-    bytesBuffer.add(bytes);
-  }
-
-  @Override
-  public int getOneItemMaxSize() {
-    // 4 + 4 + max(4+8,1 + 4 + 8 * 8)
-    // length + bitwidth + max(rle-header + num, bit-header + lastNum + 8packer)
-    return 77;
-  }
-
-  @Override
-  public long getMaxByteSize() {
-    if (values == null) {
-      return 0;
-    }
-    // try to caculate max value
-    int groupNum = (values.size() / 8 + 1) / 63 + 1;
-    return (long) 8 + groupNum * 5 + values.size() * 8;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/LongSprintzEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/LongSprintzEncoder.java
deleted file mode 100644
index 83a1218..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/LongSprintzEncoder.java
+++ /dev/null
@@ -1,159 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.encoding.bitpacking.LongPacker;
-import org.apache.iotdb.tsfile.encoding.fire.LongFire;
-import org.apache.iotdb.tsfile.exception.encoding.TsFileEncodingException;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Vector;
-
-public class LongSprintzEncoder extends SprintzEncoder {
-
-  // bit packer
-  LongPacker packer;
-
-  // Long Fire predictor
-  LongFire firePred;
-
-  // we save all value in a list and calculate its bitwidth.
-  protected Vector<Long> values;
-
-  public LongSprintzEncoder() {
-    super();
-    values = new Vector<>();
-    firePred = new LongFire(3);
-  }
-
-  @Override
-  protected void reset() {
-    super.reset();
-    values.clear();
-  }
-
-  @Override
-  public int getOneItemMaxSize() {
-    return 1 + (1 + Block_size) * Long.BYTES;
-  }
-
-  @Override
-  public long getMaxByteSize() {
-    return 1 + (1L + values.size()) * Long.BYTES;
-  }
-
-  protected Long predict(Long value, Long preVlaue) throws TsFileEncodingException {
-    Long pred;
-    if (predictMethod.equals("delta")) {
-      pred = delta(value, preVlaue);
-    } else if (predictMethod.equals("fire")) {
-      pred = fire(value, preVlaue);
-    } else {
-      throw new TsFileEncodingException(
-          "Config: Predict Method {} of SprintzEncoder is not supported.");
-    }
-    if (pred <= 0) {
-      pred = -2 * pred;
-    } else {
-      pred = 2 * pred - 1; // TODO:overflow
-    }
-    return pred;
-  }
-
-  @Override
-  protected void bitPack() throws IOException {
-    final long preValue = values.get(0);
-    values.remove(0);
-    this.bitWidth = ReadWriteForEncodingUtils.getLongMaxBitWidth(values);
-    packer = new LongPacker(this.bitWidth);
-    byte[] bytes = new byte[bitWidth];
-    long[] tmpBuffer = new long[Block_size];
-    for (int i = 0; i < Block_size; i++) {
-      tmpBuffer[i] = values.get(i);
-    }
-    packer.pack8Values(tmpBuffer, 0, bytes);
-    ReadWriteForEncodingUtils.writeIntLittleEndianPaddedOnBitWidth(bitWidth, byteCache, 1);
-    byteCache.write(ByteBuffer.allocate(8).putLong(preValue).array());
-    byteCache.write(bytes, 0, bytes.length);
-  }
-
-  protected Long delta(Long value, Long preValue) {
-    return value - preValue;
-  }
-
-  protected Long fire(Long value, Long preValue) {
-    long pred = firePred.predict(preValue);
-    long err = value - pred;
-    firePred.train(preValue, value, err);
-    return err;
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) throws IOException {
-    if (byteCache.size() > 0) {
-      byteCache.writeTo(out);
-    }
-    if (!values.isEmpty()) {
-      int size = values.size();
-      size |= (1 << 7);
-      ReadWriteForEncodingUtils.writeIntLittleEndianPaddedOnBitWidth(size, out, 1);
-      LongRleEncoder encoder = new LongRleEncoder();
-      for (long val : values) {
-        encoder.encode(val, out);
-      }
-      encoder.flush(out);
-    }
-    reset();
-  }
-
-  @Override
-  public void encode(long value, ByteArrayOutputStream out) {
-    if (!isFirstCached) {
-      values.add(value);
-      isFirstCached = true;
-      return;
-    } else {
-      values.add(value);
-    }
-    if (values.size() == Block_size + 1) {
-      try {
-        long pre = values.get(0);
-        firePred.reset();
-        for (int i = 1; i <= Block_size; i++) {
-          long tmp = values.get(i);
-          values.set(i, predict(values.get(i), pre));
-          pre = tmp;
-        }
-        bitPack();
-        isFirstCached = false;
-        values.clear();
-        groupNum++;
-        if (groupNum == groupMax) {
-          flush(out);
-        }
-      } catch (IOException e) {
-        logger.error("Error occured when encoding INT64 Type value with with Sprintz", e);
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/LongZigzagEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/LongZigzagEncoder.java
deleted file mode 100644
index f611815..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/LongZigzagEncoder.java
+++ /dev/null
@@ -1,112 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Encoder for long value using Zigzag . For more information, see
- * https://gist.github.com/mfuerstenau/ba870a29e16536fdbaba
- */
-public class LongZigzagEncoder extends Encoder {
-  private static final Logger logger = LoggerFactory.getLogger(LongZigzagEncoder.class);
-  private List<Long> values;
-  byte[] buf = new byte[10];
-
-  public LongZigzagEncoder() {
-    super(TSEncoding.ZIGZAG);
-    this.values = new ArrayList<>();
-    logger.debug("tsfile-encoding LongZigzagEncoder: long zigzag encoder");
-  }
-
-  /** encoding and bit packing. */
-  private byte[] encodeLong(long n) {
-    n = (n << 1) ^ (n >> 63);
-    int idx = 0;
-    if ((n & ~0x7F) != 0) {
-      buf[idx++] = (byte) ((n | 0x80) & 0xFF);
-      n >>>= 7;
-      while (n > 0x7F) {
-        buf[idx++] = (byte) ((n | 0x80) & 0xFF);
-        n >>>= 7;
-      }
-    }
-    buf[idx++] = (byte) n;
-    return Arrays.copyOfRange(buf, 0, idx);
-  }
-
-  public static String print(byte[] bytes) {
-    StringBuilder sb = new StringBuilder();
-    sb.append("[ ");
-    for (byte b : bytes) {
-      sb.append(String.format("0x%02X ", b));
-    }
-    sb.append("]");
-    return sb.toString();
-  }
-
-  @Override
-  public void encode(long value, ByteArrayOutputStream out) {
-    values.add(value);
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) throws IOException {
-    // byteCache stores all <encoded-data> and we know its size
-    ByteArrayOutputStream byteCache = new ByteArrayOutputStream();
-    final int len = values.size();
-    if (values.size() == 0) {
-      return;
-    }
-    for (long value : values) {
-      byte[] bytes = encodeLong(value);
-      byteCache.write(bytes, 0, bytes.length);
-    }
-    // store encoded bytes size
-    ReadWriteForEncodingUtils.writeUnsignedVarInt(byteCache.size(), out);
-    // store initial list size
-    ReadWriteForEncodingUtils.writeUnsignedVarInt(len, out);
-    out.write(byteCache.toByteArray());
-    reset();
-  }
-
-  private void reset() {
-    values.clear();
-  }
-
-  @Override
-  public long getMaxByteSize() {
-    if (values == null) {
-      return 0;
-    }
-    // try to caculate max value
-    return (long) 8 + values.size() * 4;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/PlainEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/PlainEncoder.java
deleted file mode 100644
index 3249108..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/PlainEncoder.java
+++ /dev/null
@@ -1,138 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.encoding.TsFileEncodingException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.math.BigDecimal;
-
-public class PlainEncoder extends Encoder {
-
-  private static final Logger logger = LoggerFactory.getLogger(PlainEncoder.class);
-  private TSDataType dataType;
-  private int maxStringLength;
-
-  public PlainEncoder(TSDataType dataType, int maxStringLength) {
-    super(TSEncoding.PLAIN);
-    this.dataType = dataType;
-    this.maxStringLength = maxStringLength;
-  }
-
-  @Override
-  public void encode(boolean value, ByteArrayOutputStream out) {
-    if (value) {
-      out.write(1);
-    } else {
-      out.write(0);
-    }
-  }
-
-  @Override
-  public void encode(short value, ByteArrayOutputStream out) {
-    out.write((value >> 8) & 0xFF);
-    out.write(value & 0xFF);
-  }
-
-  @Override
-  public void encode(int value, ByteArrayOutputStream out) {
-    ReadWriteForEncodingUtils.writeVarInt(value, out);
-  }
-
-  @Override
-  public void encode(long value, ByteArrayOutputStream out) {
-    for (int i = 7; i >= 0; i--) {
-      out.write((byte) (((value) >> (i * 8)) & 0xFF));
-    }
-  }
-
-  @Override
-  public void encode(float value, ByteArrayOutputStream out) {
-    int floatInt = Float.floatToIntBits(value);
-    out.write((floatInt >> 24) & 0xFF);
-    out.write((floatInt >> 16) & 0xFF);
-    out.write((floatInt >> 8) & 0xFF);
-    out.write(floatInt & 0xFF);
-  }
-
-  @Override
-  public void encode(double value, ByteArrayOutputStream out) {
-    encode(Double.doubleToLongBits(value), out);
-  }
-
-  @Override
-  public void encode(Binary value, ByteArrayOutputStream out) {
-    try {
-      // write the length of the bytes
-      encode(value.getLength(), out);
-      // write value
-      out.write(value.getValues());
-    } catch (IOException e) {
-      logger.error(
-          "tsfile-encoding PlainEncoder: error occurs when encode Binary value {}", value, e);
-    }
-  }
-
-  @Override
-  public void encode(BigDecimal value, ByteArrayOutputStream out) {
-    throw new TsFileEncodingException(
-        "tsfile-encoding PlainEncoder: current version does not support BigDecimal value encoding");
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) {
-    // This is an empty function.
-  }
-
-  @Override
-  public int getOneItemMaxSize() {
-    switch (dataType) {
-      case BOOLEAN:
-        return 1;
-      case INT32:
-        return 4;
-      case INT64:
-        return 8;
-      case FLOAT:
-        return 4;
-      case DOUBLE:
-        return 8;
-      case TEXT:
-        // refer to encode(Binary,ByteArrayOutputStream)
-        return 4 + TSFileConfig.BYTE_SIZE_PER_CHAR * maxStringLength;
-      default:
-        throw new UnsupportedOperationException(dataType.toString());
-    }
-  }
-
-  @Override
-  public long getMaxByteSize() {
-    return 0;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/RLBE.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/RLBE.java
deleted file mode 100644
index d428b4f..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/RLBE.java
+++ /dev/null
@@ -1,61 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayOutputStream;
-
-public class RLBE extends Encoder {
-  // Every BLOCK_DEFAULT_SIZE values are followed by a header
-  protected static final int BLOCK_DEFAULT_SIZE = 10000;
-
-  protected static final Logger logger = LoggerFactory.getLogger(RLBE.class);
-
-  // output stream to buffer {@code <length> <fibonacci code> <delta value>}
-  protected ByteArrayOutputStream out;
-
-  protected int blockSize = BLOCK_DEFAULT_SIZE;
-
-  // Storage bits into byteBuffer and flush when full
-  protected byte byteBuffer;
-  // Valid bits left in byteBuffer
-  protected int numberLeftInBuffer;
-
-  // Differential Value of InputData is stored in DiffValue
-
-  // Length of binary code of delta values are stored in LengthCode
-  protected int[] LengthCode;
-
-  // When writeIndex == -1, the first value is not stored
-  protected int writeIndex = -1;
-
-  // Constructor of RLBE
-  public RLBE() {
-    super(TSEncoding.RLBE);
-    // blockSize = size;
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) {}
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/RegularDataEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/RegularDataEncoder.java
deleted file mode 100644
index 9a2badb..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/RegularDataEncoder.java
+++ /dev/null
@@ -1,364 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.BitSet;
-
-/**
- * RegularDataEncoder is an encoder for compressing data in type of integer and long. We adapt a
- * hypothesis that the difference between each data point is the same, which it means the data is
- * regular.
- *
- * <p>To encode the regular data, we first create an array as a block to store the data loaded into
- * the encoder. While it reach the default block size, start calculating the delta between each data
- * point in this block in order to checkout whether there are missing points exist in the data. If
- * there is, create a bitmap for this block to denote the position of missing points. Next, store
- * the data info (the data size, the minimum delta value and the first data point of this block) and
- * the bitmap with its info into the result byte array output stream.
- */
-public abstract class RegularDataEncoder extends Encoder {
-
-  protected static final int BLOCK_DEFAULT_SIZE = 128;
-  private static final Logger LOGGER = LoggerFactory.getLogger(RegularDataEncoder.class);
-  protected ByteArrayOutputStream out;
-  protected int blockSize;
-  protected boolean isMissingPoint;
-
-  protected int writeIndex = -1;
-
-  protected int dataTotal;
-
-  /**
-   * constructor of RegularDataEncoder.
-   *
-   * @param size - the number how many numbers to be packed into a block.
-   */
-  protected RegularDataEncoder(int size) {
-    super(TSEncoding.REGULAR);
-    blockSize = size;
-  }
-
-  protected abstract void writeHeader() throws IOException;
-
-  protected abstract void reset();
-
-  protected abstract void checkMissingPoint(ByteArrayOutputStream out) throws IOException;
-
-  protected abstract void writeBitmap(ByteArrayOutputStream out) throws IOException;
-
-  protected void writeHeaderToBytes() throws IOException {
-    out.write(BytesUtils.intToBytes(writeIndex));
-    writeHeader();
-  }
-
-  protected void flushBlockBuffer(ByteArrayOutputStream out) throws IOException {
-    if (writeIndex == -1) {
-      return;
-    }
-    this.out = out;
-
-    // check if the missing point exists
-    checkMissingPoint(out);
-    // write identifier
-    out.write(BytesUtils.boolToBytes(isMissingPoint));
-    // write bitmap if missing points exist
-    if (isMissingPoint) {
-      writeBitmap(out);
-    }
-    // write header
-    writeHeaderToBytes();
-
-    reset();
-    writeIndex = -1;
-  }
-
-  /** calling this method to flush all values which haven't encoded to result byte array. */
-  @Override
-  public void flush(ByteArrayOutputStream out) {
-    try {
-      flushBlockBuffer(out);
-    } catch (IOException e) {
-      LOGGER.error("flush data to stream failed!", e);
-    }
-  }
-
-  public static class IntRegularEncoder extends RegularDataEncoder {
-
-    private int[] data;
-    private int firstValue;
-    private int previousValue;
-    private int minDeltaBase;
-    private int newBlockSize;
-    private BitSet bitmap;
-
-    /** constructor of IntRegularEncoder which is a sub-class of RegularDataEncoder. */
-    public IntRegularEncoder() {
-      this(BLOCK_DEFAULT_SIZE);
-    }
-
-    /**
-     * constructor of RegularDataEncoder.
-     *
-     * @param size - the number how many numbers to be packed into a block.
-     */
-    public IntRegularEncoder(int size) {
-      super(size);
-      reset();
-    }
-
-    @Override
-    protected void reset() {
-      minDeltaBase = Integer.MAX_VALUE;
-      isMissingPoint = false;
-      firstValue = 0;
-      previousValue = 0;
-    }
-
-    @Override
-    protected void writeHeader() throws IOException {
-      out.write(BytesUtils.intToBytes(minDeltaBase));
-      out.write(BytesUtils.intToBytes(firstValue));
-    }
-
-    @Override
-    public void encode(int value, ByteArrayOutputStream out) {
-      try {
-        encodeValue(value, out);
-      } catch (IOException e) {
-        throw new RuntimeException(e);
-      }
-    }
-
-    @Override
-    public int getOneItemMaxSize() {
-      return 4;
-    }
-
-    @Override
-    public long getMaxByteSize() {
-      // The meaning of 20 is:
-      // identifier(4)+bitmapLength(4)+index(4)+minDeltaBase(4)+firstValue(4)
-      return (long) 20 + (writeIndex * 2 / 8) + (writeIndex * 4);
-    }
-
-    @Override
-    protected void checkMissingPoint(ByteArrayOutputStream out) throws IOException {
-      // get the new regular data if the missing point exists in the original data
-      if (writeIndex > 1) {
-        previousValue = data[0];
-        minDeltaBase = data[1] - data[0];
-        // calculate minimum elapsed of the data and check whether the missing point
-        // exists
-        for (int i = 1; i < writeIndex; i++) {
-          int delta = data[i] - previousValue; // calculate delta
-          if (delta != minDeltaBase) {
-            isMissingPoint = true;
-          }
-          if (delta < minDeltaBase) {
-            minDeltaBase = delta;
-          }
-          previousValue = data[i];
-        }
-      }
-      firstValue = data[0];
-      if (isMissingPoint) {
-        dataTotal = writeIndex;
-        newBlockSize = ((data[writeIndex - 1] - data[0]) / minDeltaBase) + 1;
-        writeIndex = newBlockSize;
-      }
-    }
-
-    @Override
-    protected void writeBitmap(ByteArrayOutputStream out) throws IOException {
-      // generate bitmap
-      data2Diff(data);
-      byte[] bsArr = bitmap.toByteArray();
-      out.write(BytesUtils.intToBytes(bsArr.length));
-      out.write(bsArr);
-    }
-
-    /**
-     * input a integer or long value.
-     *
-     * @param value value to encode
-     * @param out - the ByteArrayOutputStream which data encode into
-     */
-    public void encodeValue(int value, ByteArrayOutputStream out) throws IOException {
-      if (writeIndex == -1) {
-        data = new int[blockSize];
-        writeIndex = 0;
-      }
-      data[writeIndex++] = value;
-      if (writeIndex == blockSize) {
-        flush(out);
-      }
-    }
-
-    private void data2Diff(int[] missingPointData) {
-      bitmap = new BitSet(newBlockSize);
-      bitmap.flip(0, newBlockSize);
-      int offset = 0;
-      for (int i = 1; i < dataTotal; i++) {
-        int delta = missingPointData[i] - missingPointData[i - 1];
-        if (delta != minDeltaBase) {
-          int missingPointNum = (delta / minDeltaBase) - 1;
-          for (int j = 0; j < missingPointNum; j++) {
-            bitmap.set(i + (offset++), false);
-          }
-        }
-      }
-    }
-  }
-
-  public static class LongRegularEncoder extends RegularDataEncoder {
-
-    private long[] data;
-    private long firstValue;
-    private long previousValue;
-    private long minDeltaBase;
-    private int newBlockSize;
-    private BitSet bitmap;
-
-    public LongRegularEncoder() {
-      this(BLOCK_DEFAULT_SIZE);
-    }
-
-    /**
-     * constructor of LongRegularEncoder which is a sub-class of RegularDataEncoder.
-     *
-     * @param size - the number how many numbers to be packed into a block.
-     */
-    public LongRegularEncoder(int size) {
-      super(size);
-      reset();
-    }
-
-    @Override
-    protected void reset() {
-      minDeltaBase = Long.MAX_VALUE;
-      isMissingPoint = false;
-      firstValue = 0L;
-      previousValue = 0L;
-    }
-
-    @Override
-    protected void writeHeader() throws IOException {
-      out.write(BytesUtils.longToBytes(minDeltaBase));
-      out.write(BytesUtils.longToBytes(firstValue));
-    }
-
-    @Override
-    public void encode(long value, ByteArrayOutputStream out) {
-      try {
-        encodeValue(value, out);
-      } catch (IOException e) {
-        throw new RuntimeException(e);
-      }
-    }
-
-    @Override
-    public int getOneItemMaxSize() {
-      return 8;
-    }
-
-    @Override
-    public long getMaxByteSize() {
-      // The meaning of 20 is:
-      // identifier(4)+bitmapLength(4)+index(4)+minDeltaBase(8)+firstValue(8)
-      return (long) 28 + (writeIndex * 2 / 8) + (writeIndex * 8);
-    }
-
-    @Override
-    protected void checkMissingPoint(ByteArrayOutputStream out) throws IOException {
-      // get the new regular data if the missing point exists in the original data
-      if (writeIndex > 1) {
-        previousValue = data[0];
-        minDeltaBase = data[1] - data[0];
-        // calculate minimum elapsed of the data and check whether the missing point
-        // exists
-        for (int i = 1; i < writeIndex; i++) {
-          long delta = data[i] - previousValue; // calculate delta
-          if (delta != minDeltaBase) {
-            isMissingPoint = true;
-          }
-          if (delta < minDeltaBase) {
-            minDeltaBase = delta;
-          }
-          previousValue = data[i];
-        }
-      }
-      firstValue = data[0];
-      if (isMissingPoint) {
-        dataTotal = writeIndex;
-        newBlockSize = (int) (((data[writeIndex - 1] - data[0]) / minDeltaBase) + 1);
-        writeIndex = newBlockSize;
-      }
-    }
-
-    @Override
-    protected void writeBitmap(ByteArrayOutputStream out) throws IOException {
-      // generate bitmap
-      data2Diff(data);
-      byte[] bsArr = bitmap.toByteArray();
-      out.write(BytesUtils.intToBytes(bsArr.length));
-      out.write(bsArr);
-    }
-
-    /**
-     * input a integer or long value.
-     *
-     * @param value value to encode
-     * @param out - the ByteArrayOutputStream which data encode into
-     */
-    public void encodeValue(long value, ByteArrayOutputStream out) throws IOException {
-      if (writeIndex == -1) {
-        data = new long[blockSize];
-        writeIndex = 0;
-      }
-      data[writeIndex++] = value;
-      if (writeIndex == blockSize) {
-        flush(out);
-      }
-    }
-
-    private void data2Diff(long[] missingPointData) {
-      bitmap = new BitSet(newBlockSize);
-      bitmap.flip(0, newBlockSize);
-      int offset = 0;
-      for (int i = 1; i < dataTotal; i++) {
-        long delta = missingPointData[i] - missingPointData[i - 1];
-        if (delta != minDeltaBase) {
-          int missingPointNum = (int) (delta / minDeltaBase) - 1;
-          for (int j = 0; j < missingPointNum; j++) {
-            bitmap.set(i + (offset++), false);
-          }
-        }
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/RleEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/RleEncoder.java
deleted file mode 100644
index 2afb70a..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/RleEncoder.java
+++ /dev/null
@@ -1,331 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.encoding.TsFileEncodingException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Encodes values using a combination of run length encoding and bit packing, according to the
- * following grammar:
- *
- * <pre>{@code
- * rle-bit-packing-hybrid: <length> <bitwidth> <encoded-data>
- * length := length of the <bitwidth> <encoded-data> in bytes stored as 4 bytes little endian
- * bitwidth := bitwidth for all encoded data in <encoded-data>
- * encoded-data := <run>*
- * run := <bit-packed-run> | <rle-run>
- * bit-packed-run := <bit-packed-header> <lastBitPackedNum> <bit-packed-values>
- * bit-packed-header := varint-encode(<bit-pack-count> << 1 | 1)
- * lastBitPackedNum := the number of useful value in last bit-pack may be less than 8, so
- * lastBitPackedNum indicates how many values are useful
- * bit-packed-values :=  bit packed
- * rle-run := <rle-header> <repeated-value>
- * rle-header := varint-encode( (number of times repeated) << 1)
- * repeated-value := value that is repeated, using a fixed-width of round-up-to-next-byte(bit-width)
- * }</pre>
- *
- * @param <T> data type T for RLE
- */
-public abstract class RleEncoder<T extends Comparable<T>> extends Encoder {
-
-  private static final Logger logger = LoggerFactory.getLogger(RleEncoder.class);
-
-  /** we save all value in a list and calculate its bitwidth. */
-  protected List<T> values;
-
-  /** the bit width used for bit-packing and rle. */
-  protected int bitWidth;
-
-  /** for a given value now buffered, how many times it occurs. */
-  protected int repeatCount;
-
-  /** the number of group which using bit packing, it is saved in header. */
-  protected int bitPackedGroupCount;
-
-  /** the number of buffered value in array. */
-  protected int numBufferedValues;
-
-  /**
-   * we will write all bytes using bit-packing to OutputStream once. Before that, all bytes are
-   * saved in list.
-   */
-  protected List<byte[]> bytesBuffer;
-
-  /** flag which indicate encoding mode false -- rle true -- bit-packing. */
-  protected boolean isBitPackRun;
-
-  /** previous value written, used to detect repeated values. */
-  protected T preValue;
-
-  /** array to buffer values temporarily. */
-  protected T[] bufferedValues;
-
-  protected boolean isBitWidthSaved;
-
-  /** output stream to buffer {@code <bitwidth> <encoded-data>}. */
-  protected ByteArrayOutputStream byteCache;
-
-  protected TSFileConfig config = TSFileDescriptor.getInstance().getConfig();
-
-  /** constructor. */
-  protected RleEncoder() {
-    super(TSEncoding.RLE);
-    bytesBuffer = new ArrayList<>();
-    isBitPackRun = false;
-    isBitWidthSaved = false;
-    byteCache = new ByteArrayOutputStream();
-  }
-
-  protected void reset() {
-    numBufferedValues = 0;
-    repeatCount = 0;
-    bitPackedGroupCount = 0;
-    bytesBuffer.clear();
-    isBitPackRun = false;
-    isBitWidthSaved = false;
-    byteCache.reset();
-    values.clear();
-  }
-
-  /**
-   * Write all values buffered in cache to OutputStream.
-   *
-   * @param out - byteArrayOutputStream
-   * @throws IOException cannot flush to OutputStream
-   */
-  @Override
-  public void flush(ByteArrayOutputStream out) throws IOException {
-    int lastBitPackedNum = numBufferedValues;
-    if (repeatCount >= TSFileConfig.RLE_MIN_REPEATED_NUM) {
-      try {
-        writeRleRun();
-      } catch (IOException e) {
-        logger.error(
-            "tsfile-encoding RleEncoder : error occurs when writing nums to OutputStram "
-                + "when flushing left nums. "
-                + "numBufferedValues {}, repeatCount {}, bitPackedGroupCount{}, "
-                + "isBitPackRun {}, isBitWidthSaved {}",
-            numBufferedValues,
-            repeatCount,
-            bitPackedGroupCount,
-            isBitPackRun,
-            isBitWidthSaved,
-            e);
-        throw e;
-      }
-    } else if (numBufferedValues > 0) {
-      clearBuffer();
-      writeOrAppendBitPackedRun();
-      endPreviousBitPackedRun(lastBitPackedNum);
-    } else {
-      endPreviousBitPackedRun(TSFileConfig.RLE_MIN_REPEATED_NUM);
-    }
-    // write length
-    ReadWriteForEncodingUtils.writeUnsignedVarInt(byteCache.size(), out);
-    byteCache.writeTo(out);
-    reset();
-  }
-
-  /**
-   * Write bytes to OutputStream using rle. rle format: {@code [header][value] header: (repeated
-   * value) << 1}
-   *
-   * @throws IOException cannot write RLE run
-   */
-  protected abstract void writeRleRun() throws IOException;
-
-  /** Start a bit-packing run transform values to bytes and buffer them in cache. */
-  public void writeOrAppendBitPackedRun() {
-    if (bitPackedGroupCount >= TSFileConfig.RLE_MAX_BIT_PACKED_NUM) {
-      // we've packed as many values as we can for this run,
-      // end it and start a new one
-      endPreviousBitPackedRun(TSFileConfig.RLE_MIN_REPEATED_NUM);
-    }
-    if (!isBitPackRun) {
-      isBitPackRun = true;
-    }
-
-    convertBuffer();
-
-    numBufferedValues = 0;
-    repeatCount = 0;
-    ++bitPackedGroupCount;
-  }
-
-  /**
-   * End a bit-packing run write all bit-packing group to OutputStream bit-packing format: {@code
-   * [header][lastBitPackedNum][bit-packing group]+ [bit-packing group]+ are saved in List<byte[]>
-   * bytesBuffer }.
-   *
-   * @param lastBitPackedNum - in last bit-packing group, it may have useful values less than 8.
-   *     This param indicates how many values are useful
-   */
-  protected void endPreviousBitPackedRun(int lastBitPackedNum) {
-    if (!isBitPackRun) {
-      return;
-    }
-    byte bitPackHeader = (byte) ((bitPackedGroupCount << 1) | 1);
-    byteCache.write(bitPackHeader);
-    byteCache.write(lastBitPackedNum);
-    for (byte[] bytes : bytesBuffer) {
-      byteCache.write(bytes, 0, bytes.length);
-    }
-    bytesBuffer.clear();
-    isBitPackRun = false;
-    bitPackedGroupCount = 0;
-  }
-
-  /**
-   * Encode T value using rle or bit-packing. It may not write to OutputStream immediately
-   *
-   * @param value - value to encode
-   */
-  @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning
-  protected void encodeValue(T value) {
-    if (!isBitWidthSaved) {
-      // save bit width in header,
-      // perpare for read
-      byteCache.write(bitWidth);
-      isBitWidthSaved = true;
-    }
-    if (value.equals(preValue)) {
-      repeatCount++;
-      if (repeatCount >= TSFileConfig.RLE_MIN_REPEATED_NUM
-          && repeatCount <= TSFileConfig.RLE_MAX_REPEATED_NUM) {
-        // value occurs more than RLE_MIN_REPEATED_NUM times but less than
-        // EncodingConfig.RLE_MAX_REPEATED_NUM
-        // we'll use rle, so just keep on counting repeats for now
-        // we'll write current value to OutputStream when we encounter a different value
-        return;
-      } else if (repeatCount == TSFileConfig.RLE_MAX_REPEATED_NUM + 1) {
-        // value occurs more than EncodingConfig.RLE_MAX_REPEATED_NUM
-        // we'll write current rle run to stream and keep on counting current value
-        repeatCount = TSFileConfig.RLE_MAX_REPEATED_NUM;
-        try {
-          writeRleRun();
-          logger.debug("tsfile-encoding RleEncoder : write full rle run to stream");
-        } catch (IOException e) {
-          logger.error(
-              " error occurs when writing full rle run to OutputStram when repeatCount = {}."
-                  + "numBufferedValues {}, repeatCount {}, bitPackedGroupCount{}, "
-                  + "isBitPackRun {}, isBitWidthSaved {}",
-              TSFileConfig.RLE_MAX_REPEATED_NUM + 1,
-              numBufferedValues,
-              repeatCount,
-              bitPackedGroupCount,
-              isBitPackRun,
-              isBitWidthSaved,
-              e);
-        }
-        repeatCount = 1;
-        preValue = value;
-      }
-
-    } else {
-      // we encounter a differnt value
-      if (repeatCount >= TSFileConfig.RLE_MIN_REPEATED_NUM) {
-        try {
-          writeRleRun();
-        } catch (IOException e) {
-          logger.error(
-              "tsfile-encoding RleEncoder : error occurs when writing num to OutputStram "
-                  + "when repeatCount > {}."
-                  + "numBufferedValues {}, repeatCount {}, bitPackedGroupCount{}, isBitPackRun {}, "
-                  + "isBitWidthSaved {}",
-              TSFileConfig.RLE_MIN_REPEATED_NUM,
-              numBufferedValues,
-              repeatCount,
-              bitPackedGroupCount,
-              isBitPackRun,
-              isBitWidthSaved,
-              e);
-        }
-      }
-      repeatCount = 1;
-      preValue = value;
-    }
-    bufferedValues[numBufferedValues] = value;
-    numBufferedValues++;
-    // if none of value we encountered occurs more MAX_REPEATED_NUM times
-    // we'll use bit-packing
-    if (numBufferedValues == TSFileConfig.RLE_MIN_REPEATED_NUM) {
-      writeOrAppendBitPackedRun();
-    }
-  }
-
-  /** clean all useless value in bufferedValues and set 0. */
-  protected abstract void clearBuffer();
-
-  protected abstract void convertBuffer();
-
-  @Override
-  public void encode(boolean value, ByteArrayOutputStream out) {
-    throw new TsFileEncodingException(getClass().getName());
-  }
-
-  @Override
-  public void encode(short value, ByteArrayOutputStream out) {
-    throw new TsFileEncodingException(getClass().getName());
-  }
-
-  @Override
-  public void encode(int value, ByteArrayOutputStream out) {
-    throw new TsFileEncodingException(getClass().getName());
-  }
-
-  @Override
-  public void encode(long value, ByteArrayOutputStream out) {
-    throw new TsFileEncodingException(getClass().getName());
-  }
-
-  @Override
-  public void encode(float value, ByteArrayOutputStream out) {
-    throw new TsFileEncodingException(getClass().getName());
-  }
-
-  @Override
-  public void encode(double value, ByteArrayOutputStream out) {
-    throw new TsFileEncodingException(getClass().getName());
-  }
-
-  @Override
-  public void encode(Binary value, ByteArrayOutputStream out) {
-    throw new TsFileEncodingException(getClass().getName());
-  }
-
-  @Override
-  public void encode(BigDecimal value, ByteArrayOutputStream out) {
-    throw new TsFileEncodingException(getClass().getName());
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/SDTEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/SDTEncoder.java
deleted file mode 100644
index ff8cfb0..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/SDTEncoder.java
+++ /dev/null
@@ -1,438 +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.encoding.encoder;
-
-public class SDTEncoder {
-
-  // the last read time and value if upperDoor >= lowerDoor meaning out of compDeviation range, will
-  // store lastReadPair
-  private long lastReadTimestamp;
-
-  private long lastReadLong;
-  private double lastReadDouble;
-  private int lastReadInt;
-  private float lastReadFloat;
-
-  // the last stored time and vlaue we compare current point against lastStoredPair
-  private long lastStoredTimestamp;
-
-  private long lastStoredLong;
-  private double lastStoredDouble;
-  private int lastStoredInt;
-  private float lastStoredFloat;
-
-  // the maximum curUpperSlope between the lastStoredPoint to the current point upperDoor can only
-  // open up
-  private double upperDoor;
-
-  // the minimum curLowerSlope between the lastStoredPoint to the current point lowerDoor can only
-  // open downard
-  private double lowerDoor;
-
-  // the maximum absolute difference the user set if the data's value is within compDeviation, it
-  // will be compressed and discarded after compression, it will only store out of range <time,
-  // data> to form the trend
-  private double compDeviation;
-
-  // the minimum time distance between two stored data points if current point time to the last
-  // stored point time distance <= compMinTime, current point will NOT be stored regardless of
-  // compression deviation
-  private long compMinTime;
-
-  // the maximum time distance between two stored data points if current point time to the last
-  // stored point time distance >= compMaxTime, current point will be stored regardless of
-  // compression deviation
-  private long compMaxTime;
-
-  // isFirstValue is true when the encoder takes the first point or reset() when cur point's
-  // distance to the last stored point's distance exceeds compMaxTime
-  private boolean isFirstValue;
-
-  public SDTEncoder() {
-    upperDoor = Integer.MIN_VALUE;
-    lowerDoor = Integer.MAX_VALUE;
-    compDeviation = -1;
-    compMinTime = 0;
-    compMaxTime = Long.MAX_VALUE;
-    isFirstValue = true;
-  }
-
-  public boolean encodeFloat(long time, float value) {
-    // store the first time and value pair
-    if (isFirstValue(time, value)) {
-      return true;
-    }
-
-    // if current point to the last stored point's time distance is within compMinTime,
-    // will not check two doors nor store any point within the compMinTime time range
-    if (time - lastStoredTimestamp <= compMinTime) {
-      return false;
-    }
-
-    // if current point to the last stored point's time distance is larger than compMaxTime,
-    // will reset two doors, and store current point
-    if (time - lastStoredTimestamp >= compMaxTime) {
-      reset(time, value);
-      return true;
-    }
-
-    double curUpperSlope = (value - lastStoredFloat - compDeviation) / (time - lastStoredTimestamp);
-    if (curUpperSlope > upperDoor) {
-      upperDoor = curUpperSlope;
-    }
-
-    double curLowerSlope = (value - lastStoredFloat + compDeviation) / (time - lastStoredTimestamp);
-    if (curLowerSlope < lowerDoor) {
-      lowerDoor = curLowerSlope;
-    }
-
-    // current point to the lastStoredPair's value exceeds compDev, will store lastReadPair and
-    // update two doors
-    if (upperDoor >= lowerDoor) {
-      lastStoredTimestamp = lastReadTimestamp;
-      lastStoredFloat = lastReadFloat;
-      upperDoor = (value - lastStoredFloat - compDeviation) / (time - lastStoredTimestamp);
-      lowerDoor = (value - lastStoredFloat + compDeviation) / (time - lastStoredTimestamp);
-      lastReadFloat = value;
-      lastReadTimestamp = time;
-      return true;
-    }
-
-    lastReadFloat = value;
-    lastReadTimestamp = time;
-    return false;
-  }
-
-  public boolean encodeLong(long time, long value) {
-    // store the first time and value pair
-    if (isFirstValue(time, value)) {
-      return true;
-    }
-
-    // if current point to the last stored point's time distance is within compMinTime,
-    // will not check two doors nor store any point within the compMinTime time range
-    if (time - lastStoredTimestamp <= compMinTime) {
-      return false;
-    }
-
-    // if current point to the last stored point's time distance is larger than compMaxTime,
-    // will reset two doors, and store current point
-    if (time - lastStoredTimestamp >= compMaxTime) {
-      reset(time, value);
-      return true;
-    }
-
-    double curUpperSlope = (value - lastStoredLong - compDeviation) / (time - lastStoredTimestamp);
-    if (curUpperSlope > upperDoor) {
-      upperDoor = curUpperSlope;
-    }
-
-    double curLowerSlope = (value - lastStoredLong + compDeviation) / (time - lastStoredTimestamp);
-    if (curLowerSlope < lowerDoor) {
-      lowerDoor = curLowerSlope;
-    }
-
-    // current point to the lastStoredPair's value exceeds compDev, will store lastReadPair and
-    // update two doors
-    if (upperDoor >= lowerDoor) {
-      lastStoredLong = lastReadLong;
-      lastStoredTimestamp = lastReadTimestamp;
-      upperDoor = (value - lastStoredLong - compDeviation) / (time - lastStoredTimestamp);
-      lowerDoor = (value - lastStoredLong + compDeviation) / (time - lastStoredTimestamp);
-      lastReadLong = value;
-      lastReadTimestamp = time;
-      return true;
-    }
-
-    lastReadLong = value;
-    lastReadTimestamp = time;
-    return false;
-  }
-
-  public boolean encodeInt(long time, int value) {
-    // store the first time and value pair
-    if (isFirstValue(time, value)) {
-      return true;
-    }
-
-    // if current point to the last stored point's time distance is within compMinTime,
-    // will not check two doors nor store any point within the compMinTime time range
-    if (time - lastStoredTimestamp <= compMinTime) {
-      return false;
-    }
-
-    // if current point to the last stored point's time distance is larger than compMaxTime,
-    // will reset two doors, and store current point
-    if (time - lastStoredTimestamp >= compMaxTime) {
-      reset(time, value);
-      return true;
-    }
-
-    double curUpperSlope = (value - lastStoredInt - compDeviation) / (time - lastStoredTimestamp);
-    if (curUpperSlope > upperDoor) {
-      upperDoor = curUpperSlope;
-    }
-
-    double curLowerSlope = (value - lastStoredInt + compDeviation) / (time - lastStoredTimestamp);
-    if (curLowerSlope < lowerDoor) {
-      lowerDoor = curLowerSlope;
-    }
-
-    // current point to the lastStoredPair's value exceeds compDev, will store lastReadPair and
-    // update two doors
-    if (upperDoor >= lowerDoor) {
-      lastStoredTimestamp = lastReadTimestamp;
-      lastStoredInt = lastReadInt;
-      upperDoor = (value - lastStoredInt - compDeviation) / (time - lastStoredTimestamp);
-      lowerDoor = (value - lastStoredInt + compDeviation) / (time - lastStoredTimestamp);
-      lastReadInt = value;
-      lastReadTimestamp = time;
-      return true;
-    }
-
-    lastReadInt = value;
-    lastReadTimestamp = time;
-    return false;
-  }
-
-  public boolean encodeDouble(long time, double value) {
-    // store the first time and value pair
-    if (isFirstValue(time, value)) {
-      return true;
-    }
-
-    // if current point to the last stored point's time distance is within compMinTime,
-    // will not check two doors nor store any point within the compMinTime time range
-    if (time - lastStoredTimestamp <= compMinTime) {
-      return false;
-    }
-
-    // if current point to the last stored point's time distance is larger than compMaxTime,
-    // will reset two doors, and store current point;
-    if (time - lastStoredTimestamp >= compMaxTime) {
-      reset(time, value);
-      return true;
-    }
-
-    double curUpperSlope =
-        (value - lastStoredDouble - compDeviation) / (time - lastStoredTimestamp);
-    if (curUpperSlope > upperDoor) {
-      upperDoor = curUpperSlope;
-    }
-
-    double curLowerSlope =
-        (value - lastStoredDouble + compDeviation) / (time - lastStoredTimestamp);
-    if (curLowerSlope < lowerDoor) {
-      lowerDoor = curLowerSlope;
-    }
-
-    // current point to the lastStoredPair's value exceeds compDev, will store lastReadPair and
-    // update two doors
-    if (upperDoor >= lowerDoor) {
-      lastStoredTimestamp = lastReadTimestamp;
-      lastStoredDouble = lastReadDouble;
-      upperDoor = (value - lastStoredDouble - compDeviation) / (time - lastStoredTimestamp);
-      lowerDoor = (value - lastStoredDouble + compDeviation) / (time - lastStoredTimestamp);
-      lastReadDouble = value;
-      lastReadTimestamp = time;
-      return true;
-    }
-
-    lastReadDouble = value;
-    lastReadTimestamp = time;
-    return false;
-  }
-
-  public int encode(long[] timestamps, double[] values, int batchSize) {
-    int index = 0;
-    for (int i = 0; i < batchSize; i++) {
-      if (encodeDouble(timestamps[i], values[i])) {
-        timestamps[index] = lastStoredTimestamp;
-        values[index] = lastStoredDouble;
-        index++;
-      }
-    }
-    return index;
-  }
-
-  public int encode(long[] timestamps, int[] values, int batchSize) {
-    int index = 0;
-    for (int i = 0; i < batchSize; i++) {
-      if (encodeInt(timestamps[i], values[i])) {
-        timestamps[index] = lastStoredTimestamp;
-        values[index] = lastStoredInt;
-        index++;
-      }
-    }
-    return index;
-  }
-
-  public int encode(long[] timestamps, long[] values, int batchSize) {
-    int index = 0;
-    for (int i = 0; i < batchSize; i++) {
-      if (encodeLong(timestamps[i], values[i])) {
-        timestamps[index] = lastStoredTimestamp;
-        values[index] = lastStoredLong;
-        index++;
-      }
-    }
-    return index;
-  }
-
-  public int encode(long[] timestamps, float[] values, int batchSize) {
-    int index = 0;
-    for (int i = 0; i < batchSize; i++) {
-      if (encodeFloat(timestamps[i], values[i])) {
-        timestamps[index] = lastStoredTimestamp;
-        values[index] = lastStoredFloat;
-        index++;
-      }
-    }
-    return index;
-  }
-
-  private boolean isFirstValue(long time, float value) {
-    if (isFirstValue) {
-      isFirstValue = false;
-      lastReadTimestamp = time;
-      lastReadFloat = value;
-      lastStoredTimestamp = time;
-      lastStoredFloat = value;
-      return true;
-    }
-    return false;
-  }
-
-  private boolean isFirstValue(long time, long value) {
-    if (isFirstValue) {
-      isFirstValue = false;
-      lastReadTimestamp = time;
-      lastReadLong = value;
-      lastStoredTimestamp = time;
-      lastStoredLong = value;
-      return true;
-    }
-    return false;
-  }
-
-  private boolean isFirstValue(long time, int value) {
-    if (isFirstValue) {
-      isFirstValue = false;
-      lastReadTimestamp = time;
-      lastReadInt = value;
-      lastStoredTimestamp = time;
-      lastStoredInt = value;
-      return true;
-    }
-    return false;
-  }
-
-  private boolean isFirstValue(long time, double value) {
-    if (isFirstValue) {
-      isFirstValue = false;
-      lastReadTimestamp = time;
-      lastReadDouble = value;
-      lastStoredTimestamp = time;
-      lastStoredDouble = value;
-      return true;
-    }
-    return false;
-  }
-
-  private void reset() {
-    upperDoor = Integer.MIN_VALUE;
-    lowerDoor = Integer.MAX_VALUE;
-  }
-
-  /**
-   * if current point to the last stored point's time distance >= compMaxTime, will store current
-   * point and reset upperDoor and lowerDoor
-   *
-   * @param time current time
-   * @param value current value
-   */
-  private void reset(long time, long value) {
-    reset();
-    lastStoredTimestamp = time;
-    lastStoredLong = value;
-  }
-
-  private void reset(long time, double value) {
-    reset();
-    lastStoredTimestamp = time;
-    lastStoredDouble = value;
-  }
-
-  private void reset(long time, int value) {
-    reset();
-    lastStoredTimestamp = time;
-    lastStoredInt = value;
-  }
-
-  private void reset(long time, float value) {
-    reset();
-    lastStoredTimestamp = time;
-    lastStoredFloat = value;
-  }
-
-  public void setCompDeviation(double compDeviation) {
-    this.compDeviation = compDeviation;
-  }
-
-  public double getCompDeviation() {
-    return compDeviation;
-  }
-
-  public void setCompMinTime(long compMinTime) {
-    this.compMinTime = compMinTime;
-  }
-
-  public long getCompMinTime() {
-    return compMinTime;
-  }
-
-  public void setCompMaxTime(long compMaxTime) {
-    this.compMaxTime = compMaxTime;
-  }
-
-  public long getCompMaxTime() {
-    return compMaxTime;
-  }
-
-  public long getTime() {
-    return lastStoredTimestamp;
-  }
-
-  public int getIntValue() {
-    return lastStoredInt;
-  }
-
-  public double getDoubleValue() {
-    return lastStoredDouble;
-  }
-
-  public long getLongValue() {
-    return lastStoredLong;
-  }
-
-  public float getFloatValue() {
-    return lastStoredFloat;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/SinglePrecisionChimpEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/SinglePrecisionChimpEncoder.java
deleted file mode 100644
index b428c3d..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/SinglePrecisionChimpEncoder.java
+++ /dev/null
@@ -1,55 +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.encoding.encoder;
-
-import java.io.ByteArrayOutputStream;
-
-/**
- * This class includes code modified from Panagiotis Liakos chimp project.
- *
- * <p>Copyright: 2022- Panagiotis Liakos, Katia Papakonstantinopoulou and Yannis Kotidis
- *
- * <p>Project page: https://github.com/panagiotisl/chimp
- *
- * <p>License: http://www.apache.org/licenses/LICENSE-2.0
- */
-public class SinglePrecisionChimpEncoder extends IntChimpEncoder {
-
-  private static final int CHIMP_ENCODING_ENDING = Float.floatToRawIntBits(Float.NaN);
-
-  @Override
-  public final void encode(float value, ByteArrayOutputStream out) {
-    encode(Float.floatToRawIntBits(value), out);
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) {
-    // ending stream
-    encode(CHIMP_ENCODING_ENDING, out);
-
-    // flip the byte no matter it is empty or not
-    // the empty ending byte is necessary when decoding
-    bitsLeft = 0;
-    flipByte(out);
-
-    // the encoder may be reused, so let us reset it
-    reset();
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/SinglePrecisionEncoderV1.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/SinglePrecisionEncoderV1.java
deleted file mode 100644
index 1e55735..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/SinglePrecisionEncoderV1.java
+++ /dev/null
@@ -1,113 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-
-import java.io.ByteArrayOutputStream;
-
-/** Encoder for int value using gorilla encoding. */
-public class SinglePrecisionEncoderV1 extends GorillaEncoderV1 {
-
-  private int preValue;
-
-  public SinglePrecisionEncoderV1() {
-    // allowed do nothing
-  }
-
-  @Override
-  public void encode(float value, ByteArrayOutputStream out) {
-    if (!flag) {
-      flag = true;
-      preValue = Float.floatToIntBits(value);
-      leadingZeroNum = Integer.numberOfLeadingZeros(preValue);
-      tailingZeroNum = Integer.numberOfTrailingZeros(preValue);
-      out.write(preValue & 0xFF);
-      out.write((preValue >> 8) & 0xFF);
-      out.write((preValue >> 16) & 0xFF);
-      out.write((preValue >> 24) & 0xFF);
-    } else {
-      int nextValue = Float.floatToIntBits(value);
-      int tmp = nextValue ^ preValue;
-      if (tmp == 0) {
-        // case: write '0'
-        writeBit(false, out);
-      } else {
-        int leadingZeroNumTmp = Integer.numberOfLeadingZeros(tmp);
-        int tailingZeroNumTmp = Integer.numberOfTrailingZeros(tmp);
-        if (leadingZeroNumTmp >= leadingZeroNum && tailingZeroNumTmp >= tailingZeroNum) {
-          // case: write '10' and effective bits without first leadingZeroNum '0' and
-          // last tailingZeroNum '0'
-          writeBit(true, out);
-          writeBit(false, out);
-          writeBits(
-              tmp, out, TSFileConfig.VALUE_BITS_LENGTH_32BIT - 1 - leadingZeroNum, tailingZeroNum);
-        } else {
-          // case: write '11', leading zero num of value, effective bits len and effective
-          // bit value
-          writeBit(true, out);
-          writeBit(true, out);
-          writeBits(leadingZeroNumTmp, out, TSFileConfig.LEADING_ZERO_BITS_LENGTH_32BIT - 1, 0);
-          writeBits(
-              TSFileConfig.VALUE_BITS_LENGTH_32BIT - leadingZeroNumTmp - tailingZeroNumTmp,
-              out,
-              TSFileConfig.FLOAT_VALUE_LENGTH - 1,
-              0);
-          writeBits(
-              tmp,
-              out,
-              TSFileConfig.VALUE_BITS_LENGTH_32BIT - 1 - leadingZeroNumTmp,
-              tailingZeroNumTmp);
-        }
-      }
-      preValue = nextValue;
-      leadingZeroNum = Integer.numberOfLeadingZeros(preValue);
-      tailingZeroNum = Integer.numberOfTrailingZeros(preValue);
-    }
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) {
-    encode(Float.NaN, out);
-    clearBuffer(out);
-    reset();
-  }
-
-  private void writeBits(int num, ByteArrayOutputStream out, int start, int end) {
-    for (int i = start; i >= end; i--) {
-      int bit = num & (1 << i);
-      writeBit(bit, out);
-    }
-  }
-
-  @Override
-  public int getOneItemMaxSize() {
-    // case '11'
-    // 2bit + 5bit + 6bit + 32bit = 45bit
-    return 6;
-  }
-
-  @Override
-  public long getMaxByteSize() {
-    // max(first 4 byte, case '11' bit + 5bit + 6bit + 32bit = 45bit) +
-    // NaN(case '11' bit + 5bit + 6bit + 32bit = 45bit) = 90bit
-    return 12;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/SinglePrecisionEncoderV2.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/SinglePrecisionEncoderV2.java
deleted file mode 100644
index 0be2f1f..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/SinglePrecisionEncoderV2.java
+++ /dev/null
@@ -1,55 +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.encoding.encoder;
-
-import java.io.ByteArrayOutputStream;
-
-import static org.apache.iotdb.tsfile.common.conf.TSFileConfig.GORILLA_ENCODING_ENDING_FLOAT;
-
-/**
- * This class includes code modified from Michael Burman's gorilla-tsc project.
- *
- * <p>Copyright: 2016-2018 Michael Burman and/or other contributors
- *
- * <p>Project page: https://github.com/burmanm/gorilla-tsc
- *
- * <p>License: http://www.apache.org/licenses/LICENSE-2.0
- */
-public class SinglePrecisionEncoderV2 extends IntGorillaEncoder {
-
-  @Override
-  public final void encode(float value, ByteArrayOutputStream out) {
-    encode(Float.floatToRawIntBits(value), out);
-  }
-
-  @Override
-  public void flush(ByteArrayOutputStream out) {
-    // ending stream
-    encode(GORILLA_ENCODING_ENDING_FLOAT, out);
-
-    // flip the byte no matter it is empty or not
-    // the empty ending byte is necessary when decoding
-    bitsLeft = 0;
-    flipByte(out);
-
-    // the encoder may be reused, so let us reset it
-    reset();
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/SprintzEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/SprintzEncoder.java
deleted file mode 100644
index 32a7aa2..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/SprintzEncoder.java
+++ /dev/null
@@ -1,70 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-
-public abstract class SprintzEncoder extends Encoder {
-  protected static final Logger logger = LoggerFactory.getLogger(SprintzEncoder.class);
-
-  // Segment block size to compress:8
-  protected int Block_size = 8;
-
-  // group size maximum
-  protected int groupMax = 16;
-
-  // group number
-  protected int groupNum;
-
-  // the bit width used for bit-packing and rle.
-  protected int bitWidth;
-
-  /** output stream to buffer {@code <bitwidth> <encoded-data>}. */
-  protected ByteArrayOutputStream byteCache;
-
-  // selecet the predict method
-  protected String predictMethod =
-      TSFileDescriptor.getInstance().getConfig().getSprintzPredictScheme();
-
-  protected boolean isFirstCached = false;
-
-  protected TSFileConfig config = TSFileDescriptor.getInstance().getConfig();
-
-  protected SprintzEncoder() {
-    super(TSEncoding.SPRINTZ);
-    byteCache = new ByteArrayOutputStream();
-  }
-
-  protected void reset() {
-    byteCache.reset();
-    isFirstCached = false;
-    groupNum = 0;
-  }
-
-  protected abstract void bitPack() throws IOException;
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/TSEncodingBuilder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/TSEncodingBuilder.java
deleted file mode 100644
index 453aadf..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/TSEncodingBuilder.java
+++ /dev/null
@@ -1,416 +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.encoding.encoder;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.JsonFormatConstant;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Map;
-
-/**
- * Each subclass of TSEncodingBuilder responds a enumerate value in {@linkplain TSEncoding
- * TSEncoding}, which stores several configuration related to responding encoding type to generate
- * {@linkplain Encoder Encoder} instance.<br>
- * Each TSEncoding has a responding TSEncodingBuilder. The design referring to visit pattern
- * provides same outer interface for different TSEncodings and gets rid of the duplicate switch-case
- * code.
- */
-public abstract class TSEncodingBuilder {
-
-  private static final Logger logger = LoggerFactory.getLogger(TSEncodingBuilder.class);
-  protected final TSFileConfig conf;
-
-  protected TSEncodingBuilder() {
-    this.conf = TSFileDescriptor.getInstance().getConfig();
-  }
-
-  /**
-   * return responding TSEncodingBuilder from a TSEncoding.
-   *
-   * @param type - given encoding type
-   * @return - responding TSEncodingBuilder
-   */
-  public static TSEncodingBuilder getEncodingBuilder(TSEncoding type) {
-    switch (type) {
-      case PLAIN:
-        return new Plain();
-      case RLE:
-        return new Rle();
-      case TS_2DIFF:
-        return new Ts2Diff();
-      case GORILLA_V1:
-        return new GorillaV1();
-      case REGULAR:
-        return new Regular();
-      case GORILLA:
-        return new GorillaV2();
-      case DICTIONARY:
-        return new Dictionary();
-      case ZIGZAG:
-        return new Zigzag();
-      case CHIMP:
-        return new Chimp();
-      case SPRINTZ:
-        return new Sprintz();
-      case RLBE:
-        return new RLBE();
-      default:
-        throw new UnsupportedOperationException(type.toString());
-    }
-  }
-
-  /**
-   * return a thread safe series's encoder with different types and parameters according to its
-   * measurement id and data type.
-   *
-   * @param type - given data type
-   * @return - return a {@linkplain Encoder Encoder}
-   */
-  public abstract Encoder getEncoder(TSDataType type);
-
-  /**
-   * for TSEncoding, JSON is a kind of type for initialization. {@code InitFromJsonObject} gets
-   * values from JSON object which will be used latter.<br>
-   * if this type has extra parameters to construct, override it.
-   *
-   * @param props - properties of encoding
-   */
-  public abstract void initFromProps(Map<String, String> props);
-
-  @Override
-  public String toString() {
-    return "";
-  }
-
-  /** for all TSDataType. */
-  public static class Plain extends TSEncodingBuilder {
-
-    private int maxStringLength = TSFileDescriptor.getInstance().getConfig().getMaxStringLength();
-
-    @Override
-    public Encoder getEncoder(TSDataType type) {
-      return new PlainEncoder(type, maxStringLength);
-    }
-
-    @Override
-    public void initFromProps(Map<String, String> props) {
-      // set max error from initialized map or default value if not set
-      if (props == null || !props.containsKey(Encoder.MAX_STRING_LENGTH)) {
-        maxStringLength = TSFileDescriptor.getInstance().getConfig().getMaxStringLength();
-      } else {
-        maxStringLength = Integer.valueOf(props.get(Encoder.MAX_STRING_LENGTH));
-        if (maxStringLength < 0) {
-          maxStringLength = TSFileDescriptor.getInstance().getConfig().getMaxStringLength();
-          logger.warn(
-              "cannot set max string length to negative value, replaced with default value:{}",
-              maxStringLength);
-        }
-      }
-    }
-  }
-
-  /** for ENUMS, INT32, BOOLEAN, INT64, FLOAT, DOUBLE. */
-  public static class Rle extends TSEncodingBuilder {
-
-    private int maxPointNumber = TSFileDescriptor.getInstance().getConfig().getFloatPrecision();
-
-    @Override
-    public Encoder getEncoder(TSDataType type) {
-      switch (type) {
-        case INT32:
-        case BOOLEAN:
-          return new IntRleEncoder();
-        case INT64:
-          return new LongRleEncoder();
-        case FLOAT:
-        case DOUBLE:
-          return new FloatEncoder(TSEncoding.RLE, type, maxPointNumber);
-        default:
-          throw new UnSupportedDataTypeException("RLE doesn't support data type: " + type);
-      }
-    }
-
-    /**
-     * RLE could specify <b>max_point_number</b> in given JSON Object, which means the maximum
-     * decimal digits for float or double data.
-     */
-    @Override
-    public void initFromProps(Map<String, String> props) {
-      // set max error from initialized map or default value if not set
-      if (props == null || !props.containsKey(Encoder.MAX_POINT_NUMBER)) {
-        maxPointNumber = TSFileDescriptor.getInstance().getConfig().getFloatPrecision();
-      } else {
-        try {
-          this.maxPointNumber = Integer.parseInt(props.get(Encoder.MAX_POINT_NUMBER));
-        } catch (NumberFormatException e) {
-          logger.warn(
-              "The format of max point number {} is not correct."
-                  + " Using default float precision.",
-              props.get(Encoder.MAX_POINT_NUMBER));
-        }
-        if (maxPointNumber < 0) {
-          maxPointNumber = TSFileDescriptor.getInstance().getConfig().getFloatPrecision();
-          logger.warn(
-              "cannot set max point number to negative value, replaced with default value:{}",
-              maxPointNumber);
-        }
-      }
-    }
-
-    @Override
-    public String toString() {
-      return JsonFormatConstant.MAX_POINT_NUMBER + ":" + maxPointNumber;
-    }
-  }
-
-  /** for INT32, INT64, FLOAT, DOUBLE. */
-  public static class Ts2Diff extends TSEncodingBuilder {
-
-    private int maxPointNumber = 0;
-
-    @Override
-    public Encoder getEncoder(TSDataType type) {
-      switch (type) {
-        case INT32:
-          return new DeltaBinaryEncoder.IntDeltaEncoder();
-        case INT64:
-          return new DeltaBinaryEncoder.LongDeltaEncoder();
-        case FLOAT:
-        case DOUBLE:
-          return new FloatEncoder(TSEncoding.TS_2DIFF, type, maxPointNumber);
-        default:
-          throw new UnSupportedDataTypeException("TS_2DIFF doesn't support data type: " + type);
-      }
-    }
-
-    @Override
-    /**
-     * TS_2DIFF could specify <b>max_point_number</b> in given JSON Object, which means the maximum
-     * decimal digits for float or double data.
-     */
-    public void initFromProps(Map<String, String> props) {
-      // set max error from initialized map or default value if not set
-      if (props == null || !props.containsKey(Encoder.MAX_POINT_NUMBER)) {
-        maxPointNumber = TSFileDescriptor.getInstance().getConfig().getFloatPrecision();
-      } else {
-        try {
-          this.maxPointNumber = Integer.parseInt(props.get(Encoder.MAX_POINT_NUMBER));
-        } catch (NumberFormatException e) {
-          logger.warn(
-              "The format of max point number {} is not correct."
-                  + " Using default float precision.",
-              props.get(Encoder.MAX_POINT_NUMBER));
-        }
-        if (maxPointNumber < 0) {
-          maxPointNumber = TSFileDescriptor.getInstance().getConfig().getFloatPrecision();
-          logger.warn(
-              "cannot set max point number to negative value, replaced with default value:{}",
-              maxPointNumber);
-        }
-      }
-    }
-
-    @Override
-    public String toString() {
-      return JsonFormatConstant.MAX_POINT_NUMBER + ":" + maxPointNumber;
-    }
-  }
-
-  /** for FLOAT, DOUBLE. */
-  public static class GorillaV1 extends TSEncodingBuilder {
-
-    @Override
-    public Encoder getEncoder(TSDataType type) {
-      switch (type) {
-        case FLOAT:
-          return new SinglePrecisionEncoderV1();
-        case DOUBLE:
-          return new DoublePrecisionEncoderV1();
-        default:
-          throw new UnSupportedDataTypeException("GORILLA_V1 doesn't support data type: " + type);
-      }
-    }
-
-    @Override
-    public void initFromProps(Map<String, String> props) {
-      // allowed do nothing
-    }
-  }
-
-  /** for INT32, INT64. */
-  public static class Regular extends TSEncodingBuilder {
-
-    @Override
-    public Encoder getEncoder(TSDataType type) {
-      switch (type) {
-        case INT32:
-          return new RegularDataEncoder.IntRegularEncoder();
-        case INT64:
-          return new RegularDataEncoder.LongRegularEncoder();
-        default:
-          throw new UnSupportedDataTypeException("REGULAR doesn't support data type: " + type);
-      }
-    }
-
-    @Override
-    public void initFromProps(Map<String, String> props) {
-      // allowed do nothing
-    }
-  }
-
-  /** for FLOAT, DOUBLE, INT, LONG. */
-  public static class GorillaV2 extends TSEncodingBuilder {
-
-    @Override
-    public Encoder getEncoder(TSDataType type) {
-      switch (type) {
-        case FLOAT:
-          return new SinglePrecisionEncoderV2();
-        case DOUBLE:
-          return new DoublePrecisionEncoderV2();
-        case INT32:
-          return new IntGorillaEncoder();
-        case INT64:
-          return new LongGorillaEncoder();
-        default:
-          throw new UnSupportedDataTypeException("GORILLA doesn't support data type: " + type);
-      }
-    }
-
-    @Override
-    public void initFromProps(Map<String, String> props) {
-      // allowed do nothing
-    }
-  }
-
-  public static class Sprintz extends TSEncodingBuilder {
-    @Override
-    public Encoder getEncoder(TSDataType type) {
-      switch (type) {
-        case INT32:
-          return new IntSprintzEncoder();
-        case INT64:
-          return new LongSprintzEncoder();
-        case FLOAT:
-          return new FloatSprintzEncoder();
-        case DOUBLE:
-          return new DoubleSprintzEncoder();
-        default:
-          throw new UnSupportedDataTypeException("Sprintz doesn't support data type: " + type);
-      }
-    }
-
-    @Override
-    public void initFromProps(Map<String, String> props) {
-      // do nothing
-    }
-  }
-
-  public static class RLBE extends TSEncodingBuilder {
-    @Override
-    public Encoder getEncoder(TSDataType type) {
-      switch (type) {
-        case INT32:
-          return new IntRLBE();
-        case INT64:
-          return new LongRLBE();
-        case FLOAT:
-          return new FloatRLBE();
-        case DOUBLE:
-          return new DoubleRLBE();
-        default:
-          throw new UnSupportedDataTypeException("RLBE doesn't support data type: " + type);
-      }
-    }
-
-    @Override
-    public void initFromProps(Map<String, String> props) {
-      // do nothing
-    }
-  }
-
-  public static class Dictionary extends TSEncodingBuilder {
-
-    @Override
-    public Encoder getEncoder(TSDataType type) {
-      if (type == TSDataType.TEXT) {
-        return new DictionaryEncoder();
-      }
-      throw new UnSupportedDataTypeException("DICTIONARY doesn't support data type: " + type);
-    }
-
-    @Override
-    public void initFromProps(Map<String, String> props) {
-      // do nothing
-    }
-  }
-
-  public static class Zigzag extends TSEncodingBuilder {
-
-    @Override
-    public Encoder getEncoder(TSDataType type) {
-      switch (type) {
-        case INT32:
-          return new IntZigzagEncoder();
-        case INT64:
-          return new LongZigzagEncoder();
-        default:
-          throw new UnSupportedDataTypeException("ZIGZAG doesn't support data type: " + type);
-      }
-    }
-
-    @Override
-    public void initFromProps(Map<String, String> props) {
-      // do nothing
-    }
-  }
-
-  /** for FLOAT, DOUBLE, INT, LONG. */
-  public static class Chimp extends TSEncodingBuilder {
-
-    @Override
-    public Encoder getEncoder(TSDataType type) {
-      switch (type) {
-        case FLOAT:
-          return new SinglePrecisionChimpEncoder();
-        case DOUBLE:
-          return new DoublePrecisionChimpEncoder();
-        case INT32:
-          return new IntChimpEncoder();
-        case INT64:
-          return new LongChimpEncoder();
-        default:
-          throw new UnSupportedDataTypeException("CHIMP doesn't support data type: " + type);
-      }
-    }
-
-    @Override
-    public void initFromProps(Map<String, String> props) {
-      // allowed do nothing
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/fire/Fire.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/fire/Fire.java
deleted file mode 100644
index c9049b4..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/fire/Fire.java
+++ /dev/null
@@ -1,56 +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.encoding.fire;
-
-/**
- * This class is used for Fast Integer REgression in Sprintz encoding method.Users can create a Fire
- * object and use it to train and predict the time-ordered integer-like data.
- */
-public abstract class Fire<T extends Comparable<T>> {
-  // Learning rate by binary shift
-  protected int learnShift;
-  // the bit width of the data to be predicted
-  protected int bitWidth;
-  // accumulate the regression loss
-  protected int accumulator;
-  // store the difference of predicted value and the real value temporarily
-  protected T delta;
-
-  public Fire(int learning_rate) {
-    learnShift = learning_rate;
-  }
-
-  /**
-   * predict the incoming integer using the last value
-   *
-   * @param value the last value
-   * @return the predicted value
-   */
-  public abstract T predict(T value);
-
-  /**
-   * train the learning machine with the last prediction
-   *
-   * @param pre last value to be predicted
-   * @param val current value to be predicted
-   * @param err the predictive error of current value
-   */
-  public abstract void train(T pre, T val, T err);
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/fire/IntFire.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/fire/IntFire.java
deleted file mode 100644
index 9744ce6..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/fire/IntFire.java
+++ /dev/null
@@ -1,52 +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.encoding.fire;
-
-public class IntFire extends Fire<Integer> {
-
-  public IntFire(int learning_rate) {
-    super(learning_rate);
-    bitWidth = 8;
-    accumulator = 0;
-    delta = 0;
-  }
-
-  public void reset() {
-    accumulator = 0;
-    delta = 0;
-  }
-
-  @Override
-  public Integer predict(Integer value) {
-    // calculate the parameter alpha
-    int alpha = accumulator >> learnShift;
-    // calculate the Incremental of last value in current prediction
-    int diff = (alpha * delta) >> bitWidth;
-    return value + diff;
-  }
-
-  @Override
-  public void train(Integer pre, Integer val, Integer err) {
-    // update the gradient of learning machine.
-    int gradient = err > 0 ? -delta : delta;
-    accumulator -= gradient;
-    delta = val - pre;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/fire/LongFire.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/fire/LongFire.java
deleted file mode 100644
index 0429bb3..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/fire/LongFire.java
+++ /dev/null
@@ -1,48 +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.encoding.fire;
-
-public class LongFire extends Fire<Long> {
-  public LongFire(int learning_rate) {
-    super(learning_rate);
-    bitWidth = 16;
-    accumulator = 0;
-    delta = 0L;
-  }
-
-  public void reset() {
-    accumulator = 0;
-    delta = 0L;
-  }
-
-  @Override
-  public Long predict(Long value) {
-    long alpha = accumulator >> learnShift;
-    long diff = (alpha * delta) >> bitWidth;
-    return value + diff;
-  }
-
-  @Override
-  public void train(Long pre, Long val, Long err) {
-    long gradient = err > 0 ? -delta : delta;
-    accumulator -= gradient;
-    delta = val - pre;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/NotCompatibleTsFileException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/NotCompatibleTsFileException.java
deleted file mode 100644
index bd64edc..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/NotCompatibleTsFileException.java
+++ /dev/null
@@ -1,29 +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.exception;
-
-public class NotCompatibleTsFileException extends TsFileRuntimeException {
-
-  private static final long serialVersionUID = -3765109817887078265L;
-
-  public NotCompatibleTsFileException(String message) {
-    super(message);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/NotImplementedException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/NotImplementedException.java
deleted file mode 100644
index 15b1be2..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/NotImplementedException.java
+++ /dev/null
@@ -1,33 +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.exception;
-
-public class NotImplementedException extends RuntimeException {
-
-  private static final long serialVersionUID = 6455048223316780984L;
-
-  public NotImplementedException() {
-    super();
-  }
-
-  public NotImplementedException(String message) {
-    super(message);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/NullFieldException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/NullFieldException.java
deleted file mode 100644
index 9582b7e..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/NullFieldException.java
+++ /dev/null
@@ -1,27 +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.exception;
-
-public class NullFieldException extends TsFileRuntimeException {
-
-  public NullFieldException() {
-    super("Field is null");
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/PathParseException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/PathParseException.java
deleted file mode 100644
index 1ccf605..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/PathParseException.java
+++ /dev/null
@@ -1,27 +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.exception;
-
-public class PathParseException extends TsFileRuntimeException {
-
-  public PathParseException(String path) {
-    super(String.format("%s is not a legal path.", path));
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/StopReadTsFileByInterruptException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/StopReadTsFileByInterruptException.java
deleted file mode 100644
index 2a28725..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/StopReadTsFileByInterruptException.java
+++ /dev/null
@@ -1,24 +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.exception;
-
-import java.io.IOException;
-
-public class StopReadTsFileByInterruptException extends IOException {}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/TsFileRuntimeException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/TsFileRuntimeException.java
deleted file mode 100644
index 723be9c..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/TsFileRuntimeException.java
+++ /dev/null
@@ -1,33 +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.exception;
-
-/**
- * This Exception is the parent class for all runtime exceptions.<br>
- * This Exception extends super class {@link java.lang.RuntimeException}
- */
-public class TsFileRuntimeException extends RuntimeException {
-
-  private static final long serialVersionUID = 6455048223316780984L;
-
-  public TsFileRuntimeException(String message) {
-    super(message);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/TsFileSequenceReaderTimeseriesMetadataIteratorException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/TsFileSequenceReaderTimeseriesMetadataIteratorException.java
deleted file mode 100644
index a7e2dfc..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/TsFileSequenceReaderTimeseriesMetadataIteratorException.java
+++ /dev/null
@@ -1,27 +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.exception;
-
-public class TsFileSequenceReaderTimeseriesMetadataIteratorException extends RuntimeException {
-
-  public TsFileSequenceReaderTimeseriesMetadataIteratorException(String message) {
-    super(message);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/TsFileStatisticsMistakesException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/TsFileStatisticsMistakesException.java
deleted file mode 100644
index 3ed9905..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/TsFileStatisticsMistakesException.java
+++ /dev/null
@@ -1,27 +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.exception;
-
-public class TsFileStatisticsMistakesException extends TsFileRuntimeException {
-
-  public TsFileStatisticsMistakesException(String message) {
-    super(message);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/cache/CacheException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/cache/CacheException.java
deleted file mode 100644
index f329ebc..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/cache/CacheException.java
+++ /dev/null
@@ -1,26 +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.exception.cache;
-
-public class CacheException extends Exception {
-  public CacheException(String message) {
-    super(message);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/compress/CompressionTypeNotSupportedException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/compress/CompressionTypeNotSupportedException.java
deleted file mode 100644
index 1eab403..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/compress/CompressionTypeNotSupportedException.java
+++ /dev/null
@@ -1,39 +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.exception.compress;
-
-/**
- * This exception will be thrown when the codec is not supported by tsfile, meaning there is no
- * matching type defined in CompressionCodecName.
- */
-public class CompressionTypeNotSupportedException extends RuntimeException {
-
-  private static final long serialVersionUID = -2244072267816916609L;
-  private final Class<?> codecClass;
-
-  public CompressionTypeNotSupportedException(String codecType) {
-    super("codec not supported: " + codecType);
-    this.codecClass = null;
-  }
-
-  public Class<?> getCodecClass() {
-    return codecClass;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/compress/GZIPCompressOverflowException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/compress/GZIPCompressOverflowException.java
deleted file mode 100644
index 16544e8..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/compress/GZIPCompressOverflowException.java
+++ /dev/null
@@ -1,27 +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.exception.compress;
-
-public class GZIPCompressOverflowException extends RuntimeException {
-
-  public GZIPCompressOverflowException() {
-    super("compressed data is larger than the given byte container.");
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/encoding/TsFileDecodingException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/encoding/TsFileDecodingException.java
deleted file mode 100644
index 90bec88..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/encoding/TsFileDecodingException.java
+++ /dev/null
@@ -1,34 +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.exception.encoding;
-
-import org.apache.iotdb.tsfile.exception.TsFileRuntimeException;
-
-/**
- * This Exception is used while decoding failed. <br>
- * This Exception extends super class {@link TsFileRuntimeException}
- */
-public class TsFileDecodingException extends TsFileRuntimeException {
-  private static final long serialVersionUID = -8632392900655017028L;
-
-  public TsFileDecodingException(String message) {
-    super(message);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/encoding/TsFileEncodingException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/encoding/TsFileEncodingException.java
deleted file mode 100644
index b2a0c87..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/encoding/TsFileEncodingException.java
+++ /dev/null
@@ -1,35 +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.exception.encoding;
-
-import org.apache.iotdb.tsfile.exception.TsFileRuntimeException;
-
-/**
- * This Exception is used while encoding failed. <br>
- * This Exception extends super class {@link TsFileRuntimeException}
- */
-public class TsFileEncodingException extends TsFileRuntimeException {
-
-  private static final long serialVersionUID = -7225811149696714845L;
-
-  public TsFileEncodingException(String message) {
-    super(message);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/filter/QueryFilterOptimizationException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/filter/QueryFilterOptimizationException.java
deleted file mode 100644
index 75aab67..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/filter/QueryFilterOptimizationException.java
+++ /dev/null
@@ -1,27 +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.exception.filter;
-
-public class QueryFilterOptimizationException extends Exception {
-
-  public QueryFilterOptimizationException(String msg) {
-    super(msg);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/filter/StatisticsClassException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/filter/StatisticsClassException.java
deleted file mode 100644
index 69a4a6b..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/filter/StatisticsClassException.java
+++ /dev/null
@@ -1,35 +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.exception.filter;
-
-import org.apache.iotdb.tsfile.exception.TsFileRuntimeException;
-
-public class StatisticsClassException extends TsFileRuntimeException {
-
-  private static final long serialVersionUID = -5445795844780183770L;
-
-  public StatisticsClassException(Class<?> className1, Class<?> className2) {
-    super("Statistics classes mismatched: " + className1 + " vs. " + className2);
-  }
-
-  public StatisticsClassException(String message) {
-    super(message);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/filter/UnSupportFilterDataTypeException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/filter/UnSupportFilterDataTypeException.java
deleted file mode 100644
index 9a62f42..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/filter/UnSupportFilterDataTypeException.java
+++ /dev/null
@@ -1,27 +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.exception.filter;
-
-/** Some wrong filter parameters invoke. */
-public class UnSupportFilterDataTypeException extends RuntimeException {
-  public UnSupportFilterDataTypeException(String message) {
-    super(message);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/write/NoMeasurementException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/write/NoMeasurementException.java
deleted file mode 100644
index 3168a01..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/write/NoMeasurementException.java
+++ /dev/null
@@ -1,30 +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.exception.write;
-
-/** This exception means it can not find the measurement while writing a TSRecord. */
-public class NoMeasurementException extends WriteProcessException {
-
-  private static final long serialVersionUID = -5599767368831572747L;
-
-  public NoMeasurementException(String msg) {
-    super(msg);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/write/PageException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/write/PageException.java
deleted file mode 100644
index f8169ec..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/write/PageException.java
+++ /dev/null
@@ -1,38 +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.exception.write;
-
-/** Exception occurs when writing a page. */
-public class PageException extends WriteProcessException {
-
-  private static final long serialVersionUID = 7385627296529388683L;
-
-  public PageException(String msg) {
-    super(msg);
-  }
-
-  public PageException(String message, Throwable cause) {
-    super(message, cause);
-  }
-
-  public PageException(Throwable cause) {
-    super(cause);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/write/TsFileNotCompleteException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/write/TsFileNotCompleteException.java
deleted file mode 100644
index ab4708a..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/write/TsFileNotCompleteException.java
+++ /dev/null
@@ -1,29 +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.exception.write;
-
-import java.io.IOException;
-
-public class TsFileNotCompleteException extends IOException {
-
-  public TsFileNotCompleteException(String message) {
-    super(message);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/write/UnknownColumnTypeException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/write/UnknownColumnTypeException.java
deleted file mode 100644
index 9772b8d..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/write/UnknownColumnTypeException.java
+++ /dev/null
@@ -1,35 +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.exception.write;
-
-import org.apache.iotdb.tsfile.exception.TsFileRuntimeException;
-
-/**
- * This Exception is used while getting an unknown column type. <br>
- * This Exception extends super class {@link TsFileRuntimeException}
- */
-public class UnknownColumnTypeException extends TsFileRuntimeException {
-
-  private static final long serialVersionUID = -4003170165687174659L;
-
-  public UnknownColumnTypeException(String type) {
-    super("Column type not found: " + type);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/write/WriteProcessException.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/write/WriteProcessException.java
deleted file mode 100644
index 804fa2b..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/exception/write/WriteProcessException.java
+++ /dev/null
@@ -1,38 +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.exception.write;
-
-/** This exception is threw while meeting error in writing procession. */
-public class WriteProcessException extends Exception {
-
-  private static final long serialVersionUID = -2664638061585302767L;
-
-  public WriteProcessException(String message, Throwable cause) {
-    super(message, cause);
-  }
-
-  public WriteProcessException(String message) {
-    super(message);
-  }
-
-  public WriteProcessException(Throwable cause) {
-    super(cause);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/IMetadataIndexEntry.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/IMetadataIndexEntry.java
deleted file mode 100644
index a096501..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/IMetadataIndexEntry.java
+++ /dev/null
@@ -1,36 +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.file;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-public interface IMetadataIndexEntry {
-
-  long getOffset();
-
-  void setOffset(long offset);
-
-  int serializeTo(OutputStream outputStream) throws IOException;
-
-  Comparable getCompareKey();
-
-  boolean isDeviceLevel();
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/MetaMarker.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/MetaMarker.java
deleted file mode 100644
index 265717c..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/MetaMarker.java
+++ /dev/null
@@ -1,74 +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.file;
-
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-
-import java.io.IOException;
-
-/** MetaMarker denotes the type of headers and footers. Enum is not used for space saving. */
-@SuppressWarnings({"squid:S1133"}) // Deprecated code should be removed
-public class MetaMarker {
-
-  public static final byte CHUNK_GROUP_HEADER = 0;
-
-  /** Chunk header marker and this chunk has more than one page. */
-  public static final byte CHUNK_HEADER = 1;
-
-  public static final byte SEPARATOR = 2;
-
-  /**
-   * Since TsFile version 3, the marker VERSION is no longer used in TsFile. It should be removed
-   * when TsFile upgrade to version 4.
-   *
-   * @deprecated variable
-   */
-  @Deprecated public static final byte VERSION = 3;
-
-  // following this marker are two longs marking the minimum and maximum indices of operations
-  // involved in the last flushed MemTable, which are generally used to support checkpoint,
-  // snapshot, or backup.
-  public static final byte OPERATION_INDEX_RANGE = 4;
-
-  /** Chunk header marker and this chunk has only one page. */
-  public static final byte ONLY_ONE_PAGE_CHUNK_HEADER = 5;
-
-  /** Time Chunk header marker and this chunk has more than one page. */
-  public static final byte TIME_CHUNK_HEADER =
-      (byte) (CHUNK_HEADER | TsFileConstant.TIME_COLUMN_MASK);
-
-  /** Value Chunk header marker and this chunk has more than one page. */
-  public static final byte VALUE_CHUNK_HEADER =
-      (byte) (CHUNK_HEADER | TsFileConstant.VALUE_COLUMN_MASK);
-
-  /** Time Chunk header marker and this chunk has only one page. */
-  public static final byte ONLY_ONE_PAGE_TIME_CHUNK_HEADER =
-      (byte) (ONLY_ONE_PAGE_CHUNK_HEADER | TsFileConstant.TIME_COLUMN_MASK);
-
-  /** Value Chunk header marker and this chunk has only one page. */
-  public static final byte ONLY_ONE_PAGE_VALUE_CHUNK_HEADER =
-      (byte) (ONLY_ONE_PAGE_CHUNK_HEADER | TsFileConstant.VALUE_COLUMN_MASK);
-
-  private MetaMarker() {}
-
-  public static void handleUnexpectedMarker(byte marker) throws IOException {
-    throw new IOException("Unexpected marker " + marker);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/ChunkGroupHeader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/ChunkGroupHeader.java
deleted file mode 100644
index 337b19a..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/ChunkGroupHeader.java
+++ /dev/null
@@ -1,132 +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.file.header;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.read.reader.TsFileInput;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-public class ChunkGroupHeader {
-
-  private static final byte MARKER = MetaMarker.CHUNK_GROUP_HEADER;
-
-  private final IDeviceID deviceID;
-
-  // this field does not need to be serialized.
-  private final int serializedSize;
-
-  /**
-   * constructor of CHUNK_GROUP_HEADER.
-   *
-   * @param deviceID device ID
-   */
-  public ChunkGroupHeader(IDeviceID deviceID) {
-    this.deviceID = deviceID;
-    this.serializedSize = getSerializedSize(deviceID);
-  }
-
-  public int getSerializedSize() {
-    return serializedSize;
-  }
-
-  private int getSerializedSize(IDeviceID deviceID) {
-    // TODO: add an interface in IDeviceID
-    int length =
-        ((PlainDeviceID) deviceID).toStringID().getBytes(TSFileConfig.STRING_CHARSET).length;
-    return Byte.BYTES + ReadWriteForEncodingUtils.varIntSize(length) + length;
-  }
-
-  /**
-   * deserialize from inputStream.
-   *
-   * @param markerRead - Whether the marker of the CHUNK_GROUP_HEADER is read ahead.
-   * @throws IOException – If an I/O error occurs.
-   */
-  public static ChunkGroupHeader deserializeFrom(InputStream inputStream, boolean markerRead)
-      throws IOException {
-    if (!markerRead) {
-      byte marker = (byte) inputStream.read();
-      if (marker != MARKER) {
-        MetaMarker.handleUnexpectedMarker(marker);
-      }
-    }
-
-    // TODO: add an interface in IDeviceID
-    String deviceID = ReadWriteIOUtils.readVarIntString(inputStream);
-    if (deviceID == null || deviceID.isEmpty()) {
-      throw new IOException("DeviceId is empty");
-    }
-    return new ChunkGroupHeader(new PlainDeviceID(deviceID));
-  }
-
-  /**
-   * deserialize from TsFileInput.
-   *
-   * @param markerRead - Whether the marker of the CHUNK_GROUP_HEADER is read ahead.
-   * @throws IOException - If an I/O error occurs.
-   */
-  public static ChunkGroupHeader deserializeFrom(TsFileInput input, long offset, boolean markerRead)
-      throws IOException {
-    long offsetVar = offset;
-    if (!markerRead) {
-      offsetVar++;
-    }
-    // TODO: add an interface in IDeviceID
-    String deviceID = input.readVarIntString(offsetVar);
-    return new ChunkGroupHeader(new PlainDeviceID(deviceID));
-  }
-
-  public IDeviceID getDeviceID() {
-    return deviceID;
-  }
-
-  /**
-   * serialize to outputStream.
-   *
-   * @param outputStream - output stream
-   * @return - length
-   * @throws IOException – If an I/O error occurs
-   */
-  public int serializeTo(OutputStream outputStream) throws IOException {
-    int length = 0;
-    length += ReadWriteIOUtils.write(MARKER, outputStream);
-    length += ReadWriteIOUtils.writeVar(((PlainDeviceID) deviceID).toStringID(), outputStream);
-    return length;
-  }
-
-  @Override
-  public String toString() {
-    return "ChunkGroupHeader{"
-        + "deviceID='"
-        + ((PlainDeviceID) deviceID).toStringID()
-        + '\''
-        + ", serializedSize="
-        + serializedSize
-        + '}';
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/ChunkHeader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/ChunkHeader.java
deleted file mode 100644
index eb4d05b..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/ChunkHeader.java
+++ /dev/null
@@ -1,347 +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.file.header;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.reader.TsFileInput;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-
-public class ChunkHeader {
-
-  public static final long INSTANCE_SIZE =
-      RamUsageEstimator.shallowSizeOfInstance(ChunkHeader.class)
-          + RamUsageEstimator.shallowSizeOfInstance(TSDataType.class)
-          + RamUsageEstimator.shallowSizeOfInstance(CompressionType.class)
-          + RamUsageEstimator.shallowSizeOfInstance(TSEncoding.class);
-
-  /**
-   * 1 means this chunk has more than one page, so each page has its own page statistic. 5 means
-   * this chunk has only one page, and this page has no page statistic.
-   *
-   * <p>if the 8th bit of this byte is 1 means this chunk is a time chunk of one vector if the 7th
-   * bit of this byte is 1 means this chunk is a value chunk of one vector
-   */
-  private byte chunkType;
-
-  private String measurementID;
-  private int dataSize;
-  private final TSDataType dataType;
-  private final CompressionType compressionType;
-  private final TSEncoding encodingType;
-
-  // the following fields do not need to be serialized.
-  private int numOfPages;
-  private final int serializedSize;
-
-  public ChunkHeader(
-      String measurementID,
-      int dataSize,
-      TSDataType dataType,
-      CompressionType compressionType,
-      TSEncoding encoding,
-      int numOfPages) {
-    this(measurementID, dataSize, dataType, compressionType, encoding, numOfPages, 0);
-  }
-
-  public ChunkHeader(
-      String measurementID,
-      int dataSize,
-      TSDataType dataType,
-      CompressionType compressionType,
-      TSEncoding encoding,
-      int numOfPages,
-      int mask) {
-    this(
-        (byte)
-            ((numOfPages <= 1 ? MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER : MetaMarker.CHUNK_HEADER)
-                | (byte) mask),
-        measurementID,
-        dataSize,
-        getSerializedSize(measurementID, dataSize),
-        dataType,
-        compressionType,
-        encoding);
-    this.numOfPages = numOfPages;
-  }
-
-  public ChunkHeader(
-      byte chunkType,
-      String measurementID,
-      int dataSize,
-      TSDataType dataType,
-      CompressionType compressionType,
-      TSEncoding encoding) {
-    this(
-        chunkType,
-        measurementID,
-        dataSize,
-        getSerializedSize(measurementID, dataSize),
-        dataType,
-        compressionType,
-        encoding);
-  }
-
-  public ChunkHeader(
-      byte chunkType,
-      String measurementID,
-      int dataSize,
-      int headerSize,
-      TSDataType dataType,
-      CompressionType compressionType,
-      TSEncoding encoding) {
-    this.chunkType = chunkType;
-    this.measurementID = measurementID;
-    this.dataSize = dataSize;
-    this.dataType = dataType;
-    this.compressionType = compressionType;
-    this.encodingType = encoding;
-    this.serializedSize = headerSize;
-  }
-
-  /** the exact serialized size of chunk header. */
-  public static int getSerializedSize(String measurementID, int dataSize) {
-    int measurementIdLength =
-        measurementID == null ? 0 : measurementID.getBytes(TSFileConfig.STRING_CHARSET).length;
-    return Byte.BYTES // chunkType
-        + ReadWriteForEncodingUtils.varIntSize(measurementIdLength) // measurementID length
-        + measurementIdLength // measurementID
-        + ReadWriteForEncodingUtils.uVarIntSize(dataSize) // dataSize
-        + TSDataType.getSerializedSize() // dataTypex
-        + CompressionType.getSerializedSize() // compressionType
-        + TSEncoding.getSerializedSize(); // encodingType
-  }
-
-  /**
-   * The estimated serialized size of chunk header. Only used when we don't know the actual dataSize
-   * attribute
-   */
-  public static int getSerializedSize(String measurementID) {
-
-    int measurementIdLength = measurementID.getBytes(TSFileConfig.STRING_CHARSET).length;
-    return Byte.BYTES // chunkType
-        + ReadWriteForEncodingUtils.varIntSize(measurementIdLength) // measurementID length
-        + measurementIdLength // measurementID
-        + Integer.BYTES
-        + 1 // uVarInt dataSize
-        + TSDataType.getSerializedSize() // dataType
-        + CompressionType.getSerializedSize() // compressionType
-        + TSEncoding.getSerializedSize(); // encodingType
-  }
-
-  public int getSerializedSize() {
-    return serializedSize;
-  }
-
-  /**
-   * deserialize from inputStream, the marker has already been read.
-   *
-   * @return ChunkHeader the ChunkHeader read from inputStream
-   * @throws IOException exception when reading stream
-   */
-  public static ChunkHeader deserializeFrom(InputStream inputStream, byte chunkType)
-      throws IOException {
-    // read measurementID
-    String measurementID = ReadWriteIOUtils.readVarIntString(inputStream);
-    int dataSize = ReadWriteForEncodingUtils.readUnsignedVarInt(inputStream);
-    TSDataType dataType = ReadWriteIOUtils.readDataType(inputStream);
-    CompressionType type = ReadWriteIOUtils.readCompressionType(inputStream);
-    TSEncoding encoding = ReadWriteIOUtils.readEncoding(inputStream);
-    return new ChunkHeader(chunkType, measurementID, dataSize, dataType, type, encoding);
-  }
-
-  /**
-   * deserialize from TsFileInput, the marker has not been read.
-   *
-   * @param input TsFileInput
-   * @param offset offset
-   * @return CHUNK_HEADER object
-   * @throws IOException IOException
-   */
-  public static ChunkHeader deserializeFrom(TsFileInput input, long offset) throws IOException {
-
-    ByteBuffer buffer = ByteBuffer.allocate(Byte.BYTES + Integer.BYTES + 1);
-    input.read(buffer, offset);
-    buffer.flip();
-
-    // read chunk header from input to buffer
-    byte chunkType = buffer.get();
-    int strLength = ReadWriteForEncodingUtils.readVarInt(buffer);
-    int alreadyReadLength = buffer.position();
-
-    int remainingBytes =
-        strLength
-            + Integer.BYTES
-            + 1 // uVarInt dataSize
-            + TSDataType.getSerializedSize() // dataType
-            + CompressionType.getSerializedSize() // compressionType
-            + TSEncoding.getSerializedSize();
-    buffer = ByteBuffer.allocate(remainingBytes);
-
-    input.read(buffer, offset + alreadyReadLength);
-    buffer.flip();
-
-    // read measurementID
-    String measurementID = ReadWriteIOUtils.readStringWithLength(buffer, strLength);
-    int dataSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-    TSDataType dataType = ReadWriteIOUtils.readDataType(buffer);
-    CompressionType type = ReadWriteIOUtils.readCompressionType(buffer);
-    TSEncoding encoding = ReadWriteIOUtils.readEncoding(buffer);
-    int chunkHeaderSize = alreadyReadLength + buffer.position();
-    return new ChunkHeader(
-        chunkType, measurementID, dataSize, chunkHeaderSize, dataType, type, encoding);
-  }
-
-  /**
-   * Used by {@link
-   * TsFileSequenceReader#readTimeseriesCompressionTypeAndEncoding(TimeseriesMetadata)} to only
-   * decode data size, {@link CompressionType} and {@link TSEncoding}.
-   *
-   * @param inputStream input stream
-   * @return - Compression type and encoding.
-   * @throws IOException - If an I/O error occurs.
-   */
-  public static Pair<CompressionType, TSEncoding> deserializeCompressionTypeAndEncoding(
-      InputStream inputStream) throws IOException {
-    ReadWriteForEncodingUtils.readUnsignedVarInt(inputStream);
-    ReadWriteIOUtils.skip(inputStream, Byte.BYTES); // skip Data type
-    CompressionType type = ReadWriteIOUtils.readCompressionType(inputStream);
-    TSEncoding encoding = ReadWriteIOUtils.readEncoding(inputStream);
-    return new Pair<>(type, encoding);
-  }
-
-  public String getMeasurementID() {
-    return measurementID;
-  }
-
-  public void setMeasurementID(String measurementID) {
-    this.measurementID = measurementID;
-  }
-
-  public int getDataSize() {
-    return dataSize;
-  }
-
-  public TSDataType getDataType() {
-    return dataType;
-  }
-
-  /**
-   * serialize to outputStream.
-   *
-   * @param outputStream outputStream
-   * @return length
-   * @throws IOException IOException
-   */
-  public int serializeTo(OutputStream outputStream) throws IOException {
-    int length = 0;
-    length += ReadWriteIOUtils.write(chunkType, outputStream);
-    length += ReadWriteIOUtils.writeVar(measurementID, outputStream);
-    length += ReadWriteForEncodingUtils.writeUnsignedVarInt(dataSize, outputStream);
-    length += ReadWriteIOUtils.write(dataType, outputStream);
-    length += ReadWriteIOUtils.write(compressionType, outputStream);
-    length += ReadWriteIOUtils.write(encodingType, outputStream);
-    return length;
-  }
-
-  /**
-   * serialize to ByteBuffer.
-   *
-   * @param buffer ByteBuffer
-   * @return length
-   */
-  public int serializeTo(ByteBuffer buffer) {
-    int length = 0;
-    length += ReadWriteIOUtils.write(chunkType, buffer);
-    length += ReadWriteIOUtils.writeVar(measurementID, buffer);
-    length += ReadWriteForEncodingUtils.writeUnsignedVarInt(dataSize, buffer);
-    length += ReadWriteIOUtils.write(dataType, buffer);
-    length += ReadWriteIOUtils.write(compressionType, buffer);
-    length += ReadWriteIOUtils.write(encodingType, buffer);
-    return length;
-  }
-
-  public int getNumOfPages() {
-    return numOfPages;
-  }
-
-  public CompressionType getCompressionType() {
-    return compressionType;
-  }
-
-  public TSEncoding getEncodingType() {
-    return encodingType;
-  }
-
-  @Override
-  public String toString() {
-    return "CHUNK_HEADER{"
-        + "measurementID='"
-        + measurementID
-        + '\''
-        + ", dataSize="
-        + dataSize
-        + ", dataType="
-        + dataType
-        + ", compressionType="
-        + compressionType
-        + ", encodingType="
-        + encodingType
-        + ", numOfPages="
-        + numOfPages
-        + ", serializedSize="
-        + serializedSize
-        + '}';
-  }
-
-  public void mergeChunkHeader(ChunkHeader chunkHeader) {
-    this.dataSize += chunkHeader.getDataSize();
-    this.numOfPages += chunkHeader.getNumOfPages();
-  }
-
-  public void setDataSize(int dataSize) {
-    this.dataSize = dataSize;
-  }
-
-  public byte getChunkType() {
-    return chunkType;
-  }
-
-  public void setChunkType(byte chunkType) {
-    this.chunkType = chunkType;
-  }
-
-  public void increasePageNums(int i) {
-    numOfPages += i;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/PageHeader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/PageHeader.java
deleted file mode 100644
index 4e07f6d..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/PageHeader.java
+++ /dev/null
@@ -1,180 +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.file.header;
-
-import org.apache.iotdb.tsfile.file.metadata.IMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.util.Optional;
-
-public class PageHeader implements IMetadata {
-
-  private int uncompressedSize;
-  private int compressedSize;
-  private final Statistics<? extends Serializable> statistics;
-  private boolean modified;
-
-  public PageHeader(
-      int uncompressedSize, int compressedSize, Statistics<? extends Serializable> statistics) {
-    this.uncompressedSize = uncompressedSize;
-    this.compressedSize = compressedSize;
-    this.statistics = statistics;
-  }
-
-  /** max page header size without statistics. */
-  public static int estimateMaxPageHeaderSizeWithoutStatistics() {
-    // uncompressedSize, compressedSize
-    // because we use unsigned varInt to encode these two integer,
-    // each unsigned arInt will cost at most 5 bytes
-    return 2 * (Integer.BYTES + 1);
-  }
-
-  public static PageHeader deserializeFrom(
-      InputStream inputStream, TSDataType dataType, boolean hasStatistic) throws IOException {
-    int uncompressedSize = ReadWriteForEncodingUtils.readUnsignedVarInt(inputStream);
-    if (uncompressedSize == 0) { // Empty Page
-      return new PageHeader(0, 0, null);
-    }
-    int compressedSize = ReadWriteForEncodingUtils.readUnsignedVarInt(inputStream);
-    Statistics<? extends Serializable> statistics = null;
-    if (hasStatistic) {
-      statistics = Statistics.deserialize(inputStream, dataType);
-    }
-    return new PageHeader(uncompressedSize, compressedSize, statistics);
-  }
-
-  public static PageHeader deserializeFrom(ByteBuffer buffer, TSDataType dataType) {
-    int uncompressedSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-    if (uncompressedSize == 0) { // Empty Page
-      return new PageHeader(0, 0, null);
-    }
-    int compressedSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-    Statistics<? extends Serializable> statistics = Statistics.deserialize(buffer, dataType);
-    return new PageHeader(uncompressedSize, compressedSize, statistics);
-  }
-
-  public static PageHeader deserializeFrom(
-      ByteBuffer buffer, Statistics<? extends Serializable> chunkStatistic) {
-    int uncompressedSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-    if (uncompressedSize == 0) { // Empty Page
-      return new PageHeader(0, 0, null);
-    }
-    int compressedSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-    return new PageHeader(uncompressedSize, compressedSize, chunkStatistic);
-  }
-
-  public int getUncompressedSize() {
-    return uncompressedSize;
-  }
-
-  public void setUncompressedSize(int uncompressedSize) {
-    this.uncompressedSize = uncompressedSize;
-  }
-
-  public int getCompressedSize() {
-    return compressedSize;
-  }
-
-  public void setCompressedSize(int compressedSize) {
-    this.compressedSize = compressedSize;
-  }
-
-  public long getNumOfValues() {
-    return statistics.getCount();
-  }
-
-  @Override
-  public Statistics<? extends Serializable> getStatistics() {
-    return statistics;
-  }
-
-  @Override
-  public Statistics<? extends Serializable> getTimeStatistics() {
-    return getStatistics();
-  }
-
-  @Override
-  public Optional<Statistics<? extends Serializable>> getMeasurementStatistics(
-      int measurementIndex) {
-    return Optional.ofNullable(getStatistics());
-  }
-
-  @Override
-  public boolean hasNullValue(int measurementIndex) {
-    return false;
-  }
-
-  public long getEndTime() {
-    return statistics.getEndTime();
-  }
-
-  public long getStartTime() {
-    return statistics.getStartTime();
-  }
-
-  public int serializeTo(OutputStream outputStream) throws IOException {
-    int length = 0;
-    length += ReadWriteForEncodingUtils.writeUnsignedVarInt(uncompressedSize, outputStream);
-    if (uncompressedSize == 0) { // Empty Page
-      return length;
-    }
-    length += ReadWriteForEncodingUtils.writeUnsignedVarInt(compressedSize, outputStream);
-    length += statistics.serialize(outputStream);
-    return length;
-  }
-
-  @Override
-  public String toString() {
-    return "PageHeader{"
-        + "uncompressedSize="
-        + uncompressedSize
-        + ", compressedSize="
-        + compressedSize
-        + ", statistics="
-        + statistics
-        + "}";
-  }
-
-  public boolean isModified() {
-    return modified;
-  }
-
-  public void setModified(boolean modified) {
-    this.modified = modified;
-  }
-
-  /** max page header size without statistics. */
-  public int getSerializedPageSize() {
-    if (uncompressedSize == 0) { // Empty page
-      return ReadWriteForEncodingUtils.uVarIntSize(uncompressedSize);
-    }
-    return ReadWriteForEncodingUtils.uVarIntSize(uncompressedSize)
-        + ReadWriteForEncodingUtils.uVarIntSize(compressedSize)
-        + (statistics == null ? 0 : statistics.getSerializedSize()) // page header
-        + compressedSize; // page data
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedChunkMetadata.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedChunkMetadata.java
deleted file mode 100644
index 84b0a50..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedChunkMetadata.java
+++ /dev/null
@@ -1,214 +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.file.metadata;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
-
-import java.io.OutputStream;
-import java.io.Serializable;
-import java.util.List;
-import java.util.Optional;
-
-public class AlignedChunkMetadata implements IChunkMetadata {
-
-  // ChunkMetadata for time column
-  private final IChunkMetadata timeChunkMetadata;
-  // ChunkMetadata for all subSensors in the vector
-  private final List<IChunkMetadata> valueChunkMetadataList;
-
-  /** ChunkLoader of metadata, used to create IChunkReader */
-  private IChunkLoader chunkLoader;
-
-  public AlignedChunkMetadata(
-      IChunkMetadata timeChunkMetadata, List<IChunkMetadata> valueChunkMetadataList) {
-    this.timeChunkMetadata = timeChunkMetadata;
-    this.valueChunkMetadataList = valueChunkMetadataList;
-  }
-
-  @Override
-  public Statistics<? extends Serializable> getStatistics() {
-    return valueChunkMetadataList.size() == 1 && valueChunkMetadataList.get(0) != null
-        ? valueChunkMetadataList.get(0).getStatistics()
-        : timeChunkMetadata.getStatistics();
-  }
-
-  @Override
-  public Statistics<? extends Serializable> getTimeStatistics() {
-    return timeChunkMetadata.getStatistics();
-  }
-
-  @Override
-  public Optional<Statistics<? extends Serializable>> getMeasurementStatistics(
-      int measurementIndex) {
-    IChunkMetadata chunkMetadata = valueChunkMetadataList.get(measurementIndex);
-    return Optional.ofNullable(chunkMetadata == null ? null : chunkMetadata.getStatistics());
-  }
-
-  @Override
-  public boolean hasNullValue(int measurementIndex) {
-    long rowCount = getTimeStatistics().getCount();
-    Optional<Statistics<? extends Serializable>> statistics =
-        getMeasurementStatistics(measurementIndex);
-    return statistics.map(stat -> stat.hasNullValue(rowCount)).orElse(true);
-  }
-
-  @Override
-  public int getMeasurementCount() {
-    return valueChunkMetadataList.size();
-  }
-
-  @Override
-  public boolean timeAllSelected() {
-    for (int index = 0; index < getMeasurementCount(); index++) {
-      if (!hasNullValue(index)) {
-        // When there is any value page point number that is the same as the time page,
-        // it means that all timestamps in time page will be selected.
-        return true;
-      }
-    }
-    return false;
-  }
-
-  @Override
-  public boolean isModified() {
-    return timeChunkMetadata.isModified();
-  }
-
-  @Override
-  public void setModified(boolean modified) {
-    timeChunkMetadata.setModified(modified);
-    for (IChunkMetadata v : valueChunkMetadataList) {
-      if (v != null) {
-        v.setModified(modified);
-      }
-    }
-  }
-
-  @Override
-  public boolean isSeq() {
-    return timeChunkMetadata.isSeq();
-  }
-
-  @Override
-  public void setSeq(boolean seq) {
-    timeChunkMetadata.setSeq(seq);
-    for (IChunkMetadata v : valueChunkMetadataList) {
-      if (v != null) {
-        v.setSeq(seq);
-      }
-    }
-  }
-
-  @Override
-  public long getVersion() {
-    return timeChunkMetadata.getVersion();
-  }
-
-  @Override
-  public void setVersion(long version) {
-    timeChunkMetadata.setVersion(version);
-    for (IChunkMetadata valueChunkMetadata : valueChunkMetadataList) {
-      if (valueChunkMetadata != null) {
-        valueChunkMetadata.setVersion(version);
-      }
-    }
-  }
-
-  @Override
-  public long getOffsetOfChunkHeader() {
-    return timeChunkMetadata.getOffsetOfChunkHeader();
-  }
-
-  @Override
-  public long getStartTime() {
-    return timeChunkMetadata.getStartTime();
-  }
-
-  @Override
-  public long getEndTime() {
-    return timeChunkMetadata.getEndTime();
-  }
-
-  @Override
-  public IChunkLoader getChunkLoader() {
-    return chunkLoader;
-  }
-
-  @Override
-  public boolean needSetChunkLoader() {
-    return chunkLoader == null;
-  }
-
-  @Override
-  public void setChunkLoader(IChunkLoader chunkLoader) {
-    this.chunkLoader = chunkLoader;
-  }
-
-  @Override
-  public void setClosed(boolean closed) {
-    timeChunkMetadata.setClosed(closed);
-    for (IChunkMetadata chunkMetadata : valueChunkMetadataList) {
-      if (chunkMetadata != null) {
-        chunkMetadata.setClosed(closed);
-      }
-    }
-  }
-
-  @Override
-  public TSDataType getDataType() {
-    return timeChunkMetadata.getDataType();
-  }
-
-  @Override
-  public String getMeasurementUid() {
-    return timeChunkMetadata.getMeasurementUid();
-  }
-
-  @Override
-  public void insertIntoSortedDeletions(TimeRange timeRange) {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public List<TimeRange> getDeleteIntervalList() {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public int serializeTo(OutputStream outputStream, boolean serializeStatistic) {
-    throw new UnsupportedOperationException("VectorChunkMetadata doesn't support serial method");
-  }
-
-  @Override
-  public byte getMask() {
-    return 0;
-  }
-
-  public IChunkMetadata getTimeChunkMetadata() {
-    return timeChunkMetadata;
-  }
-
-  public List<IChunkMetadata> getValueChunkMetadataList() {
-    return valueChunkMetadataList;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedTimeSeriesMetadata.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedTimeSeriesMetadata.java
deleted file mode 100644
index b72d226..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedTimeSeriesMetadata.java
+++ /dev/null
@@ -1,216 +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.file.metadata;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.controller.IChunkMetadataLoader;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
-public class AlignedTimeSeriesMetadata implements ITimeSeriesMetadata {
-
-  // TimeSeriesMetadata for time column
-  private final TimeseriesMetadata timeseriesMetadata;
-  // TimeSeriesMetadata for all subSensors in the vector
-  private final List<TimeseriesMetadata> valueTimeseriesMetadataList;
-
-  private IChunkMetadataLoader chunkMetadataLoader;
-
-  public AlignedTimeSeriesMetadata(
-      TimeseriesMetadata timeseriesMetadata, List<TimeseriesMetadata> valueTimeseriesMetadataList) {
-    this.timeseriesMetadata = timeseriesMetadata;
-    this.valueTimeseriesMetadataList = valueTimeseriesMetadataList;
-  }
-
-  /**
-   * If the vector contains only one sub sensor, just return the sub sensor's Statistics Otherwise,
-   * return the Statistics of the time column.
-   */
-  @Override
-  public Statistics getStatistics() {
-    return valueTimeseriesMetadataList.size() == 1 && valueTimeseriesMetadataList.get(0) != null
-        ? valueTimeseriesMetadataList.get(0).getStatistics()
-        : timeseriesMetadata.getStatistics();
-  }
-
-  @Override
-  public Statistics<? extends Serializable> getTimeStatistics() {
-    return timeseriesMetadata.getStatistics();
-  }
-
-  @Override
-  public Optional<Statistics<? extends Serializable>> getMeasurementStatistics(
-      int measurementIndex) {
-    TimeseriesMetadata metadata = valueTimeseriesMetadataList.get(measurementIndex);
-    return Optional.ofNullable(metadata == null ? null : metadata.getStatistics());
-  }
-
-  @Override
-  public boolean hasNullValue(int measurementIndex) {
-    long rowCount = getTimeStatistics().getCount();
-    Optional<Statistics<? extends Serializable>> statistics =
-        getMeasurementStatistics(measurementIndex);
-    return statistics.map(stat -> stat.hasNullValue(rowCount)).orElse(true);
-  }
-
-  @Override
-  public int getMeasurementCount() {
-    return valueTimeseriesMetadataList.size();
-  }
-
-  @Override
-  public boolean timeAllSelected() {
-    for (int index = 0; index < getMeasurementCount(); index++) {
-      if (!hasNullValue(index)) {
-        // When there is any value page point number that is the same as the time page,
-        // it means that all timestamps in time page will be selected.
-        return true;
-      }
-    }
-    return false;
-  }
-
-  @Override
-  public boolean isModified() {
-    return timeseriesMetadata.isModified();
-  }
-
-  @Override
-  public void setModified(boolean modified) {
-    timeseriesMetadata.setModified(modified);
-    for (TimeseriesMetadata subSensor : valueTimeseriesMetadataList) {
-      if (subSensor != null) {
-        subSensor.setModified(modified);
-      }
-    }
-  }
-
-  @Override
-  public boolean isSeq() {
-    return timeseriesMetadata.isSeq();
-  }
-
-  @Override
-  public void setSeq(boolean seq) {
-    timeseriesMetadata.setSeq(seq);
-    for (TimeseriesMetadata subSensor : valueTimeseriesMetadataList) {
-      if (subSensor != null) {
-        subSensor.setSeq(seq);
-      }
-    }
-  }
-
-  /**
-   * If the chunkMetadataLoader is MemChunkMetadataLoader, the VectorChunkMetadata is already
-   * assembled while constructing the in-memory TsFileResource, so we just return the assembled
-   * VectorChunkMetadata list.
-   *
-   * <p>Otherwise, we need to assemble the ChunkMetadata of time column and the ChunkMetadata of all
-   * the subSensors to generate the VectorChunkMetadata
-   */
-  @Override
-  public List<IChunkMetadata> loadChunkMetadataList() {
-    return chunkMetadataLoader.loadChunkMetadataList(this);
-  }
-
-  public List<AlignedChunkMetadata> getCopiedChunkMetadataList() {
-    List<IChunkMetadata> timeChunkMetadata = timeseriesMetadata.getCopiedChunkMetadataList();
-    List<List<IChunkMetadata>> valueChunkMetadataList = new ArrayList<>();
-    for (TimeseriesMetadata metadata : valueTimeseriesMetadataList) {
-      valueChunkMetadataList.add(metadata == null ? null : metadata.getCopiedChunkMetadataList());
-    }
-
-    return getAlignedChunkMetadata(timeChunkMetadata, valueChunkMetadataList);
-  }
-
-  public List<AlignedChunkMetadata> getChunkMetadataList() {
-    List<IChunkMetadata> timeChunkMetadata = timeseriesMetadata.getChunkMetadataList();
-    List<List<IChunkMetadata>> valueChunkMetadataList = new ArrayList<>();
-    for (TimeseriesMetadata metadata : valueTimeseriesMetadataList) {
-      valueChunkMetadataList.add(metadata == null ? null : metadata.getChunkMetadataList());
-    }
-
-    return getAlignedChunkMetadata(timeChunkMetadata, valueChunkMetadataList);
-  }
-
-  /** Notice: if all the value chunks is empty chunk, then return empty list. */
-  private List<AlignedChunkMetadata> getAlignedChunkMetadata(
-      List<IChunkMetadata> timeChunkMetadata, List<List<IChunkMetadata>> valueChunkMetadataList) {
-    List<AlignedChunkMetadata> res = new ArrayList<>();
-    for (int i = 0; i < timeChunkMetadata.size(); i++) {
-      // only need time column
-      if (valueTimeseriesMetadataList.isEmpty()) {
-        res.add(new AlignedChunkMetadata(timeChunkMetadata.get(i), Collections.emptyList()));
-      } else {
-        List<IChunkMetadata> chunkMetadataList = new ArrayList<>();
-        // only at least one sensor exits, we add the AlignedChunkMetadata to the list
-        boolean exits = false;
-        for (List<IChunkMetadata> chunkMetadata : valueChunkMetadataList) {
-          IChunkMetadata v =
-              chunkMetadata == null
-                      || chunkMetadata.get(i).getStatistics().getCount() == 0 // empty chunk
-                  ? null
-                  : chunkMetadata.get(i);
-          exits = (exits || v != null);
-          chunkMetadataList.add(v);
-        }
-        if (exits) {
-          res.add(new AlignedChunkMetadata(timeChunkMetadata.get(i), chunkMetadataList));
-        }
-      }
-    }
-    return res;
-  }
-
-  @Override
-  public void setChunkMetadataLoader(IChunkMetadataLoader chunkMetadataLoader) {
-    this.chunkMetadataLoader = chunkMetadataLoader;
-  }
-
-  @Override
-  public boolean typeMatch(List<TSDataType> dataTypes) {
-    if (valueTimeseriesMetadataList != null) {
-      int notMatchCount = 0;
-      for (int i = 0, size = dataTypes.size(); i < size; i++) {
-        TimeseriesMetadata valueTimeSeriesMetadata = valueTimeseriesMetadataList.get(i);
-        if (valueTimeSeriesMetadata != null
-            && !valueTimeSeriesMetadata.typeMatch(dataTypes.get(i))) {
-          valueTimeseriesMetadataList.set(i, null);
-          notMatchCount++;
-        }
-      }
-      return notMatchCount != dataTypes.size();
-    }
-    return true;
-  }
-
-  public List<TimeseriesMetadata> getValueTimeseriesMetadataList() {
-    return valueTimeseriesMetadataList;
-  }
-
-  public TimeseriesMetadata getTimeseriesMetadata() {
-    return timeseriesMetadata;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkGroupMetadata.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkGroupMetadata.java
deleted file mode 100644
index cb0ce5a..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkGroupMetadata.java
+++ /dev/null
@@ -1,43 +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.file.metadata;
-
-import java.util.List;
-
-/** Only maintained when writing, not serialized to TsFile. */
-public class ChunkGroupMetadata {
-
-  private IDeviceID device;
-
-  private List<ChunkMetadata> chunkMetadataList;
-
-  public ChunkGroupMetadata(IDeviceID device, List<ChunkMetadata> chunkMetadataList) {
-    this.device = device;
-    this.chunkMetadataList = chunkMetadataList;
-  }
-
-  public IDeviceID getDevice() {
-    return device;
-  }
-
-  public List<ChunkMetadata> getChunkMetadataList() {
-    return chunkMetadataList;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkMetadata.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkMetadata.java
deleted file mode 100644
index 21643c5..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkMetadata.java
+++ /dev/null
@@ -1,387 +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.file.metadata;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-
-import static org.apache.iotdb.tsfile.utils.Preconditions.checkArgument;
-
-/** Metadata of one chunk. */
-public class ChunkMetadata implements IChunkMetadata {
-
-  private static final long INSTANCE_SIZE =
-      RamUsageEstimator.shallowSizeOfInstance(ChunkMetadata.class)
-          + RamUsageEstimator.shallowSizeOfInstance(TSDataType.class)
-          + RamUsageEstimator.shallowSizeOfInstance(ArrayList.class);
-
-  private String measurementUid;
-
-  /**
-   * Byte offset of the corresponding data in the file Notice: include the chunk header and marker.
-   */
-  private long offsetOfChunkHeader;
-
-  private TSDataType tsDataType;
-
-  /**
-   * version is used to define the order of operations(insertion, deletion, update). version is set
-   * according to its belonging ChunkGroup only when being queried, so it is not persisted.
-   */
-  private long version;
-
-  /** A list of deleted intervals. */
-  private ArrayList<TimeRange> deleteIntervalList;
-
-  private boolean modified;
-
-  /** ChunkLoader of metadata, used to create ChunkReaderWrap. */
-  private IChunkLoader chunkLoader;
-
-  private Statistics<? extends Serializable> statistics;
-
-  private static final int CHUNK_METADATA_FIXED_RAM_SIZE = 93;
-
-  // used for SeriesReader to indicate whether it is a seq/unseq timeseries metadata
-  private boolean isSeq = true;
-  private boolean isClosed;
-
-  // 0x80 for time chunk, 0x40 for value chunk, 0x00 for common chunk
-  private byte mask;
-
-  public ChunkMetadata() {}
-
-  /**
-   * constructor of ChunkMetaData.
-   *
-   * @param measurementUid measurement id
-   * @param tsDataType time series data type
-   * @param fileOffset file offset
-   * @param statistics value statistics
-   */
-  public ChunkMetadata(
-      String measurementUid,
-      TSDataType tsDataType,
-      long fileOffset,
-      Statistics<? extends Serializable> statistics) {
-    this.measurementUid = measurementUid;
-    this.tsDataType = tsDataType;
-    this.offsetOfChunkHeader = fileOffset;
-    this.statistics = statistics;
-  }
-
-  // won't clone deleteIntervalList & modified
-  public ChunkMetadata(ChunkMetadata other) {
-    this.measurementUid = other.measurementUid;
-    this.offsetOfChunkHeader = other.offsetOfChunkHeader;
-    this.tsDataType = other.tsDataType;
-    this.version = other.version;
-    this.statistics = other.statistics;
-    this.isSeq = other.isSeq;
-    this.isClosed = other.isClosed;
-    this.mask = other.mask;
-  }
-
-  @Override
-  public String toString() {
-    return String.format(
-        "measurementId: %s, datatype: %s, version: %d, " + "Statistics: %s, deleteIntervalList: %s",
-        measurementUid, tsDataType, version, statistics, deleteIntervalList);
-  }
-
-  public long getNumOfPoints() {
-    return statistics.getCount();
-  }
-
-  /**
-   * get offset of chunk header.
-   *
-   * @return Byte offset of header of this chunk (includes the marker)
-   */
-  @Override
-  public long getOffsetOfChunkHeader() {
-    return offsetOfChunkHeader;
-  }
-
-  public String getMeasurementUid() {
-    return measurementUid;
-  }
-
-  @Override
-  public Statistics<? extends Serializable> getStatistics() {
-    return statistics;
-  }
-
-  public long getStartTime() {
-    return statistics.getStartTime();
-  }
-
-  public long getEndTime() {
-    return statistics.getEndTime();
-  }
-
-  public TSDataType getDataType() {
-    return tsDataType;
-  }
-
-  /**
-   * serialize to outputStream.
-   *
-   * @param outputStream outputStream
-   * @return length
-   * @throws IOException IOException
-   */
-  public int serializeTo(OutputStream outputStream, boolean serializeStatistic) throws IOException {
-    int byteLen = 0;
-    byteLen += ReadWriteIOUtils.write(offsetOfChunkHeader, outputStream);
-    if (serializeStatistic) {
-      byteLen += statistics.serialize(outputStream);
-    }
-    return byteLen;
-  }
-
-  /**
-   * deserialize from ByteBuffer.
-   *
-   * @param buffer ByteBuffer
-   * @return ChunkMetaData object
-   */
-  public static ChunkMetadata deserializeFrom(
-      ByteBuffer buffer, TimeseriesMetadata timeseriesMetadata) {
-    ChunkMetadata chunkMetaData = new ChunkMetadata();
-
-    chunkMetaData.measurementUid = timeseriesMetadata.getMeasurementId();
-    chunkMetaData.tsDataType = timeseriesMetadata.getTsDataType();
-    chunkMetaData.offsetOfChunkHeader = ReadWriteIOUtils.readLong(buffer);
-    // if the TimeSeriesMetadataType is not 0, it means it has more than one chunk
-    // and each chunk's metadata has its own statistics
-    if ((timeseriesMetadata.getTimeSeriesMetadataType() & 0x3F) != 0) {
-      chunkMetaData.statistics = Statistics.deserialize(buffer, chunkMetaData.tsDataType);
-    } else {
-      // if the TimeSeriesMetadataType is 0, it means it has only one chunk
-      // and that chunk's metadata has no statistic
-      chunkMetaData.statistics = timeseriesMetadata.getStatistics();
-    }
-    return chunkMetaData;
-  }
-
-  public static ChunkMetadata deserializeFrom(
-      InputStream inputStream, TimeseriesMetadata timeseriesMetadata) throws IOException {
-    ChunkMetadata chunkMetaData = new ChunkMetadata();
-
-    chunkMetaData.measurementUid = timeseriesMetadata.getMeasurementId();
-    chunkMetaData.tsDataType = timeseriesMetadata.getTsDataType();
-    chunkMetaData.offsetOfChunkHeader = ReadWriteIOUtils.readLong(inputStream);
-    // if the TimeSeriesMetadataType is not 0, it means it has more than one chunk
-    // and each chunk's metadata has its own statistics
-    if ((timeseriesMetadata.getTimeSeriesMetadataType() & 0x3F) != 0) {
-      chunkMetaData.statistics = Statistics.deserialize(inputStream, chunkMetaData.tsDataType);
-    } else {
-      // if the TimeSeriesMetadataType is 0, it means it has only one chunk
-      // and that chunk's metadata has no statistic
-      chunkMetaData.statistics = timeseriesMetadata.getStatistics();
-    }
-    return chunkMetaData;
-  }
-
-  public static ChunkMetadata deserializeFrom(ByteBuffer buffer, TSDataType dataType) {
-    ChunkMetadata chunkMetadata = new ChunkMetadata();
-    chunkMetadata.tsDataType = dataType;
-    chunkMetadata.offsetOfChunkHeader = ReadWriteIOUtils.readLong(buffer);
-    chunkMetadata.statistics = Statistics.deserialize(buffer, dataType);
-    return chunkMetadata;
-  }
-
-  @Override
-  public long getVersion() {
-    return version;
-  }
-
-  @Override
-  public void setVersion(long version) {
-    this.version = version;
-  }
-
-  public List<TimeRange> getDeleteIntervalList() {
-    return deleteIntervalList;
-  }
-
-  @Override
-  public void insertIntoSortedDeletions(TimeRange timeRange) {
-    ArrayList<TimeRange> resultInterval = new ArrayList<>();
-    long startTime = timeRange.getMin();
-    long endTime = timeRange.getMax();
-    if (deleteIntervalList != null) {
-      if (deleteIntervalList.get(deleteIntervalList.size() - 1).getMax() < timeRange.getMin()) {
-        deleteIntervalList.add(timeRange);
-        return;
-      }
-      for (int i = 0; i < deleteIntervalList.size(); i++) {
-        TimeRange interval = deleteIntervalList.get(i);
-        if (interval.getMax() < startTime) {
-          resultInterval.add(interval);
-        } else if (interval.getMin() > endTime) {
-          // remaining TimeRanges are in order, add all and return
-          resultInterval.add(new TimeRange(startTime, endTime));
-          resultInterval.addAll(deleteIntervalList.subList(i, deleteIntervalList.size()));
-          deleteIntervalList = resultInterval;
-          return;
-        } else if (interval.getMax() >= startTime || interval.getMin() <= endTime) {
-          startTime = Math.min(interval.getMin(), startTime);
-          endTime = Math.max(interval.getMax(), endTime);
-        }
-      }
-    }
-
-    resultInterval.add(new TimeRange(startTime, endTime));
-    deleteIntervalList = resultInterval;
-  }
-
-  public IChunkLoader getChunkLoader() {
-    return chunkLoader;
-  }
-
-  @Override
-  public boolean needSetChunkLoader() {
-    return chunkLoader == null;
-  }
-
-  public void setChunkLoader(IChunkLoader chunkLoader) {
-    this.chunkLoader = chunkLoader;
-  }
-
-  @Override
-  public boolean isModified() {
-    return modified;
-  }
-
-  @Override
-  public void setModified(boolean modified) {
-    this.modified = modified;
-  }
-
-  public static long calculateRamSize(String measurementId, TSDataType dataType) {
-    return CHUNK_METADATA_FIXED_RAM_SIZE
-        + RamUsageEstimator.sizeOf(measurementId)
-        + Statistics.getSizeByType(dataType);
-  }
-
-  public void mergeChunkMetadata(ChunkMetadata chunkMetadata) {
-    Statistics<? extends Serializable> chunkMetadataStatistics = chunkMetadata.getStatistics();
-    this.statistics.mergeStatistics(chunkMetadataStatistics);
-  }
-
-  // it's only used for query cache, measurementUid is from TimeSeriesMetadata
-  public long getRetainedSizeInBytes() {
-    return INSTANCE_SIZE + (statistics == null ? 0L : statistics.getRetainedSizeInBytes());
-  }
-
-  @Override
-  public void setSeq(boolean seq) {
-    isSeq = seq;
-  }
-
-  @Override
-  public boolean isSeq() {
-    return isSeq;
-  }
-
-  public boolean isClosed() {
-    return isClosed;
-  }
-
-  public void setClosed(boolean closed) {
-    isClosed = closed;
-  }
-
-  @Override
-  public byte getMask() {
-    return mask;
-  }
-
-  public void setMask(byte mask) {
-    this.mask = mask;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    ChunkMetadata that = (ChunkMetadata) o;
-    return offsetOfChunkHeader == that.offsetOfChunkHeader
-        && version == that.version
-        && isSeq == that.isSeq
-        && isClosed == that.isClosed
-        && mask == that.mask
-        && Objects.equals(measurementUid, that.measurementUid)
-        && tsDataType == that.tsDataType
-        && Objects.equals(statistics, that.statistics);
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(
-        measurementUid,
-        offsetOfChunkHeader,
-        tsDataType,
-        version,
-        statistics,
-        isSeq,
-        isClosed,
-        mask);
-  }
-
-  @Override
-  public Statistics<? extends Serializable> getTimeStatistics() {
-    return getStatistics();
-  }
-
-  @Override
-  public Optional<Statistics<? extends Serializable>> getMeasurementStatistics(
-      int measurementIndex) {
-    checkArgument(
-        measurementIndex == 0,
-        "Non-aligned chunk only has one measurement, but measurementIndex is " + measurementIndex);
-    return Optional.ofNullable(statistics);
-  }
-
-  @Override
-  public boolean hasNullValue(int measurementIndex) {
-    return false;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/DeviceMetadataIndexEntry.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/DeviceMetadataIndexEntry.java
deleted file mode 100644
index f11beb6..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/DeviceMetadataIndexEntry.java
+++ /dev/null
@@ -1,92 +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.file.metadata;
-
-import org.apache.iotdb.tsfile.file.IMetadataIndexEntry;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-
-public class DeviceMetadataIndexEntry implements IMetadataIndexEntry {
-  private IDeviceID deviceID;
-  private long offset;
-
-  public DeviceMetadataIndexEntry(IDeviceID deviceID, long offset) {
-    this.deviceID = deviceID;
-    this.offset = offset;
-  }
-
-  public IDeviceID getDeviceID() {
-    return deviceID;
-  }
-
-  @Override
-  public long getOffset() {
-    return offset;
-  }
-
-  public void setDeviceID(IDeviceID deviceID) {
-    this.deviceID = deviceID;
-  }
-
-  @Override
-  public void setOffset(long offset) {
-    this.offset = offset;
-  }
-
-  @Override
-  public int serializeTo(OutputStream outputStream) throws IOException {
-    int byteLen = 0;
-    byteLen += deviceID.serialize(outputStream);
-    byteLen += ReadWriteIOUtils.write(offset, outputStream);
-    return byteLen;
-  }
-
-  @Override
-  public Comparable getCompareKey() {
-    return deviceID;
-  }
-
-  @Override
-  public boolean isDeviceLevel() {
-    return true;
-  }
-
-  public static DeviceMetadataIndexEntry deserializeFrom(ByteBuffer buffer) {
-    IDeviceID device = IDeviceID.deserializeFrom(buffer);
-    long offset = ReadWriteIOUtils.readLong(buffer);
-    return new DeviceMetadataIndexEntry(device, offset);
-  }
-
-  public static DeviceMetadataIndexEntry deserializeFrom(InputStream inputStream)
-      throws IOException {
-    IDeviceID device = IDeviceID.deserializeFrom(inputStream);
-    long offset = ReadWriteIOUtils.readLong(inputStream);
-    return new DeviceMetadataIndexEntry(device, offset);
-  }
-
-  @Override
-  public String toString() {
-    return "<" + deviceID + "," + offset + ">";
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/IChunkMetadata.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/IChunkMetadata.java
deleted file mode 100644
index 43f66b7..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/IChunkMetadata.java
+++ /dev/null
@@ -1,69 +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.file.metadata;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.List;
-
-public interface IChunkMetadata extends IMetadata {
-
-  boolean isModified();
-
-  void setModified(boolean modified);
-
-  boolean isSeq();
-
-  void setSeq(boolean seq);
-
-  long getVersion();
-
-  void setVersion(long version);
-
-  long getOffsetOfChunkHeader();
-
-  long getStartTime();
-
-  long getEndTime();
-
-  IChunkLoader getChunkLoader();
-
-  boolean needSetChunkLoader();
-
-  void setChunkLoader(IChunkLoader chunkLoader);
-
-  void setClosed(boolean closed);
-
-  TSDataType getDataType();
-
-  String getMeasurementUid();
-
-  void insertIntoSortedDeletions(TimeRange timeRange);
-
-  List<TimeRange> getDeleteIntervalList();
-
-  int serializeTo(OutputStream outputStream, boolean serializeStatistic) throws IOException;
-
-  byte getMask();
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/IDeviceID.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/IDeviceID.java
deleted file mode 100644
index 08aa018..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/IDeviceID.java
+++ /dev/null
@@ -1,50 +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.file.metadata;
-
-import org.apache.iotdb.tsfile.utils.Accountable;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-
-/** Device id interface. */
-public interface IDeviceID extends Comparable<IDeviceID>, Accountable {
-
-  int serialize(ByteBuffer byteBuffer);
-
-  int serialize(OutputStream outputStream) throws IOException;
-
-  byte[] getBytes();
-
-  boolean isEmpty();
-
-  static IDeviceID deserializeFrom(ByteBuffer byteBuffer) {
-    // TODO
-    return new PlainDeviceID(ReadWriteIOUtils.readVarIntString(byteBuffer));
-  }
-
-  static IDeviceID deserializeFrom(InputStream inputStream) throws IOException {
-    // TODO
-    return new PlainDeviceID(ReadWriteIOUtils.readVarIntString(inputStream));
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/IMetadata.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/IMetadata.java
deleted file mode 100644
index 44aae34..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/IMetadata.java
+++ /dev/null
@@ -1,44 +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.file.metadata;
-
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-
-import java.io.Serializable;
-import java.util.Optional;
-
-public interface IMetadata {
-
-  Statistics<? extends Serializable> getStatistics();
-
-  Statistics<? extends Serializable> getTimeStatistics();
-
-  Optional<Statistics<? extends Serializable>> getMeasurementStatistics(int measurementIndex);
-
-  boolean hasNullValue(int measurementIndex);
-
-  default boolean timeAllSelected() {
-    return true;
-  }
-
-  default int getMeasurementCount() {
-    return 1;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ITimeSeriesMetadata.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ITimeSeriesMetadata.java
deleted file mode 100644
index 71cf578..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ITimeSeriesMetadata.java
+++ /dev/null
@@ -1,48 +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.file.metadata;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.controller.IChunkMetadataLoader;
-
-import java.util.List;
-
-public interface ITimeSeriesMetadata extends IMetadata {
-
-  boolean isModified();
-
-  void setModified(boolean modified);
-
-  boolean isSeq();
-
-  void setSeq(boolean seq);
-
-  /**
-   * Return the result has already been filtered by modification files.
-   *
-   * @return list of ChunkMetadata.
-   */
-  List<IChunkMetadata> loadChunkMetadataList();
-
-  void setChunkMetadataLoader(IChunkMetadataLoader chunkMetadataLoader);
-
-  /** @return true if data type is matched, otherwise false */
-  boolean typeMatch(List<TSDataType> dataTypes);
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/MeasurementMetadataIndexEntry.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/MeasurementMetadataIndexEntry.java
deleted file mode 100644
index 94c6788..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/MeasurementMetadataIndexEntry.java
+++ /dev/null
@@ -1,93 +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.file.metadata;
-
-import org.apache.iotdb.tsfile.file.IMetadataIndexEntry;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-
-public class MeasurementMetadataIndexEntry implements IMetadataIndexEntry {
-
-  private String name;
-  private long offset;
-
-  public MeasurementMetadataIndexEntry(String name, long offset) {
-    this.name = name;
-    this.offset = offset;
-  }
-
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public long getOffset() {
-    return offset;
-  }
-
-  public void setName(String name) {
-    this.name = name;
-  }
-
-  @Override
-  public void setOffset(long offset) {
-    this.offset = offset;
-  }
-
-  @Override
-  public int serializeTo(OutputStream outputStream) throws IOException {
-    int byteLen = 0;
-    byteLen += ReadWriteIOUtils.writeVar(name, outputStream);
-    byteLen += ReadWriteIOUtils.write(offset, outputStream);
-    return byteLen;
-  }
-
-  @Override
-  public Comparable getCompareKey() {
-    return name;
-  }
-
-  @Override
-  public boolean isDeviceLevel() {
-    return false;
-  }
-
-  public static MeasurementMetadataIndexEntry deserializeFrom(ByteBuffer buffer) {
-    String name = ReadWriteIOUtils.readVarIntString(buffer);
-    long offset = ReadWriteIOUtils.readLong(buffer);
-    return new MeasurementMetadataIndexEntry(name, offset);
-  }
-
-  public static MeasurementMetadataIndexEntry deserializeFrom(InputStream inputStream)
-      throws IOException {
-    String name = ReadWriteIOUtils.readVarIntString(inputStream);
-    long offset = ReadWriteIOUtils.readLong(inputStream);
-    return new MeasurementMetadataIndexEntry(name, offset);
-  }
-
-  @Override
-  public String toString() {
-    return "<" + name + "," + offset + ">";
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/MetadataIndexConstructor.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/MetadataIndexConstructor.java
deleted file mode 100644
index 462bb3e..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/MetadataIndexConstructor.java
+++ /dev/null
@@ -1,181 +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.file.metadata;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.IMetadataIndexEntry;
-import org.apache.iotdb.tsfile.file.metadata.enums.MetadataIndexNodeType;
-import org.apache.iotdb.tsfile.write.writer.TsFileOutput;
-
-import java.io.IOException;
-import java.util.ArrayDeque;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Queue;
-import java.util.TreeMap;
-
-public class MetadataIndexConstructor {
-
-  private static final TSFileConfig config = TSFileDescriptor.getInstance().getConfig();
-
-  private MetadataIndexConstructor() {
-    throw new IllegalStateException("Utility class");
-  }
-
-  /**
-   * Construct metadata index tree.
-   *
-   * @param deviceTimeseriesMetadataMap device => TimeseriesMetadata list
-   * @param out tsfile output
-   * @throws IOException exception when operating stream
-   */
-  @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning
-  public static MetadataIndexNode constructMetadataIndex(
-      Map<IDeviceID, List<TimeseriesMetadata>> deviceTimeseriesMetadataMap, TsFileOutput out)
-      throws IOException {
-
-    Map<IDeviceID, MetadataIndexNode> deviceMetadataIndexMap = new TreeMap<>();
-
-    // for timeseriesMetadata of each device
-    for (Entry<IDeviceID, List<TimeseriesMetadata>> entry :
-        deviceTimeseriesMetadataMap.entrySet()) {
-      if (entry.getValue().isEmpty()) {
-        continue;
-      }
-      Queue<MetadataIndexNode> measurementMetadataIndexQueue = new ArrayDeque<>();
-      TimeseriesMetadata timeseriesMetadata;
-      MetadataIndexNode currentIndexNode =
-          new MetadataIndexNode(MetadataIndexNodeType.LEAF_MEASUREMENT);
-      for (int i = 0; i < entry.getValue().size(); i++) {
-        timeseriesMetadata = entry.getValue().get(i);
-        if (i % config.getMaxDegreeOfIndexNode() == 0) {
-          if (currentIndexNode.isFull()) {
-            addCurrentIndexNodeToQueue(currentIndexNode, measurementMetadataIndexQueue, out);
-            currentIndexNode = new MetadataIndexNode(MetadataIndexNodeType.LEAF_MEASUREMENT);
-          }
-          currentIndexNode.addEntry(
-              new MeasurementMetadataIndexEntry(
-                  timeseriesMetadata.getMeasurementId(), out.getPosition()));
-        }
-        timeseriesMetadata.serializeTo(out.wrapAsStream());
-      }
-      addCurrentIndexNodeToQueue(currentIndexNode, measurementMetadataIndexQueue, out);
-      deviceMetadataIndexMap.put(
-          entry.getKey(),
-          generateRootNode(
-              measurementMetadataIndexQueue, out, MetadataIndexNodeType.INTERNAL_MEASUREMENT));
-    }
-
-    return checkAndBuildLevelIndex(deviceMetadataIndexMap, out);
-  }
-
-  public static MetadataIndexNode checkAndBuildLevelIndex(
-      Map<IDeviceID, MetadataIndexNode> deviceMetadataIndexMap, TsFileOutput out)
-      throws IOException {
-    // if not exceed the max child nodes num, ignore the device index and directly point to the
-    // measurement
-    if (deviceMetadataIndexMap.size() <= config.getMaxDegreeOfIndexNode()) {
-      MetadataIndexNode metadataIndexNode =
-          new MetadataIndexNode(MetadataIndexNodeType.LEAF_DEVICE);
-      for (Map.Entry<IDeviceID, MetadataIndexNode> entry : deviceMetadataIndexMap.entrySet()) {
-        metadataIndexNode.addEntry(new DeviceMetadataIndexEntry(entry.getKey(), out.getPosition()));
-        entry.getValue().serializeTo(out.wrapAsStream());
-      }
-      metadataIndexNode.setEndOffset(out.getPosition());
-      return metadataIndexNode;
-    }
-
-    // else, build level index for devices
-    Queue<MetadataIndexNode> deviceMetadataIndexQueue = new ArrayDeque<>();
-    MetadataIndexNode currentIndexNode = new MetadataIndexNode(MetadataIndexNodeType.LEAF_DEVICE);
-
-    for (Map.Entry<IDeviceID, MetadataIndexNode> entry : deviceMetadataIndexMap.entrySet()) {
-      // when constructing from internal node, each node is related to an entry
-      if (currentIndexNode.isFull()) {
-        addCurrentIndexNodeToQueue(currentIndexNode, deviceMetadataIndexQueue, out);
-        currentIndexNode = new MetadataIndexNode(MetadataIndexNodeType.LEAF_DEVICE);
-      }
-      currentIndexNode.addEntry(new DeviceMetadataIndexEntry(entry.getKey(), out.getPosition()));
-      entry.getValue().serializeTo(out.wrapAsStream());
-    }
-    addCurrentIndexNodeToQueue(currentIndexNode, deviceMetadataIndexQueue, out);
-    MetadataIndexNode deviceMetadataIndexNode =
-        generateRootNode(deviceMetadataIndexQueue, out, MetadataIndexNodeType.INTERNAL_DEVICE);
-    deviceMetadataIndexNode.setEndOffset(out.getPosition());
-    return deviceMetadataIndexNode;
-  }
-
-  /**
-   * Generate root node, using the nodes in the queue as leaf nodes. The final metadata tree has two
-   * levels: measurement leaf nodes will generate to measurement root node; device leaf nodes will
-   * generate to device root node
-   *
-   * @param metadataIndexNodeQueue queue of metadataIndexNode
-   * @param out tsfile output
-   * @param type MetadataIndexNode type
-   * @throws IOException exception when operating stream
-   */
-  public static MetadataIndexNode generateRootNode(
-      Queue<MetadataIndexNode> metadataIndexNodeQueue, TsFileOutput out, MetadataIndexNodeType type)
-      throws IOException {
-    int queueSize = metadataIndexNodeQueue.size();
-    MetadataIndexNode metadataIndexNode;
-    MetadataIndexNode currentIndexNode = new MetadataIndexNode(type);
-    while (queueSize != 1) {
-      for (int i = 0; i < queueSize; i++) {
-        metadataIndexNode = metadataIndexNodeQueue.poll();
-        // when constructing from internal node, each node is related to an entry
-        if (currentIndexNode.isFull()) {
-          addCurrentIndexNodeToQueue(currentIndexNode, metadataIndexNodeQueue, out);
-          currentIndexNode = new MetadataIndexNode(type);
-        }
-        IMetadataIndexEntry entry = null;
-        if (metadataIndexNode.isDeviceLevel()) {
-          entry =
-              new DeviceMetadataIndexEntry(
-                  ((DeviceMetadataIndexEntry) metadataIndexNode.peek()).getDeviceID(),
-                  out.getPosition());
-        } else {
-          entry =
-              new MeasurementMetadataIndexEntry(
-                  ((MeasurementMetadataIndexEntry) metadataIndexNode.peek()).getName(),
-                  out.getPosition());
-        }
-        currentIndexNode.addEntry(entry);
-        metadataIndexNode.serializeTo(out.wrapAsStream());
-      }
-      addCurrentIndexNodeToQueue(currentIndexNode, metadataIndexNodeQueue, out);
-      currentIndexNode = new MetadataIndexNode(type);
-      queueSize = metadataIndexNodeQueue.size();
-    }
-    return metadataIndexNodeQueue.poll();
-  }
-
-  public static void addCurrentIndexNodeToQueue(
-      MetadataIndexNode currentIndexNode,
-      Queue<MetadataIndexNode> metadataIndexNodeQueue,
-      TsFileOutput out)
-      throws IOException {
-    currentIndexNode.setEndOffset(out.getPosition());
-    metadataIndexNodeQueue.add(currentIndexNode);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/MetadataIndexNode.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/MetadataIndexNode.java
deleted file mode 100644
index 7618539..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/MetadataIndexNode.java
+++ /dev/null
@@ -1,178 +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.file.metadata;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.IMetadataIndexEntry;
-import org.apache.iotdb.tsfile.file.metadata.enums.MetadataIndexNodeType;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-public class MetadataIndexNode {
-
-  protected static final TSFileConfig config = TSFileDescriptor.getInstance().getConfig();
-  protected final List<IMetadataIndexEntry> children;
-  protected long endOffset;
-
-  /** type of the child node at offset. */
-  private final MetadataIndexNodeType nodeType;
-
-  public MetadataIndexNode(MetadataIndexNodeType nodeType) {
-    children = new ArrayList<>();
-    endOffset = -1L;
-    this.nodeType = nodeType;
-  }
-
-  public MetadataIndexNode(
-      List<IMetadataIndexEntry> children, long endOffset, MetadataIndexNodeType nodeType) {
-    this.children = children;
-    this.endOffset = endOffset;
-    this.nodeType = nodeType;
-  }
-
-  public List<IMetadataIndexEntry> getChildren() {
-    return children;
-  }
-
-  public long getEndOffset() {
-    return endOffset;
-  }
-
-  public void setEndOffset(long endOffset) {
-    this.endOffset = endOffset;
-  }
-
-  public MetadataIndexNodeType getNodeType() {
-    return nodeType;
-  }
-
-  public void addEntry(IMetadataIndexEntry metadataIndexEntry) {
-    this.children.add(metadataIndexEntry);
-  }
-
-  public boolean isFull() {
-    return children.size() >= config.getMaxDegreeOfIndexNode();
-  }
-
-  IMetadataIndexEntry peek() {
-    if (children.isEmpty()) {
-      return null;
-    }
-    return children.get(0);
-  }
-
-  public int serializeTo(OutputStream outputStream) throws IOException {
-    int byteLen = 0;
-    byteLen += ReadWriteForEncodingUtils.writeUnsignedVarInt(children.size(), outputStream);
-    for (IMetadataIndexEntry metadataIndexEntry : children) {
-      byteLen += metadataIndexEntry.serializeTo(outputStream);
-    }
-    byteLen += ReadWriteIOUtils.write(endOffset, outputStream);
-    byteLen += ReadWriteIOUtils.write(nodeType.serialize(), outputStream);
-    return byteLen;
-  }
-
-  public static MetadataIndexNode deserializeFrom(ByteBuffer buffer, boolean isDeviceLevel) {
-    List<IMetadataIndexEntry> children = new ArrayList<>();
-    int size = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-    for (int i = 0; i < size; i++) {
-      if (isDeviceLevel) {
-        children.add(DeviceMetadataIndexEntry.deserializeFrom(buffer));
-      } else {
-        children.add(MeasurementMetadataIndexEntry.deserializeFrom(buffer));
-      }
-    }
-    long offset = ReadWriteIOUtils.readLong(buffer);
-    MetadataIndexNodeType nodeType =
-        MetadataIndexNodeType.deserialize(ReadWriteIOUtils.readByte(buffer));
-    return new MetadataIndexNode(children, offset, nodeType);
-  }
-
-  public static MetadataIndexNode deserializeFrom(InputStream inputStream, boolean isDeviceLevel)
-      throws IOException {
-    List<IMetadataIndexEntry> children = new ArrayList<>();
-    int size = ReadWriteForEncodingUtils.readUnsignedVarInt(inputStream);
-    for (int i = 0; i < size; i++) {
-      if (isDeviceLevel) {
-        children.add(DeviceMetadataIndexEntry.deserializeFrom(inputStream));
-      } else {
-        children.add(MeasurementMetadataIndexEntry.deserializeFrom(inputStream));
-      }
-    }
-    long offset = ReadWriteIOUtils.readLong(inputStream);
-    MetadataIndexNodeType nodeType =
-        MetadataIndexNodeType.deserialize(ReadWriteIOUtils.readByte(inputStream));
-    return new MetadataIndexNode(children, offset, nodeType);
-  }
-
-  public Pair<IMetadataIndexEntry, Long> getChildIndexEntry(Comparable key, boolean exactSearch) {
-    int index = binarySearchInChildren(key, exactSearch);
-    if (index == -1) {
-      return null;
-    }
-    long childEndOffset;
-    if (index != children.size() - 1) {
-      childEndOffset = children.get(index + 1).getOffset();
-    } else {
-      childEndOffset = this.endOffset;
-    }
-    return new Pair<>(children.get(index), childEndOffset);
-  }
-
-  int binarySearchInChildren(Comparable key, boolean exactSearch) {
-    int low = 0;
-    int high = children.size() - 1;
-
-    while (low <= high) {
-      int mid = (low + high) >>> 1;
-      IMetadataIndexEntry midVal = children.get(mid);
-      int cmp = midVal.getCompareKey().compareTo(key);
-
-      if (cmp < 0) {
-        low = mid + 1;
-      } else if (cmp > 0) {
-        high = mid - 1;
-      } else {
-        return mid; // key found
-      }
-    }
-
-    // key not found
-    if (exactSearch) {
-      return -1;
-    } else {
-      return low == 0 ? low : low - 1;
-    }
-  }
-
-  public boolean isDeviceLevel() {
-    return this.nodeType == MetadataIndexNodeType.INTERNAL_DEVICE
-        || this.nodeType == MetadataIndexNodeType.LEAF_DEVICE;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/PlainDeviceID.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/PlainDeviceID.java
deleted file mode 100644
index 1721dc1..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/PlainDeviceID.java
+++ /dev/null
@@ -1,105 +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.file.metadata;
-
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-import java.util.Objects;
-
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfCharArray;
-
-/** Using device id path as id. */
-public class PlainDeviceID implements IDeviceID {
-
-  private static final long INSTANCE_SIZE =
-      RamUsageEstimator.shallowSizeOfInstance(PlainDeviceID.class)
-          + RamUsageEstimator.shallowSizeOfInstance(String.class);
-  private final String deviceID;
-
-  public PlainDeviceID(String deviceID) {
-    this.deviceID = deviceID;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (!(o instanceof PlainDeviceID)) {
-      return false;
-    }
-    PlainDeviceID that = (PlainDeviceID) o;
-    return Objects.equals(deviceID, that.deviceID);
-  }
-
-  @Override
-  public int hashCode() {
-    return deviceID.hashCode();
-  }
-
-  public String toString() {
-    return "PlainDeviceID{" + "deviceID='" + deviceID + '\'' + '}';
-  }
-
-  public String toStringID() {
-    return deviceID;
-  }
-
-  @Override
-  public int serialize(ByteBuffer byteBuffer) {
-    return ReadWriteIOUtils.write(deviceID, byteBuffer);
-  }
-
-  @Override
-  public int serialize(OutputStream outputStream) throws IOException {
-    return ReadWriteIOUtils.writeVar(deviceID, outputStream);
-  }
-
-  @Override
-  public byte[] getBytes() {
-    return deviceID.getBytes();
-  }
-
-  @Override
-  public boolean isEmpty() {
-    return deviceID.isEmpty();
-  }
-
-  @Override
-  public long ramBytesUsed() {
-    return INSTANCE_SIZE + sizeOfCharArray(deviceID.length());
-  }
-
-  public static PlainDeviceID deserialize(ByteBuffer byteBuffer) {
-    return new PlainDeviceID(ReadWriteIOUtils.readString(byteBuffer));
-  }
-
-  @Override
-  public int compareTo(IDeviceID other) {
-    if (!(other instanceof PlainDeviceID)) {
-      throw new IllegalArgumentException();
-    }
-    return deviceID.compareTo(((PlainDeviceID) other).deviceID);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/TimeseriesMetadata.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/TimeseriesMetadata.java
deleted file mode 100644
index d5d141d..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/TimeseriesMetadata.java
+++ /dev/null
@@ -1,381 +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.file.metadata;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.controller.IChunkMetadataLoader;
-import org.apache.iotdb.tsfile.read.reader.TsFileInput;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
-import java.util.Set;
-
-import static org.apache.iotdb.tsfile.utils.Preconditions.checkArgument;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfCharArray;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfObjectArray;
-
-public class TimeseriesMetadata implements ITimeSeriesMetadata {
-
-  private static final int INSTANCE_SIZE =
-      (int)
-          (RamUsageEstimator.shallowSizeOfInstance(TimeseriesMetadata.class)
-              + RamUsageEstimator.shallowSizeOfInstance(String.class)
-              + RamUsageEstimator.shallowSizeOfInstance(TSDataType.class)
-              + RamUsageEstimator.shallowSizeOfInstance(ArrayList.class));
-
-  /**
-   * 0 means this time series has only one chunk, no need to save the statistic again in chunk
-   * metadata.
-   *
-   * <p>1 means this time series has more than one chunk, should save the statistic again in chunk
-   * metadata;
-   *
-   * <p>if the 8th bit is 1, it means it is the time column of a vector series;
-   *
-   * <p>if the 7th bit is 1, it means it is the value column of a vector series
-   */
-  private byte timeSeriesMetadataType;
-
-  private int chunkMetaDataListDataSize;
-
-  private String measurementId;
-  private TSDataType dataType;
-
-  private Statistics<? extends Serializable> statistics;
-
-  // modified is true when there are modifications of the series, or from unseq file
-  private boolean modified;
-
-  private IChunkMetadataLoader chunkMetadataLoader;
-
-  // used for SeriesReader to indicate whether it is a seq/unseq timeseries metadata
-  private boolean isSeq = true;
-
-  // used to save chunk metadata list while serializing
-  private PublicBAOS chunkMetadataListBuffer;
-
-  private ArrayList<IChunkMetadata> chunkMetadataList;
-
-  public TimeseriesMetadata() {}
-
-  public TimeseriesMetadata(
-      byte timeSeriesMetadataType,
-      int chunkMetaDataListDataSize,
-      String measurementId,
-      TSDataType dataType,
-      Statistics<? extends Serializable> statistics,
-      PublicBAOS chunkMetadataListBuffer) {
-    this.timeSeriesMetadataType = timeSeriesMetadataType;
-    this.chunkMetaDataListDataSize = chunkMetaDataListDataSize;
-    this.measurementId = measurementId;
-    this.dataType = dataType;
-    this.statistics = statistics;
-    this.chunkMetadataListBuffer = chunkMetadataListBuffer;
-  }
-
-  public TimeseriesMetadata(TimeseriesMetadata timeseriesMetadata) {
-    this.timeSeriesMetadataType = timeseriesMetadata.timeSeriesMetadataType;
-    this.chunkMetaDataListDataSize = timeseriesMetadata.chunkMetaDataListDataSize;
-    this.measurementId = timeseriesMetadata.measurementId;
-    this.dataType = timeseriesMetadata.dataType;
-    this.statistics = timeseriesMetadata.statistics;
-    this.modified = timeseriesMetadata.modified;
-    // we won't change the list in query process so it's safe to directly assign it without copying
-    // new one
-    this.chunkMetadataList = timeseriesMetadata.chunkMetadataList;
-  }
-
-  public static TimeseriesMetadata deserializeFrom(ByteBuffer buffer, boolean needChunkMetadata) {
-    TimeseriesMetadata timeseriesMetaData = new TimeseriesMetadata();
-    timeseriesMetaData.setTimeSeriesMetadataType(ReadWriteIOUtils.readByte(buffer));
-    timeseriesMetaData.setMeasurementId(ReadWriteIOUtils.readVarIntString(buffer));
-    timeseriesMetaData.setTsDataType(ReadWriteIOUtils.readDataType(buffer));
-    int chunkMetaDataListDataSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-    timeseriesMetaData.setDataSizeOfChunkMetaDataList(chunkMetaDataListDataSize);
-    timeseriesMetaData.setStatistics(Statistics.deserialize(buffer, timeseriesMetaData.dataType));
-    if (needChunkMetadata) {
-      ByteBuffer byteBuffer = buffer.slice();
-      byteBuffer.limit(chunkMetaDataListDataSize);
-      timeseriesMetaData.chunkMetadataList = new ArrayList<>();
-      while (byteBuffer.hasRemaining()) {
-        timeseriesMetaData.chunkMetadataList.add(
-            ChunkMetadata.deserializeFrom(byteBuffer, timeseriesMetaData));
-      }
-      // minimize the storage of an ArrayList instance.
-      timeseriesMetaData.chunkMetadataList.trimToSize();
-    }
-    buffer.position(buffer.position() + chunkMetaDataListDataSize);
-    return timeseriesMetaData;
-  }
-
-  public static TimeseriesMetadata deserializeFrom(
-      TsFileInput tsFileInput, boolean needChunkMetadata) throws IOException {
-    InputStream inputStream = tsFileInput.wrapAsInputStream();
-    TimeseriesMetadata timeseriesMetaData = new TimeseriesMetadata();
-    timeseriesMetaData.setTimeSeriesMetadataType(ReadWriteIOUtils.readByte(inputStream));
-    timeseriesMetaData.setMeasurementId(ReadWriteIOUtils.readVarIntString(inputStream));
-    timeseriesMetaData.setTsDataType(ReadWriteIOUtils.readDataType(inputStream));
-    int chunkMetaDataListDataSize = ReadWriteForEncodingUtils.readUnsignedVarInt(inputStream);
-    timeseriesMetaData.setDataSizeOfChunkMetaDataList(chunkMetaDataListDataSize);
-    timeseriesMetaData.setStatistics(
-        Statistics.deserialize(inputStream, timeseriesMetaData.dataType));
-    long startOffset = tsFileInput.position();
-    if (needChunkMetadata) {
-      timeseriesMetaData.chunkMetadataList = new ArrayList<>();
-      while (tsFileInput.position() < startOffset + chunkMetaDataListDataSize) {
-        timeseriesMetaData.chunkMetadataList.add(
-            ChunkMetadata.deserializeFrom(inputStream, timeseriesMetaData));
-      }
-      // minimize the storage of an ArrayList instance.
-      timeseriesMetaData.chunkMetadataList.trimToSize();
-    } else {
-      tsFileInput.position(startOffset + chunkMetaDataListDataSize);
-    }
-    return timeseriesMetaData;
-  }
-
-  /**
-   * Return timeseries metadata without deserializing chunk metadatas if excludedMeasurements
-   * contains the measurementId of this timeseries metadata or needChunkMetadata is false.
-   */
-  public static TimeseriesMetadata deserializeFrom(
-      ByteBuffer buffer, Set<String> excludedMeasurements, boolean needChunkMetadata) {
-    byte timeseriesType = ReadWriteIOUtils.readByte(buffer);
-    String measurementID = ReadWriteIOUtils.readVarIntString(buffer);
-    TSDataType tsDataType = ReadWriteIOUtils.readDataType(buffer);
-    int chunkMetaDataListDataSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-    Statistics<? extends Serializable> statistics = Statistics.deserialize(buffer, tsDataType);
-
-    TimeseriesMetadata timeseriesMetaData = new TimeseriesMetadata();
-    timeseriesMetaData.setMeasurementId(measurementID);
-    timeseriesMetaData.setTimeSeriesMetadataType(timeseriesType);
-    timeseriesMetaData.setTsDataType(tsDataType);
-    timeseriesMetaData.setDataSizeOfChunkMetaDataList(chunkMetaDataListDataSize);
-    timeseriesMetaData.setStatistics(statistics);
-
-    if (!excludedMeasurements.contains(measurementID) && needChunkMetadata) {
-      // measurement is not in the excluded set and need chunk metadata
-      ByteBuffer byteBuffer = buffer.slice();
-      byteBuffer.limit(chunkMetaDataListDataSize);
-      timeseriesMetaData.chunkMetadataList = new ArrayList<>();
-      while (byteBuffer.hasRemaining()) {
-        timeseriesMetaData.chunkMetadataList.add(
-            ChunkMetadata.deserializeFrom(byteBuffer, timeseriesMetaData));
-      }
-      // minimize the storage of an ArrayList instance.
-      timeseriesMetaData.chunkMetadataList.trimToSize();
-    }
-    buffer.position(buffer.position() + chunkMetaDataListDataSize);
-    return timeseriesMetaData;
-  }
-
-  /**
-   * serialize to outputStream.
-   *
-   * @param outputStream outputStream
-   * @return byte length
-   * @throws IOException IOException
-   */
-  public int serializeTo(OutputStream outputStream) throws IOException {
-    int byteLen = 0;
-    byteLen += ReadWriteIOUtils.write(timeSeriesMetadataType, outputStream);
-    byteLen += ReadWriteIOUtils.writeVar(measurementId, outputStream);
-    byteLen += ReadWriteIOUtils.write(dataType, outputStream);
-    byteLen +=
-        ReadWriteForEncodingUtils.writeUnsignedVarInt(chunkMetaDataListDataSize, outputStream);
-    byteLen += statistics.serialize(outputStream);
-    chunkMetadataListBuffer.writeTo(outputStream);
-    byteLen += chunkMetadataListBuffer.size();
-    return byteLen;
-  }
-
-  public byte getTimeSeriesMetadataType() {
-    return timeSeriesMetadataType;
-  }
-
-  public void setTimeSeriesMetadataType(byte timeSeriesMetadataType) {
-    this.timeSeriesMetadataType = timeSeriesMetadataType;
-  }
-
-  public String getMeasurementId() {
-    return measurementId;
-  }
-
-  public void setMeasurementId(String measurementId) {
-    this.measurementId = measurementId;
-  }
-
-  public int getDataSizeOfChunkMetaDataList() {
-    return chunkMetaDataListDataSize;
-  }
-
-  public void setDataSizeOfChunkMetaDataList(int size) {
-    this.chunkMetaDataListDataSize = size;
-  }
-
-  public TSDataType getTsDataType() {
-    return dataType;
-  }
-
-  public void setTsDataType(TSDataType tsDataType) {
-    this.dataType = tsDataType;
-  }
-
-  @Override
-  public Statistics<? extends Serializable> getStatistics() {
-    return statistics;
-  }
-
-  public void setStatistics(Statistics<? extends Serializable> statistics) {
-    this.statistics = statistics;
-  }
-
-  @Override
-  public Statistics<? extends Serializable> getTimeStatistics() {
-    return getStatistics();
-  }
-
-  @Override
-  public Optional<Statistics<? extends Serializable>> getMeasurementStatistics(
-      int measurementIndex) {
-    checkArgument(
-        measurementIndex == 0,
-        "Non-aligned timeseries only has one measurement, but measurementIndex is "
-            + measurementIndex);
-    return Optional.ofNullable(statistics);
-  }
-
-  @Override
-  public boolean hasNullValue(int measurementIndex) {
-    return false;
-  }
-
-  public void setChunkMetadataLoader(IChunkMetadataLoader chunkMetadataLoader) {
-    this.chunkMetadataLoader = chunkMetadataLoader;
-  }
-
-  @Override
-  public boolean typeMatch(List<TSDataType> dataTypes) {
-    return typeMatch(dataTypes.get(0));
-  }
-
-  public boolean typeMatch(TSDataType dataType) {
-    return this.dataType == dataType;
-  }
-
-  @Override
-  public List<IChunkMetadata> loadChunkMetadataList() {
-    return chunkMetadataLoader.loadChunkMetadataList(this);
-  }
-
-  public List<IChunkMetadata> getChunkMetadataList() {
-    return chunkMetadataList;
-  }
-
-  public List<IChunkMetadata> getCopiedChunkMetadataList() {
-    List<IChunkMetadata> res = new ArrayList<>(chunkMetadataList.size());
-    for (IChunkMetadata chunkMetadata : chunkMetadataList) {
-      res.add(new ChunkMetadata((ChunkMetadata) chunkMetadata));
-    }
-    return res;
-  }
-
-  @Override
-  public boolean isModified() {
-    return modified;
-  }
-
-  @Override
-  public void setModified(boolean modified) {
-    this.modified = modified;
-  }
-
-  @Override
-  public void setSeq(boolean seq) {
-    isSeq = seq;
-  }
-
-  @Override
-  public boolean isSeq() {
-    return isSeq;
-  }
-
-  // For Test Only
-  public void setChunkMetadataListBuffer(PublicBAOS chunkMetadataListBuffer) {
-    this.chunkMetadataListBuffer = chunkMetadataListBuffer;
-  }
-
-  // For reading version-2 only
-  public void setChunkMetadataList(List<ChunkMetadata> chunkMetadataList) {
-    this.chunkMetadataList = new ArrayList<>(chunkMetadataList);
-  }
-
-  // it's only used for query cache, field chunkMetadataListBuffer and chunkMetadataLoader should
-  // always be null
-  public long getRetainedSizeInBytes() {
-    long retainedSize =
-        INSTANCE_SIZE
-            + sizeOfCharArray(measurementId.length())
-            + (statistics == null ? 0 : statistics.getRetainedSizeInBytes());
-    int length = chunkMetadataList == null ? 0 : chunkMetadataList.size();
-    if (length > 0) {
-      retainedSize += sizeOfObjectArray(length);
-      for (IChunkMetadata chunkMetadata : chunkMetadataList) {
-        retainedSize +=
-            chunkMetadata == null ? 0 : ((ChunkMetadata) chunkMetadata).getRetainedSizeInBytes();
-      }
-    }
-    return retainedSize;
-  }
-
-  @Override
-  public String toString() {
-    return "TimeseriesMetadata{"
-        + "timeSeriesMetadataType="
-        + timeSeriesMetadataType
-        + ", chunkMetaDataListDataSize="
-        + chunkMetaDataListDataSize
-        + ", measurementId='"
-        + measurementId
-        + '\''
-        + ", dataType="
-        + dataType
-        + ", statistics="
-        + statistics
-        + ", modified="
-        + modified
-        + ", isSeq="
-        + isSeq
-        + ", chunkMetadataList="
-        + chunkMetadataList
-        + '}';
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/TsFileMetadata.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/TsFileMetadata.java
deleted file mode 100644
index e3a4af9..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/TsFileMetadata.java
+++ /dev/null
@@ -1,128 +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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.file.metadata;
-
-import org.apache.iotdb.tsfile.utils.BloomFilter;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-
-/** TSFileMetaData collects all metadata info and saves in its data structure. */
-public class TsFileMetadata {
-
-  // bloom filter
-  private BloomFilter bloomFilter;
-
-  // List of <name, offset, childMetadataIndexType>
-  private MetadataIndexNode metadataIndex;
-
-  // offset of MetaMarker.SEPARATOR
-  private long metaOffset;
-
-  /**
-   * deserialize data from the buffer.
-   *
-   * @param buffer -buffer use to deserialize
-   * @return -a instance of TsFileMetaData
-   */
-  public static TsFileMetadata deserializeFrom(ByteBuffer buffer) {
-    TsFileMetadata fileMetaData = new TsFileMetadata();
-
-    // metadataIndex
-    fileMetaData.metadataIndex = MetadataIndexNode.deserializeFrom(buffer, true);
-
-    // metaOffset
-    long metaOffset = ReadWriteIOUtils.readLong(buffer);
-    fileMetaData.setMetaOffset(metaOffset);
-
-    // read bloom filter
-    if (buffer.hasRemaining()) {
-      byte[] bytes = ReadWriteIOUtils.readByteBufferWithSelfDescriptionLength(buffer);
-      int filterSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-      int hashFunctionSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-      fileMetaData.bloomFilter = BloomFilter.buildBloomFilter(bytes, filterSize, hashFunctionSize);
-    }
-
-    return fileMetaData;
-  }
-
-  public BloomFilter getBloomFilter() {
-    return bloomFilter;
-  }
-
-  public void setBloomFilter(BloomFilter bloomFilter) {
-    this.bloomFilter = bloomFilter;
-  }
-
-  /**
-   * use the given outputStream to serialize.
-   *
-   * @param outputStream -output stream to determine byte length
-   * @return -byte length
-   * @throws IOException error when operating outputStream
-   */
-  public int serializeTo(OutputStream outputStream) throws IOException {
-    int byteLen = 0;
-
-    // metadataIndex
-    if (metadataIndex != null) {
-      byteLen += metadataIndex.serializeTo(outputStream);
-    } else {
-      byteLen += ReadWriteIOUtils.write(0, outputStream);
-    }
-
-    // metaOffset
-    byteLen += ReadWriteIOUtils.write(metaOffset, outputStream);
-
-    return byteLen;
-  }
-
-  public int serializeBloomFilter(OutputStream outputStream, BloomFilter filter)
-      throws IOException {
-    int byteLen = 0;
-    byte[] bytes = filter.serialize();
-    byteLen += ReadWriteForEncodingUtils.writeUnsignedVarInt(bytes.length, outputStream);
-    outputStream.write(bytes);
-    byteLen += bytes.length;
-    byteLen += ReadWriteForEncodingUtils.writeUnsignedVarInt(filter.getSize(), outputStream);
-    byteLen +=
-        ReadWriteForEncodingUtils.writeUnsignedVarInt(filter.getHashFunctionSize(), outputStream);
-    return byteLen;
-  }
-
-  public long getMetaOffset() {
-    return metaOffset;
-  }
-
-  public void setMetaOffset(long metaOffset) {
-    this.metaOffset = metaOffset;
-  }
-
-  public MetadataIndexNode getMetadataIndex() {
-    return metadataIndex;
-  }
-
-  public void setMetadataIndex(MetadataIndexNode metadataIndex) {
-    this.metadataIndex = metadataIndex;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/enums/CompressionType.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/enums/CompressionType.java
deleted file mode 100644
index c1b65d6..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/enums/CompressionType.java
+++ /dev/null
@@ -1,97 +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.file.metadata.enums;
-
-public enum CompressionType {
-  /** Do not comprocess. */
-  UNCOMPRESSED("", (byte) 0),
-
-  /** SNAPPY. */
-  SNAPPY(".snappy", (byte) 1),
-
-  /** GZIP. */
-  GZIP(".gzip", (byte) 2),
-
-  /** LZ4. */
-  // NOTICE: To ensure the compatibility of existing files, do not change the byte LZ4 binds to.
-  LZ4(".lz4", (byte) 7),
-
-  /** ZSTD. */
-  ZSTD(".zstd", (byte) 8),
-
-  /** LZMA2. */
-  LZMA2(".lzma2", (byte) 9);
-
-  private final String extensionName;
-  private final byte index;
-
-  CompressionType(String extensionName, byte index) {
-    this.extensionName = extensionName;
-    this.index = index;
-  }
-
-  /**
-   * deserialize byte number.
-   *
-   * @param compressor byte number
-   * @return CompressionType
-   * @throws IllegalArgumentException illegal argument
-   */
-  public static CompressionType deserialize(byte compressor) {
-    switch (compressor) {
-      case 0:
-        return CompressionType.UNCOMPRESSED;
-      case 1:
-        return CompressionType.SNAPPY;
-      case 2:
-        return CompressionType.GZIP;
-      case 7:
-        return CompressionType.LZ4;
-      case 8:
-        return CompressionType.ZSTD;
-      case 9:
-        return CompressionType.LZMA2;
-      default:
-        throw new IllegalArgumentException("Invalid input: " + compressor);
-    }
-  }
-
-  public static int getSerializedSize() {
-    return Byte.BYTES;
-  }
-
-  /**
-   * get serialized size.
-   *
-   * @return byte of index
-   */
-  public byte serialize() {
-    return this.index;
-  }
-
-  /**
-   * get extension.
-   *
-   * @return extension (string type), for example: .snappy, .gz, .lzo
-   */
-  public String getExtension() {
-    return extensionName;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/enums/MetadataIndexNodeType.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/enums/MetadataIndexNodeType.java
deleted file mode 100644
index b117a0b..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/enums/MetadataIndexNodeType.java
+++ /dev/null
@@ -1,99 +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.file.metadata.enums;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-/**
- * The type of MetadataIndexNode.
- *
- * <p>INTERNAL_DEVICE: internal nodes of the index tree's device level LEAF_DEVICE: leaf nodes of
- * the index tree's device level, points to measurement level INTERNAL_MEASUREMENT: internal nodes
- * of the index tree's measurement level LEAF_MEASUREMENT: leaf nodes of the index tree's device
- * level, points to TimeseriesMetadata
- */
-public enum MetadataIndexNodeType {
-  /** INTERNAL_DEVICE. */
-  INTERNAL_DEVICE((byte) 0),
-
-  /** LEAF_DEVICE. */
-  LEAF_DEVICE((byte) 1),
-
-  /** INTERNAL_MEASUREMENT. */
-  INTERNAL_MEASUREMENT((byte) 2),
-
-  /** LEAF_MEASUREMENT. */
-  LEAF_MEASUREMENT((byte) 3);
-
-  private final byte type;
-
-  MetadataIndexNodeType(byte type) {
-    this.type = type;
-  }
-
-  /**
-   * deserialize byte number.
-   *
-   * @param i byte number
-   * @return MetadataIndexNodeType
-   * @throws IllegalArgumentException illegal argument
-   */
-  public static MetadataIndexNodeType deserialize(byte i) {
-    switch (i) {
-      case 0:
-        return MetadataIndexNodeType.INTERNAL_DEVICE;
-      case 1:
-        return MetadataIndexNodeType.LEAF_DEVICE;
-      case 2:
-        return MetadataIndexNodeType.INTERNAL_MEASUREMENT;
-      case 3:
-        return MetadataIndexNodeType.LEAF_MEASUREMENT;
-      default:
-        throw new IllegalArgumentException("Invalid input: " + i);
-    }
-  }
-
-  public static MetadataIndexNodeType deserializeFrom(ByteBuffer buffer) {
-    return deserialize(buffer.get());
-  }
-
-  public static int getSerializedSize() {
-    return Byte.BYTES;
-  }
-
-  public void serializeTo(ByteBuffer byteBuffer) {
-    byteBuffer.put(serialize());
-  }
-
-  public void serializeTo(DataOutputStream outputStream) throws IOException {
-    outputStream.write(serialize());
-  }
-
-  /**
-   * return a serialize child metadata index type.
-   *
-   * @return -enum type
-   */
-  public byte serialize() {
-    return type;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/enums/TSEncoding.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/enums/TSEncoding.java
deleted file mode 100644
index 56cecda..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/enums/TSEncoding.java
+++ /dev/null
@@ -1,99 +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.file.metadata.enums;
-
-public enum TSEncoding {
-  PLAIN((byte) 0),
-  DICTIONARY((byte) 1),
-  RLE((byte) 2),
-  DIFF((byte) 3),
-  TS_2DIFF((byte) 4),
-  BITMAP((byte) 5),
-  GORILLA_V1((byte) 6),
-  REGULAR((byte) 7),
-  GORILLA((byte) 8),
-  ZIGZAG((byte) 9),
-  @Deprecated
-  FREQ((byte) 10),
-  CHIMP((byte) 11),
-  SPRINTZ((byte) 12),
-  RLBE((byte) 13);
-  private final byte type;
-
-  TSEncoding(byte type) {
-    this.type = type;
-  }
-
-  /**
-   * judge the encoding deserialize type.
-   *
-   * @param encoding -use to determine encoding type
-   * @return -encoding type
-   */
-  public static TSEncoding deserialize(byte encoding) {
-    return getTsEncoding(encoding);
-  }
-
-  private static TSEncoding getTsEncoding(byte encoding) {
-    switch (encoding) {
-      case 0:
-        return TSEncoding.PLAIN;
-      case 1:
-        return TSEncoding.DICTIONARY;
-      case 2:
-        return TSEncoding.RLE;
-      case 3:
-        return TSEncoding.DIFF;
-      case 4:
-        return TSEncoding.TS_2DIFF;
-      case 5:
-        return TSEncoding.BITMAP;
-      case 6:
-        return TSEncoding.GORILLA_V1;
-      case 7:
-        return TSEncoding.REGULAR;
-      case 8:
-        return TSEncoding.GORILLA;
-      case 9:
-        return TSEncoding.ZIGZAG;
-      case 11:
-        return TSEncoding.CHIMP;
-      case 12:
-        return TSEncoding.SPRINTZ;
-      case 13:
-        return TSEncoding.RLBE;
-      default:
-        throw new IllegalArgumentException("Invalid input: " + encoding);
-    }
-  }
-
-  public static int getSerializedSize() {
-    return Byte.BYTES;
-  }
-
-  /**
-   * judge the encoding deserialize type.
-   *
-   * @return -encoding type
-   */
-  public byte serialize() {
-    return type;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/BinaryStatistics.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/BinaryStatistics.java
deleted file mode 100644
index c359afe..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/BinaryStatistics.java
+++ /dev/null
@@ -1,204 +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.file.metadata.statistics;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.filter.StatisticsClassException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-import java.util.Objects;
-
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfCharArray;
-
-/** Statistics for string type. */
-public class BinaryStatistics extends Statistics<Binary> {
-
-  public static final long INSTANCE_SIZE =
-      RamUsageEstimator.shallowSizeOfInstance(BinaryStatistics.class)
-          + 2 * RamUsageEstimator.shallowSizeOfInstance(Binary.class);
-
-  private static final Binary EMPTY_VALUE = new Binary("", TSFileConfig.STRING_CHARSET);
-
-  private Binary firstValue = EMPTY_VALUE;
-  private Binary lastValue = EMPTY_VALUE;
-
-  @Override
-  public TSDataType getType() {
-    return TSDataType.TEXT;
-  }
-
-  /** The output of this method should be identical to the method "serializeStats(outputStream)". */
-  @Override
-  public int getStatsSize() {
-    return 4 + firstValue.getValues().length + 4 + lastValue.getValues().length;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return INSTANCE_SIZE
-        + sizeOfCharArray(firstValue.getLength())
-        + sizeOfCharArray(lastValue.getLength());
-  }
-
-  /**
-   * initialize Statistics.
-   *
-   * @param first the first value
-   * @param last the last value
-   */
-  public void initializeStats(Binary first, Binary last) {
-    this.firstValue = first;
-    this.lastValue = last;
-  }
-
-  private void updateLastStats(Binary lastValue) {
-    this.lastValue = lastValue;
-  }
-
-  private void updateStats(Binary firstValue, Binary lastValue, long startTime, long endTime) {
-    // only if endTime greater or equals to the current endTime need we update the last value
-    // only if startTime less or equals to the current startTime need we update the first value
-    // otherwise, just ignore
-    if (startTime <= this.getStartTime()) {
-      this.firstValue = firstValue;
-    }
-    if (endTime >= this.getEndTime()) {
-      this.lastValue = lastValue;
-    }
-  }
-
-  @Override
-  public Binary getMinValue() {
-    throw new StatisticsClassException(
-        String.format(STATS_UNSUPPORTED_MSG, TSDataType.TEXT, "min"));
-  }
-
-  @Override
-  public Binary getMaxValue() {
-    throw new StatisticsClassException(
-        String.format(STATS_UNSUPPORTED_MSG, TSDataType.TEXT, "max"));
-  }
-
-  @Override
-  public Binary getFirstValue() {
-    return firstValue;
-  }
-
-  @Override
-  public Binary getLastValue() {
-    return lastValue;
-  }
-
-  @Override
-  public double getSumDoubleValue() {
-    throw new StatisticsClassException(
-        String.format(STATS_UNSUPPORTED_MSG, TSDataType.TEXT, "double sum"));
-  }
-
-  @Override
-  public long getSumLongValue() {
-    throw new StatisticsClassException(
-        String.format(STATS_UNSUPPORTED_MSG, TSDataType.TEXT, "long sum"));
-  }
-
-  @Override
-  protected void mergeStatisticsValue(Statistics<Binary> stats) {
-    BinaryStatistics stringStats = (BinaryStatistics) stats;
-    if (isEmpty) {
-      initializeStats(stringStats.getFirstValue(), stringStats.getLastValue());
-      isEmpty = false;
-    } else {
-      updateStats(
-          stringStats.getFirstValue(),
-          stringStats.getLastValue(),
-          stats.getStartTime(),
-          stats.getEndTime());
-    }
-  }
-
-  @Override
-  void updateStats(Binary value) {
-    if (isEmpty) {
-      initializeStats(value, value);
-      isEmpty = false;
-    } else {
-      updateLastStats(value);
-    }
-  }
-
-  @Override
-  void updateStats(Binary[] values, int batchSize) {
-    for (int i = 0; i < batchSize; i++) {
-      updateStats(values[i]);
-    }
-  }
-
-  @Override
-  public int serializeStats(OutputStream outputStream) throws IOException {
-    int byteLen = 0;
-    byteLen += ReadWriteIOUtils.write(firstValue, outputStream);
-    byteLen += ReadWriteIOUtils.write(lastValue, outputStream);
-    return byteLen;
-  }
-
-  @Override
-  public void deserialize(InputStream inputStream) throws IOException {
-    this.firstValue = ReadWriteIOUtils.readBinary(inputStream);
-    this.lastValue = ReadWriteIOUtils.readBinary(inputStream);
-  }
-
-  @Override
-  public void deserialize(ByteBuffer byteBuffer) {
-    this.firstValue = ReadWriteIOUtils.readBinary(byteBuffer);
-    this.lastValue = ReadWriteIOUtils.readBinary(byteBuffer);
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    if (!super.equals(o)) {
-      return false;
-    }
-    BinaryStatistics that = (BinaryStatistics) o;
-    return Objects.equals(firstValue, that.firstValue) && Objects.equals(lastValue, that.lastValue);
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), firstValue, lastValue);
-  }
-
-  @Override
-  public String toString() {
-    return super.toString() + " [firstValue:" + firstValue + ",lastValue:" + lastValue + "]";
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/BooleanStatistics.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/BooleanStatistics.java
deleted file mode 100644
index 663fa18..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/BooleanStatistics.java
+++ /dev/null
@@ -1,211 +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.file.metadata.statistics;
-
-import org.apache.iotdb.tsfile.exception.filter.StatisticsClassException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-import java.util.Objects;
-
-public class BooleanStatistics extends Statistics<Boolean> {
-
-  public static final long INSTANCE_SIZE =
-      RamUsageEstimator.shallowSizeOfInstance(BooleanStatistics.class);
-
-  private boolean firstValue;
-  private boolean lastValue;
-  private long sumValue;
-
-  @Override
-  public TSDataType getType() {
-    return TSDataType.BOOLEAN;
-  }
-
-  /** The output of this method should be identical to the method "serializeStats(outputStream)". */
-  @Override
-  public int getStatsSize() {
-    return 10;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return INSTANCE_SIZE;
-  }
-
-  /**
-   * initialize boolean Statistics.
-   *
-   * @param firstValue first boolean value
-   * @param lastValue last boolean value
-   */
-  public void initializeStats(boolean firstValue, boolean lastValue, long sum) {
-    this.firstValue = firstValue;
-    this.lastValue = lastValue;
-    this.sumValue = sum;
-  }
-
-  private void updateStats(boolean lastValue, long sum) {
-    this.lastValue = lastValue;
-    this.sumValue += sum;
-  }
-
-  private void updateStats(
-      boolean firstValue, boolean lastValue, long startTime, long endTime, long sum) {
-    // only if endTime greater or equals to the current endTime need we update the last value
-    // only if startTime less or equals to the current startTime need we update the first value
-    // otherwise, just ignore
-    if (startTime <= this.getStartTime()) {
-      this.firstValue = firstValue;
-    }
-    if (endTime >= this.getEndTime()) {
-      this.lastValue = lastValue;
-    }
-    this.sumValue += sum;
-  }
-
-  @Override
-  void updateStats(boolean value) {
-    if (isEmpty) {
-      initializeStats(value, value, value ? 1 : 0);
-      isEmpty = false;
-    } else {
-      updateStats(value, value ? 1 : 0);
-    }
-  }
-
-  @Override
-  void updateStats(boolean[] values, int batchSize) {
-    for (int i = 0; i < batchSize; i++) {
-      updateStats(values[i]);
-    }
-  }
-
-  @Override
-  public Boolean getMinValue() {
-    throw new StatisticsClassException(
-        String.format(STATS_UNSUPPORTED_MSG, TSDataType.BOOLEAN, "min"));
-  }
-
-  @Override
-  public Boolean getMaxValue() {
-    throw new StatisticsClassException(
-        String.format(STATS_UNSUPPORTED_MSG, TSDataType.BOOLEAN, "max"));
-  }
-
-  @Override
-  public Boolean getFirstValue() {
-    return firstValue;
-  }
-
-  @Override
-  public Boolean getLastValue() {
-    return lastValue;
-  }
-
-  @Override
-  public double getSumDoubleValue() {
-    throw new StatisticsClassException(
-        String.format(STATS_UNSUPPORTED_MSG, TSDataType.BOOLEAN, "double sum"));
-  }
-
-  @Override
-  public long getSumLongValue() {
-    return sumValue;
-  }
-
-  @Override
-  protected void mergeStatisticsValue(Statistics<Boolean> stats) {
-    BooleanStatistics boolStats = (BooleanStatistics) stats;
-    if (isEmpty) {
-      initializeStats(boolStats.getFirstValue(), boolStats.getLastValue(), boolStats.sumValue);
-      isEmpty = false;
-    } else {
-      updateStats(
-          boolStats.getFirstValue(),
-          boolStats.getLastValue(),
-          stats.getStartTime(),
-          stats.getEndTime(),
-          boolStats.sumValue);
-    }
-  }
-
-  @Override
-  public int serializeStats(OutputStream outputStream) throws IOException {
-    int byteLen = 0;
-    byteLen += ReadWriteIOUtils.write(firstValue, outputStream);
-    byteLen += ReadWriteIOUtils.write(lastValue, outputStream);
-    byteLen += ReadWriteIOUtils.write(sumValue, outputStream);
-    return byteLen;
-  }
-
-  @Override
-  public void deserialize(InputStream inputStream) throws IOException {
-    this.firstValue = ReadWriteIOUtils.readBool(inputStream);
-    this.lastValue = ReadWriteIOUtils.readBool(inputStream);
-    this.sumValue = ReadWriteIOUtils.readLong(inputStream);
-  }
-
-  @Override
-  public void deserialize(ByteBuffer byteBuffer) {
-    this.firstValue = ReadWriteIOUtils.readBool(byteBuffer);
-    this.lastValue = ReadWriteIOUtils.readBool(byteBuffer);
-    this.sumValue = ReadWriteIOUtils.readLong(byteBuffer);
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    if (!super.equals(o)) {
-      return false;
-    }
-    BooleanStatistics that = (BooleanStatistics) o;
-    return firstValue == that.firstValue
-        && lastValue == that.lastValue
-        && sumValue == that.sumValue;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), firstValue, lastValue, sumValue);
-  }
-
-  @Override
-  public String toString() {
-    return super.toString()
-        + " [firstValue="
-        + firstValue
-        + ", lastValue="
-        + lastValue
-        + ", sumValue="
-        + sumValue
-        + ']';
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/DoubleStatistics.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/DoubleStatistics.java
deleted file mode 100644
index 8ebc251..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/DoubleStatistics.java
+++ /dev/null
@@ -1,254 +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.file.metadata.statistics;
-
-import org.apache.iotdb.tsfile.exception.filter.StatisticsClassException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-import java.util.Objects;
-
-public class DoubleStatistics extends Statistics<Double> {
-
-  public static final long INSTANCE_SIZE =
-      RamUsageEstimator.shallowSizeOfInstance(DoubleStatistics.class);
-
-  private double minValue;
-  private double maxValue;
-  private double firstValue;
-  private double lastValue;
-  private double sumValue;
-
-  @Override
-  public TSDataType getType() {
-    return TSDataType.DOUBLE;
-  }
-
-  /** The output of this method should be identical to the method "serializeStats(outputStream)". */
-  @Override
-  public int getStatsSize() {
-    return 40;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return INSTANCE_SIZE;
-  }
-
-  /**
-   * initialize double statistics.
-   *
-   * @param min min value
-   * @param max max value
-   * @param first the first value
-   * @param last the last value
-   * @param sum sum value
-   */
-  public void initializeStats(double min, double max, double first, double last, double sum) {
-    this.minValue = min;
-    this.maxValue = max;
-    this.firstValue = first;
-    this.lastValue = last;
-    this.sumValue = sum;
-  }
-
-  private void updateStats(double minValue, double maxValue, double lastValue, double sumValue) {
-    if (minValue < this.minValue) {
-      this.minValue = minValue;
-    }
-    if (maxValue > this.maxValue) {
-      this.maxValue = maxValue;
-    }
-    this.sumValue += sumValue;
-    this.lastValue = lastValue;
-  }
-
-  private void updateStats(
-      double minValue,
-      double maxValue,
-      double firstValue,
-      double lastValue,
-      double sumValue,
-      long startTime,
-      long endTime) {
-    if (minValue < this.minValue) {
-      this.minValue = minValue;
-    }
-    if (maxValue > this.maxValue) {
-      this.maxValue = maxValue;
-    }
-    this.sumValue += sumValue;
-    // only if endTime greater or equals to the current endTime need we update the last value
-    // only if startTime less or equals to the current startTime need we update the first value
-    // otherwise, just ignore
-    if (startTime <= this.getStartTime()) {
-      this.firstValue = firstValue;
-    }
-    if (endTime >= this.getEndTime()) {
-      this.lastValue = lastValue;
-    }
-  }
-
-  @Override
-  void updateStats(double value) {
-    if (this.isEmpty) {
-      initializeStats(value, value, value, value, value);
-      isEmpty = false;
-    } else {
-      updateStats(value, value, value, value);
-    }
-  }
-
-  @Override
-  void updateStats(double[] values, int batchSize) {
-    for (int i = 0; i < batchSize; i++) {
-      updateStats(values[i]);
-    }
-  }
-
-  @Override
-  public Double getMinValue() {
-    return minValue;
-  }
-
-  @Override
-  public Double getMaxValue() {
-    return maxValue;
-  }
-
-  @Override
-  public Double getFirstValue() {
-    return firstValue;
-  }
-
-  @Override
-  public Double getLastValue() {
-    return lastValue;
-  }
-
-  @Override
-  public double getSumDoubleValue() {
-    return sumValue;
-  }
-
-  @Override
-  public long getSumLongValue() {
-    throw new StatisticsClassException(
-        String.format(STATS_UNSUPPORTED_MSG, TSDataType.DOUBLE, "long sum"));
-  }
-
-  @Override
-  protected void mergeStatisticsValue(Statistics<Double> stats) {
-    DoubleStatistics doubleStats = (DoubleStatistics) stats;
-    if (this.isEmpty) {
-      initializeStats(
-          doubleStats.getMinValue(),
-          doubleStats.getMaxValue(),
-          doubleStats.getFirstValue(),
-          doubleStats.getLastValue(),
-          doubleStats.sumValue);
-      isEmpty = false;
-    } else {
-      updateStats(
-          doubleStats.getMinValue(),
-          doubleStats.getMaxValue(),
-          doubleStats.getFirstValue(),
-          doubleStats.getLastValue(),
-          doubleStats.sumValue,
-          stats.getStartTime(),
-          stats.getEndTime());
-    }
-  }
-
-  @Override
-  public int serializeStats(OutputStream outputStream) throws IOException {
-    int byteLen = 0;
-    byteLen += ReadWriteIOUtils.write(minValue, outputStream);
-    byteLen += ReadWriteIOUtils.write(maxValue, outputStream);
-    byteLen += ReadWriteIOUtils.write(firstValue, outputStream);
-    byteLen += ReadWriteIOUtils.write(lastValue, outputStream);
-    byteLen += ReadWriteIOUtils.write(sumValue, outputStream);
-    return byteLen;
-  }
-
-  @Override
-  public void deserialize(InputStream inputStream) throws IOException {
-    this.minValue = ReadWriteIOUtils.readDouble(inputStream);
-    this.maxValue = ReadWriteIOUtils.readDouble(inputStream);
-    this.firstValue = ReadWriteIOUtils.readDouble(inputStream);
-    this.lastValue = ReadWriteIOUtils.readDouble(inputStream);
-    this.sumValue = ReadWriteIOUtils.readDouble(inputStream);
-  }
-
-  @Override
-  public void deserialize(ByteBuffer byteBuffer) {
-    this.minValue = ReadWriteIOUtils.readDouble(byteBuffer);
-    this.maxValue = ReadWriteIOUtils.readDouble(byteBuffer);
-    this.firstValue = ReadWriteIOUtils.readDouble(byteBuffer);
-    this.lastValue = ReadWriteIOUtils.readDouble(byteBuffer);
-    this.sumValue = ReadWriteIOUtils.readDouble(byteBuffer);
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    if (!super.equals(o)) {
-      return false;
-    }
-    double e = 0.00001;
-    DoubleStatistics that = (DoubleStatistics) o;
-    return Math.abs(that.minValue - minValue) < e
-        && Math.abs(that.maxValue - maxValue) < e
-        && Math.abs(that.firstValue - firstValue) < e
-        && Math.abs(that.lastValue - lastValue) < e
-        && Math.abs(that.sumValue - sumValue) < e;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), minValue, maxValue, firstValue, lastValue, sumValue);
-  }
-
-  @Override
-  public String toString() {
-    return super.toString()
-        + " [minValue:"
-        + minValue
-        + ",maxValue:"
-        + maxValue
-        + ",firstValue:"
-        + firstValue
-        + ",lastValue:"
-        + lastValue
-        + ",sumValue:"
-        + sumValue
-        + "]";
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/FloatStatistics.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/FloatStatistics.java
deleted file mode 100644
index 31f1c89..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/FloatStatistics.java
+++ /dev/null
@@ -1,245 +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.file.metadata.statistics;
-
-import org.apache.iotdb.tsfile.exception.filter.StatisticsClassException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-import java.util.Objects;
-
-/** Statistics for float type. */
-public class FloatStatistics extends Statistics<Float> {
-
-  public static final long INSTANCE_SIZE =
-      RamUsageEstimator.shallowSizeOfInstance(FloatStatistics.class);
-
-  private float minValue;
-  private float maxValue;
-  private float firstValue;
-  private float lastValue;
-  private double sumValue;
-
-  @Override
-  public TSDataType getType() {
-    return TSDataType.FLOAT;
-  }
-
-  /** The output of this method should be identical to the method "serializeStats(outputStream)". */
-  @Override
-  public int getStatsSize() {
-    return 24;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return INSTANCE_SIZE;
-  }
-
-  public void initializeStats(float min, float max, float first, float last, double sum) {
-    this.minValue = min;
-    this.maxValue = max;
-    this.firstValue = first;
-    this.lastValue = last;
-    this.sumValue = sum;
-  }
-
-  private void updateStats(float minValue, float maxValue, float last, double sumValue) {
-    if (minValue < this.minValue) {
-      this.minValue = minValue;
-    }
-    if (maxValue > this.maxValue) {
-      this.maxValue = maxValue;
-    }
-    this.sumValue += sumValue;
-    this.lastValue = last;
-  }
-
-  private void updateStats(
-      float minValue,
-      float maxValue,
-      float first,
-      float last,
-      double sumValue,
-      long startTime,
-      long endTime) {
-    if (minValue < this.minValue) {
-      this.minValue = minValue;
-    }
-    if (maxValue > this.maxValue) {
-      this.maxValue = maxValue;
-    }
-    this.sumValue += sumValue;
-    // only if endTime greater or equals to the current endTime need we update the last value
-    // only if startTime less or equals to the current startTime need we update the first value
-    // otherwise, just ignore
-    if (startTime <= this.getStartTime()) {
-      this.firstValue = first;
-    }
-    if (endTime >= this.getEndTime()) {
-      this.lastValue = last;
-    }
-  }
-
-  @Override
-  void updateStats(float value) {
-    if (this.isEmpty) {
-      initializeStats(value, value, value, value, value);
-      isEmpty = false;
-    } else {
-      updateStats(value, value, value, value);
-    }
-  }
-
-  @Override
-  void updateStats(float[] values, int batchSize) {
-    for (int i = 0; i < batchSize; i++) {
-      updateStats(values[i]);
-    }
-  }
-
-  @Override
-  public Float getMinValue() {
-    return minValue;
-  }
-
-  @Override
-  public Float getMaxValue() {
-    return maxValue;
-  }
-
-  @Override
-  public Float getFirstValue() {
-    return firstValue;
-  }
-
-  @Override
-  public Float getLastValue() {
-    return lastValue;
-  }
-
-  @Override
-  public double getSumDoubleValue() {
-    return sumValue;
-  }
-
-  @Override
-  public long getSumLongValue() {
-    throw new StatisticsClassException(
-        String.format(STATS_UNSUPPORTED_MSG, TSDataType.FLOAT, "long sum"));
-  }
-
-  @Override
-  protected void mergeStatisticsValue(Statistics<Float> stats) {
-    FloatStatistics floatStats = (FloatStatistics) stats;
-    if (isEmpty) {
-      initializeStats(
-          floatStats.getMinValue(),
-          floatStats.getMaxValue(),
-          floatStats.getFirstValue(),
-          floatStats.getLastValue(),
-          floatStats.sumValue);
-      isEmpty = false;
-    } else {
-      updateStats(
-          floatStats.getMinValue(),
-          floatStats.getMaxValue(),
-          floatStats.getFirstValue(),
-          floatStats.getLastValue(),
-          floatStats.sumValue,
-          stats.getStartTime(),
-          stats.getEndTime());
-    }
-  }
-
-  @Override
-  public int serializeStats(OutputStream outputStream) throws IOException {
-    int byteLen = 0;
-    byteLen += ReadWriteIOUtils.write(minValue, outputStream);
-    byteLen += ReadWriteIOUtils.write(maxValue, outputStream);
-    byteLen += ReadWriteIOUtils.write(firstValue, outputStream);
-    byteLen += ReadWriteIOUtils.write(lastValue, outputStream);
-    byteLen += ReadWriteIOUtils.write(sumValue, outputStream);
-    return byteLen;
-  }
-
-  @Override
-  public void deserialize(InputStream inputStream) throws IOException {
-    this.minValue = ReadWriteIOUtils.readFloat(inputStream);
-    this.maxValue = ReadWriteIOUtils.readFloat(inputStream);
-    this.firstValue = ReadWriteIOUtils.readFloat(inputStream);
-    this.lastValue = ReadWriteIOUtils.readFloat(inputStream);
-    this.sumValue = ReadWriteIOUtils.readDouble(inputStream);
-  }
-
-  @Override
-  public void deserialize(ByteBuffer byteBuffer) {
-    this.minValue = ReadWriteIOUtils.readFloat(byteBuffer);
-    this.maxValue = ReadWriteIOUtils.readFloat(byteBuffer);
-    this.firstValue = ReadWriteIOUtils.readFloat(byteBuffer);
-    this.lastValue = ReadWriteIOUtils.readFloat(byteBuffer);
-    this.sumValue = ReadWriteIOUtils.readDouble(byteBuffer);
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    if (!super.equals(o)) {
-      return false;
-    }
-    double e = 0.00001;
-    FloatStatistics that = (FloatStatistics) o;
-    return Math.abs(that.minValue - minValue) < e
-        && Math.abs(that.maxValue - maxValue) < e
-        && Math.abs(that.firstValue - firstValue) < e
-        && Math.abs(that.lastValue - lastValue) < e
-        && Math.abs(that.sumValue - sumValue) < e;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), minValue, maxValue, firstValue, lastValue, sumValue);
-  }
-
-  @Override
-  public String toString() {
-    return super.toString()
-        + " [minValue:"
-        + minValue
-        + ",maxValue:"
-        + maxValue
-        + ",firstValue:"
-        + firstValue
-        + ",lastValue:"
-        + lastValue
-        + ",sumValue:"
-        + sumValue
-        + "]";
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/IntegerStatistics.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/IntegerStatistics.java
deleted file mode 100644
index b4fd18b..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/IntegerStatistics.java
+++ /dev/null
@@ -1,245 +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.file.metadata.statistics;
-
-import org.apache.iotdb.tsfile.exception.filter.StatisticsClassException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-import java.util.Objects;
-
-/** Statistics for int type. */
-public class IntegerStatistics extends Statistics<Integer> {
-
-  public static final long INSTANCE_SIZE =
-      RamUsageEstimator.shallowSizeOfInstance(IntegerStatistics.class);
-
-  private int minValue;
-  private int maxValue;
-  private int firstValue;
-  private int lastValue;
-  private long sumValue;
-
-  @Override
-  public TSDataType getType() {
-    return TSDataType.INT32;
-  }
-
-  /** The output of this method should be identical to the method "serializeStats(outputStream)". */
-  @Override
-  public int getStatsSize() {
-    return 24;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return INSTANCE_SIZE;
-  }
-
-  public void initializeStats(int min, int max, int first, int last, long sum) {
-    this.minValue = min;
-    this.maxValue = max;
-    this.firstValue = first;
-    this.lastValue = last;
-    this.sumValue = sum;
-  }
-
-  private void updateStats(int minValue, int maxValue, int lastValue, long sumValue) {
-    if (minValue < this.minValue) {
-      this.minValue = minValue;
-    }
-    if (maxValue > this.maxValue) {
-      this.maxValue = maxValue;
-    }
-    this.sumValue += sumValue;
-    this.lastValue = lastValue;
-  }
-
-  private void updateStats(
-      int minValue,
-      int maxValue,
-      int firstValue,
-      int lastValue,
-      long sumValue,
-      long startTime,
-      long endTime) {
-    if (minValue < this.minValue) {
-      this.minValue = minValue;
-    }
-    if (maxValue > this.maxValue) {
-      this.maxValue = maxValue;
-    }
-    this.sumValue += sumValue;
-    // only if endTime greater or equals to the current endTime need we update the last value
-    // only if startTime less or equals to the current startTime need we update the first value
-    // otherwise, just ignore
-    if (startTime <= this.getStartTime()) {
-      this.firstValue = firstValue;
-    }
-    if (endTime >= this.getEndTime()) {
-      this.lastValue = lastValue;
-    }
-  }
-
-  @Override
-  void updateStats(int value) {
-    if (isEmpty) {
-      initializeStats(value, value, value, value, value);
-      isEmpty = false;
-    } else {
-      updateStats(value, value, value, value);
-    }
-  }
-
-  @Override
-  void updateStats(int[] values, int batchSize) {
-    for (int i = 0; i < batchSize; i++) {
-      updateStats(values[i]);
-    }
-  }
-
-  @Override
-  public Integer getMinValue() {
-    return minValue;
-  }
-
-  @Override
-  public Integer getMaxValue() {
-    return maxValue;
-  }
-
-  @Override
-  public Integer getFirstValue() {
-    return firstValue;
-  }
-
-  @Override
-  public Integer getLastValue() {
-    return lastValue;
-  }
-
-  @Override
-  public double getSumDoubleValue() {
-    throw new StatisticsClassException(
-        String.format(STATS_UNSUPPORTED_MSG, TSDataType.INT32, "double sum"));
-  }
-
-  @Override
-  public long getSumLongValue() {
-    return sumValue;
-  }
-
-  @Override
-  protected void mergeStatisticsValue(Statistics<Integer> stats) {
-    IntegerStatistics intStats = (IntegerStatistics) stats;
-    if (isEmpty) {
-      initializeStats(
-          intStats.getMinValue(),
-          intStats.getMaxValue(),
-          intStats.getFirstValue(),
-          intStats.getLastValue(),
-          intStats.sumValue);
-      isEmpty = false;
-    } else {
-      updateStats(
-          intStats.getMinValue(),
-          intStats.getMaxValue(),
-          intStats.getFirstValue(),
-          intStats.getLastValue(),
-          intStats.sumValue,
-          stats.getStartTime(),
-          stats.getEndTime());
-    }
-  }
-
-  @Override
-  public int serializeStats(OutputStream outputStream) throws IOException {
-    int byteLen = 0;
-    byteLen += ReadWriteIOUtils.write(minValue, outputStream);
-    byteLen += ReadWriteIOUtils.write(maxValue, outputStream);
-    byteLen += ReadWriteIOUtils.write(firstValue, outputStream);
-    byteLen += ReadWriteIOUtils.write(lastValue, outputStream);
-    byteLen += ReadWriteIOUtils.write(sumValue, outputStream);
-    return byteLen;
-  }
-
-  @Override
-  public void deserialize(InputStream inputStream) throws IOException {
-    this.minValue = ReadWriteIOUtils.readInt(inputStream);
-    this.maxValue = ReadWriteIOUtils.readInt(inputStream);
-    this.firstValue = ReadWriteIOUtils.readInt(inputStream);
-    this.lastValue = ReadWriteIOUtils.readInt(inputStream);
-    this.sumValue = ReadWriteIOUtils.readLong(inputStream);
-  }
-
-  @Override
-  public void deserialize(ByteBuffer byteBuffer) {
-    this.minValue = ReadWriteIOUtils.readInt(byteBuffer);
-    this.maxValue = ReadWriteIOUtils.readInt(byteBuffer);
-    this.firstValue = ReadWriteIOUtils.readInt(byteBuffer);
-    this.lastValue = ReadWriteIOUtils.readInt(byteBuffer);
-    this.sumValue = ReadWriteIOUtils.readLong(byteBuffer);
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    if (!super.equals(o)) {
-      return false;
-    }
-    IntegerStatistics that = (IntegerStatistics) o;
-    return minValue == that.minValue
-        && maxValue == that.maxValue
-        && firstValue == that.firstValue
-        && lastValue == that.lastValue
-        && sumValue == that.sumValue;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), minValue, maxValue, firstValue, lastValue, sumValue);
-  }
-
-  @Override
-  public String toString() {
-    return super.toString()
-        + " [minValue:"
-        + minValue
-        + ",maxValue:"
-        + maxValue
-        + ",firstValue:"
-        + firstValue
-        + ",lastValue:"
-        + lastValue
-        + ",sumValue:"
-        + sumValue
-        + "]";
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/LongStatistics.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/LongStatistics.java
deleted file mode 100644
index 8798dfd..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/LongStatistics.java
+++ /dev/null
@@ -1,254 +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.file.metadata.statistics;
-
-import org.apache.iotdb.tsfile.exception.filter.StatisticsClassException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-import java.util.Objects;
-
-public class LongStatistics extends Statistics<Long> {
-
-  public static final long INSTANCE_SIZE =
-      RamUsageEstimator.shallowSizeOfInstance(LongStatistics.class);
-
-  private long minValue;
-  private long maxValue;
-  private long firstValue;
-  private long lastValue;
-  private double sumValue;
-
-  @Override
-  public TSDataType getType() {
-    return TSDataType.INT64;
-  }
-
-  /** The output of this method should be identical to the method "serializeStats(outputStream)". */
-  @Override
-  public int getStatsSize() {
-    return 40;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return INSTANCE_SIZE;
-  }
-
-  public void initializeStats(long min, long max, long firstValue, long last, double sum) {
-    this.minValue = min;
-    this.maxValue = max;
-    this.firstValue = firstValue;
-    this.lastValue = last;
-    this.sumValue += sum;
-  }
-
-  @Override
-  public Long getMinValue() {
-    return minValue;
-  }
-
-  @Override
-  public Long getMaxValue() {
-    return maxValue;
-  }
-
-  @Override
-  public Long getFirstValue() {
-    return firstValue;
-  }
-
-  @Override
-  public Long getLastValue() {
-    return lastValue;
-  }
-
-  @Override
-  public double getSumDoubleValue() {
-    return sumValue;
-  }
-
-  @Override
-  public long getSumLongValue() {
-    throw new StatisticsClassException(
-        String.format(STATS_UNSUPPORTED_MSG, TSDataType.INT64, "long sum"));
-  }
-
-  @Override
-  void updateStats(long value) {
-    if (isEmpty) {
-      initializeStats(value, value, value, value, value);
-      isEmpty = false;
-    } else {
-      updateStats(value, value, value, value);
-    }
-  }
-
-  @Override
-  void updateStats(long[] values, int batchSize) {
-    for (int i = 0; i < batchSize; i++) {
-      updateStats(values[i]);
-    }
-  }
-
-  @Override
-  public void updateStats(long minValue, long maxValue) {
-    if (minValue < this.minValue) {
-      this.minValue = minValue;
-    }
-    if (maxValue > this.maxValue) {
-      this.maxValue = maxValue;
-    }
-  }
-
-  private void updateStats(long minValue, long maxValue, long lastValue, double sumValue) {
-    if (minValue < this.minValue) {
-      this.minValue = minValue;
-    }
-    if (maxValue > this.maxValue) {
-      this.maxValue = maxValue;
-    }
-    this.sumValue += sumValue;
-    this.lastValue = lastValue;
-  }
-
-  private void updateStats(
-      long minValue,
-      long maxValue,
-      long firstValue,
-      long lastValue,
-      double sumValue,
-      long startTime,
-      long endTime) {
-    if (minValue < this.minValue) {
-      this.minValue = minValue;
-    }
-    if (maxValue > this.maxValue) {
-      this.maxValue = maxValue;
-    }
-    this.sumValue += sumValue;
-    // only if endTime greater or equals to the current endTime need we update the last value
-    // only if startTime less or equals to the current startTime need we update the first value
-    // otherwise, just ignore
-    if (startTime <= this.getStartTime()) {
-      this.firstValue = firstValue;
-    }
-    if (endTime >= this.getEndTime()) {
-      this.lastValue = lastValue;
-    }
-  }
-
-  @Override
-  protected void mergeStatisticsValue(Statistics<Long> stats) {
-    LongStatistics longStats = (LongStatistics) stats;
-    if (isEmpty) {
-      initializeStats(
-          longStats.getMinValue(),
-          longStats.getMaxValue(),
-          longStats.getFirstValue(),
-          longStats.getLastValue(),
-          longStats.sumValue);
-      isEmpty = false;
-    } else {
-      updateStats(
-          longStats.getMinValue(),
-          longStats.getMaxValue(),
-          longStats.getFirstValue(),
-          longStats.getLastValue(),
-          longStats.sumValue,
-          stats.getStartTime(),
-          stats.getEndTime());
-    }
-  }
-
-  @Override
-  public int serializeStats(OutputStream outputStream) throws IOException {
-    int byteLen = 0;
-    byteLen += ReadWriteIOUtils.write(minValue, outputStream);
-    byteLen += ReadWriteIOUtils.write(maxValue, outputStream);
-    byteLen += ReadWriteIOUtils.write(firstValue, outputStream);
-    byteLen += ReadWriteIOUtils.write(lastValue, outputStream);
-    byteLen += ReadWriteIOUtils.write(sumValue, outputStream);
-    return byteLen;
-  }
-
-  @Override
-  public void deserialize(InputStream inputStream) throws IOException {
-    this.minValue = ReadWriteIOUtils.readLong(inputStream);
-    this.maxValue = ReadWriteIOUtils.readLong(inputStream);
-    this.firstValue = ReadWriteIOUtils.readLong(inputStream);
-    this.lastValue = ReadWriteIOUtils.readLong(inputStream);
-    this.sumValue = ReadWriteIOUtils.readDouble(inputStream);
-  }
-
-  @Override
-  public void deserialize(ByteBuffer byteBuffer) {
-    this.minValue = ReadWriteIOUtils.readLong(byteBuffer);
-    this.maxValue = ReadWriteIOUtils.readLong(byteBuffer);
-    this.firstValue = ReadWriteIOUtils.readLong(byteBuffer);
-    this.lastValue = ReadWriteIOUtils.readLong(byteBuffer);
-    this.sumValue = ReadWriteIOUtils.readDouble(byteBuffer);
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    if (!super.equals(o)) {
-      return false;
-    }
-    LongStatistics that = (LongStatistics) o;
-    return minValue == that.minValue
-        && maxValue == that.maxValue
-        && firstValue == that.firstValue
-        && lastValue == that.lastValue
-        && Double.compare(that.sumValue, sumValue) == 0;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), minValue, maxValue, firstValue, lastValue, sumValue);
-  }
-
-  @Override
-  public String toString() {
-    return super.toString()
-        + " [minValue:"
-        + minValue
-        + ",maxValue:"
-        + maxValue
-        + ",firstValue:"
-        + firstValue
-        + ",lastValue:"
-        + lastValue
-        + ",sumValue:"
-        + sumValue
-        + "]";
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/Statistics.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/Statistics.java
deleted file mode 100644
index 61224a9..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/Statistics.java
+++ /dev/null
@@ -1,420 +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.file.metadata.statistics;
-
-import org.apache.iotdb.tsfile.exception.filter.StatisticsClassException;
-import org.apache.iotdb.tsfile.exception.write.UnknownColumnTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.util.Objects;
-
-/**
- * This class is used for recording statistic information of each measurement in a delta file. While
- * writing processing, the processor records the statistics information. Statistics includes
- * maximum, minimum and null value count up to version 0.0.1.<br>
- * Each data type extends this Statistic as super class.<br>
- * <br>
- * For the statistics in the Unseq file TimeSeriesMetadata, only firstValue, lastValue, startTime
- * and endTime can be used.</br>
- */
-public abstract class Statistics<T extends Serializable> {
-
-  private static final Logger LOG = LoggerFactory.getLogger(Statistics.class);
-  /**
-   * isEmpty being false means this statistic has been initialized and the max and min is not null.
-   */
-  protected boolean isEmpty = true;
-
-  /** number of time-value points. */
-  private int count = 0;
-
-  private long startTime = Long.MAX_VALUE;
-  private long endTime = Long.MIN_VALUE;
-
-  static final String STATS_UNSUPPORTED_MSG = "%s statistics does not support: %s";
-
-  /**
-   * static method providing statistic instance for respective data type.
-   *
-   * @param type - data type
-   * @return Statistics
-   * @throws UnknownColumnTypeException if the type is unknown
-   */
-  public static Statistics<? extends Serializable> getStatsByType(TSDataType type) {
-    switch (type) {
-      case INT32:
-        return new IntegerStatistics();
-      case INT64:
-        return new LongStatistics();
-      case TEXT:
-        return new BinaryStatistics();
-      case BOOLEAN:
-        return new BooleanStatistics();
-      case DOUBLE:
-        return new DoubleStatistics();
-      case FLOAT:
-        return new FloatStatistics();
-      case VECTOR:
-        return new TimeStatistics();
-      default:
-        throw new UnknownColumnTypeException(type.toString());
-    }
-  }
-
-  public static long getSizeByType(TSDataType type) {
-    switch (type) {
-      case INT32:
-        return IntegerStatistics.INSTANCE_SIZE;
-      case INT64:
-        return LongStatistics.INSTANCE_SIZE;
-      case TEXT:
-        return BinaryStatistics.INSTANCE_SIZE;
-      case BOOLEAN:
-        return BooleanStatistics.INSTANCE_SIZE;
-      case DOUBLE:
-        return DoubleStatistics.INSTANCE_SIZE;
-      case FLOAT:
-        return FloatStatistics.INSTANCE_SIZE;
-      case VECTOR:
-        return TimeStatistics.INSTANCE_SIZE;
-      default:
-        throw new UnknownColumnTypeException(type.toString());
-    }
-  }
-
-  public abstract TSDataType getType();
-
-  public int getSerializedSize() {
-    return ReadWriteForEncodingUtils.uVarIntSize(count) // count
-        + 16 // startTime, endTime
-        + getStatsSize();
-  }
-
-  public abstract int getStatsSize();
-
-  public abstract long getRetainedSizeInBytes();
-
-  public int serialize(OutputStream outputStream) throws IOException {
-    int byteLen = 0;
-    byteLen += ReadWriteForEncodingUtils.writeUnsignedVarInt(count, outputStream);
-    byteLen += ReadWriteIOUtils.write(startTime, outputStream);
-    byteLen += ReadWriteIOUtils.write(endTime, outputStream);
-    // value statistics of different data type
-    byteLen += serializeStats(outputStream);
-    return byteLen;
-  }
-
-  abstract int serializeStats(OutputStream outputStream) throws IOException;
-
-  /**
-   * deserialize data from the inputStream.
-   *
-   * @param inputStream input stream
-   * @throws IOException exception when operating stream
-   */
-  public abstract void deserialize(InputStream inputStream) throws IOException;
-
-  public abstract void deserialize(ByteBuffer byteBuffer);
-
-  public static Statistics<? extends Serializable> deserialize(
-      InputStream inputStream, TSDataType dataType) throws IOException {
-    Statistics<? extends Serializable> statistics = getStatsByType(dataType);
-    statistics.setCount(ReadWriteForEncodingUtils.readUnsignedVarInt(inputStream));
-    statistics.setStartTime(ReadWriteIOUtils.readLong(inputStream));
-    statistics.setEndTime(ReadWriteIOUtils.readLong(inputStream));
-    statistics.deserialize(inputStream);
-    statistics.isEmpty = false;
-    return statistics;
-  }
-
-  public static Statistics<? extends Serializable> deserialize(
-      ByteBuffer buffer, TSDataType dataType) {
-    Statistics<? extends Serializable> statistics = getStatsByType(dataType);
-    statistics.setCount(ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-    statistics.setStartTime(ReadWriteIOUtils.readLong(buffer));
-    statistics.setEndTime(ReadWriteIOUtils.readLong(buffer));
-    statistics.deserialize(buffer);
-    statistics.isEmpty = false;
-    return statistics;
-  }
-
-  public abstract T getMinValue();
-
-  public abstract T getMaxValue();
-
-  public abstract T getFirstValue();
-
-  public abstract T getLastValue();
-
-  public abstract double getSumDoubleValue();
-
-  public abstract long getSumLongValue();
-
-  /**
-   * merge parameter to this statistic.
-   *
-   * @throws StatisticsClassException cannot merge statistics
-   */
-  @SuppressWarnings("unchecked")
-  public void mergeStatistics(Statistics<? extends Serializable> stats) {
-    if (this.getClass() == stats.getClass()) {
-      if (!stats.isEmpty) {
-        if (stats.startTime < this.startTime) {
-          this.startTime = stats.startTime;
-        }
-        if (stats.endTime > this.endTime) {
-          this.endTime = stats.endTime;
-        }
-        // must be sure no overlap between two statistics
-        this.count += stats.count;
-        mergeStatisticsValue((Statistics<T>) stats);
-        isEmpty = false;
-      }
-    } else {
-      Class<?> thisClass = this.getClass();
-      Class<?> statsClass = stats.getClass();
-      LOG.warn("Statistics classes mismatched,no merge: {} v.s. {}", thisClass, statsClass);
-
-      throw new StatisticsClassException(thisClass, statsClass);
-    }
-  }
-
-  public void update(long time, boolean value) {
-    update(time);
-    updateStats(value);
-  }
-
-  public void update(long time, int value) {
-    update(time);
-    updateStats(value);
-  }
-
-  public void update(long time, long value) {
-    update(time);
-    updateStats(value);
-  }
-
-  public void update(long time, float value) {
-    update(time);
-    updateStats(value);
-  }
-
-  public void update(long time, double value) {
-    update(time);
-    updateStats(value);
-  }
-
-  public void update(long time, Binary value) {
-    update(time);
-    updateStats(value);
-  }
-
-  public void update(long time) {
-    if (time < startTime) {
-      startTime = time;
-    }
-    if (time > endTime) {
-      endTime = time;
-    }
-    count++;
-  }
-
-  public void update(long[] time, boolean[] values, int batchSize) {
-    update(time, batchSize);
-    updateStats(values, batchSize);
-  }
-
-  public void update(long[] time, int[] values, int batchSize) {
-    update(time, batchSize);
-    updateStats(values, batchSize);
-  }
-
-  public void update(long[] time, long[] values, int batchSize) {
-    update(time, batchSize);
-    updateStats(values, batchSize);
-  }
-
-  public void update(long[] time, float[] values, int batchSize) {
-    update(time, batchSize);
-    updateStats(values, batchSize);
-  }
-
-  public void update(long[] time, double[] values, int batchSize) {
-    update(time, batchSize);
-    updateStats(values, batchSize);
-  }
-
-  public void update(long[] time, Binary[] values, int batchSize) {
-    update(time, batchSize);
-    updateStats(values, batchSize);
-  }
-
-  public void update(long[] time, int batchSize) {
-    if (time[0] < startTime) {
-      startTime = time[0];
-    }
-    if (time[batchSize - 1] > this.endTime) {
-      endTime = time[batchSize - 1];
-    }
-    count += batchSize;
-  }
-
-  public void update(long[] time, int batchSize, int arrayOffset) {
-    if (time[arrayOffset] < startTime) {
-      startTime = time[arrayOffset];
-    }
-    if (time[arrayOffset + batchSize - 1] > this.endTime) {
-      endTime = time[arrayOffset + batchSize - 1];
-    }
-    count += batchSize;
-  }
-
-  protected abstract void mergeStatisticsValue(Statistics<T> stats);
-
-  public boolean isEmpty() {
-    return isEmpty;
-  }
-
-  public void setEmpty(boolean empty) {
-    isEmpty = empty;
-  }
-
-  void updateStats(boolean value) {
-    throw new UnsupportedOperationException();
-  }
-
-  void updateStats(int value) {
-    throw new UnsupportedOperationException();
-  }
-
-  void updateStats(long value) {
-    throw new UnsupportedOperationException();
-  }
-
-  void updateStats(float value) {
-    throw new UnsupportedOperationException();
-  }
-
-  void updateStats(double value) {
-    throw new UnsupportedOperationException();
-  }
-
-  void updateStats(Binary value) {
-    throw new UnsupportedOperationException();
-  }
-
-  void updateStats(boolean[] values, int batchSize) {
-    throw new UnsupportedOperationException();
-  }
-
-  void updateStats(int[] values, int batchSize) {
-    throw new UnsupportedOperationException();
-  }
-
-  void updateStats(long[] values, int batchSize) {
-    throw new UnsupportedOperationException();
-  }
-
-  void updateStats(float[] values, int batchSize) {
-    throw new UnsupportedOperationException();
-  }
-
-  void updateStats(double[] values, int batchSize) {
-    throw new UnsupportedOperationException();
-  }
-
-  void updateStats(Binary[] values, int batchSize) {
-    throw new UnsupportedOperationException();
-  }
-
-  /**
-   * This method with two parameters is only used by {@code unsequence} which
-   * updates/inserts/deletes timestamp.
-   *
-   * @param min min timestamp
-   * @param max max timestamp
-   * @throws UnsupportedOperationException throw exception when executing this method
-   */
-  public void updateStats(long min, long max) {
-    throw new UnsupportedOperationException();
-  }
-
-  public long getStartTime() {
-    return startTime;
-  }
-
-  public long getEndTime() {
-    return endTime;
-  }
-
-  public long getCount() {
-    return count;
-  }
-
-  public void setStartTime(long startTime) {
-    this.startTime = startTime;
-  }
-
-  public void setEndTime(long endTime) {
-    this.endTime = endTime;
-  }
-
-  public void setCount(int count) {
-    this.count = count;
-  }
-
-  public boolean containedByTimeFilter(Filter timeFilter) {
-    return timeFilter == null || timeFilter.containStartEndTime(getStartTime(), getEndTime());
-  }
-
-  public boolean hasNullValue(long timeRowCount) {
-    return getCount() != timeRowCount;
-  }
-
-  @Override
-  public String toString() {
-    return "startTime: " + startTime + " endTime: " + endTime + " count: " + count;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    return o != null && getClass() == o.getClass();
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), count, startTime, endTime);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/TimeStatistics.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/TimeStatistics.java
deleted file mode 100644
index c6d31ba..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/TimeStatistics.java
+++ /dev/null
@@ -1,135 +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.file.metadata.statistics;
-
-import org.apache.iotdb.tsfile.exception.filter.StatisticsClassException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-
-public class TimeStatistics extends Statistics<Long> {
-
-  public static final long INSTANCE_SIZE =
-      RamUsageEstimator.shallowSizeOfInstance(TimeStatistics.class);
-
-  private static final String TIME = "Time";
-  private static final String UPDATE_STATS = "update stats";
-
-  @Override
-  public TSDataType getType() {
-    return TSDataType.VECTOR;
-  }
-
-  /** The output of this method should be identical to the method "serializeStats(outputStream)". */
-  @Override
-  public int getStatsSize() {
-    return 0;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return INSTANCE_SIZE;
-  }
-
-  @Override
-  public void update(long time) {
-    super.update(time);
-    setEmpty(false);
-  }
-
-  @Override
-  public void update(long[] time, int batchSize) {
-    super.update(time, batchSize);
-    if (batchSize > 0) {
-      setEmpty(false);
-    }
-  }
-
-  @Override
-  public void update(long[] time, int batchSize, int arrayOffset) {
-    super.update(time, batchSize, arrayOffset);
-    if (batchSize > 0) {
-      setEmpty(false);
-    }
-  }
-
-  @Override
-  public Long getMinValue() {
-    throw new StatisticsClassException(String.format(STATS_UNSUPPORTED_MSG, TIME, "min value"));
-  }
-
-  @Override
-  public Long getMaxValue() {
-    throw new StatisticsClassException(String.format(STATS_UNSUPPORTED_MSG, TIME, "max value"));
-  }
-
-  @Override
-  public Long getFirstValue() {
-    throw new StatisticsClassException(String.format(STATS_UNSUPPORTED_MSG, TIME, "first value"));
-  }
-
-  @Override
-  public Long getLastValue() {
-    throw new StatisticsClassException(String.format(STATS_UNSUPPORTED_MSG, TIME, "last value"));
-  }
-
-  @Override
-  public double getSumDoubleValue() {
-    throw new StatisticsClassException(String.format(STATS_UNSUPPORTED_MSG, TIME, "double sum"));
-  }
-
-  @Override
-  public long getSumLongValue() {
-    throw new StatisticsClassException(String.format(STATS_UNSUPPORTED_MSG, TIME, "long sum"));
-  }
-
-  @Override
-  void updateStats(long value) {
-    throw new StatisticsClassException(String.format(STATS_UNSUPPORTED_MSG, TIME, UPDATE_STATS));
-  }
-
-  @Override
-  void updateStats(long[] values, int batchSize) {
-    throw new StatisticsClassException(String.format(STATS_UNSUPPORTED_MSG, TIME, UPDATE_STATS));
-  }
-
-  @Override
-  public void updateStats(long minValue, long maxValue) {
-    throw new StatisticsClassException(String.format(STATS_UNSUPPORTED_MSG, TIME, UPDATE_STATS));
-  }
-
-  @Override
-  protected void mergeStatisticsValue(Statistics<Long> stats) {}
-
-  @Override
-  public int serializeStats(OutputStream outputStream) {
-    return 0;
-  }
-
-  @Override
-  public void deserialize(InputStream inputStream) throws IOException {}
-
-  @Override
-  public void deserialize(ByteBuffer byteBuffer) {}
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/FSFactoryProducer.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/FSFactoryProducer.java
deleted file mode 100644
index 7694096..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/FSFactoryProducer.java
+++ /dev/null
@@ -1,57 +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.fileSystem;
-
-import org.apache.iotdb.tsfile.fileSystem.fileInputFactory.FileInputFactory;
-import org.apache.iotdb.tsfile.fileSystem.fileInputFactory.HybridFileInputFactory;
-import org.apache.iotdb.tsfile.fileSystem.fileOutputFactory.FileOutputFactory;
-import org.apache.iotdb.tsfile.fileSystem.fileOutputFactory.HybridFileOutputFactory;
-import org.apache.iotdb.tsfile.fileSystem.fsFactory.FSFactory;
-import org.apache.iotdb.tsfile.fileSystem.fsFactory.HybridFSFactory;
-
-public class FSFactoryProducer {
-  private static FSFactory fsFactory = new HybridFSFactory();
-  private static FileInputFactory fileInputFactory = new HybridFileInputFactory();
-  private static FileOutputFactory fileOutputFactory = new HybridFileOutputFactory();
-
-  public static FSFactory getFSFactory() {
-    return fsFactory;
-  }
-
-  public static void setFsFactory(FSFactory fsFactory) {
-    FSFactoryProducer.fsFactory = fsFactory;
-  }
-
-  public static FileInputFactory getFileInputFactory() {
-    return fileInputFactory;
-  }
-
-  public static void setFileInputFactory(FileInputFactory fileInputFactory) {
-    FSFactoryProducer.fileInputFactory = fileInputFactory;
-  }
-
-  public static FileOutputFactory getFileOutputFactory() {
-    return fileOutputFactory;
-  }
-
-  public static void setFileOutputFactory(FileOutputFactory fileOutputFactory) {
-    FSFactoryProducer.fileOutputFactory = fileOutputFactory;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/FSPath.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/FSPath.java
deleted file mode 100644
index cf26786..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/FSPath.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.fileSystem;
-
-public class FSPath {
-  private final FSType fsType;
-  private final String path;
-
-  public FSPath(FSType fsType, String path) {
-    this.fsType = fsType;
-    this.path = path;
-  }
-
-  public FSType getFsType() {
-    return fsType;
-  }
-
-  public String getPath() {
-    return path;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/FSType.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/FSType.java
deleted file mode 100644
index 22e275c..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/FSType.java
+++ /dev/null
@@ -1,26 +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.fileSystem;
-
-public enum FSType {
-  LOCAL,
-  HDFS,
-  OBJECT_STORAGE,
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileInputFactory/FileInputFactory.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileInputFactory/FileInputFactory.java
deleted file mode 100644
index d4ae974..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileInputFactory/FileInputFactory.java
+++ /dev/null
@@ -1,29 +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.fileSystem.fileInputFactory;
-
-import org.apache.iotdb.tsfile.read.reader.TsFileInput;
-
-import java.io.IOException;
-
-public interface FileInputFactory {
-
-  TsFileInput getTsFileInput(String filePath) throws IOException;
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileInputFactory/HDFSInputFactory.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileInputFactory/HDFSInputFactory.java
deleted file mode 100644
index 6735df8..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileInputFactory/HDFSInputFactory.java
+++ /dev/null
@@ -1,61 +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.fileSystem.fileInputFactory;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.read.reader.TsFileInput;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-
-public class HDFSInputFactory implements FileInputFactory {
-
-  private static final Logger logger = LoggerFactory.getLogger(HDFSInputFactory.class);
-  private Constructor constructor;
-
-  public HDFSInputFactory() {
-    try {
-      Class<?> clazz =
-          Class.forName(TSFileDescriptor.getInstance().getConfig().getHdfsTsFileInput());
-      constructor = clazz.getConstructor(String.class);
-    } catch (ClassNotFoundException | NoSuchMethodException e) {
-      logger.error(
-          "Failed to get HDFSInput in Hadoop file system. Please check your dependency of Hadoop module.",
-          e);
-    }
-  }
-
-  @Override
-  public TsFileInput getTsFileInput(String filePath) throws IOException {
-    try {
-      return (TsFileInput) constructor.newInstance(filePath);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      throw new IOException(
-          String.format(
-              "Failed to get TsFile input of file: %s. Please check your dependency of Hadoop module.",
-              filePath),
-          e);
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileInputFactory/HybridFileInputFactory.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileInputFactory/HybridFileInputFactory.java
deleted file mode 100644
index 783f9dc..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileInputFactory/HybridFileInputFactory.java
+++ /dev/null
@@ -1,62 +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.fileSystem.fileInputFactory;
-
-import org.apache.iotdb.tsfile.fileSystem.FSPath;
-import org.apache.iotdb.tsfile.fileSystem.FSType;
-import org.apache.iotdb.tsfile.read.reader.TsFileInput;
-import org.apache.iotdb.tsfile.utils.FSUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-public class HybridFileInputFactory implements FileInputFactory {
-  private static final Logger logger = LoggerFactory.getLogger(HybridFileInputFactory.class);
-  private static final Map<FSType, FileInputFactory> inputFactories = new ConcurrentHashMap<>();
-
-  private FileInputFactory getFileInputFactory(FSType fsType) {
-    return inputFactories.compute(
-        fsType,
-        (k, v) -> {
-          if (v != null) {
-            return v;
-          }
-          switch (fsType) {
-            case LOCAL:
-              return new LocalFSInputFactory();
-            case OBJECT_STORAGE:
-              return new OSFileInputFactory();
-            case HDFS:
-              return new HDFSInputFactory();
-            default:
-              return null;
-          }
-        });
-  }
-
-  @Override
-  public TsFileInput getTsFileInput(String filePath) throws IOException {
-    FSPath path = FSUtils.parse(filePath);
-    return getFileInputFactory(path.getFsType()).getTsFileInput(path.getPath());
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileInputFactory/LocalFSInputFactory.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileInputFactory/LocalFSInputFactory.java
deleted file mode 100644
index 55483d1..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileInputFactory/LocalFSInputFactory.java
+++ /dev/null
@@ -1,34 +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.fileSystem.fileInputFactory;
-
-import org.apache.iotdb.tsfile.read.reader.LocalTsFileInput;
-import org.apache.iotdb.tsfile.read.reader.TsFileInput;
-
-import java.io.IOException;
-import java.nio.file.Paths;
-
-public class LocalFSInputFactory implements FileInputFactory {
-
-  @Override
-  public TsFileInput getTsFileInput(String filePath) throws IOException {
-    return new LocalTsFileInput(Paths.get(filePath));
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileInputFactory/OSFileInputFactory.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileInputFactory/OSFileInputFactory.java
deleted file mode 100644
index ce397f5..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileInputFactory/OSFileInputFactory.java
+++ /dev/null
@@ -1,59 +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.fileSystem.fileInputFactory;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.read.reader.TsFileInput;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-
-public class OSFileInputFactory implements FileInputFactory {
-  private static final Logger logger = LoggerFactory.getLogger(OSFileInputFactory.class);
-  private Constructor constructor;
-
-  public OSFileInputFactory() {
-    try {
-      Class<?> clazz =
-          Class.forName(TSFileDescriptor.getInstance().getConfig().getObjectStorageTsFileInput());
-      constructor = clazz.getConstructor(String.class);
-    } catch (ClassNotFoundException | NoSuchMethodException e) {
-      logger.error(
-          "Failed to get OSInput in object storage. Please check your dependency of object storage module.",
-          e);
-    }
-  }
-
-  @Override
-  public TsFileInput getTsFileInput(String filePath) throws IOException {
-    try {
-      return (TsFileInput) constructor.newInstance(filePath);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      throw new IOException(
-          String.format(
-              "Failed to get TsFile input of file: %s. Please check your dependency of object storage module.",
-              filePath),
-          e);
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileOutputFactory/FileOutputFactory.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileOutputFactory/FileOutputFactory.java
deleted file mode 100644
index cbb113a..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileOutputFactory/FileOutputFactory.java
+++ /dev/null
@@ -1,27 +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.fileSystem.fileOutputFactory;
-
-import org.apache.iotdb.tsfile.write.writer.TsFileOutput;
-
-public interface FileOutputFactory {
-
-  TsFileOutput getTsFileOutput(String filePath, boolean append);
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileOutputFactory/HDFSOutputFactory.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileOutputFactory/HDFSOutputFactory.java
deleted file mode 100644
index 914801d..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileOutputFactory/HDFSOutputFactory.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.fileSystem.fileOutputFactory;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.write.writer.TsFileOutput;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-
-public class HDFSOutputFactory implements FileOutputFactory {
-
-  private static final Logger logger = LoggerFactory.getLogger(HDFSOutputFactory.class);
-  private Constructor constructor;
-
-  public HDFSOutputFactory() {
-    try {
-      Class<?> clazz =
-          Class.forName(TSFileDescriptor.getInstance().getConfig().getHdfsTsFileOutput());
-      constructor = clazz.getConstructor(String.class, boolean.class);
-    } catch (ClassNotFoundException | NoSuchMethodException e) {
-      logger.error(
-          "Failed to get HDFSInput in Hadoop file system. Please check your dependency of Hadoop module.",
-          e);
-    }
-  }
-
-  @Override
-  public TsFileOutput getTsFileOutput(String filePath, boolean append) {
-    try {
-      return (TsFileOutput) constructor.newInstance(filePath, !append);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get TsFile output of file: {}. Please check your dependency of Hadoop module.",
-          filePath,
-          e);
-      return null;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileOutputFactory/HybridFileOutputFactory.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileOutputFactory/HybridFileOutputFactory.java
deleted file mode 100644
index de971cf..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileOutputFactory/HybridFileOutputFactory.java
+++ /dev/null
@@ -1,61 +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.fileSystem.fileOutputFactory;
-
-import org.apache.iotdb.tsfile.fileSystem.FSPath;
-import org.apache.iotdb.tsfile.fileSystem.FSType;
-import org.apache.iotdb.tsfile.utils.FSUtils;
-import org.apache.iotdb.tsfile.write.writer.TsFileOutput;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-public class HybridFileOutputFactory implements FileOutputFactory {
-  private static final Logger logger = LoggerFactory.getLogger(HybridFileOutputFactory.class);
-  private static final Map<FSType, FileOutputFactory> outputFactories = new ConcurrentHashMap<>();
-
-  private FileOutputFactory getFileOutputFactory(FSType fsType) {
-    return outputFactories.compute(
-        fsType,
-        (k, v) -> {
-          if (v != null) {
-            return v;
-          }
-          switch (fsType) {
-            case LOCAL:
-              return new LocalFSOutputFactory();
-            case OBJECT_STORAGE:
-              return new OSFileOutputFactory();
-            case HDFS:
-              return new HDFSOutputFactory();
-            default:
-              return null;
-          }
-        });
-  }
-
-  @Override
-  public TsFileOutput getTsFileOutput(String filePath, boolean append) {
-    FSPath path = FSUtils.parse(filePath);
-    return getFileOutputFactory(path.getFsType()).getTsFileOutput(path.getPath(), append);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileOutputFactory/LocalFSOutputFactory.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileOutputFactory/LocalFSOutputFactory.java
deleted file mode 100644
index 49e1547..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileOutputFactory/LocalFSOutputFactory.java
+++ /dev/null
@@ -1,50 +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.fileSystem.fileOutputFactory;
-
-import org.apache.iotdb.tsfile.write.writer.LocalTsFileOutput;
-import org.apache.iotdb.tsfile.write.writer.TsFileOutput;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-public class LocalFSOutputFactory implements FileOutputFactory {
-
-  private static final Logger logger = LoggerFactory.getLogger(LocalFSOutputFactory.class);
-
-  @Override
-  public TsFileOutput getTsFileOutput(String filePath, boolean append) {
-    try {
-      File file = new File(filePath);
-      File parentDirectory = file.getParentFile();
-      if (parentDirectory != null) {
-        file.getParentFile().mkdirs();
-      }
-      return new LocalTsFileOutput(new FileOutputStream(file, append));
-    } catch (IOException e) {
-      logger.error("Failed to get TsFile output of file: {}, ", filePath, e);
-      return null;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileOutputFactory/OSFileOutputFactory.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileOutputFactory/OSFileOutputFactory.java
deleted file mode 100644
index 9bb723c..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fileOutputFactory/OSFileOutputFactory.java
+++ /dev/null
@@ -1,58 +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.fileSystem.fileOutputFactory;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.write.writer.TsFileOutput;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-
-public class OSFileOutputFactory implements FileOutputFactory {
-  private static final Logger logger = LoggerFactory.getLogger(OSFileOutputFactory.class);
-  private Constructor constructor;
-
-  public OSFileOutputFactory() {
-    try {
-      Class<?> clazz =
-          Class.forName(TSFileDescriptor.getInstance().getConfig().getObjectStorageTsFileOutput());
-      constructor = clazz.getConstructor(String.class, boolean.class);
-    } catch (ClassNotFoundException | NoSuchMethodException e) {
-      logger.error(
-          "Failed to get OSInput in object storage. Please check your dependency of object storage module.",
-          e);
-    }
-  }
-
-  @Override
-  public TsFileOutput getTsFileOutput(String filePath, boolean append) {
-    try {
-      return (TsFileOutput) constructor.newInstance(filePath, !append);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get TsFile output of file: {}. Please check your dependency of object storage module.",
-          filePath,
-          e);
-      return null;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/FSFactory.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/FSFactory.java
deleted file mode 100644
index 0e53690..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/FSFactory.java
+++ /dev/null
@@ -1,150 +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.fileSystem.fsFactory;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
-
-public interface FSFactory {
-
-  /**
-   * get file with parent
-   *
-   * @param pathname pathname
-   * @return file with parent
-   */
-  File getFileWithParent(String pathname);
-
-  /**
-   * get file
-   *
-   * @param pathname pathname
-   * @return file
-   */
-  File getFile(String pathname);
-
-  /**
-   * get file
-   *
-   * @param parent parent file path
-   * @param child child file path
-   * @return file
-   */
-  File getFile(String parent, String child);
-
-  /**
-   * get file
-   *
-   * @param parent parent file
-   * @param child child file path
-   * @return file
-   */
-  File getFile(File parent, String child);
-
-  /**
-   * get file by uri
-   *
-   * @param uri uri
-   * @return file
-   */
-  File getFile(URI uri);
-
-  /**
-   * get buffered reader
-   *
-   * @param filePath file path
-   * @return buffered reader
-   */
-  BufferedReader getBufferedReader(String filePath);
-
-  /**
-   * get buffered reader
-   *
-   * @param filePath file path
-   * @param append whether is append
-   * @return buffered reader
-   */
-  BufferedWriter getBufferedWriter(String filePath, boolean append);
-
-  /**
-   * get input stream
-   *
-   * @param filePath file path
-   * @return input stream
-   */
-  BufferedInputStream getBufferedInputStream(String filePath);
-
-  /**
-   * get output stream
-   *
-   * @param filePath file path
-   * @return output stream
-   */
-  BufferedOutputStream getBufferedOutputStream(String filePath);
-
-  /**
-   * move file
-   *
-   * @param srcFile src file
-   * @param destFile dest file
-   */
-  void moveFile(File srcFile, File destFile) throws IOException;
-
-  /**
-   * copy file
-   *
-   * @param srcFile src file
-   * @param destFile dest file
-   */
-  void copyFile(File srcFile, File destFile) throws IOException;
-
-  /**
-   * list file by suffix
-   *
-   * @param fileFolder file folder
-   * @param suffix suffix
-   * @return list of files
-   */
-  File[] listFilesBySuffix(String fileFolder, String suffix);
-
-  /**
-   * list file by prefix
-   *
-   * @param fileFolder file folder
-   * @param prefix prefix
-   * @return list of files
-   */
-  File[] listFilesByPrefix(String fileFolder, String prefix);
-
-  /**
-   * delete the file if it exists
-   *
-   * @param file local file or HDFS file
-   */
-  boolean deleteIfExists(File file) throws IOException;
-
-  /** Force delete the directory */
-  void deleteDirectory(String dir) throws IOException;
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/HDFSFactory.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/HDFSFactory.java
deleted file mode 100644
index 2699787..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/HDFSFactory.java
+++ /dev/null
@@ -1,269 +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.fileSystem.fsFactory;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.fileSystem.FSType;
-import org.apache.iotdb.tsfile.utils.FSUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.URI;
-
-public class HDFSFactory implements FSFactory {
-
-  private static final Logger logger = LoggerFactory.getLogger(HDFSFactory.class);
-  private Constructor constructorWithPathname;
-  private Constructor constructorWithParentStringAndChild;
-  private Constructor constructorWithParentFileAndChild;
-  private Constructor constructorWithUri;
-  private Method getBufferedReader;
-  private Method getBufferedWriter;
-  private Method getBufferedInputStream;
-  private Method getBufferedOutputStream;
-  private Method listFilesBySuffix;
-  private Method listFilesByPrefix;
-  private Method renameTo;
-  private Method copyToLocal;
-  private Method copyFromLocal;
-  private Method copyTo;
-
-  public HDFSFactory() {
-    try {
-      Class<?> clazz = Class.forName(TSFileDescriptor.getInstance().getConfig().getHdfsFile());
-      constructorWithPathname = clazz.getConstructor(String.class);
-      constructorWithParentStringAndChild = clazz.getConstructor(String.class, String.class);
-      constructorWithParentFileAndChild = clazz.getConstructor(File.class, String.class);
-      constructorWithUri = clazz.getConstructor(URI.class);
-      getBufferedReader = clazz.getMethod("getBufferedReader", String.class);
-      getBufferedWriter = clazz.getMethod("getBufferedWriter", String.class, boolean.class);
-      getBufferedInputStream = clazz.getMethod("getBufferedInputStream", String.class);
-      getBufferedOutputStream = clazz.getMethod("getBufferedOutputStream", String.class);
-      listFilesBySuffix = clazz.getMethod("listFilesBySuffix", String.class, String.class);
-      listFilesByPrefix = clazz.getMethod("listFilesByPrefix", String.class, String.class);
-      renameTo = clazz.getMethod("renameTo", File.class);
-      copyToLocal = clazz.getMethod("copyToLocal", File.class);
-      copyFromLocal = clazz.getMethod("copyFromLocal", File.class);
-      copyTo = clazz.getMethod("copyTo", File.class);
-    } catch (ClassNotFoundException | NoSuchMethodException e) {
-      logger.error(
-          "Failed to get Hadoop file system. Please check your dependency of Hadoop module.", e);
-    }
-  }
-
-  @Override
-  public File getFileWithParent(String pathname) {
-    try {
-      File res = (File) constructorWithPathname.newInstance(pathname);
-      if (!res.exists()) {
-        res.getParentFile().mkdirs();
-      }
-      return res;
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get file: {}. Please check your dependency of Hadoop module.", pathname, e);
-      return null;
-    }
-  }
-
-  @Override
-  public File getFile(String pathname) {
-    try {
-      return (File) constructorWithPathname.newInstance(pathname);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get file: {}. Please check your dependency of Hadoop module.", pathname, e);
-      return null;
-    }
-  }
-
-  @Override
-  public File getFile(String parent, String child) {
-    try {
-      return (File) constructorWithParentStringAndChild.newInstance(parent, child);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get file: {}. Please check your dependency of Hadoop module.",
-          parent + File.separator + child,
-          e);
-      return null;
-    }
-  }
-
-  @Override
-  public File getFile(File parent, String child) {
-    try {
-      return (File) constructorWithParentFileAndChild.newInstance(parent, child);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get file: {}. Please check your dependency of Hadoop module.",
-          parent.getAbsolutePath() + File.separator + child,
-          e);
-      return null;
-    }
-  }
-
-  @Override
-  public File getFile(URI uri) {
-    try {
-      return (File) constructorWithUri.newInstance(uri);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get file: {}. Please check your dependency of Hadoop module.", uri, e);
-      return null;
-    }
-  }
-
-  @Override
-  public BufferedReader getBufferedReader(String filePath) {
-    try {
-      return (BufferedReader)
-          getBufferedReader.invoke(constructorWithPathname.newInstance(filePath), filePath);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get buffered reader for {}. Please check your dependency of Hadoop module.",
-          filePath,
-          e);
-      return null;
-    }
-  }
-
-  @Override
-  public BufferedWriter getBufferedWriter(String filePath, boolean append) {
-    try {
-      return (BufferedWriter)
-          getBufferedWriter.invoke(constructorWithPathname.newInstance(filePath), filePath, append);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get buffered writer for {}. Please check your dependency of Hadoop module.",
-          filePath,
-          e);
-      return null;
-    }
-  }
-
-  @Override
-  public BufferedInputStream getBufferedInputStream(String filePath) {
-    try {
-      return (BufferedInputStream)
-          getBufferedInputStream.invoke(constructorWithPathname.newInstance(filePath), filePath);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get buffered input stream for {}. Please check your dependency of Hadoop module.",
-          filePath,
-          e);
-      return null;
-    }
-  }
-
-  @Override
-  public BufferedOutputStream getBufferedOutputStream(String filePath) {
-    try {
-      return (BufferedOutputStream)
-          getBufferedOutputStream.invoke(constructorWithPathname.newInstance(filePath), filePath);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get buffered output stream for {}. Please check your dependency of Hadoop module.",
-          filePath,
-          e);
-      return null;
-    }
-  }
-
-  @Override
-  public void moveFile(File srcFile, File destFile) throws IOException {
-    try {
-      renameTo.invoke(constructorWithPathname.newInstance(srcFile.getAbsolutePath()), destFile);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      throw new IOException(e);
-    }
-  }
-
-  @Override
-  public void copyFile(File srcFile, File destFile) throws IOException {
-    FSType srcType = FSUtils.getFSType(srcFile);
-    FSType destType = FSUtils.getFSType(destFile);
-    try {
-      if (srcType == FSType.HDFS && destType == FSType.HDFS) {
-        copyTo.invoke(constructorWithPathname.newInstance(srcFile.getAbsolutePath()), destFile);
-      } else if (srcType == FSType.LOCAL) {
-        copyFromLocal.invoke(
-            constructorWithPathname.newInstance(destFile.getAbsolutePath()), srcFile);
-      } else {
-        copyToLocal.invoke(
-            constructorWithPathname.newInstance(srcFile.getAbsolutePath()), destFile);
-      }
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      throw new IOException(e);
-    }
-  }
-
-  @Override
-  public File[] listFilesBySuffix(String fileFolder, String suffix) {
-    try {
-      return (File[])
-          listFilesBySuffix.invoke(
-              constructorWithPathname.newInstance(fileFolder), fileFolder, suffix);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to list files in {} with SUFFIX {}. Please check your dependency of Hadoop module.",
-          fileFolder,
-          suffix,
-          e);
-      return null;
-    }
-  }
-
-  @Override
-  public File[] listFilesByPrefix(String fileFolder, String prefix) {
-    try {
-      return (File[])
-          listFilesByPrefix.invoke(
-              constructorWithPathname.newInstance(fileFolder), fileFolder, prefix);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to list files in {} with PREFIX {}. Please check your dependency of Hadoop module.",
-          fileFolder,
-          prefix,
-          e);
-      return null;
-    }
-  }
-
-  @Override
-  public boolean deleteIfExists(File file) {
-    return file.delete();
-  }
-
-  @Override
-  public void deleteDirectory(String dir) throws IOException {
-    getFile(dir).delete();
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/HybridFSFactory.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/HybridFSFactory.java
deleted file mode 100644
index 1fe30a3..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/HybridFSFactory.java
+++ /dev/null
@@ -1,165 +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.fileSystem.fsFactory;
-
-import org.apache.iotdb.tsfile.fileSystem.FSPath;
-import org.apache.iotdb.tsfile.fileSystem.FSType;
-import org.apache.iotdb.tsfile.utils.FSUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-public class HybridFSFactory implements FSFactory {
-  private static final Logger logger = LoggerFactory.getLogger(HybridFSFactory.class);
-  private static final Map<FSType, FSFactory> fsFactories = new ConcurrentHashMap<>();
-
-  private FSFactory getFSFactory(FSType fsType) {
-    return fsFactories.compute(
-        fsType,
-        (k, v) -> {
-          if (v != null) {
-            return v;
-          }
-          switch (fsType) {
-            case LOCAL:
-              return new LocalFSFactory();
-            case OBJECT_STORAGE:
-              return new OSFSFactory();
-            case HDFS:
-              return new HDFSFactory();
-            default:
-              return null;
-          }
-        });
-  }
-
-  @Override
-  public File getFileWithParent(String pathname) {
-    FSPath path = FSUtils.parse(pathname);
-    return getFSFactory(path.getFsType()).getFileWithParent(path.getPath());
-  }
-
-  @Override
-  public File getFile(String pathname) {
-    FSPath path = FSUtils.parse(pathname);
-    return getFSFactory(path.getFsType()).getFile(path.getPath());
-  }
-
-  @Override
-  public File getFile(String parent, String child) {
-    FSPath parentPath = FSUtils.parse(parent);
-    return getFSFactory(parentPath.getFsType()).getFile(parentPath.getPath(), child);
-  }
-
-  @Override
-  public File getFile(File parent, String child) {
-    FSType type = FSUtils.getFSType(parent);
-    return getFSFactory(type).getFile(parent, child);
-  }
-
-  @Override
-  public File getFile(URI uri) {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public BufferedReader getBufferedReader(String filePath) {
-    FSPath path = FSUtils.parse(filePath);
-    return getFSFactory(path.getFsType()).getBufferedReader(path.getPath());
-  }
-
-  @Override
-  public BufferedWriter getBufferedWriter(String filePath, boolean append) {
-    FSPath path = FSUtils.parse(filePath);
-    return getFSFactory(path.getFsType()).getBufferedWriter(path.getPath(), append);
-  }
-
-  @Override
-  public BufferedInputStream getBufferedInputStream(String filePath) {
-    FSPath path = FSUtils.parse(filePath);
-    return getFSFactory(path.getFsType()).getBufferedInputStream(path.getPath());
-  }
-
-  @Override
-  public BufferedOutputStream getBufferedOutputStream(String filePath) {
-    FSPath path = FSUtils.parse(filePath);
-    return getFSFactory(path.getFsType()).getBufferedOutputStream(path.getPath());
-  }
-
-  @Override
-  public void moveFile(File srcFile, File destFile) throws IOException {
-    FSType srcType = FSUtils.getFSType(srcFile);
-    FSType destType = FSUtils.getFSType(destFile);
-    if (srcType == destType) {
-      getFSFactory(destType).moveFile(srcFile, destFile);
-    } else {
-      throw new IOException(
-          String.format("Doesn't support move file from %s to %s.", srcType, destType));
-    }
-  }
-
-  @Override
-  public void copyFile(File srcFile, File destFile) throws IOException {
-    FSType srcType = FSUtils.getFSType(srcFile);
-    FSType destType = FSUtils.getFSType(destFile);
-    if (srcType == destType || (srcType == FSType.LOCAL && destType == FSType.OBJECT_STORAGE)) {
-      getFSFactory(destType).copyFile(srcFile, destFile);
-    } else if ((srcType == FSType.LOCAL || srcType == FSType.HDFS)
-        && (destType == FSType.LOCAL || destType == FSType.HDFS)) {
-      getFSFactory(FSType.HDFS).copyFile(srcFile, destFile);
-    } else {
-      throw new IOException(
-          String.format("Doesn't support move file from %s to %s.", srcType, destType));
-    }
-  }
-
-  @Override
-  public File[] listFilesBySuffix(String fileFolder, String suffix) {
-    FSPath folder = FSUtils.parse(fileFolder);
-    return getFSFactory(folder.getFsType()).listFilesBySuffix(folder.getPath(), suffix);
-  }
-
-  @Override
-  public File[] listFilesByPrefix(String fileFolder, String prefix) {
-    FSPath folder = FSUtils.parse(fileFolder);
-    return getFSFactory(folder.getFsType()).listFilesByPrefix(folder.getPath(), prefix);
-  }
-
-  @Override
-  public boolean deleteIfExists(File file) throws IOException {
-    FSType type = FSUtils.getFSType(file);
-    return getFSFactory(type).deleteIfExists(file);
-  }
-
-  @Override
-  public void deleteDirectory(String dir) throws IOException {
-    FSType type = FSUtils.getFSType(dir);
-    getFSFactory(type).deleteDirectory(dir);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/LocalFSFactory.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/LocalFSFactory.java
deleted file mode 100644
index d110aa9..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/LocalFSFactory.java
+++ /dev/null
@@ -1,142 +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.fileSystem.fsFactory;
-
-import org.apache.commons.io.FileUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.net.URI;
-import java.nio.file.Files;
-
-public class LocalFSFactory implements FSFactory {
-
-  private static final Logger logger = LoggerFactory.getLogger(LocalFSFactory.class);
-
-  @Override
-  public File getFileWithParent(String pathname) {
-    File res = new File(pathname);
-    if (!res.exists()) {
-      res.getParentFile().mkdirs();
-    }
-    return res;
-  }
-
-  @Override
-  public File getFile(String pathname) {
-    return new File(pathname);
-  }
-
-  @Override
-  public File getFile(String parent, String child) {
-    return new File(parent, child);
-  }
-
-  @Override
-  public File getFile(File parent, String child) {
-    return new File(parent, child);
-  }
-
-  @Override
-  public File getFile(URI uri) {
-
-    return new File(uri);
-  }
-
-  @Override
-  public BufferedReader getBufferedReader(String filePath) {
-    try {
-      return new BufferedReader(new FileReader(filePath));
-    } catch (IOException e) {
-      logger.error("Failed to get buffered reader for {}. ", filePath, e);
-      return null;
-    }
-  }
-
-  @Override
-  public BufferedWriter getBufferedWriter(String filePath, boolean append) {
-    try {
-      return new BufferedWriter(new FileWriter(filePath, append));
-    } catch (IOException e) {
-      logger.error("Failed to get buffered writer for {}. ", filePath, e);
-      return null;
-    }
-  }
-
-  @Override
-  public BufferedInputStream getBufferedInputStream(String filePath) {
-    try {
-      return new BufferedInputStream(new FileInputStream(filePath));
-    } catch (IOException e) {
-      logger.error("Failed to get buffered input stream for {}. ", filePath, e);
-      return null;
-    }
-  }
-
-  @Override
-  public BufferedOutputStream getBufferedOutputStream(String filePath) {
-    try {
-      return new BufferedOutputStream(new FileOutputStream(filePath));
-    } catch (IOException e) {
-      logger.error("Failed to get buffered output stream for {}. ", filePath, e);
-      return null;
-    }
-  }
-
-  @Override
-  public void moveFile(File srcFile, File destFile) throws IOException {
-    FileUtils.moveFile(srcFile, destFile);
-  }
-
-  @Override
-  public void copyFile(File srcFile, File destFile) throws IOException {
-    FileUtils.copyFile(srcFile, destFile);
-  }
-
-  @Override
-  public File[] listFilesBySuffix(String fileFolder, String suffix) {
-    return new File(fileFolder).listFiles(file -> file.getName().endsWith(suffix));
-  }
-
-  @Override
-  public File[] listFilesByPrefix(String fileFolder, String prefix) {
-    return new File(fileFolder).listFiles(file -> file.getName().startsWith(prefix));
-  }
-
-  @Override
-  public boolean deleteIfExists(File file) throws IOException {
-    return Files.deleteIfExists(file.toPath());
-  }
-
-  @Override
-  public void deleteDirectory(String dir) throws IOException {
-    FileUtils.deleteDirectory(new File(dir));
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/OSFSFactory.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/OSFSFactory.java
deleted file mode 100644
index 2d8927c..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/OSFSFactory.java
+++ /dev/null
@@ -1,271 +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.fileSystem.fsFactory;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.fileSystem.FSType;
-import org.apache.iotdb.tsfile.utils.FSUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.URI;
-
-public class OSFSFactory implements FSFactory {
-  private static final Logger logger = LoggerFactory.getLogger(OSFSFactory.class);
-
-  private Constructor constructorWithPathname;
-  private Constructor constructorWithParentStringAndChild;
-  private Constructor constructorWithParentFileAndChild;
-  private Constructor constructorWithUri;
-  private Method getBufferedReader;
-  private Method getBufferedWriter;
-  private Method getBufferedInputStream;
-  private Method getBufferedOutputStream;
-  private Method listFilesBySuffix;
-  private Method listFilesByPrefix;
-  private Method renameTo;
-  private Method putFile;
-  private Method copyTo;
-  private Method deleteObjectsByPrefix;
-
-  public OSFSFactory() {
-    try {
-      Class<?> clazz =
-          Class.forName(TSFileDescriptor.getInstance().getConfig().getObjectStorageFile());
-      constructorWithPathname = clazz.getConstructor(String.class);
-      constructorWithParentStringAndChild = clazz.getConstructor(String.class, String.class);
-      constructorWithParentFileAndChild = clazz.getConstructor(File.class, String.class);
-      constructorWithUri = clazz.getConstructor(URI.class);
-      getBufferedReader = clazz.getMethod("getBufferedReader");
-      getBufferedWriter = clazz.getMethod("getBufferedWriter", boolean.class);
-      getBufferedInputStream = clazz.getMethod("getBufferedInputStream");
-      getBufferedOutputStream = clazz.getMethod("getBufferedOutputStream");
-      listFilesBySuffix = clazz.getMethod("listFilesBySuffix", String.class, String.class);
-      listFilesByPrefix = clazz.getMethod("listFilesByPrefix", String.class, String.class);
-      renameTo = clazz.getMethod("renameTo", File.class);
-      putFile = clazz.getMethod("putFile", File.class);
-      copyTo = clazz.getMethod("copyTo", File.class);
-      deleteObjectsByPrefix = clazz.getMethod("deleteObjectsByPrefix");
-    } catch (ClassNotFoundException | NoSuchMethodException e) {
-      logger.error(
-          "Failed to get object storage. Please check your dependency of object storage module.",
-          e);
-    }
-  }
-
-  @Override
-  public File getFileWithParent(String pathname) {
-    try {
-      return (File) constructorWithPathname.newInstance(pathname);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get file: {}. Please check your dependency of object storage module.",
-          pathname,
-          e);
-      return null;
-    }
-  }
-
-  @Override
-  public File getFile(String pathname) {
-    try {
-      return (File) constructorWithPathname.newInstance(pathname);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get file: {}. Please check your dependency of Hadoop module.", pathname, e);
-      return null;
-    }
-  }
-
-  @Override
-  public File getFile(String parent, String child) {
-    try {
-      return (File) constructorWithParentStringAndChild.newInstance(parent, child);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get file: {}. Please check your dependency of Hadoop module.",
-          parent + File.separator + child,
-          e);
-      return null;
-    }
-  }
-
-  @Override
-  public File getFile(File parent, String child) {
-    try {
-      return (File) constructorWithParentFileAndChild.newInstance(parent, child);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get file: {}. Please check your dependency of Hadoop module.",
-          parent.getAbsolutePath() + File.separator + child,
-          e);
-      return null;
-    }
-  }
-
-  @Override
-  public File getFile(URI uri) {
-    try {
-      return (File) constructorWithUri.newInstance(uri);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get file: {}. Please check your dependency of object storage module.", uri, e);
-      return null;
-    }
-  }
-
-  @Override
-  public BufferedReader getBufferedReader(String filePath) {
-    try {
-      return (BufferedReader)
-          getBufferedReader.invoke(constructorWithPathname.newInstance(filePath));
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get buffered reader for {}. Please check your dependency of object storage module.",
-          filePath,
-          e);
-      return null;
-    }
-  }
-
-  @Override
-  public BufferedWriter getBufferedWriter(String filePath, boolean append) {
-    try {
-      return (BufferedWriter)
-          getBufferedWriter.invoke(constructorWithPathname.newInstance(filePath), append);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get buffered writer for {}. Please check your dependency of object storage module.",
-          filePath,
-          e);
-      return null;
-    }
-  }
-
-  @Override
-  public BufferedInputStream getBufferedInputStream(String filePath) {
-    try {
-      return (BufferedInputStream)
-          getBufferedInputStream.invoke(constructorWithPathname.newInstance(filePath));
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get buffered input stream for {}. Please check your dependency of object storage module.",
-          filePath,
-          e);
-      return null;
-    }
-  }
-
-  @Override
-  public BufferedOutputStream getBufferedOutputStream(String filePath) {
-    try {
-      return (BufferedOutputStream)
-          getBufferedOutputStream.invoke(constructorWithPathname.newInstance(filePath));
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to get buffered output stream for {}. Please check your dependency of object storage module.",
-          filePath,
-          e);
-      return null;
-    }
-  }
-
-  @Override
-  public void moveFile(File srcFile, File destFile) throws IOException {
-    try {
-      renameTo.invoke(srcFile, destFile);
-    } catch (InvocationTargetException | IllegalAccessException e) {
-      throw new IOException(e);
-    }
-  }
-
-  @Override
-  public void copyFile(File srcFile, File destFile) throws IOException {
-    FSType srcType = FSUtils.getFSType(srcFile);
-    try {
-      if (srcType == FSType.LOCAL) {
-        putFile.invoke(destFile, srcFile);
-      } else if (srcType == FSType.OBJECT_STORAGE) {
-        copyTo.invoke(srcFile, destFile);
-      } else {
-        throw new IOException(
-            String.format(
-                "Doesn't support copy file from %s to %s.", srcType, FSType.OBJECT_STORAGE));
-      }
-    } catch (InvocationTargetException | IllegalAccessException e) {
-      throw new IOException(e);
-    }
-  }
-
-  @Override
-  public File[] listFilesBySuffix(String fileFolder, String suffix) {
-    try {
-      return (File[])
-          listFilesBySuffix.invoke(
-              constructorWithPathname.newInstance(fileFolder), fileFolder, suffix);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to list files in {} with SUFFIX {}. Please check your dependency of object storage module.",
-          fileFolder,
-          suffix,
-          e);
-      return null;
-    }
-  }
-
-  @Override
-  public File[] listFilesByPrefix(String fileFolder, String prefix) {
-    try {
-      return (File[])
-          listFilesByPrefix.invoke(
-              constructorWithPathname.newInstance(fileFolder), fileFolder, prefix);
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      logger.error(
-          "Failed to list files in {} with PREFIX {}. Please check your dependency of object storage module.",
-          fileFolder,
-          prefix,
-          e);
-      return null;
-    }
-  }
-
-  @Override
-  public boolean deleteIfExists(File file) {
-    return file.delete();
-  }
-
-  @Override
-  public void deleteDirectory(String dir) throws IOException {
-    try {
-      deleteObjectsByPrefix.invoke(constructorWithPathname.newInstance(dir));
-    } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-      throw new IOException(e);
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TimeValuePair.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TimeValuePair.java
deleted file mode 100644
index b5c148c..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TimeValuePair.java
+++ /dev/null
@@ -1,102 +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;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.io.Serializable;
-
-public class TimeValuePair implements Serializable, Comparable<TimeValuePair> {
-
-  private long timestamp;
-  private TsPrimitiveType value;
-
-  public TimeValuePair(long timestamp, TsPrimitiveType value) {
-    this.timestamp = timestamp;
-    this.value = value;
-  }
-
-  public long getTimestamp() {
-    return timestamp;
-  }
-
-  public void setTimestamp(long timestamp) {
-    this.timestamp = timestamp;
-  }
-
-  public TsPrimitiveType getValue() {
-    return value;
-  }
-
-  public void setValue(TsPrimitiveType value) {
-    this.value = value;
-  }
-
-  public Object[] getValues() {
-    if (value.getDataType() == TSDataType.VECTOR) {
-      TsPrimitiveType[] vector = value.getVector();
-      Object[] values = new Object[vector.length];
-      for (int i = 0; i < vector.length; i++) {
-        if (vector[i] == null) {
-          values[i] = null;
-        } else {
-          values[i] = vector[i].getValue();
-        }
-      }
-      return values;
-    } else {
-      Object[] values = new Object[1];
-      values[0] = value.getValue();
-      return values;
-    }
-  }
-
-  @Override
-  public String toString() {
-    StringBuilder stringBuilder = new StringBuilder();
-    stringBuilder.append(timestamp).append(" : ").append(getValue());
-    return stringBuilder.toString();
-  }
-
-  @Override
-  public boolean equals(Object object) {
-    if (object instanceof TimeValuePair) {
-      return ((TimeValuePair) object).getTimestamp() == timestamp
-          && ((TimeValuePair) object).getValue() != null
-          && ((TimeValuePair) object).getValue().equals(value);
-    }
-    return false;
-  }
-
-  @Override
-  public int hashCode() {
-    return ((Long) timestamp).hashCode() + value.hashCode();
-  }
-
-  public int getSize() {
-    return 8 + 8 + value.getSize();
-  }
-
-  @Override
-  public int compareTo(TimeValuePair o) {
-    return Long.compare(this.getTimestamp(), o.getTimestamp());
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileAlignedSeriesReaderIterator.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileAlignedSeriesReaderIterator.java
deleted file mode 100644
index 4df152c..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileAlignedSeriesReaderIterator.java
+++ /dev/null
@@ -1,119 +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;
-
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.reader.chunk.AlignedChunkReader;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * This class return the AlignedChunkReader iteratively, each AlignedChunkReader reads one aligned
- * chunk group in a tsfile.
- */
-public class TsFileAlignedSeriesReaderIterator {
-
-  private TsFileSequenceReader reader;
-  private List<AlignedChunkMetadata> alignedChunkMetadataList;
-  private List<IMeasurementSchema> schemaList;
-
-  private int curIdx = -1;
-
-  public TsFileAlignedSeriesReaderIterator(
-      TsFileSequenceReader reader,
-      List<AlignedChunkMetadata> alignedChunkMetadataList,
-      List<IMeasurementSchema> schemaList) {
-    this.reader = reader;
-    this.alignedChunkMetadataList = alignedChunkMetadataList;
-    this.schemaList = schemaList;
-  }
-
-  public boolean hasNext() {
-    return curIdx < alignedChunkMetadataList.size() - 1;
-  }
-
-  public NextAlignedChunkInfo nextReader() throws IOException {
-    AlignedChunkMetadata alignedChunkMetadata = alignedChunkMetadataList.get(++curIdx);
-    IChunkMetadata timeChunkMetadata = alignedChunkMetadata.getTimeChunkMetadata();
-    List<IChunkMetadata> valueChunkMetadataList = alignedChunkMetadata.getValueChunkMetadataList();
-    int schemaIdx = 0;
-    Chunk timeChunk = reader.readMemChunk((ChunkMetadata) timeChunkMetadata);
-    Chunk[] valueChunks = new Chunk[schemaList.size()];
-    long totalSize = 0;
-    long totalPointNum = 0;
-    int notNullChunkNum = 0;
-    for (IChunkMetadata valueChunkMetadata : valueChunkMetadataList) {
-      if (valueChunkMetadata == null) {
-        continue;
-      }
-      while (!valueChunkMetadata
-          .getMeasurementUid()
-          .equals(schemaList.get(schemaIdx).getMeasurementId())) {
-        schemaIdx++;
-      }
-      Chunk chunk = reader.readMemChunk((ChunkMetadata) valueChunkMetadata);
-      valueChunks[schemaIdx++] = chunk;
-      notNullChunkNum++;
-      totalPointNum += ((ChunkMetadata) valueChunkMetadata).getNumOfPoints();
-      totalSize += chunk.getHeader().getSerializedSize() + chunk.getHeader().getDataSize();
-    }
-
-    AlignedChunkReader chunkReader = new AlignedChunkReader(timeChunk, Arrays.asList(valueChunks));
-
-    return new NextAlignedChunkInfo(chunkReader, totalSize, notNullChunkNum, totalPointNum);
-  }
-
-  public class NextAlignedChunkInfo {
-    private AlignedChunkReader reader;
-    private long totalSize;
-    private int notNullChunkNum;
-    private long totalPointNum;
-
-    public NextAlignedChunkInfo(
-        AlignedChunkReader reader, long totalSize, int notNullChunkNum, long totalPointNum) {
-      this.reader = reader;
-      this.totalSize = totalSize;
-      this.notNullChunkNum = notNullChunkNum;
-      this.totalPointNum = totalPointNum;
-    }
-
-    public AlignedChunkReader getReader() {
-      return reader;
-    }
-
-    public long getTotalSize() {
-      return totalSize;
-    }
-
-    public long getTotalPointNum() {
-      return totalPointNum;
-    }
-
-    public int getNotNullChunkNum() {
-      return notNullChunkNum;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileCheckStatus.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileCheckStatus.java
deleted file mode 100644
index 8f9c693..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileCheckStatus.java
+++ /dev/null
@@ -1,31 +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;
-
-public class TsFileCheckStatus {
-  public static final long COMPLETE_FILE = 0;
-  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/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileDeviceIterator.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileDeviceIterator.java
deleted file mode 100644
index 3d93779..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileDeviceIterator.java
+++ /dev/null
@@ -1,99 +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;
-
-import org.apache.iotdb.tsfile.exception.TsFileRuntimeException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.MetadataIndexNode;
-import org.apache.iotdb.tsfile.utils.Pair;
-
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.Queue;
-
-public class TsFileDeviceIterator implements Iterator<Pair<IDeviceID, Boolean>> {
-  private final TsFileSequenceReader reader;
-
-  // device -> firstMeasurmentNode offset
-  private final Queue<Pair<IDeviceID, long[]>> queue;
-  private Pair<IDeviceID, Boolean> currentDevice = null;
-  private MetadataIndexNode measurementNode;
-
-  // <startOffset, endOffset>, device leaf node offset in this file
-  private final List<long[]> leafDeviceNodeOffsetList;
-
-  public TsFileDeviceIterator(
-      TsFileSequenceReader reader,
-      List<long[]> leafDeviceNodeOffsetList,
-      Queue<Pair<IDeviceID, long[]>> queue) {
-    this.reader = reader;
-    this.queue = queue;
-    this.leafDeviceNodeOffsetList = leafDeviceNodeOffsetList;
-  }
-
-  public Pair<IDeviceID, Boolean> current() {
-    return currentDevice;
-  }
-
-  @Override
-  public boolean hasNext() {
-    if (!queue.isEmpty()) {
-      return true;
-    } else if (leafDeviceNodeOffsetList.isEmpty()) {
-      // device queue is empty and all device leaf node has been read
-      return false;
-    } else {
-      // queue is empty but there are still some devices on leaf node not being read yet
-      long[] nextDeviceLeafNodeOffset = leafDeviceNodeOffsetList.remove(0);
-      try {
-        reader.getDevicesAndEntriesOfOneLeafNode(
-            nextDeviceLeafNodeOffset[0], nextDeviceLeafNodeOffset[1], queue);
-      } catch (IOException e) {
-        throw new RuntimeException(e);
-      }
-      return true;
-    }
-  }
-
-  @Override
-  public Pair<IDeviceID, Boolean> next() {
-    if (!hasNext()) {
-      throw new NoSuchElementException();
-    }
-    Pair<IDeviceID, long[]> startEndPair = queue.remove();
-    try {
-      // get the first measurement node of this device, to know if the device is aligned
-      this.measurementNode =
-          reader.readMetadataIndexNode(startEndPair.right[0], startEndPair.right[1], false);
-      boolean isAligned = reader.isAlignedDevice(measurementNode);
-      currentDevice = new Pair<>(startEndPair.left, isAligned);
-      return currentDevice;
-    } catch (IOException e) {
-      throw new TsFileRuntimeException(
-          "Error occurred while reading a time series metadata block.");
-    }
-  }
-
-  public MetadataIndexNode getFirstMeasurementNodeOfCurrentDevice() {
-    return measurementNode;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileReader.java
deleted file mode 100644
index a02740a..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileReader.java
+++ /dev/null
@@ -1,61 +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;
-
-import org.apache.iotdb.tsfile.read.controller.CachedChunkLoaderImpl;
-import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
-import org.apache.iotdb.tsfile.read.controller.IMetadataQuerier;
-import org.apache.iotdb.tsfile.read.controller.MetadataQuerierByFileImpl;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.read.query.executor.TsFileExecutor;
-
-import java.io.IOException;
-
-public class TsFileReader implements AutoCloseable {
-
-  private TsFileSequenceReader fileReader;
-  private IMetadataQuerier metadataQuerier;
-  private IChunkLoader chunkLoader;
-  private TsFileExecutor tsFileExecutor;
-
-  /** Constructor, create ReadOnlyTsFile with {@link TsFileSequenceReader}. */
-  public TsFileReader(TsFileSequenceReader fileReader) throws IOException {
-    this.fileReader = fileReader;
-    this.metadataQuerier = new MetadataQuerierByFileImpl(fileReader);
-    this.chunkLoader = new CachedChunkLoaderImpl(fileReader);
-    tsFileExecutor = new TsFileExecutor(metadataQuerier, chunkLoader);
-  }
-
-  public QueryDataSet query(QueryExpression queryExpression) throws IOException {
-    return tsFileExecutor.execute(queryExpression);
-  }
-
-  public QueryDataSet query(
-      QueryExpression queryExpression, long partitionStartOffset, long partitionEndOffset)
-      throws IOException {
-    return tsFileExecutor.execute(queryExpression, partitionStartOffset, partitionEndOffset);
-  }
-
-  @Override
-  public void close() throws IOException {
-    fileReader.close();
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileRestorableReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileRestorableReader.java
deleted file mode 100644
index b7f018a..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileRestorableReader.java
+++ /dev/null
@@ -1,71 +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;
-
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-
-public class TsFileRestorableReader extends TsFileSequenceReader {
-
-  private static final Logger logger = LoggerFactory.getLogger(TsFileRestorableReader.class);
-
-  public TsFileRestorableReader(String file) throws IOException {
-    this(file, true);
-  }
-
-  public TsFileRestorableReader(String file, boolean autoRepair) throws IOException {
-    // if autoRepair == true, then it means the file is likely broken, so we can not
-    // read metadata
-    // otherwise, the user may consider that either the file is complete, or the
-    // user can accept an
-    // Exception when reading broken data. Therefore, we set loadMetadata as true in
-    // this case.
-    super(file, !autoRepair);
-    if (autoRepair) {
-      try {
-        checkAndRepair();
-      } catch (Throwable e) {
-        close();
-        throw e;
-      }
-      loadMetadataSize();
-    }
-  }
-
-  /** Checks if the file is incomplete, and if so, tries to repair it. */
-  private void checkAndRepair() throws IOException {
-    // Check if file is damaged
-    if (!isComplete()) {
-      // Try to close it
-      logger.info("File {} has no correct tail magic, try to repair...", file);
-      try (RestorableTsFileIOWriter rWriter =
-              new RestorableTsFileIOWriter(FSFactoryProducer.getFSFactory().getFile(file));
-          TsFileWriter writer = new TsFileWriter(rWriter)) {
-        // This writes the right magic string
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java
deleted file mode 100644
index e942a92..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java
+++ /dev/null
@@ -1,2495 +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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.compress.IUnCompressor;
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.exception.StopReadTsFileByInterruptException;
-import org.apache.iotdb.tsfile.exception.TsFileRuntimeException;
-import org.apache.iotdb.tsfile.exception.TsFileStatisticsMistakesException;
-import org.apache.iotdb.tsfile.file.IMetadataIndexEntry;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkGroupHeader;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.AlignedTimeSeriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkGroupMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.DeviceMetadataIndexEntry;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.MeasurementMetadataIndexEntry;
-import org.apache.iotdb.tsfile.file.metadata.MetadataIndexNode;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.MetadataIndexNodeType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.controller.CachedChunkLoaderImpl;
-import org.apache.iotdb.tsfile.read.controller.MetadataQuerierByFileImpl;
-import org.apache.iotdb.tsfile.read.reader.TsFileInput;
-import org.apache.iotdb.tsfile.read.reader.page.PageReader;
-import org.apache.iotdb.tsfile.read.reader.page.TimePageReader;
-import org.apache.iotdb.tsfile.read.reader.page.ValuePageReader;
-import org.apache.iotdb.tsfile.utils.BloomFilter;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-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;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-import java.util.stream.Collectors;
-
-public class TsFileSequenceReader implements AutoCloseable {
-
-  private static final Logger logger = LoggerFactory.getLogger(TsFileSequenceReader.class);
-  private static final Logger resourceLogger = LoggerFactory.getLogger("FileMonitor");
-  protected static final TSFileConfig config = TSFileDescriptor.getInstance().getConfig();
-  private static final String METADATA_INDEX_NODE_DESERIALIZE_ERROR =
-      "Something error happened while deserializing MetadataIndexNode of file {}";
-  private static final int MAX_READ_BUFFER_SIZE = 4 * 1024 * 1024;
-  protected String file;
-  protected TsFileInput tsFileInput;
-  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<IDeviceID, Map<String, TimeseriesMetadata>> cachedDeviceMetadata =
-      new ConcurrentHashMap<>();
-  private static final ReadWriteLock cacheLock = new ReentrantReadWriteLock();
-  private boolean cacheDeviceMetadata;
-  private long minPlanIndex = Long.MAX_VALUE;
-  private long maxPlanIndex = Long.MIN_VALUE;
-
-  /**
-   * Create a file reader of the given file. The reader will read the tail of the file to get the
-   * file metadata size.Then the reader will skip the first
-   * TSFileConfig.MAGIC_STRING.getBytes().length + TSFileConfig.NUMBER_VERSION.getBytes().length
-   * bytes of the file for preparing reading real data.
-   *
-   * @param file the data file
-   * @throws IOException If some I/O error occurs
-   */
-  public TsFileSequenceReader(String file) throws IOException {
-    this(file, true);
-  }
-
-  /**
-   * construct function for TsFileSequenceReader.
-   *
-   * @param file -given file name
-   * @param loadMetadataSize -whether load meta data size
-   */
-  public TsFileSequenceReader(String file, boolean loadMetadataSize) throws IOException {
-    if (resourceLogger.isDebugEnabled()) {
-      resourceLogger.debug("{} reader is opened. {}", file, getClass().getName());
-    }
-    this.file = file;
-    tsFileInput = FSFactoryProducer.getFileInputFactory().getTsFileInput(file);
-    try {
-      if (loadMetadataSize) {
-        loadMetadataSize();
-      }
-    } catch (Throwable e) {
-      tsFileInput.close();
-      throw e;
-    }
-  }
-
-  // used in merge resource
-  public TsFileSequenceReader(String file, boolean loadMetadata, boolean cacheDeviceMetadata)
-      throws IOException {
-    this(file, loadMetadata);
-    this.cacheDeviceMetadata = cacheDeviceMetadata;
-  }
-
-  /**
-   * Create a file reader of the given file. The reader will read the tail of the file to get the
-   * file metadata size.Then the reader will skip the first
-   * TSFileConfig.MAGIC_STRING.getBytes().length + TSFileConfig.NUMBER_VERSION.getBytes().length
-   * bytes of the file for preparing reading real data.
-   *
-   * @param input given input
-   */
-  public TsFileSequenceReader(TsFileInput input) throws IOException {
-    this(input, true);
-  }
-
-  /**
-   * construct function for TsFileSequenceReader.
-   *
-   * @param input -given input
-   * @param loadMetadataSize -load meta data size
-   */
-  public TsFileSequenceReader(TsFileInput input, boolean loadMetadataSize) throws IOException {
-    this.tsFileInput = input;
-    this.file = input.getFilePath();
-    try {
-      if (loadMetadataSize) { // NOTE no autoRepair here
-        loadMetadataSize();
-      }
-    } catch (Throwable e) {
-      tsFileInput.close();
-      throw e;
-    }
-  }
-
-  /**
-   * construct function for TsFileSequenceReader.
-   *
-   * @param input the input of a tsfile. The current position should be a marker and then a chunk
-   *     Header, rather than the magic number
-   * @param fileMetadataPos the position of the file metadata in the TsFileInput from the beginning
-   *     of the input to the current position
-   * @param fileMetadataSize the byte size of the file metadata in the input
-   */
-  public TsFileSequenceReader(TsFileInput input, long fileMetadataPos, int fileMetadataSize) {
-    this.tsFileInput = input;
-    this.fileMetadataPos = fileMetadataPos;
-    this.fileMetadataSize = fileMetadataSize;
-  }
-
-  public void loadMetadataSize() throws IOException {
-    ByteBuffer metadataSize = ByteBuffer.allocate(Integer.BYTES);
-    if (readTailMagic().equals(TSFileConfig.MAGIC_STRING)) {
-      tsFileInput.read(
-          metadataSize,
-          tsFileInput.size() - TSFileConfig.MAGIC_STRING.getBytes().length - Integer.BYTES);
-      metadataSize.flip();
-      // read file metadata size and position
-      fileMetadataSize = ReadWriteIOUtils.readInt(metadataSize);
-      fileMetadataPos =
-          tsFileInput.size()
-              - TSFileConfig.MAGIC_STRING.getBytes().length
-              - Integer.BYTES
-              - fileMetadataSize;
-    }
-  }
-
-  public long getFileMetadataPos() {
-    return fileMetadataPos;
-  }
-
-  public int getTsFileMetadataSize() {
-    return fileMetadataSize;
-  }
-
-  /** Return the tsfile meta data size of this tsfile. */
-  public long getFileMetadataSize() throws IOException {
-    return tsFileInput.size() - getFileMetadataPos();
-  }
-
-  /**
-   * Return the whole meta data size of this tsfile, including ChunkMetadata, TimeseriesMetadata and
-   * etc.
-   */
-  public long getAllMetadataSize() throws IOException {
-    if (tsFileMetaData == null) {
-      readFileMetadata();
-    }
-    return tsFileInput.size() - tsFileMetaData.getMetaOffset();
-  }
-
-  /** this function does not modify the position of the file reader. */
-  public String readTailMagic() throws IOException {
-    long totalSize = tsFileInput.size();
-    ByteBuffer magicStringBytes = ByteBuffer.allocate(TSFileConfig.MAGIC_STRING.getBytes().length);
-    tsFileInput.read(magicStringBytes, totalSize - TSFileConfig.MAGIC_STRING.getBytes().length);
-    magicStringBytes.flip();
-    return new String(magicStringBytes.array());
-  }
-
-  /** whether the file is a complete TsFile: only if the head magic and tail magic string exists. */
-  public boolean isComplete() throws IOException {
-    long size = tsFileInput.size();
-    // TSFileConfig.MAGIC_STRING.getBytes().length * 2 for two magic string
-    // Byte.BYTES for the file version number
-    if (size >= TSFileConfig.MAGIC_STRING.getBytes().length * 2 + Byte.BYTES) {
-      String tailMagic = readTailMagic();
-      String headMagic = readHeadMagic();
-      return tailMagic.equals(headMagic);
-    } else {
-      return false;
-    }
-  }
-
-  /** this function does not modify the position of the file reader. */
-  public String readHeadMagic() throws IOException {
-    ByteBuffer magicStringBytes = ByteBuffer.allocate(TSFileConfig.MAGIC_STRING.getBytes().length);
-    tsFileInput.read(magicStringBytes, 0);
-    magicStringBytes.flip();
-    return new String(magicStringBytes.array());
-  }
-
-  /** this function reads version number and checks compatibility of TsFile. */
-  public byte readVersionNumber() throws IOException {
-    ByteBuffer versionNumberByte = ByteBuffer.allocate(Byte.BYTES);
-    tsFileInput.read(versionNumberByte, TSFileConfig.MAGIC_STRING.getBytes().length);
-    versionNumberByte.flip();
-    return versionNumberByte.get();
-  }
-
-  /**
-   * this function does not modify the position of the file reader.
-   *
-   * @throws IOException io error
-   */
-  public TsFileMetadata readFileMetadata() throws IOException {
-    try {
-      if (tsFileMetaData == null) {
-        synchronized (this) {
-          if (tsFileMetaData == null) {
-            tsFileMetaData =
-                TsFileMetadata.deserializeFrom(readData(fileMetadataPos, fileMetadataSize));
-          }
-        }
-      }
-    } catch (StopReadTsFileByInterruptException e) {
-      throw e;
-    } catch (Exception e) {
-      logger.error("Something error happened while reading file metadata of file {}", file);
-      throw e;
-    }
-    return tsFileMetaData;
-  }
-
-  /**
-   * This function does not modify the position of the file reader.
-   *
-   * @throws IOException io error
-   */
-  public BloomFilter readBloomFilter() throws IOException {
-    readFileMetadata();
-    return tsFileMetaData.getBloomFilter();
-  }
-
-  /**
-   * this function reads measurements and TimeseriesMetaDatas in given device Thread Safe
-   *
-   * @param device name
-   * @return the map measurementId -> TimeseriesMetaData in one device
-   * @throws IOException io error
-   */
-  public Map<String, TimeseriesMetadata> readDeviceMetadata(IDeviceID device) throws IOException {
-    if (!cacheDeviceMetadata) {
-      return readDeviceMetadataFromDisk(device);
-    }
-
-    cacheLock.readLock().lock();
-    try {
-      if (cachedDeviceMetadata.containsKey(device)) {
-        return cachedDeviceMetadata.get(device);
-      }
-    } finally {
-      cacheLock.readLock().unlock();
-    }
-
-    cacheLock.writeLock().lock();
-    try {
-      if (cachedDeviceMetadata.containsKey(device)) {
-        return cachedDeviceMetadata.get(device);
-      }
-      readFileMetadata();
-      Map<String, TimeseriesMetadata> deviceMetadata = readDeviceMetadataFromDisk(device);
-      cachedDeviceMetadata.put(device, deviceMetadata);
-      return deviceMetadata;
-    } finally {
-      cacheLock.writeLock().unlock();
-    }
-  }
-
-  public void clearCachedDeviceMetadata() {
-    cachedDeviceMetadata.clear();
-  }
-
-  private Map<String, TimeseriesMetadata> readDeviceMetadataFromDisk(IDeviceID device)
-      throws IOException {
-    readFileMetadata();
-    List<TimeseriesMetadata> timeseriesMetadataList =
-        getDeviceTimeseriesMetadataWithoutChunkMetadata(device);
-    Map<String, TimeseriesMetadata> deviceMetadata = new HashMap<>();
-    for (TimeseriesMetadata timeseriesMetadata : timeseriesMetadataList) {
-      deviceMetadata.put(timeseriesMetadata.getMeasurementId(), timeseriesMetadata);
-    }
-    return deviceMetadata;
-  }
-
-  public TimeseriesMetadata readTimeseriesMetadata(
-      IDeviceID device, String measurement, boolean ignoreNotExists) throws IOException {
-    readFileMetadata();
-    MetadataIndexNode deviceMetadataIndexNode = tsFileMetaData.getMetadataIndex();
-    Pair<IMetadataIndexEntry, Long> metadataIndexPair =
-        getMetadataAndEndOffsetOfDeviceNode(deviceMetadataIndexNode, device, true);
-    if (metadataIndexPair == null) {
-      if (ignoreNotExists) {
-        return null;
-      }
-      throw new IOException("Device {" + device + "} is not in tsFileMetaData");
-    }
-    ByteBuffer buffer = readData(metadataIndexPair.left.getOffset(), metadataIndexPair.right);
-    MetadataIndexNode metadataIndexNode = deviceMetadataIndexNode;
-    if (!metadataIndexNode.getNodeType().equals(MetadataIndexNodeType.LEAF_MEASUREMENT)) {
-      try {
-        metadataIndexNode = MetadataIndexNode.deserializeFrom(buffer, false);
-      } catch (Exception e) {
-        logger.error(METADATA_INDEX_NODE_DESERIALIZE_ERROR, file);
-        throw e;
-      }
-      metadataIndexPair =
-          getMetadataAndEndOffsetOfMeasurementNode(metadataIndexNode, measurement, false);
-    }
-    if (metadataIndexPair == null) {
-      return null;
-    }
-    List<TimeseriesMetadata> timeseriesMetadataList = new ArrayList<>();
-    if (metadataIndexPair.right - metadataIndexPair.left.getOffset() < Integer.MAX_VALUE) {
-      buffer = readData(metadataIndexPair.left.getOffset(), metadataIndexPair.right);
-      while (buffer.hasRemaining()) {
-        try {
-          timeseriesMetadataList.add(TimeseriesMetadata.deserializeFrom(buffer, true));
-        } catch (Exception e) {
-          logger.error(
-              "Something error happened while deserializing TimeseriesMetadata of file {}", file);
-          throw e;
-        }
-      }
-    } else {
-      // when the buffer length is over than Integer.MAX_VALUE,
-      // using tsFileInput to get timeseriesMetadataList
-      tsFileInput.position(metadataIndexPair.left.getOffset());
-      while (tsFileInput.position() < metadataIndexPair.right) {
-        try {
-          timeseriesMetadataList.add(TimeseriesMetadata.deserializeFrom(tsFileInput, true));
-        } catch (Exception e1) {
-          logger.error(
-              "Something error happened while deserializing TimeseriesMetadata of file {}", file);
-          throw e1;
-        }
-      }
-    }
-
-    // return null if path does not exist in the TsFile
-    int searchResult = binarySearchInTimeseriesMetadataList(timeseriesMetadataList, measurement);
-    return searchResult >= 0 ? timeseriesMetadataList.get(searchResult) : null;
-  }
-
-  // This method is only used for TsFile
-  public ITimeSeriesMetadata readITimeseriesMetadata(Path path, boolean ignoreNotExists)
-      throws IOException {
-    readFileMetadata();
-    MetadataIndexNode deviceMetadataIndexNode = tsFileMetaData.getMetadataIndex();
-    Pair<IMetadataIndexEntry, Long> metadataIndexPair =
-        getMetadataAndEndOffsetOfDeviceNode(deviceMetadataIndexNode, path.getIDeviceID(), true);
-    if (metadataIndexPair == null) {
-      if (ignoreNotExists) {
-        return null;
-      }
-      throw new IOException("Device {" + path.getDevice() + "} is not in tsFileMetaData");
-    }
-    ByteBuffer buffer = readData(metadataIndexPair.left.getOffset(), metadataIndexPair.right);
-    MetadataIndexNode metadataIndexNode;
-    TimeseriesMetadata firstTimeseriesMetadata;
-    try {
-      // next layer MeasurementNode of the specific DeviceNode
-      metadataIndexNode = MetadataIndexNode.deserializeFrom(buffer, false);
-    } catch (Exception e) {
-      logger.error(METADATA_INDEX_NODE_DESERIALIZE_ERROR, file);
-      throw e;
-    }
-    firstTimeseriesMetadata = tryToGetFirstTimeseriesMetadata(metadataIndexNode);
-    metadataIndexPair =
-        getMetadataAndEndOffsetOfMeasurementNode(metadataIndexNode, path.getMeasurement(), false);
-
-    if (metadataIndexPair == null) {
-      return null;
-    }
-    List<TimeseriesMetadata> timeseriesMetadataList = new ArrayList<>();
-    buffer = readData(metadataIndexPair.left.getOffset(), metadataIndexPair.right);
-    while (buffer.hasRemaining()) {
-      try {
-        timeseriesMetadataList.add(TimeseriesMetadata.deserializeFrom(buffer, true));
-      } catch (Exception e) {
-        logger.error(
-            "Something error happened while deserializing TimeseriesMetadata of file {}", file);
-        throw e;
-      }
-    }
-    // return null if path does not exist in the TsFile
-    int searchResult =
-        binarySearchInTimeseriesMetadataList(timeseriesMetadataList, path.getMeasurement());
-    if (searchResult >= 0) {
-      if (firstTimeseriesMetadata != null) {
-        List<TimeseriesMetadata> valueTimeseriesMetadataList = new ArrayList<>();
-        valueTimeseriesMetadataList.add(timeseriesMetadataList.get(searchResult));
-        return new AlignedTimeSeriesMetadata(firstTimeseriesMetadata, valueTimeseriesMetadataList);
-      } else {
-        return timeseriesMetadataList.get(searchResult);
-      }
-    } else {
-      return null;
-    }
-  }
-
-  /* Find the leaf node that contains path, return all the sensors in that leaf node which are also in allSensors set */
-  public List<TimeseriesMetadata> readTimeseriesMetadata(
-      IDeviceID device, String measurement, Set<String> allSensors) throws IOException {
-    Pair<IMetadataIndexEntry, Long> metadataIndexPair =
-        getLeafMetadataIndexPair(device, measurement);
-    if (metadataIndexPair == null) {
-      return Collections.emptyList();
-    }
-    List<TimeseriesMetadata> timeseriesMetadataList = new ArrayList<>();
-
-    if (metadataIndexPair.right - metadataIndexPair.left.getOffset() < Integer.MAX_VALUE) {
-      ByteBuffer buffer = readData(metadataIndexPair.left.getOffset(), metadataIndexPair.right);
-      while (buffer.hasRemaining()) {
-        TimeseriesMetadata timeseriesMetadata;
-        try {
-          timeseriesMetadata = TimeseriesMetadata.deserializeFrom(buffer, true);
-        } catch (Exception e) {
-          logger.error(
-              "Something error happened while deserializing TimeseriesMetadata of file {}", file);
-          throw e;
-        }
-        if (allSensors.contains(timeseriesMetadata.getMeasurementId())) {
-          timeseriesMetadataList.add(timeseriesMetadata);
-        }
-      }
-    } else {
-      // when the buffer length is over than Integer.MAX_VALUE,
-      // using tsFileInput to get timeseriesMetadataList
-      synchronized (this) {
-        tsFileInput.position(metadataIndexPair.left.getOffset());
-        while (tsFileInput.position() < metadataIndexPair.right) {
-          TimeseriesMetadata timeseriesMetadata;
-          try {
-            timeseriesMetadata = TimeseriesMetadata.deserializeFrom(tsFileInput, true);
-          } catch (StopReadTsFileByInterruptException e) {
-            throw e;
-          } catch (Exception e1) {
-            logger.error(
-                "Something error happened while deserializing TimeseriesMetadata of file {}", file);
-            throw e1;
-          }
-          if (allSensors.contains(timeseriesMetadata.getMeasurementId())) {
-            timeseriesMetadataList.add(timeseriesMetadata);
-          }
-        }
-      }
-    }
-    return timeseriesMetadataList;
-  }
-
-  /* Get leaf MetadataIndexPair which contains path */
-  private Pair<IMetadataIndexEntry, Long> getLeafMetadataIndexPair(
-      IDeviceID device, String measurement) throws IOException {
-    readFileMetadata();
-    MetadataIndexNode deviceMetadataIndexNode = tsFileMetaData.getMetadataIndex();
-    Pair<IMetadataIndexEntry, Long> metadataIndexPair =
-        getMetadataAndEndOffsetOfDeviceNode(deviceMetadataIndexNode, device, true);
-    if (metadataIndexPair == null) {
-      return null;
-    }
-    ByteBuffer buffer = readData(metadataIndexPair.left.getOffset(), metadataIndexPair.right);
-    MetadataIndexNode metadataIndexNode = deviceMetadataIndexNode;
-    if (!metadataIndexNode.getNodeType().equals(MetadataIndexNodeType.LEAF_MEASUREMENT)) {
-      try {
-        metadataIndexNode = MetadataIndexNode.deserializeFrom(buffer, false);
-      } catch (Exception e) {
-        logger.error(METADATA_INDEX_NODE_DESERIALIZE_ERROR, file);
-        throw e;
-      }
-      metadataIndexPair =
-          getMetadataAndEndOffsetOfMeasurementNode(metadataIndexNode, measurement, false);
-    }
-    return metadataIndexPair;
-  }
-
-  // This method is only used for TsFile
-  public List<ITimeSeriesMetadata> readITimeseriesMetadata(
-      IDeviceID device, Set<String> measurements) throws IOException {
-    readFileMetadata();
-    MetadataIndexNode deviceMetadataIndexNode = tsFileMetaData.getMetadataIndex();
-    Pair<IMetadataIndexEntry, Long> metadataIndexPair =
-        getMetadataAndEndOffsetOfDeviceNode(deviceMetadataIndexNode, device, false);
-    if (metadataIndexPair == null) {
-      return Collections.emptyList();
-    }
-    List<ITimeSeriesMetadata> resultTimeseriesMetadataList = new ArrayList<>();
-    List<String> measurementList = new ArrayList<>(measurements);
-    Set<String> measurementsHadFound = new HashSet<>();
-    // the content of next Layer MeasurementNode of the specific device's DeviceNode
-    ByteBuffer buffer = readData(metadataIndexPair.left.getOffset(), metadataIndexPair.right);
-    Pair<IMetadataIndexEntry, Long> measurementMetadataIndexPair = metadataIndexPair;
-    List<TimeseriesMetadata> timeseriesMetadataList = new ArrayList<>();
-
-    // next layer MeasurementNode of the specific DeviceNode
-    MetadataIndexNode measurementMetadataIndexNode;
-    try {
-      measurementMetadataIndexNode = MetadataIndexNode.deserializeFrom(buffer, false);
-    } catch (Exception e) {
-      logger.error(METADATA_INDEX_NODE_DESERIALIZE_ERROR, file);
-      throw e;
-    }
-    // Get the first timeseriesMetadata of the device
-    TimeseriesMetadata firstTimeseriesMetadata =
-        tryToGetFirstTimeseriesMetadata(measurementMetadataIndexNode);
-
-    for (int i = 0; i < measurementList.size(); i++) {
-      if (measurementsHadFound.contains(measurementList.get(i))) {
-        continue;
-      }
-      timeseriesMetadataList.clear();
-      measurementMetadataIndexPair =
-          getMetadataAndEndOffsetOfMeasurementNode(
-              measurementMetadataIndexNode, measurementList.get(i), false);
-
-      if (measurementMetadataIndexPair == null) {
-        continue;
-      }
-      // the content of TimeseriesNode of the specific MeasurementLeafNode
-      buffer =
-          readData(
-              measurementMetadataIndexPair.left.getOffset(), measurementMetadataIndexPair.right);
-      while (buffer.hasRemaining()) {
-        try {
-          timeseriesMetadataList.add(TimeseriesMetadata.deserializeFrom(buffer, true));
-        } catch (Exception e) {
-          logger.error(
-              "Something error happened while deserializing TimeseriesMetadata of file {}", file);
-          throw e;
-        }
-      }
-      for (int j = i; j < measurementList.size(); j++) {
-        String current = measurementList.get(j);
-        if (!measurementsHadFound.contains(current)) {
-          int searchResult = binarySearchInTimeseriesMetadataList(timeseriesMetadataList, current);
-          if (searchResult >= 0) {
-            if (firstTimeseriesMetadata != null) {
-              List<TimeseriesMetadata> valueTimeseriesMetadataList = new ArrayList<>();
-              valueTimeseriesMetadataList.add(timeseriesMetadataList.get(searchResult));
-              resultTimeseriesMetadataList.add(
-                  new AlignedTimeSeriesMetadata(
-                      firstTimeseriesMetadata, valueTimeseriesMetadataList));
-            } else {
-              resultTimeseriesMetadataList.add(timeseriesMetadataList.get(searchResult));
-            }
-            measurementsHadFound.add(current);
-          }
-        }
-        if (measurementsHadFound.size() == measurements.size()) {
-          return resultTimeseriesMetadataList;
-        }
-      }
-    }
-    return resultTimeseriesMetadataList;
-  }
-
-  protected int binarySearchInTimeseriesMetadataList(
-      List<TimeseriesMetadata> timeseriesMetadataList, String key) {
-    int low = 0;
-    int high = timeseriesMetadataList.size() - 1;
-
-    while (low <= high) {
-      int mid = (low + high) >>> 1;
-      TimeseriesMetadata midVal = timeseriesMetadataList.get(mid);
-      int cmp = midVal.getMeasurementId().compareTo(key);
-
-      if (cmp < 0) {
-        low = mid + 1;
-      } else if (cmp > 0) {
-        high = mid - 1;
-      } else {
-        return mid; // key found
-      }
-    }
-    return -1; // key not found
-  }
-
-  public List<IDeviceID> getAllDevices() throws IOException {
-    if (tsFileMetaData == null) {
-      readFileMetadata();
-    }
-    return getAllDevices(tsFileMetaData.getMetadataIndex());
-  }
-
-  private List<IDeviceID> getAllDevices(MetadataIndexNode metadataIndexNode) throws IOException {
-    List<IDeviceID> deviceList = new ArrayList<>();
-    // if metadataIndexNode is LEAF_DEVICE, put all devices in node entry into the list
-    if (metadataIndexNode.getNodeType().equals(MetadataIndexNodeType.LEAF_DEVICE)) {
-      deviceList.addAll(
-          metadataIndexNode.getChildren().stream()
-              .map(entry -> ((DeviceMetadataIndexEntry) entry).getDeviceID())
-              .collect(Collectors.toList()));
-      return deviceList;
-    }
-
-    int metadataIndexListSize = metadataIndexNode.getChildren().size();
-    for (int i = 0; i < metadataIndexListSize; i++) {
-      long endOffset = metadataIndexNode.getEndOffset();
-      if (i != metadataIndexListSize - 1) {
-        endOffset = metadataIndexNode.getChildren().get(i + 1).getOffset();
-      }
-      ByteBuffer buffer = readData(metadataIndexNode.getChildren().get(i).getOffset(), endOffset);
-      MetadataIndexNode node = MetadataIndexNode.deserializeFrom(buffer, true);
-      deviceList.addAll(getAllDevices(node));
-    }
-    return deviceList;
-  }
-
-  /**
-   * @return an iterator of "device, isAligned" list, in which names of devices are ordered in
-   *     dictionary order, and isAligned represents whether the device is aligned. Only read devices
-   *     on one device leaf node each time to save memory.
-   */
-  public TsFileDeviceIterator getAllDevicesIteratorWithIsAligned() throws IOException {
-    readFileMetadata();
-    Queue<Pair<IDeviceID, long[]>> queue = new LinkedList<>();
-    List<long[]> leafDeviceNodeOffsets = new ArrayList<>();
-    MetadataIndexNode metadataIndexNode = tsFileMetaData.getMetadataIndex();
-    if (metadataIndexNode.getNodeType().equals(MetadataIndexNodeType.LEAF_DEVICE)) {
-      // the first node of index tree is device leaf node, then get the devices directly
-      getDevicesOfLeafNode(metadataIndexNode, queue);
-    } else {
-      // get all device leaf node offset
-      getAllDeviceLeafNodeOffset(metadataIndexNode, leafDeviceNodeOffsets);
-    }
-
-    return new TsFileDeviceIterator(this, leafDeviceNodeOffsets, queue);
-  }
-
-  /**
-   * Get devices and first measurement node offset.
-   *
-   * @param startOffset start offset of device leaf node
-   * @param endOffset end offset of device leaf node
-   * @param measurementNodeOffsetQueue device -> first measurement node offset
-   */
-  public void getDevicesAndEntriesOfOneLeafNode(
-      Long startOffset, Long endOffset, Queue<Pair<IDeviceID, long[]>> measurementNodeOffsetQueue)
-      throws IOException {
-    try {
-      ByteBuffer nextBuffer = readData(startOffset, endOffset);
-      MetadataIndexNode deviceLeafNode = MetadataIndexNode.deserializeFrom(nextBuffer, true);
-      getDevicesOfLeafNode(deviceLeafNode, measurementNodeOffsetQueue);
-    } catch (StopReadTsFileByInterruptException e) {
-      throw e;
-    } catch (Exception e) {
-      logger.error("Something error happened while getting all devices of file {}", file);
-      throw e;
-    }
-  }
-
-  /**
-   * Get all devices and its corresponding entries on the specific device leaf node.
-   *
-   * @param deviceLeafNode this node must be device leaf node
-   */
-  private void getDevicesOfLeafNode(
-      MetadataIndexNode deviceLeafNode, Queue<Pair<IDeviceID, long[]>> measurementNodeOffsetQueue) {
-    if (!deviceLeafNode.getNodeType().equals(MetadataIndexNodeType.LEAF_DEVICE)) {
-      throw new IllegalStateException("the first param should be device leaf node.");
-    }
-    List<IMetadataIndexEntry> childrenEntries = deviceLeafNode.getChildren();
-    for (int i = 0; i < childrenEntries.size(); i++) {
-      IMetadataIndexEntry deviceEntry = childrenEntries.get(i);
-      long childStartOffset = deviceEntry.getOffset();
-      long childEndOffset =
-          i == childrenEntries.size() - 1
-              ? deviceLeafNode.getEndOffset()
-              : childrenEntries.get(i + 1).getOffset();
-      long[] offset = {childStartOffset, childEndOffset};
-      measurementNodeOffsetQueue.add(
-          new Pair<>(((DeviceMetadataIndexEntry) deviceEntry).getDeviceID(), offset));
-    }
-  }
-
-  /**
-   * Get the device leaf node offset under the specific device internal node.
-   *
-   * @param deviceInternalNode this node must be device internal node
-   */
-  private void getAllDeviceLeafNodeOffset(
-      MetadataIndexNode deviceInternalNode, List<long[]> leafDeviceNodeOffsets) throws IOException {
-    if (!deviceInternalNode.getNodeType().equals(MetadataIndexNodeType.INTERNAL_DEVICE)) {
-      throw new IllegalStateException("the first param should be device internal node.");
-    }
-    try {
-      int metadataIndexListSize = deviceInternalNode.getChildren().size();
-      boolean isCurrentLayerLeafNode = false;
-      for (int i = 0; i < metadataIndexListSize; i++) {
-        IMetadataIndexEntry entry = deviceInternalNode.getChildren().get(i);
-        long startOffset = entry.getOffset();
-        long endOffset = deviceInternalNode.getEndOffset();
-        if (i != metadataIndexListSize - 1) {
-          endOffset = deviceInternalNode.getChildren().get(i + 1).getOffset();
-        }
-        if (i == 0) {
-          // check is current layer device leaf node or device internal node. Just need to check the
-          // first entry, because the rest are the same
-          MetadataIndexNodeType nodeType =
-              MetadataIndexNodeType.deserialize(
-                  ReadWriteIOUtils.readByte(readData(endOffset - 1, endOffset)));
-          isCurrentLayerLeafNode = nodeType.equals(MetadataIndexNodeType.LEAF_DEVICE);
-        }
-        if (isCurrentLayerLeafNode) {
-          // is device leaf node
-          long[] offset = {startOffset, endOffset};
-          leafDeviceNodeOffsets.add(offset);
-          continue;
-        }
-        ByteBuffer nextBuffer = readData(startOffset, endOffset);
-        getAllDeviceLeafNodeOffset(
-            MetadataIndexNode.deserializeFrom(nextBuffer, true), leafDeviceNodeOffsets);
-      }
-    } catch (StopReadTsFileByInterruptException e) {
-      throw e;
-    } catch (Exception e) {
-      logger.error("Something error happened while getting all devices of file {}", file);
-      throw e;
-    }
-  }
-
-  /**
-   * read all ChunkMetaDatas of given device
-   *
-   * @param device name
-   * @return measurement -> ChunkMetadata list
-   * @throws IOException io error
-   */
-  public Map<String, List<ChunkMetadata>> readChunkMetadataInDevice(IDeviceID device)
-      throws IOException {
-    readFileMetadata();
-    List<TimeseriesMetadata> timeseriesMetadataMap = getDeviceTimeseriesMetadata(device);
-    if (timeseriesMetadataMap.isEmpty()) {
-      return new HashMap<>();
-    }
-    Map<String, List<ChunkMetadata>> seriesMetadata = new LinkedHashMap<>();
-    for (TimeseriesMetadata timeseriesMetadata : timeseriesMetadataMap) {
-      seriesMetadata.put(
-          timeseriesMetadata.getMeasurementId(),
-          timeseriesMetadata.getChunkMetadataList().stream()
-              .map(chunkMetadata -> ((ChunkMetadata) chunkMetadata))
-              .collect(Collectors.toList()));
-    }
-    return seriesMetadata;
-  }
-
-  /**
-   * this function return all timeseries names
-   *
-   * @return list of Paths
-   * @throws IOException io error
-   */
-  public List<Path> getAllPaths() throws IOException {
-    List<Path> paths = new ArrayList<>();
-    for (IDeviceID device : getAllDevices()) {
-      Map<String, TimeseriesMetadata> timeseriesMetadataMap = readDeviceMetadata(device);
-      for (String measurementId : timeseriesMetadataMap.keySet()) {
-        paths.add(new Path(device, measurementId, true));
-      }
-    }
-    return paths;
-  }
-
-  /**
-   * @return an iterator of timeseries list, in which names of timeseries are ordered in dictionary
-   *     order
-   * @throws IOException io error
-   */
-  public Iterator<List<Path>> getPathsIterator() throws IOException {
-    readFileMetadata();
-
-    MetadataIndexNode metadataIndexNode = tsFileMetaData.getMetadataIndex();
-    List<IMetadataIndexEntry> metadataIndexEntryList = metadataIndexNode.getChildren();
-    Queue<Pair<IDeviceID, Pair<Long, Long>>> queue = new LinkedList<>();
-    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);
-      getAllPaths(metadataIndexEntry, buffer, null, metadataIndexNode.getNodeType(), queue);
-    }
-    return new Iterator<List<Path>>() {
-      @Override
-      public boolean hasNext() {
-        return !queue.isEmpty();
-      }
-
-      @Override
-      public List<Path> next() {
-        if (!hasNext()) {
-          throw new NoSuchElementException();
-        }
-        Pair<IDeviceID, Pair<Long, Long>> startEndPair = queue.remove();
-        List<Path> paths = new ArrayList<>();
-        try {
-          ByteBuffer nextBuffer = readData(startEndPair.right.left, startEndPair.right.right);
-          while (nextBuffer.hasRemaining()) {
-            paths.add(
-                new Path(
-                    startEndPair.left,
-                    TimeseriesMetadata.deserializeFrom(nextBuffer, false).getMeasurementId(),
-                    true));
-          }
-          return paths;
-        } catch (IOException e) {
-          throw new TsFileRuntimeException(
-              "Error occurred while reading a time series metadata block.");
-        }
-      }
-    };
-  }
-
-  private void getAllPaths(
-      IMetadataIndexEntry metadataIndex,
-      ByteBuffer buffer,
-      IDeviceID deviceId,
-      MetadataIndexNodeType type,
-      Queue<Pair<IDeviceID, Pair<Long, Long>>> queue)
-      throws IOException {
-    try {
-      if (type.equals(MetadataIndexNodeType.LEAF_DEVICE)) {
-        deviceId = ((DeviceMetadataIndexEntry) metadataIndex).getDeviceID();
-      }
-      boolean currentChildLevelIsDevice = MetadataIndexNodeType.INTERNAL_DEVICE.equals(type);
-      MetadataIndexNode metadataIndexNode =
-          MetadataIndexNode.deserializeFrom(buffer, currentChildLevelIsDevice);
-      int metadataIndexListSize = metadataIndexNode.getChildren().size();
-      for (int i = 0; i < metadataIndexListSize; i++) {
-        long startOffset = metadataIndexNode.getChildren().get(i).getOffset();
-        long endOffset = metadataIndexNode.getEndOffset();
-        if (i != metadataIndexListSize - 1) {
-          endOffset = metadataIndexNode.getChildren().get(i + 1).getOffset();
-        }
-        if (metadataIndexNode.getNodeType().equals(MetadataIndexNodeType.LEAF_MEASUREMENT)) {
-          queue.add(new Pair<>(deviceId, new Pair<>(startOffset, endOffset)));
-          continue;
-        }
-        ByteBuffer nextBuffer =
-            readData(metadataIndexNode.getChildren().get(i).getOffset(), endOffset);
-        getAllPaths(
-            metadataIndexNode.getChildren().get(i),
-            nextBuffer,
-            deviceId,
-            metadataIndexNode.getNodeType(),
-            queue);
-      }
-    } catch (StopReadTsFileByInterruptException e) {
-      throw e;
-    } catch (Exception e) {
-      logger.error("Something error happened while getting all paths of file {}", file);
-      throw e;
-    }
-  }
-
-  /**
-   * Check whether the device is aligned or not.
-   *
-   * @param measurementNode the next measurement layer node of specific device node
-   */
-  public boolean isAlignedDevice(MetadataIndexNode measurementNode) {
-    IMetadataIndexEntry entry = measurementNode.getChildren().get(0);
-    return "".equals(((MeasurementMetadataIndexEntry) entry).getName());
-  }
-
-  TimeseriesMetadata tryToGetFirstTimeseriesMetadata(MetadataIndexNode measurementNode)
-      throws IOException {
-    // Not aligned timeseries
-    if (!isAlignedDevice(measurementNode)) {
-      return null;
-    }
-
-    // Aligned timeseries
-    if (measurementNode.getNodeType().equals(MetadataIndexNodeType.LEAF_MEASUREMENT)) {
-      ByteBuffer buffer;
-      if (measurementNode.getChildren().size() > 1) {
-        buffer =
-            readData(
-                measurementNode.getChildren().get(0).getOffset(),
-                measurementNode.getChildren().get(1).getOffset());
-      } else {
-        buffer =
-            readData(
-                measurementNode.getChildren().get(0).getOffset(), measurementNode.getEndOffset());
-      }
-      return TimeseriesMetadata.deserializeFrom(buffer, true);
-    } else if (measurementNode.getNodeType().equals(MetadataIndexNodeType.INTERNAL_MEASUREMENT)) {
-      ByteBuffer buffer =
-          readData(
-              measurementNode.getChildren().get(0).getOffset(),
-              measurementNode.getChildren().get(1).getOffset());
-      MetadataIndexNode metadataIndexNode = MetadataIndexNode.deserializeFrom(buffer, false);
-      return tryToGetFirstTimeseriesMetadata(metadataIndexNode);
-    }
-    return null;
-  }
-
-  /**
-   * Get the measurements of current device by its first measurement node. Also get the chunk
-   * metadata list and timeseries metadata offset.
-   *
-   * @param measurementNode first measurement node of the device
-   * @param excludedMeasurementIds do not deserialize chunk metadatas whose measurementId is in the
-   *     set. Notice: It only takes effect when the needChunkMetadata parameter is true.
-   * @param needChunkMetadata need to deserialize chunk metadatas or not
-   * @return measurement -> chunk metadata list -> timeseries metadata <startOffset, endOffset>
-   */
-  public Map<String, Pair<List<IChunkMetadata>, Pair<Long, Long>>>
-      getTimeseriesMetadataOffsetByDevice(
-          MetadataIndexNode measurementNode,
-          Set<String> excludedMeasurementIds,
-          boolean needChunkMetadata)
-          throws IOException {
-    Map<String, Pair<List<IChunkMetadata>, Pair<Long, Long>>> timeseriesMetadataOffsetMap =
-        new LinkedHashMap<>();
-    List<IMetadataIndexEntry> childrenEntryList = measurementNode.getChildren();
-    for (int i = 0; i < childrenEntryList.size(); i++) {
-      long startOffset = childrenEntryList.get(i).getOffset();
-      long endOffset =
-          i == childrenEntryList.size() - 1
-              ? measurementNode.getEndOffset()
-              : childrenEntryList.get(i + 1).getOffset();
-      ByteBuffer nextBuffer = readData(startOffset, endOffset);
-      if (measurementNode.getNodeType().equals(MetadataIndexNodeType.LEAF_MEASUREMENT)) {
-        // leaf measurement node
-        while (nextBuffer.hasRemaining()) {
-          int metadataStartOffset = nextBuffer.position();
-          TimeseriesMetadata timeseriesMetadata =
-              TimeseriesMetadata.deserializeFrom(
-                  nextBuffer, excludedMeasurementIds, needChunkMetadata);
-          timeseriesMetadataOffsetMap.put(
-              timeseriesMetadata.getMeasurementId(),
-              new Pair<>(
-                  timeseriesMetadata.getChunkMetadataList(),
-                  new Pair<>(
-                      startOffset + metadataStartOffset, startOffset + nextBuffer.position())));
-        }
-
-      } else {
-        // internal measurement node
-        MetadataIndexNode nextLayerMeasurementNode =
-            MetadataIndexNode.deserializeFrom(nextBuffer, false);
-        timeseriesMetadataOffsetMap.putAll(
-            getTimeseriesMetadataOffsetByDevice(
-                nextLayerMeasurementNode, excludedMeasurementIds, needChunkMetadata));
-      }
-    }
-    return timeseriesMetadataOffsetMap;
-  }
-
-  /**
-   * Get chunk metadata list by the start offset and end offset of the timeseries metadata.
-   *
-   * @param startOffset the start offset of timeseries metadata
-   * @param endOffset the end offset of timeseries metadata
-   */
-  public List<IChunkMetadata> getChunkMetadataListByTimeseriesMetadataOffset(
-      long startOffset, long endOffset) throws IOException {
-    ByteBuffer timeseriesMetadataBuffer = readData(startOffset, endOffset);
-
-    TimeseriesMetadata timeseriesMetadata =
-        TimeseriesMetadata.deserializeFrom(timeseriesMetadataBuffer, true);
-    return timeseriesMetadata.getChunkMetadataList();
-  }
-
-  /**
-   * Get timeseries metadata under the measurementNode and put them into timeseriesMetadataList.
-   * Skip timeseries whose measurementId is in the excludedMeasurementIds.
-   *
-   * @param measurementNode next layer measurement node of specific device leaf node
-   * @param excludedMeasurementIds skip timeseries whose measurementId is in the set
-   */
-  public void getDeviceTimeseriesMetadata(
-      List<TimeseriesMetadata> timeseriesMetadataList,
-      MetadataIndexNode measurementNode,
-      Set<String> excludedMeasurementIds,
-      boolean needChunkMetadata)
-      throws IOException {
-    int metadataIndexListSize = measurementNode.getChildren().size();
-    for (int i = 0; i < metadataIndexListSize; i++) {
-      long endOffset = measurementNode.getEndOffset();
-      if (i != metadataIndexListSize - 1) {
-        endOffset = measurementNode.getChildren().get(i + 1).getOffset();
-      }
-      ByteBuffer nextBuffer = readData(measurementNode.getChildren().get(i).getOffset(), endOffset);
-      if (measurementNode.getNodeType().equals(MetadataIndexNodeType.LEAF_MEASUREMENT)) {
-        // leaf measurement node
-        while (nextBuffer.hasRemaining()) {
-          TimeseriesMetadata timeseriesMetadata =
-              TimeseriesMetadata.deserializeFrom(
-                  nextBuffer, excludedMeasurementIds, needChunkMetadata);
-          if (!excludedMeasurementIds.contains(timeseriesMetadata.getMeasurementId())) {
-            timeseriesMetadataList.add(timeseriesMetadata);
-          }
-        }
-      } else {
-        // internal measurement node
-        MetadataIndexNode nextLayerMeasurementNode =
-            MetadataIndexNode.deserializeFrom(nextBuffer, false);
-        getDeviceTimeseriesMetadata(
-            timeseriesMetadataList,
-            nextLayerMeasurementNode,
-            excludedMeasurementIds,
-            needChunkMetadata);
-      }
-    }
-  }
-
-  /**
-   * Traverse the metadata index from MetadataIndexEntry to get TimeseriesMetadatas
-   *
-   * @param metadataIndex MetadataIndexEntry
-   * @param buffer byte buffer
-   * @param deviceId IDeviceID
-   * @param timeseriesMetadataMap map: deviceId -> timeseriesMetadata list
-   * @param needChunkMetadata deserialize chunk metadata list or not
-   */
-  private void generateMetadataIndex(
-      IMetadataIndexEntry metadataIndex,
-      ByteBuffer buffer,
-      IDeviceID deviceId,
-      MetadataIndexNodeType type,
-      Map<IDeviceID, List<TimeseriesMetadata>> timeseriesMetadataMap,
-      boolean needChunkMetadata)
-      throws IOException {
-    try {
-      if (type.equals(MetadataIndexNodeType.LEAF_MEASUREMENT)) {
-        List<TimeseriesMetadata> timeseriesMetadataList = new ArrayList<>();
-        while (buffer.hasRemaining()) {
-          timeseriesMetadataList.add(TimeseriesMetadata.deserializeFrom(buffer, needChunkMetadata));
-        }
-        timeseriesMetadataMap
-            .computeIfAbsent(deviceId, k -> new ArrayList<>())
-            .addAll(timeseriesMetadataList);
-      } else {
-        // deviceId should be determined by LEAF_DEVICE node
-        if (type.equals(MetadataIndexNodeType.LEAF_DEVICE)) {
-          deviceId = ((DeviceMetadataIndexEntry) metadataIndex).getDeviceID();
-        }
-        boolean currentChildLevelIsDevice = MetadataIndexNodeType.INTERNAL_DEVICE.equals(type);
-        MetadataIndexNode metadataIndexNode =
-            MetadataIndexNode.deserializeFrom(buffer, currentChildLevelIsDevice);
-        int metadataIndexListSize = metadataIndexNode.getChildren().size();
-        for (int i = 0; i < metadataIndexListSize; i++) {
-          long endOffset = metadataIndexNode.getEndOffset();
-          if (i != metadataIndexListSize - 1) {
-            endOffset = metadataIndexNode.getChildren().get(i + 1).getOffset();
-          }
-          if (endOffset - metadataIndexNode.getChildren().get(i).getOffset() < Integer.MAX_VALUE) {
-            ByteBuffer nextBuffer =
-                readData(metadataIndexNode.getChildren().get(i).getOffset(), endOffset);
-            generateMetadataIndex(
-                metadataIndexNode.getChildren().get(i),
-                nextBuffer,
-                deviceId,
-                metadataIndexNode.getNodeType(),
-                timeseriesMetadataMap,
-                needChunkMetadata);
-          } else {
-            // when the buffer length is over than Integer.MAX_VALUE,
-            // using tsFileInput to get timeseriesMetadataList
-            generateMetadataIndexUsingTsFileInput(
-                metadataIndexNode.getChildren().get(i),
-                metadataIndexNode.getChildren().get(i).getOffset(),
-                endOffset,
-                deviceId,
-                metadataIndexNode.getNodeType(),
-                timeseriesMetadataMap,
-                needChunkMetadata);
-          }
-        }
-      }
-    } catch (StopReadTsFileByInterruptException e) {
-      throw e;
-    } catch (Exception e) {
-      logger.error("Something error happened while generating MetadataIndex of file {}", file);
-      throw e;
-    }
-  }
-
-  private void generateMetadataIndexUsingTsFileInput(
-      IMetadataIndexEntry metadataIndex,
-      long start,
-      long end,
-      IDeviceID deviceId,
-      MetadataIndexNodeType type,
-      Map<IDeviceID, List<TimeseriesMetadata>> timeseriesMetadataMap,
-      boolean needChunkMetadata)
-      throws IOException {
-    try {
-      tsFileInput.position(start);
-      if (type.equals(MetadataIndexNodeType.LEAF_MEASUREMENT)) {
-        List<TimeseriesMetadata> timeseriesMetadataList = new ArrayList<>();
-        while (tsFileInput.position() < end) {
-          timeseriesMetadataList.add(
-              TimeseriesMetadata.deserializeFrom(tsFileInput, needChunkMetadata));
-        }
-        timeseriesMetadataMap
-            .computeIfAbsent(deviceId, k -> new ArrayList<>())
-            .addAll(timeseriesMetadataList);
-      } else {
-        // deviceId should be determined by LEAF_DEVICE node
-        if (type.equals(MetadataIndexNodeType.LEAF_DEVICE)) {
-          deviceId = ((DeviceMetadataIndexEntry) metadataIndex).getDeviceID();
-        }
-        boolean currentChildLevelIsDevice = MetadataIndexNodeType.INTERNAL_DEVICE.equals(type);
-        MetadataIndexNode metadataIndexNode =
-            MetadataIndexNode.deserializeFrom(
-                tsFileInput.wrapAsInputStream(), currentChildLevelIsDevice);
-        int metadataIndexListSize = metadataIndexNode.getChildren().size();
-        for (int i = 0; i < metadataIndexListSize; i++) {
-          long endOffset = metadataIndexNode.getEndOffset();
-          if (i != metadataIndexListSize - 1) {
-            endOffset = metadataIndexNode.getChildren().get(i + 1).getOffset();
-          }
-          generateMetadataIndexUsingTsFileInput(
-              metadataIndexNode.getChildren().get(i),
-              metadataIndexNode.getChildren().get(i).getOffset(),
-              endOffset,
-              deviceId,
-              metadataIndexNode.getNodeType(),
-              timeseriesMetadataMap,
-              needChunkMetadata);
-        }
-      }
-    } catch (StopReadTsFileByInterruptException e) {
-      throw e;
-    } catch (Exception e) {
-      logger.error("Something error happened while generating MetadataIndex of file {}", file);
-      throw e;
-    }
-  }
-
-  /* TimeseriesMetadata don't need deserialize chunk metadata list */
-  public Map<IDeviceID, List<TimeseriesMetadata>> getAllTimeseriesMetadata(
-      boolean needChunkMetadata) throws IOException {
-    if (tsFileMetaData == null) {
-      readFileMetadata();
-    }
-    Map<IDeviceID, List<TimeseriesMetadata>> timeseriesMetadataMap = new HashMap<>();
-    MetadataIndexNode metadataIndexNode = tsFileMetaData.getMetadataIndex();
-    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();
-      }
-      if (endOffset - metadataIndexEntry.getOffset() < Integer.MAX_VALUE) {
-        ByteBuffer buffer = readData(metadataIndexEntry.getOffset(), endOffset);
-        generateMetadataIndex(
-            metadataIndexEntry,
-            buffer,
-            null,
-            metadataIndexNode.getNodeType(),
-            timeseriesMetadataMap,
-            needChunkMetadata);
-      } else {
-        generateMetadataIndexUsingTsFileInput(
-            metadataIndexNode.getChildren().get(i),
-            metadataIndexNode.getChildren().get(i).getOffset(),
-            endOffset,
-            null,
-            metadataIndexNode.getNodeType(),
-            timeseriesMetadataMap,
-            needChunkMetadata);
-      }
-    }
-    return timeseriesMetadataMap;
-  }
-
-  /* This method will only deserialize the TimeseriesMetadata, not including chunk metadata list */
-  private List<TimeseriesMetadata> getDeviceTimeseriesMetadataWithoutChunkMetadata(IDeviceID device)
-      throws IOException {
-    MetadataIndexNode metadataIndexNode = tsFileMetaData.getMetadataIndex();
-    Pair<IMetadataIndexEntry, Long> metadataIndexPair =
-        getMetadataAndEndOffsetOfDeviceNode(metadataIndexNode, device, true);
-    if (metadataIndexPair == null) {
-      return Collections.emptyList();
-    }
-    ByteBuffer buffer = readData(metadataIndexPair.left.getOffset(), metadataIndexPair.right);
-    Map<IDeviceID, List<TimeseriesMetadata>> timeseriesMetadataMap = new TreeMap<>();
-    generateMetadataIndex(
-        metadataIndexPair.left,
-        buffer,
-        device,
-        MetadataIndexNodeType.INTERNAL_MEASUREMENT,
-        timeseriesMetadataMap,
-        false);
-    List<TimeseriesMetadata> deviceTimeseriesMetadata = new ArrayList<>();
-    for (List<TimeseriesMetadata> timeseriesMetadataList : timeseriesMetadataMap.values()) {
-      deviceTimeseriesMetadata.addAll(timeseriesMetadataList);
-    }
-    return deviceTimeseriesMetadata;
-  }
-
-  /* This method will not only deserialize the TimeseriesMetadata, but also all the chunk metadata list meanwhile. */
-  private List<TimeseriesMetadata> getDeviceTimeseriesMetadata(IDeviceID device)
-      throws IOException {
-    MetadataIndexNode metadataIndexNode = tsFileMetaData.getMetadataIndex();
-    Pair<IMetadataIndexEntry, Long> metadataIndexPair =
-        getMetadataAndEndOffsetOfDeviceNode(metadataIndexNode, device, true);
-    if (metadataIndexPair == null) {
-      return Collections.emptyList();
-    }
-    ByteBuffer buffer = readData(metadataIndexPair.left.getOffset(), metadataIndexPair.right);
-    Map<IDeviceID, List<TimeseriesMetadata>> timeseriesMetadataMap = new TreeMap<>();
-    generateMetadataIndex(
-        metadataIndexPair.left,
-        buffer,
-        device,
-        MetadataIndexNodeType.INTERNAL_MEASUREMENT,
-        timeseriesMetadataMap,
-        true);
-    List<TimeseriesMetadata> deviceTimeseriesMetadata = new ArrayList<>();
-    for (List<TimeseriesMetadata> timeseriesMetadataList : timeseriesMetadataMap.values()) {
-      deviceTimeseriesMetadata.addAll(timeseriesMetadataList);
-    }
-    return deviceTimeseriesMetadata;
-  }
-
-  /**
-   * Get target MetadataIndexEntry and its end offset
-   *
-   * @param metadataIndex given MetadataIndexNode
-   * @param deviceID target device
-   * @param exactSearch whether is in exact search mode, return null when there is no entry with
-   *     name; or else return the nearest MetadataIndexEntry before it (for deeper search)
-   * @return target MetadataIndexEntry, endOffset pair
-   */
-  protected Pair<IMetadataIndexEntry, Long> getMetadataAndEndOffsetOfDeviceNode(
-      MetadataIndexNode metadataIndex, IDeviceID deviceID, boolean exactSearch) throws IOException {
-    if (MetadataIndexNodeType.INTERNAL_MEASUREMENT.equals(metadataIndex.getNodeType())
-        || MetadataIndexNodeType.LEAF_MEASUREMENT.equals(metadataIndex.getNodeType())) {
-      throw new IllegalArgumentException();
-    }
-    try {
-      if (MetadataIndexNodeType.INTERNAL_DEVICE.equals(metadataIndex.getNodeType())) {
-        Pair<IMetadataIndexEntry, Long> childIndexEntry =
-            metadataIndex.getChildIndexEntry(deviceID, false);
-        ByteBuffer buffer = readData(childIndexEntry.left.getOffset(), childIndexEntry.right);
-        return getMetadataAndEndOffsetOfDeviceNode(
-            MetadataIndexNode.deserializeFrom(buffer, true), deviceID, exactSearch);
-      } else {
-        return metadataIndex.getChildIndexEntry(deviceID, exactSearch);
-      }
-    } catch (Exception e) {
-      logger.error("Something error happened while deserializing MetadataIndex of file {}", file);
-      throw e;
-    }
-  }
-
-  /**
-   * Get target MetadataIndexEntry and its end offset
-   *
-   * @param metadataIndex given MetadataIndexNode
-   * @param measurement target measurement
-   * @param exactSearch whether is in exact search mode, return null when there is no entry with
-   *     name; or else return the nearest MetadataIndexEntry before it (for deeper search)
-   * @return target MetadataIndexEntry, endOffset pair
-   */
-  protected Pair<IMetadataIndexEntry, Long> getMetadataAndEndOffsetOfMeasurementNode(
-      MetadataIndexNode metadataIndex, String measurement, boolean exactSearch) throws IOException {
-    if (MetadataIndexNodeType.INTERNAL_DEVICE.equals(metadataIndex.getNodeType())
-        || MetadataIndexNodeType.LEAF_DEVICE.equals(metadataIndex.getNodeType())) {
-      throw new IllegalArgumentException();
-    }
-    try {
-      if (MetadataIndexNodeType.INTERNAL_MEASUREMENT.equals(metadataIndex.getNodeType())) {
-        Pair<IMetadataIndexEntry, Long> childIndexEntry =
-            metadataIndex.getChildIndexEntry(measurement, false);
-        ByteBuffer buffer = readData(childIndexEntry.left.getOffset(), childIndexEntry.right);
-        return getMetadataAndEndOffsetOfMeasurementNode(
-            MetadataIndexNode.deserializeFrom(buffer, false), measurement, exactSearch);
-      } else {
-        return metadataIndex.getChildIndexEntry(measurement, exactSearch);
-      }
-    } catch (StopReadTsFileByInterruptException e) {
-      throw e;
-    } catch (Exception e) {
-      logger.error("Something error happened while deserializing MetadataIndex of file {}", file);
-      throw e;
-    }
-  }
-
-  /**
-   * read data from current position of the input, and deserialize it to a CHUNK_GROUP_FOOTER. <br>
-   * This method is not threadsafe.
-   *
-   * @return a CHUNK_GROUP_FOOTER
-   * @throws IOException io error
-   */
-  public ChunkGroupHeader readChunkGroupHeader() throws IOException {
-    return ChunkGroupHeader.deserializeFrom(tsFileInput.wrapAsInputStream(), true);
-  }
-
-  /**
-   * read data from current position of the input, and deserialize it to a CHUNK_GROUP_FOOTER.
-   *
-   * @param position the offset of the chunk group footer in the file
-   * @param markerRead true if the offset does not contains the marker , otherwise false
-   * @return a CHUNK_GROUP_FOOTER
-   * @throws IOException io error
-   */
-  public ChunkGroupHeader readChunkGroupHeader(long position, boolean markerRead)
-      throws IOException {
-    return ChunkGroupHeader.deserializeFrom(tsFileInput, position, markerRead);
-  }
-
-  public void readPlanIndex() throws IOException {
-    ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
-    if (ReadWriteIOUtils.readAsPossible(tsFileInput, buffer) == 0) {
-      throw new IOException("reach the end of the file.");
-    }
-    buffer.flip();
-    minPlanIndex = buffer.getLong();
-    buffer.clear();
-    if (ReadWriteIOUtils.readAsPossible(tsFileInput, buffer) == 0) {
-      throw new IOException("reach the end of the file.");
-    }
-    buffer.flip();
-    maxPlanIndex = buffer.getLong();
-  }
-
-  /**
-   * read data from current position of the input, and deserialize it to a CHUNK_HEADER. <br>
-   * This method is not threadsafe.
-   *
-   * @return a CHUNK_HEADER
-   * @throws IOException io error
-   */
-  public ChunkHeader readChunkHeader(byte chunkType) throws IOException {
-    try {
-      return ChunkHeader.deserializeFrom(tsFileInput.wrapAsInputStream(), chunkType);
-    } catch (StopReadTsFileByInterruptException e) {
-      throw e;
-    } catch (Throwable t) {
-      logger.warn("Exception {} happened while reading chunk header of {}", t.getMessage(), file);
-      throw t;
-    }
-  }
-
-  /**
-   * read the chunk's header.
-   *
-   * @param position the file offset of this chunk's header
-   */
-  private ChunkHeader readChunkHeader(long position) throws IOException {
-    try {
-      return ChunkHeader.deserializeFrom(tsFileInput, position);
-    } catch (StopReadTsFileByInterruptException e) {
-      throw e;
-    } catch (Throwable t) {
-      logger.warn("Exception {} happened while reading chunk header of {}", t.getMessage(), file);
-      throw t;
-    }
-  }
-
-  /**
-   * notice, this function will modify channel's position.
-   *
-   * @param dataSize the size of chunkdata
-   * @param position the offset of the chunk data
-   * @return the pages of this chunk
-   */
-  public ByteBuffer readChunk(long position, int dataSize) throws IOException {
-    try {
-      return readData(position, dataSize);
-    } catch (StopReadTsFileByInterruptException e) {
-      throw e;
-    } catch (Throwable t) {
-      logger.warn("Exception {} happened while reading chunk of {}", t.getMessage(), file);
-      throw t;
-    }
-  }
-
-  /**
-   * read memory chunk.
-   *
-   * @return -chunk
-   */
-  public Chunk readMemChunk(long offset) throws IOException {
-    try {
-      ChunkHeader header = readChunkHeader(offset);
-      ByteBuffer buffer = readChunk(offset + header.getSerializedSize(), header.getDataSize());
-      return new Chunk(header, buffer);
-    } catch (StopReadTsFileByInterruptException e) {
-      throw e;
-    } catch (Throwable t) {
-      logger.warn("Exception {} happened while reading chunk of {}", t.getMessage(), file);
-      throw t;
-    }
-  }
-
-  /**
-   * read memory chunk.
-   *
-   * @param metaData -given chunk meta data
-   * @return -chunk
-   */
-  public Chunk readMemChunk(ChunkMetadata metaData) throws IOException {
-    try {
-      ChunkHeader header = readChunkHeader(metaData.getOffsetOfChunkHeader());
-      ByteBuffer buffer =
-          readChunk(
-              metaData.getOffsetOfChunkHeader() + header.getSerializedSize(), header.getDataSize());
-      return new Chunk(header, buffer, metaData.getDeleteIntervalList(), metaData.getStatistics());
-    } catch (StopReadTsFileByInterruptException e) {
-      throw e;
-    } catch (Throwable t) {
-      logger.warn("Exception {} happened while reading chunk of {}", t.getMessage(), file);
-      throw t;
-    }
-  }
-
-  /**
-   * read memory chunk.
-   *
-   * @param chunkCacheKey given key of chunk LRUCache
-   * @return chunk
-   */
-  public Chunk readMemChunk(CachedChunkLoaderImpl.ChunkCacheKey chunkCacheKey) throws IOException {
-    ChunkHeader header = readChunkHeader(chunkCacheKey.getOffsetOfChunkHeader());
-    ByteBuffer buffer =
-        readChunk(
-            chunkCacheKey.getOffsetOfChunkHeader() + header.getSerializedSize(),
-            header.getDataSize());
-    return new Chunk(
-        header, buffer, chunkCacheKey.getDeleteIntervalList(), chunkCacheKey.getStatistics());
-  }
-
-  /**
-   * read the {@link CompressionType} and {@link TSEncoding} of a timeseries. This method will skip
-   * the measurement id, and data type. This method will change the position of this reader.
-   *
-   * @param timeseriesMetadata timeseries' metadata
-   * @return a pair of {@link CompressionType} and {@link TSEncoding} of given timeseries.
-   * @throws IOException
-   */
-  public Pair<CompressionType, TSEncoding> readTimeseriesCompressionTypeAndEncoding(
-      TimeseriesMetadata timeseriesMetadata) throws IOException {
-
-    String measurementId = timeseriesMetadata.getMeasurementId();
-    int measurementIdLength = measurementId.getBytes(TSFileConfig.STRING_CHARSET).length;
-    position(
-        timeseriesMetadata.getChunkMetadataList().get(0).getOffsetOfChunkHeader()
-            + Byte.BYTES // chunkType
-            + ReadWriteForEncodingUtils.varIntSize(measurementIdLength) // measurementID length
-            + measurementIdLength); // measurementID
-    return ChunkHeader.deserializeCompressionTypeAndEncoding(tsFileInput.wrapAsInputStream());
-  }
-
-  /** Get measurement schema by chunkMetadatas. */
-  public MeasurementSchema getMeasurementSchema(List<IChunkMetadata> chunkMetadataList)
-      throws IOException {
-    if (chunkMetadataList.isEmpty()) {
-      return null;
-    }
-    IChunkMetadata lastChunkMetadata = chunkMetadataList.get(chunkMetadataList.size() - 1);
-    ChunkHeader header = readChunkHeader(lastChunkMetadata.getOffsetOfChunkHeader());
-    return new MeasurementSchema(
-        lastChunkMetadata.getMeasurementUid(),
-        header.getDataType(),
-        header.getEncodingType(),
-        header.getCompressionType());
-  }
-
-  /**
-   * not thread safe.
-   *
-   * @param type given tsfile data type
-   */
-  public PageHeader readPageHeader(TSDataType type, boolean hasStatistic) throws IOException {
-    try {
-      return PageHeader.deserializeFrom(tsFileInput.wrapAsInputStream(), type, hasStatistic);
-    } catch (StopReadTsFileByInterruptException e) {
-      throw e;
-    } catch (Throwable t) {
-      logger.warn("Exception {} happened while reading page header of {}", t.getMessage(), file);
-      throw t;
-    }
-  }
-
-  public long position() throws IOException {
-    return tsFileInput.position();
-  }
-
-  public void position(long offset) throws IOException {
-    tsFileInput.position(offset);
-  }
-
-  public void skipPageData(PageHeader header) throws IOException {
-    tsFileInput.position(tsFileInput.position() + header.getCompressedSize());
-  }
-
-  public ByteBuffer readCompressedPage(PageHeader header) throws IOException {
-    return readData(-1, header.getCompressedSize());
-  }
-
-  public ByteBuffer readPage(PageHeader header, CompressionType type) throws IOException {
-    ByteBuffer buffer = readData(-1, header.getCompressedSize());
-    if (header.getUncompressedSize() == 0 || type == CompressionType.UNCOMPRESSED) {
-      return buffer;
-    } // FIXME if the buffer is not array-implemented.
-    IUnCompressor unCompressor = IUnCompressor.getUnCompressor(type);
-    ByteBuffer uncompressedBuffer = ByteBuffer.allocate(header.getUncompressedSize());
-    unCompressor.uncompress(
-        buffer.array(), buffer.position(), buffer.remaining(), uncompressedBuffer.array(), 0);
-    return uncompressedBuffer;
-  }
-
-  /**
-   * read one byte from the input. <br>
-   * this method is not thread safe
-   */
-  public byte readMarker() throws IOException {
-    markerBuffer.clear();
-    if (ReadWriteIOUtils.readAsPossible(tsFileInput, markerBuffer) == 0) {
-      throw new IOException("reach the end of the file.");
-    }
-    markerBuffer.flip();
-    return markerBuffer.get();
-  }
-
-  @Override
-  public void close() throws IOException {
-    if (resourceLogger.isDebugEnabled()) {
-      resourceLogger.debug("{} reader is closed.", file);
-    }
-    this.tsFileInput.close();
-  }
-
-  public String getFileName() {
-    return this.file;
-  }
-
-  public long fileSize() throws IOException {
-    return tsFileInput.size();
-  }
-
-  /**
-   * read data from tsFileInput, from the current position (if position = -1), or the given
-   * position. <br>
-   * if position = -1, the tsFileInput's position will be changed to the current position + real
-   * data size that been read. Other wise, the tsFileInput's position is not changed.
-   *
-   * @param position the start position of data in the tsFileInput, or the current position if
-   *     position = -1
-   * @param totalSize the size of data that want to read
-   * @return data that been read.
-   */
-  protected ByteBuffer readData(long position, int totalSize) throws IOException {
-    int allocateSize = Math.min(MAX_READ_BUFFER_SIZE, totalSize);
-    int allocateNum = (int) Math.ceil((double) totalSize / allocateSize);
-    ByteBuffer buffer = ByteBuffer.allocate(totalSize);
-    int bufferLimit = 0;
-    for (int i = 0; i < allocateNum; i++) {
-      if (i == allocateNum - 1) {
-        allocateSize = totalSize - allocateSize * (allocateNum - 1);
-      }
-      bufferLimit += allocateSize;
-      buffer.limit(bufferLimit);
-      if (position < 0) {
-        if (ReadWriteIOUtils.readAsPossible(tsFileInput, buffer) != allocateSize) {
-          throw new IOException("reach the end of the data");
-        }
-      } else {
-        long actualReadSize =
-            ReadWriteIOUtils.readAsPossible(tsFileInput, buffer, position, allocateSize);
-        if (actualReadSize != allocateSize) {
-          throw new IOException(
-              String.format(
-                  "reach the end of the data. Size of data that want to read: %s,"
-                      + "actual read size: %s, position: %s",
-                  allocateSize, actualReadSize, position));
-        }
-        position += allocateSize;
-      }
-    }
-    buffer.flip();
-    return buffer;
-  }
-
-  /**
-   * read data from tsFileInput, from the current position (if position = -1), or the given
-   * position.
-   *
-   * @param start the start position of data in the tsFileInput, or the current position if position
-   *     = -1
-   * @param end the end position of data that want to read
-   * @return data that been read.
-   */
-  protected ByteBuffer readData(long start, long end) throws IOException {
-    try {
-      return readData(start, (int) (end - start));
-    } catch (StopReadTsFileByInterruptException e) {
-      throw e;
-    } catch (Throwable t) {
-      logger.warn("Exception {} happened while reading data of {}", t.getMessage(), file);
-      throw t;
-    }
-  }
-
-  /** notice, the target bytebuffer are not flipped. */
-  public int readRaw(long position, int length, ByteBuffer target) throws IOException {
-    return ReadWriteIOUtils.readAsPossible(tsFileInput, target, position, length);
-  }
-
-  /**
-   * Self Check the file and return the position before where the data is safe.
-   *
-   * @param newSchema the schema on each time series in the file
-   * @param chunkGroupMetadataList ChunkGroupMetadata List
-   * @param fastFinish if true and the file is complete, then newSchema and chunkGroupMetadataList
-   *     parameter will be not modified.
-   * @return the position of the file that is fine. All data after the position in the file should
-   *     be truncated.
-   */
-  @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning
-  public long selfCheck(
-      Map<Path, IMeasurementSchema> newSchema,
-      List<ChunkGroupMetadata> chunkGroupMetadataList,
-      boolean fastFinish)
-      throws IOException {
-    File checkFile = FSFactoryProducer.getFSFactory().getFile(this.file);
-    long fileSize;
-    if (!checkFile.exists()) {
-      return TsFileCheckStatus.FILE_NOT_FOUND;
-    } else {
-      fileSize = checkFile.length();
-    }
-    ChunkMetadata currentChunk;
-    String measurementID;
-    TSDataType dataType;
-    long fileOffsetOfChunk;
-
-    // ChunkMetadata of current ChunkGroup
-    List<ChunkMetadata> chunkMetadataList = new ArrayList<>();
-
-    int headerLength = TSFileConfig.MAGIC_STRING.getBytes().length + Byte.BYTES;
-    if (fileSize < headerLength) {
-      return TsFileCheckStatus.INCOMPATIBLE_FILE;
-    }
-    if (!TSFileConfig.MAGIC_STRING.equals(readHeadMagic())
-        || (TSFileConfig.VERSION_NUMBER != readVersionNumber())) {
-      return TsFileCheckStatus.INCOMPATIBLE_FILE;
-    }
-
-    tsFileInput.position(headerLength);
-    boolean isComplete = isComplete();
-    if (fileSize == headerLength) {
-      return headerLength;
-    } else if (isComplete) {
-      loadMetadataSize();
-      if (fastFinish) {
-        return TsFileCheckStatus.COMPLETE_FILE;
-      }
-    }
-    // if not a complete file, we will recover it...
-    long truncatedSize = headerLength;
-    byte marker;
-    List<long[]> timeBatch = new ArrayList<>();
-    IDeviceID lastDeviceId = null;
-    List<IMeasurementSchema> measurementSchemaList = new ArrayList<>();
-    try {
-      while ((marker = this.readMarker()) != MetaMarker.SEPARATOR) {
-        switch (marker) {
-          case MetaMarker.CHUNK_HEADER:
-          case MetaMarker.TIME_CHUNK_HEADER:
-          case MetaMarker.VALUE_CHUNK_HEADER:
-          case MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER:
-          case MetaMarker.ONLY_ONE_PAGE_TIME_CHUNK_HEADER:
-          case MetaMarker.ONLY_ONE_PAGE_VALUE_CHUNK_HEADER:
-            fileOffsetOfChunk = this.position() - 1;
-            // if there is something wrong with a chunk, we will drop the whole ChunkGroup
-            // as different chunks may be created by the same insertions(sqls), and partial
-            // insertion is not tolerable
-            ChunkHeader chunkHeader = this.readChunkHeader(marker);
-            measurementID = chunkHeader.getMeasurementID();
-            IMeasurementSchema measurementSchema =
-                new MeasurementSchema(
-                    measurementID,
-                    chunkHeader.getDataType(),
-                    chunkHeader.getEncodingType(),
-                    chunkHeader.getCompressionType());
-            measurementSchemaList.add(measurementSchema);
-            dataType = chunkHeader.getDataType();
-            if (chunkHeader.getDataType() == TSDataType.VECTOR) {
-              timeBatch.clear();
-            }
-            Statistics<? extends Serializable> chunkStatistics =
-                Statistics.getStatsByType(dataType);
-            int dataSize = chunkHeader.getDataSize();
-
-            if (dataSize > 0) {
-              if (((byte) (chunkHeader.getChunkType() & 0x3F))
-                  == MetaMarker
-                      .CHUNK_HEADER) { // more than one page, we could use page statistics to
-                // generate chunk statistic
-                while (dataSize > 0) {
-                  // a new Page
-                  PageHeader pageHeader = this.readPageHeader(chunkHeader.getDataType(), true);
-                  if (pageHeader.getUncompressedSize() != 0) {
-                    // not empty page
-                    chunkStatistics.mergeStatistics(pageHeader.getStatistics());
-                  }
-                  this.skipPageData(pageHeader);
-                  dataSize -= pageHeader.getSerializedPageSize();
-                  chunkHeader.increasePageNums(1);
-                }
-              } else { // only one page without statistic, we need to iterate each point to generate
-                // chunk statistic
-                PageHeader pageHeader = this.readPageHeader(chunkHeader.getDataType(), false);
-                Decoder valueDecoder =
-                    Decoder.getDecoderByType(
-                        chunkHeader.getEncodingType(), chunkHeader.getDataType());
-                ByteBuffer pageData = readPage(pageHeader, chunkHeader.getCompressionType());
-                Decoder timeDecoder =
-                    Decoder.getDecoderByType(
-                        TSEncoding.valueOf(
-                            TSFileDescriptor.getInstance().getConfig().getTimeEncoder()),
-                        TSDataType.INT64);
-
-                if ((chunkHeader.getChunkType() & TsFileConstant.TIME_COLUMN_MASK)
-                    == TsFileConstant.TIME_COLUMN_MASK) { // Time Chunk with only one page
-
-                  TimePageReader timePageReader =
-                      new TimePageReader(pageHeader, pageData, timeDecoder);
-                  long[] currentTimeBatch = timePageReader.getNextTimeBatch();
-                  timeBatch.add(currentTimeBatch);
-                  for (long currentTime : currentTimeBatch) {
-                    chunkStatistics.update(currentTime);
-                  }
-                } else if ((chunkHeader.getChunkType() & TsFileConstant.VALUE_COLUMN_MASK)
-                    == TsFileConstant.VALUE_COLUMN_MASK) { // Value Chunk with only one page
-
-                  ValuePageReader valuePageReader =
-                      new ValuePageReader(
-                          pageHeader, pageData, chunkHeader.getDataType(), valueDecoder);
-                  TsPrimitiveType[] valueBatch = valuePageReader.nextValueBatch(timeBatch.get(0));
-
-                  if (valueBatch != null && valueBatch.length != 0) {
-                    for (int i = 0; i < valueBatch.length; i++) {
-                      TsPrimitiveType value = valueBatch[i];
-                      if (value == null) {
-                        continue;
-                      }
-                      long timeStamp = timeBatch.get(0)[i];
-                      switch (dataType) {
-                        case INT32:
-                          chunkStatistics.update(timeStamp, value.getInt());
-                          break;
-                        case INT64:
-                          chunkStatistics.update(timeStamp, value.getLong());
-                          break;
-                        case FLOAT:
-                          chunkStatistics.update(timeStamp, value.getFloat());
-                          break;
-                        case DOUBLE:
-                          chunkStatistics.update(timeStamp, value.getDouble());
-                          break;
-                        case BOOLEAN:
-                          chunkStatistics.update(timeStamp, value.getBoolean());
-                          break;
-                        case TEXT:
-                          chunkStatistics.update(timeStamp, value.getBinary());
-                          break;
-                        default:
-                          throw new IOException("Unexpected type " + dataType);
-                      }
-                    }
-                  }
-
-                } else { // NonAligned Chunk with only one page
-                  PageReader reader =
-                      new PageReader(
-                          pageHeader,
-                          pageData,
-                          chunkHeader.getDataType(),
-                          valueDecoder,
-                          timeDecoder);
-                  BatchData batchData = reader.getAllSatisfiedPageData();
-                  while (batchData.hasCurrent()) {
-                    switch (dataType) {
-                      case INT32:
-                        chunkStatistics.update(batchData.currentTime(), batchData.getInt());
-                        break;
-                      case INT64:
-                        chunkStatistics.update(batchData.currentTime(), batchData.getLong());
-                        break;
-                      case FLOAT:
-                        chunkStatistics.update(batchData.currentTime(), batchData.getFloat());
-                        break;
-                      case DOUBLE:
-                        chunkStatistics.update(batchData.currentTime(), batchData.getDouble());
-                        break;
-                      case BOOLEAN:
-                        chunkStatistics.update(batchData.currentTime(), batchData.getBoolean());
-                        break;
-                      case TEXT:
-                        chunkStatistics.update(batchData.currentTime(), batchData.getBinary());
-                        break;
-                      default:
-                        throw new IOException("Unexpected type " + dataType);
-                    }
-                    batchData.next();
-                  }
-                }
-                chunkHeader.increasePageNums(1);
-              }
-            }
-            currentChunk =
-                new ChunkMetadata(measurementID, dataType, fileOffsetOfChunk, chunkStatistics);
-            chunkMetadataList.add(currentChunk);
-            break;
-          case MetaMarker.CHUNK_GROUP_HEADER:
-            // if there is something wrong with the ChunkGroup Header, we will drop this ChunkGroup
-            // because we can not guarantee the correctness of the deviceId.
-            truncatedSize = this.position() - 1;
-            if (lastDeviceId != null) {
-              // schema of last chunk group
-              if (newSchema != null) {
-                for (IMeasurementSchema tsSchema : measurementSchemaList) {
-                  newSchema.putIfAbsent(
-                      new Path(lastDeviceId, tsSchema.getMeasurementId(), true), tsSchema);
-                }
-              }
-              measurementSchemaList = new ArrayList<>();
-              // last chunk group Metadata
-              chunkGroupMetadataList.add(new ChunkGroupMetadata(lastDeviceId, chunkMetadataList));
-            }
-            // this is a chunk group
-            chunkMetadataList = new ArrayList<>();
-            ChunkGroupHeader chunkGroupHeader = this.readChunkGroupHeader();
-            lastDeviceId = chunkGroupHeader.getDeviceID();
-            break;
-          case MetaMarker.OPERATION_INDEX_RANGE:
-            truncatedSize = this.position() - 1;
-            if (lastDeviceId != null) {
-              // schema of last chunk group
-              if (newSchema != null) {
-                for (IMeasurementSchema tsSchema : measurementSchemaList) {
-                  newSchema.putIfAbsent(
-                      new Path(lastDeviceId, tsSchema.getMeasurementId(), true), tsSchema);
-                }
-              }
-              measurementSchemaList = new ArrayList<>();
-              // last chunk group Metadata
-              chunkGroupMetadataList.add(new ChunkGroupMetadata(lastDeviceId, chunkMetadataList));
-              lastDeviceId = null;
-            }
-            readPlanIndex();
-            truncatedSize = this.position();
-            break;
-          default:
-            // the disk file is corrupted, using this file may be dangerous
-            throw new IOException("Unexpected marker " + marker);
-        }
-      }
-      // now we read the tail of the data section, so we are sure that the last
-      // ChunkGroupFooter is complete.
-      if (lastDeviceId != null) {
-        // schema of last chunk group
-        if (newSchema != null) {
-          for (IMeasurementSchema tsSchema : measurementSchemaList) {
-            newSchema.putIfAbsent(
-                new Path(lastDeviceId, tsSchema.getMeasurementId(), true), tsSchema);
-          }
-        }
-        // last chunk group Metadata
-        chunkGroupMetadataList.add(new ChunkGroupMetadata(lastDeviceId, chunkMetadataList));
-      }
-      if (isComplete) {
-        truncatedSize = TsFileCheckStatus.COMPLETE_FILE;
-      } else {
-        truncatedSize = this.position() - 1;
-      }
-    } catch (Exception e) {
-      logger.warn(
-          "TsFile {} self-check cannot proceed at position {} " + "recovered, because : {}",
-          file,
-          this.position(),
-          e.getMessage());
-    }
-    // Despite the completeness of the data section, we will discard current FileMetadata
-    // so that we can continue to write data into this tsfile.
-    return truncatedSize;
-  }
-
-  /**
-   * Self Check the file and return whether the file is safe.
-   *
-   * @param filename the path of file
-   * @param fastFinish if true, the method will only check the format of head (Magic String TsFile,
-   *     Version Number) and tail (Magic String TsFile) of TsFile.
-   * @return the status of TsFile
-   */
-  public long selfCheckWithInfo(
-      String filename,
-      boolean fastFinish,
-      Map<Long, Pair<Path, TimeseriesMetadata>> timeseriesMetadataMap)
-      throws IOException, TsFileStatisticsMistakesException {
-    String message = " exists statistics mistakes at position ";
-    File checkFile = FSFactoryProducer.getFSFactory().getFile(filename);
-    if (!checkFile.exists()) {
-      return TsFileCheckStatus.FILE_NOT_FOUND;
-    }
-    long fileSize = checkFile.length();
-    logger.info("file length: " + fileSize);
-
-    int headerLength = TSFileConfig.MAGIC_STRING.getBytes().length + Byte.BYTES;
-    if (fileSize < headerLength) {
-      return TsFileCheckStatus.INCOMPATIBLE_FILE;
-    }
-    try {
-      if (!TSFileConfig.MAGIC_STRING.equals(readHeadMagic())
-          || (TSFileConfig.VERSION_NUMBER != readVersionNumber())) {
-        return TsFileCheckStatus.INCOMPATIBLE_FILE;
-      }
-      tsFileInput.position(headerLength);
-      if (isComplete()) {
-        loadMetadataSize();
-        if (fastFinish) {
-          return TsFileCheckStatus.COMPLETE_FILE;
-        }
-      }
-    } catch (StopReadTsFileByInterruptException e) {
-      throw e;
-    } catch (IOException e) {
-      logger.error("Error occurred while fast checking TsFile.");
-      throw e;
-    }
-    for (Map.Entry<Long, Pair<Path, TimeseriesMetadata>> entry : timeseriesMetadataMap.entrySet()) {
-      TimeseriesMetadata timeseriesMetadata = entry.getValue().right;
-      TSDataType dataType = timeseriesMetadata.getTsDataType();
-      Statistics<? extends Serializable> timeseriesMetadataSta = timeseriesMetadata.getStatistics();
-      Statistics<? extends Serializable> chunkMetadatasSta = Statistics.getStatsByType(dataType);
-      for (IChunkMetadata chunkMetadata : getChunkMetadataList(entry.getValue().left)) {
-        long tscheckStatus = TsFileCheckStatus.COMPLETE_FILE;
-        try {
-          tscheckStatus = checkChunkAndPagesStatistics(chunkMetadata);
-        } catch (StopReadTsFileByInterruptException e) {
-          throw e;
-        } catch (IOException e) {
-          logger.error("Error occurred while checking the statistics of chunk and its pages");
-          throw e;
-        }
-        if (tscheckStatus == TsFileCheckStatus.FILE_EXISTS_MISTAKES) {
-          throw new TsFileStatisticsMistakesException(
-              "Chunk" + message + chunkMetadata.getOffsetOfChunkHeader());
-        }
-        chunkMetadatasSta.mergeStatistics(chunkMetadata.getStatistics());
-      }
-      if (!timeseriesMetadataSta.equals(chunkMetadatasSta)) {
-        long timeseriesMetadataPos = entry.getKey();
-        throw new TsFileStatisticsMistakesException(
-            "TimeseriesMetadata" + message + timeseriesMetadataPos);
-      }
-    }
-    return TsFileCheckStatus.COMPLETE_FILE;
-  }
-
-  public long checkChunkAndPagesStatistics(IChunkMetadata chunkMetadata) throws IOException {
-    long offsetOfChunkHeader = chunkMetadata.getOffsetOfChunkHeader();
-    tsFileInput.position(offsetOfChunkHeader);
-    byte marker = this.readMarker();
-    ChunkHeader chunkHeader = this.readChunkHeader(marker);
-    TSDataType dataType = chunkHeader.getDataType();
-    Statistics<? extends Serializable> chunkStatistics = Statistics.getStatsByType(dataType);
-    int dataSize = chunkHeader.getDataSize();
-    if (((byte) (chunkHeader.getChunkType() & 0x3F)) == MetaMarker.CHUNK_HEADER) {
-      while (dataSize > 0) {
-        // a new Page
-        PageHeader pageHeader = this.readPageHeader(chunkHeader.getDataType(), true);
-        chunkStatistics.mergeStatistics(pageHeader.getStatistics());
-        this.skipPageData(pageHeader);
-        dataSize -= pageHeader.getSerializedPageSize();
-        chunkHeader.increasePageNums(1);
-      }
-    } else {
-      // only one page without statistic, we need to iterate each point to generate
-      // statistic
-      PageHeader pageHeader = this.readPageHeader(chunkHeader.getDataType(), false);
-      Decoder valueDecoder =
-          Decoder.getDecoderByType(chunkHeader.getEncodingType(), chunkHeader.getDataType());
-      ByteBuffer pageData = readPage(pageHeader, chunkHeader.getCompressionType());
-      Decoder timeDecoder =
-          Decoder.getDecoderByType(
-              TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder()),
-              TSDataType.INT64);
-      PageReader reader =
-          new PageReader(
-              pageHeader, pageData, chunkHeader.getDataType(), valueDecoder, timeDecoder);
-      BatchData batchData = reader.getAllSatisfiedPageData();
-      while (batchData.hasCurrent()) {
-        switch (dataType) {
-          case INT32:
-            chunkStatistics.update(batchData.currentTime(), batchData.getInt());
-            break;
-          case INT64:
-            chunkStatistics.update(batchData.currentTime(), batchData.getLong());
-            break;
-          case FLOAT:
-            chunkStatistics.update(batchData.currentTime(), batchData.getFloat());
-            break;
-          case DOUBLE:
-            chunkStatistics.update(batchData.currentTime(), batchData.getDouble());
-            break;
-          case BOOLEAN:
-            chunkStatistics.update(batchData.currentTime(), batchData.getBoolean());
-            break;
-          case TEXT:
-            chunkStatistics.update(batchData.currentTime(), batchData.getBinary());
-            break;
-          default:
-            throw new IOException("Unexpected type " + dataType);
-        }
-        batchData.next();
-      }
-      chunkHeader.increasePageNums(1);
-    }
-    if (chunkMetadata.getStatistics().equals(chunkStatistics)) {
-      return TsFileCheckStatus.COMPLETE_FILE;
-    }
-    return TsFileCheckStatus.FILE_EXISTS_MISTAKES;
-  }
-
-  /**
-   * get ChunkMetaDatas of given path, and throw exception if path not exists
-   *
-   * @param path timeseries path
-   * @return List of ChunkMetaData
-   */
-  public List<ChunkMetadata> getChunkMetadataList(Path path, boolean ignoreNotExists)
-      throws IOException {
-    TimeseriesMetadata timeseriesMetaData =
-        readTimeseriesMetadata(path.getIDeviceID(), path.getMeasurement(), ignoreNotExists);
-    if (timeseriesMetaData == null) {
-      return Collections.emptyList();
-    }
-    List<ChunkMetadata> chunkMetadataList = readChunkMetaDataList(timeseriesMetaData);
-    chunkMetadataList.sort(Comparator.comparingLong(IChunkMetadata::getStartTime));
-    return chunkMetadataList;
-  }
-
-  // This method is only used for TsFile
-  public List<IChunkMetadata> getIChunkMetadataList(Path path) throws IOException {
-    ITimeSeriesMetadata timeseriesMetaData = readITimeseriesMetadata(path, true);
-    if (timeseriesMetaData == null) {
-      return Collections.emptyList();
-    }
-    List<IChunkMetadata> chunkMetadataList = readIChunkMetaDataList(timeseriesMetaData);
-    chunkMetadataList.sort(Comparator.comparingLong(IChunkMetadata::getStartTime));
-    return chunkMetadataList;
-  }
-
-  public List<ChunkMetadata> getChunkMetadataList(Path path) throws IOException {
-    return getChunkMetadataList(path, false);
-  }
-
-  /**
-   * Get AlignedChunkMetadata of sensors under one device. Notice: if all the value chunks is empty
-   * chunk, then return empty list.
-   *
-   * @param device device name
-   */
-  public List<AlignedChunkMetadata> getAlignedChunkMetadata(IDeviceID device) throws IOException {
-    readFileMetadata();
-    MetadataIndexNode deviceMetadataIndexNode = tsFileMetaData.getMetadataIndex();
-    Pair<IMetadataIndexEntry, Long> metadataIndexPair =
-        getMetadataAndEndOffsetOfDeviceNode(deviceMetadataIndexNode, device, true);
-    if (metadataIndexPair == null) {
-      throw new IOException("Device {" + device + "} is not in tsFileMetaData");
-    }
-    ByteBuffer buffer = readData(metadataIndexPair.left.getOffset(), metadataIndexPair.right);
-    MetadataIndexNode metadataIndexNode;
-    TimeseriesMetadata firstTimeseriesMetadata;
-    try {
-      // next layer MeasurementNode of the specific DeviceNode
-      metadataIndexNode = MetadataIndexNode.deserializeFrom(buffer, false);
-    } catch (Exception e) {
-      logger.error(METADATA_INDEX_NODE_DESERIALIZE_ERROR, file);
-      throw e;
-    }
-    firstTimeseriesMetadata = tryToGetFirstTimeseriesMetadata(metadataIndexNode);
-    if (firstTimeseriesMetadata == null) {
-      throw new IOException("Timeseries of device {" + device + "} are not aligned");
-    }
-
-    Map<IDeviceID, List<TimeseriesMetadata>> timeseriesMetadataMap = new TreeMap<>();
-    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();
-      }
-      buffer = readData(metadataIndexEntry.getOffset(), endOffset);
-      if (metadataIndexNode.getNodeType().equals(MetadataIndexNodeType.LEAF_MEASUREMENT)) {
-        List<TimeseriesMetadata> timeseriesMetadataList = new ArrayList<>();
-        while (buffer.hasRemaining()) {
-          timeseriesMetadataList.add(TimeseriesMetadata.deserializeFrom(buffer, true));
-        }
-        timeseriesMetadataMap
-            .computeIfAbsent(device, k -> new ArrayList<>())
-            .addAll(timeseriesMetadataList);
-      } else {
-        generateMetadataIndex(
-            metadataIndexEntry,
-            buffer,
-            device,
-            metadataIndexNode.getNodeType(),
-            timeseriesMetadataMap,
-            true);
-      }
-    }
-
-    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()));
-    }
-
-    List<TimeseriesMetadata> timeseriesMetadataList =
-        timeseriesMetadataMap.values().iterator().next();
-    TimeseriesMetadata timeseriesMetadata = timeseriesMetadataList.get(0);
-    List<TimeseriesMetadata> valueTimeseriesMetadataList = new ArrayList<>();
-
-    for (int i = 1; i < timeseriesMetadataList.size(); i++) {
-      valueTimeseriesMetadataList.add(timeseriesMetadataList.get(i));
-    }
-
-    AlignedTimeSeriesMetadata alignedTimeSeriesMetadata =
-        new AlignedTimeSeriesMetadata(timeseriesMetadata, valueTimeseriesMetadataList);
-    List<AlignedChunkMetadata> chunkMetadataList = new ArrayList<>();
-    for (IChunkMetadata chunkMetadata : readIChunkMetaDataList(alignedTimeSeriesMetadata)) {
-      chunkMetadataList.add((AlignedChunkMetadata) chunkMetadata);
-    }
-    return chunkMetadataList;
-  }
-
-  /**
-   * get ChunkMetaDatas in given TimeseriesMetaData
-   *
-   * @return List of ChunkMetaData
-   */
-  public List<ChunkMetadata> readChunkMetaDataList(TimeseriesMetadata timeseriesMetaData)
-      throws IOException {
-    return timeseriesMetaData.getChunkMetadataList().stream()
-        .map(chunkMetadata -> (ChunkMetadata) chunkMetadata)
-        .collect(Collectors.toList());
-  }
-
-  // This method is only used for TsFile
-  public List<IChunkMetadata> readIChunkMetaDataList(ITimeSeriesMetadata timeseriesMetaData) {
-    if (timeseriesMetaData instanceof AlignedTimeSeriesMetadata) {
-      return new ArrayList<>(
-          ((AlignedTimeSeriesMetadata) timeseriesMetaData).getChunkMetadataList());
-    } else {
-      return new ArrayList<>(((TimeseriesMetadata) timeseriesMetaData).getChunkMetadataList());
-    }
-  }
-
-  /**
-   * get all measurements in this file
-   *
-   * @return measurement -> datatype
-   */
-  public Map<String, TSDataType> getAllMeasurements() throws IOException {
-    Map<String, TSDataType> result = new HashMap<>();
-    for (IDeviceID device : getAllDevices()) {
-      Map<String, TimeseriesMetadata> timeseriesMetadataMap = readDeviceMetadata(device);
-      for (TimeseriesMetadata timeseriesMetadata : timeseriesMetadataMap.values()) {
-        result.put(timeseriesMetadata.getMeasurementId(), timeseriesMetadata.getTsDataType());
-      }
-    }
-    return result;
-  }
-
-  /**
-   * get all types of measurements in this file
-   *
-   * @return full path -> datatype
-   */
-  public Map<String, TSDataType> getFullPathDataTypeMap() throws IOException {
-    final Map<String, TSDataType> result = new HashMap<>();
-    for (final IDeviceID device : getAllDevices()) {
-      Map<String, TimeseriesMetadata> timeseriesMetadataMap = readDeviceMetadata(device);
-      for (TimeseriesMetadata timeseriesMetadata : timeseriesMetadataMap.values()) {
-        result.put(
-            ((PlainDeviceID) device).toStringID()
-                + TsFileConstant.PATH_SEPARATOR
-                + timeseriesMetadata.getMeasurementId(),
-            timeseriesMetadata.getTsDataType());
-      }
-    }
-    return result;
-  }
-
-  public Map<IDeviceID, List<String>> getDeviceMeasurementsMap() throws IOException {
-    Map<IDeviceID, List<String>> result = new HashMap<>();
-    for (IDeviceID device : getAllDevices()) {
-      Map<String, TimeseriesMetadata> timeseriesMetadataMap = readDeviceMetadata(device);
-      for (TimeseriesMetadata timeseriesMetadata : timeseriesMetadataMap.values()) {
-        result
-            .computeIfAbsent(device, d -> new ArrayList<>())
-            .add(timeseriesMetadata.getMeasurementId());
-      }
-    }
-    return result;
-  }
-
-  /**
-   * get device names which has valid chunks in [start, end)
-   *
-   * @param start start of the partition
-   * @param end end of the partition
-   * @return device names in range
-   */
-  public List<IDeviceID> getDeviceNameInRange(long start, long end) throws IOException {
-    List<IDeviceID> res = new ArrayList<>();
-    for (IDeviceID device : getAllDevices()) {
-      Map<String, List<ChunkMetadata>> seriesMetadataMap = readChunkMetadataInDevice(device);
-      if (hasDataInPartition(seriesMetadataMap, start, end)) {
-        res.add(device);
-      }
-    }
-    return res;
-  }
-
-  /**
-   * get metadata index node
-   *
-   * @param startOffset start read offset
-   * @param endOffset end read offset
-   * @param isDeviceLevel is current MetadataIndexNode in device level
-   * @return MetadataIndexNode
-   */
-  public MetadataIndexNode readMetadataIndexNode(
-      long startOffset, long endOffset, boolean isDeviceLevel) throws IOException {
-    return MetadataIndexNode.deserializeFrom(readData(startOffset, endOffset), isDeviceLevel);
-  }
-
-  /**
-   * Check if the device has at least one Chunk in this partition
-   *
-   * @param seriesMetadataMap chunkMetaDataList of each measurement
-   * @param start the start position of the space partition
-   * @param end the end position of the space partition
-   */
-  private boolean hasDataInPartition(
-      Map<String, List<ChunkMetadata>> seriesMetadataMap, long start, long end) {
-    for (List<ChunkMetadata> chunkMetadataList : seriesMetadataMap.values()) {
-      for (ChunkMetadata chunkMetadata : chunkMetadataList) {
-        LocateStatus location =
-            MetadataQuerierByFileImpl.checkLocateStatus(chunkMetadata, start, end);
-        if (location == LocateStatus.IN) {
-          return true;
-        }
-      }
-    }
-    return false;
-  }
-
-  /**
-   * The location of a chunkGroupMetaData with respect to a space partition constraint.
-   *
-   * <p>in - the middle point of the chunkGroupMetaData is located in the current space partition.
-   * before - the middle point of the chunkGroupMetaData is located before the current space
-   * partition. after - the middle point of the chunkGroupMetaData is located after the current
-   * space partition.
-   */
-  public enum LocateStatus {
-    IN,
-    BEFORE,
-    AFTER
-  }
-
-  public long getMinPlanIndex() {
-    return minPlanIndex;
-  }
-
-  public long getMaxPlanIndex() {
-    return maxPlanIndex;
-  }
-
-  /**
-   * @return An iterator of linked hashmaps ( measurement -> chunk metadata list ). When traversing
-   *     the linked hashmap, you will get chunk metadata lists according to the lexicographic order
-   *     of the measurements. The first measurement of the linked hashmap of each iteration is
-   *     always larger than the last measurement of the linked hashmap of the previous iteration in
-   *     lexicographic order.
-   */
-  public Iterator<Map<String, List<ChunkMetadata>>> getMeasurementChunkMetadataListMapIterator(
-      IDeviceID device) throws IOException {
-    readFileMetadata();
-
-    MetadataIndexNode metadataIndexNode = tsFileMetaData.getMetadataIndex();
-    Pair<IMetadataIndexEntry, Long> metadataIndexPair =
-        getMetadataAndEndOffsetOfDeviceNode(metadataIndexNode, device, true);
-
-    if (metadataIndexPair == null) {
-      return new Iterator<Map<String, List<ChunkMetadata>>>() {
-
-        @Override
-        public boolean hasNext() {
-          return false;
-        }
-
-        @Override
-        public LinkedHashMap<String, List<ChunkMetadata>> next() {
-          throw new NoSuchElementException();
-        }
-      };
-    }
-
-    Queue<Pair<Long, Long>> queue = new LinkedList<>();
-    ByteBuffer buffer = readData(metadataIndexPair.left.getOffset(), metadataIndexPair.right);
-    collectEachLeafMeasurementNodeOffsetRange(buffer, queue);
-
-    return new Iterator<Map<String, List<ChunkMetadata>>>() {
-
-      @Override
-      public boolean hasNext() {
-        return !queue.isEmpty();
-      }
-
-      @Override
-      public LinkedHashMap<String, List<ChunkMetadata>> next() {
-        if (!hasNext()) {
-          throw new NoSuchElementException();
-        }
-        Pair<Long, Long> startEndPair = queue.remove();
-        LinkedHashMap<String, List<ChunkMetadata>> measurementChunkMetadataList =
-            new LinkedHashMap<>();
-        try {
-          List<TimeseriesMetadata> timeseriesMetadataList = new ArrayList<>();
-          ByteBuffer nextBuffer = readData(startEndPair.left, startEndPair.right);
-          while (nextBuffer.hasRemaining()) {
-            timeseriesMetadataList.add(TimeseriesMetadata.deserializeFrom(nextBuffer, true));
-          }
-          for (TimeseriesMetadata timeseriesMetadata : timeseriesMetadataList) {
-            List<ChunkMetadata> list =
-                measurementChunkMetadataList.computeIfAbsent(
-                    timeseriesMetadata.getMeasurementId(), m -> new ArrayList<>());
-            for (IChunkMetadata chunkMetadata : timeseriesMetadata.getChunkMetadataList()) {
-              list.add((ChunkMetadata) chunkMetadata);
-            }
-          }
-          return measurementChunkMetadataList;
-        } catch (IOException e) {
-          throw new TsFileRuntimeException(
-              "Error occurred while reading a time series metadata block.");
-        }
-      }
-    };
-  }
-
-  private void collectEachLeafMeasurementNodeOffsetRange(
-      ByteBuffer buffer, Queue<Pair<Long, Long>> queue) throws IOException {
-    try {
-      final MetadataIndexNode metadataIndexNode = MetadataIndexNode.deserializeFrom(buffer, false);
-      final MetadataIndexNodeType metadataIndexNodeType = metadataIndexNode.getNodeType();
-      final int metadataIndexListSize = metadataIndexNode.getChildren().size();
-      for (int i = 0; i < metadataIndexListSize; ++i) {
-        long startOffset = metadataIndexNode.getChildren().get(i).getOffset();
-        long endOffset = metadataIndexNode.getEndOffset();
-        if (i != metadataIndexListSize - 1) {
-          endOffset = metadataIndexNode.getChildren().get(i + 1).getOffset();
-        }
-        if (metadataIndexNodeType.equals(MetadataIndexNodeType.LEAF_MEASUREMENT)) {
-          queue.add(new Pair<>(startOffset, endOffset));
-          continue;
-        }
-        collectEachLeafMeasurementNodeOffsetRange(readData(startOffset, endOffset), queue);
-      }
-    } catch (StopReadTsFileByInterruptException e) {
-      throw e;
-    } catch (Exception e) {
-      logger.error(
-          "Error occurred while collecting offset ranges of measurement nodes of file {}", file);
-      throw e;
-    }
-  }
-
-  @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 Objects.hash(file);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReaderTimeseriesMetadataIterator.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReaderTimeseriesMetadataIterator.java
deleted file mode 100644
index 17bc698..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReaderTimeseriesMetadataIterator.java
+++ /dev/null
@@ -1,264 +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;
-
-import org.apache.iotdb.tsfile.exception.TsFileSequenceReaderTimeseriesMetadataIteratorException;
-import org.apache.iotdb.tsfile.file.IMetadataIndexEntry;
-import org.apache.iotdb.tsfile.file.metadata.DeviceMetadataIndexEntry;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.MetadataIndexNode;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.MetadataIndexNodeType;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayDeque;
-import java.util.ArrayList;
-import java.util.Deque;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-public class TsFileSequenceReaderTimeseriesMetadataIterator
-    implements Iterator<Map<IDeviceID, List<TimeseriesMetadata>>> {
-
-  private static final int DEFAULT_TIMESERIES_BATCH_READ_NUMBER = 4000;
-  private final TsFileSequenceReader reader;
-  private final boolean needChunkMetadata;
-  private final int timeseriesBatchReadNumber;
-  private ByteBuffer currentBuffer = null;
-  private long currentEndOffset = Long.MIN_VALUE;
-  private final Deque<MetadataIndexEntryInfo> metadataIndexEntryStack = new ArrayDeque<>();
-  private IDeviceID currentDeviceId;
-  private int currentTimeseriesMetadataCount = 0;
-
-  public TsFileSequenceReaderTimeseriesMetadataIterator(
-      TsFileSequenceReader reader, boolean needChunkMetadata, int timeseriesBatchReadNumber)
-      throws IOException {
-    this.reader = reader;
-    this.needChunkMetadata = needChunkMetadata;
-    this.timeseriesBatchReadNumber = timeseriesBatchReadNumber;
-
-    if (this.reader.tsFileMetaData == null) {
-      this.reader.readFileMetadata();
-    }
-
-    final MetadataIndexNode metadataIndexNode = reader.tsFileMetaData.getMetadataIndex();
-    long curEntryEndOffset = metadataIndexNode.getEndOffset();
-    List<IMetadataIndexEntry> metadataIndexEntryList = metadataIndexNode.getChildren();
-
-    for (int i = metadataIndexEntryList.size() - 1; i >= 0; i--) {
-      metadataIndexEntryStack.push(
-          new MetadataIndexEntryInfo(
-              metadataIndexEntryList.get(i), metadataIndexNode.getNodeType(), curEntryEndOffset));
-      curEntryEndOffset = metadataIndexEntryList.get(i).getOffset();
-    }
-  }
-
-  public TsFileSequenceReaderTimeseriesMetadataIterator(
-      TsFileSequenceReader reader, boolean needChunkMetadata) throws IOException {
-    this(reader, needChunkMetadata, DEFAULT_TIMESERIES_BATCH_READ_NUMBER);
-  }
-
-  @Override
-  public boolean hasNext() {
-    return !metadataIndexEntryStack.isEmpty()
-        || (currentBuffer != null && currentBuffer.hasRemaining());
-  }
-
-  @Override
-  public Map<IDeviceID, List<TimeseriesMetadata>> next() {
-    if (!hasNext()) {
-      throw new NoSuchElementException();
-    }
-
-    final Map<IDeviceID, List<TimeseriesMetadata>> timeseriesMetadataMap = new HashMap<>();
-
-    while (currentTimeseriesMetadataCount < timeseriesBatchReadNumber) {
-      // 1. Check Buffer
-      // currentTimeseriesMetadataCount has reached the limit in the previous
-      // loop and maybe there is still some data that remains in the buffer.
-      if (currentBuffer != null && currentBuffer.hasRemaining()) {
-        timeseriesMetadataMap
-            .computeIfAbsent(currentDeviceId, k -> new ArrayList<>())
-            .addAll(deserializeTimeseriesMetadata());
-      } else if (currentEndOffset > Long.MIN_VALUE) {
-        try {
-          timeseriesMetadataMap
-              .computeIfAbsent(currentDeviceId, k -> new ArrayList<>())
-              .addAll(deserializeTimeseriesMetadataUsingTsFileInput(currentEndOffset));
-        } catch (IOException e) {
-          throw new TsFileSequenceReaderTimeseriesMetadataIteratorException(
-              String.format(
-                  "TsFileSequenceReaderTimeseriesMetadataIterator: deserializeTimeseriesMetadataUsingTsFileInput failed, "
-                      + "currentEndOffset: %d, "
-                      + e.getMessage(),
-                  currentEndOffset));
-        }
-      }
-
-      if (currentTimeseriesMetadataCount >= timeseriesBatchReadNumber
-          || metadataIndexEntryStack.isEmpty()) {
-        break;
-      }
-
-      // 2. Deserialize MetadataIndexEntry
-      final MetadataIndexEntryInfo indexEntryInfo = metadataIndexEntryStack.pop();
-
-      try {
-        deserializeMetadataIndexEntry(indexEntryInfo, timeseriesMetadataMap);
-      } catch (IOException e) {
-        throw new TsFileSequenceReaderTimeseriesMetadataIteratorException(
-            String.format(
-                "TsFileSequenceReaderTimeseriesMetadataIterator: deserializeMetadataIndexEntry failed, "
-                    + "MetadataIndexEntryInfo: %s, "
-                    + e.getMessage(),
-                indexEntryInfo));
-      }
-    }
-
-    // 3. Reset currentTimeseriesMetadataCount
-    if (currentTimeseriesMetadataCount >= timeseriesBatchReadNumber) {
-      currentTimeseriesMetadataCount = 0;
-    }
-
-    return timeseriesMetadataMap;
-  }
-
-  private void deserializeMetadataIndexEntry(
-      MetadataIndexEntryInfo metadataIndexEntryInfo,
-      Map<IDeviceID, List<TimeseriesMetadata>> timeseriesMetadataMap)
-      throws IOException {
-    if (metadataIndexEntryInfo
-        .getMetadataIndexNodeType()
-        .equals(MetadataIndexNodeType.LEAF_MEASUREMENT)) {
-      deserializeLeafMeasurement(
-          metadataIndexEntryInfo.getMetadataIndexEntry(),
-          metadataIndexEntryInfo.getEndOffset(),
-          timeseriesMetadataMap);
-
-    } else {
-      deserializeInternalNode(
-          metadataIndexEntryInfo.getMetadataIndexEntry(),
-          metadataIndexEntryInfo.getEndOffset(),
-          metadataIndexEntryInfo.getMetadataIndexNodeType());
-    }
-  }
-
-  private void deserializeLeafMeasurement(
-      IMetadataIndexEntry metadataIndexEntry,
-      long endOffset,
-      Map<IDeviceID, List<TimeseriesMetadata>> timeseriesMetadataMap)
-      throws IOException {
-    if (currentBuffer != null && currentBuffer.hasRemaining()) {
-      throw new TsFileSequenceReaderTimeseriesMetadataIteratorException(
-          "currentBuffer still has some data left before deserializeLeafMeasurement");
-    }
-    if (endOffset - metadataIndexEntry.getOffset() < Integer.MAX_VALUE) {
-      currentBuffer = reader.readData(metadataIndexEntry.getOffset(), endOffset);
-      timeseriesMetadataMap
-          .computeIfAbsent(currentDeviceId, k -> new ArrayList<>())
-          .addAll(deserializeTimeseriesMetadata());
-    } else {
-      currentEndOffset = endOffset;
-      reader.position(metadataIndexEntry.getOffset());
-      timeseriesMetadataMap
-          .computeIfAbsent(currentDeviceId, k -> new ArrayList<>())
-          .addAll(deserializeTimeseriesMetadataUsingTsFileInput(endOffset));
-    }
-  }
-
-  private List<TimeseriesMetadata> deserializeTimeseriesMetadata() {
-    final List<TimeseriesMetadata> timeseriesMetadataList = new ArrayList<>();
-    while (currentBuffer.hasRemaining()
-        && currentTimeseriesMetadataCount < timeseriesBatchReadNumber) {
-      timeseriesMetadataList.add(
-          TimeseriesMetadata.deserializeFrom(currentBuffer, needChunkMetadata));
-      currentTimeseriesMetadataCount++;
-    }
-    return timeseriesMetadataList;
-  }
-
-  private List<TimeseriesMetadata> deserializeTimeseriesMetadataUsingTsFileInput(long endOffset)
-      throws IOException {
-    final List<TimeseriesMetadata> timeseriesMetadataList = new ArrayList<>();
-    while (reader.position() < endOffset
-        && currentTimeseriesMetadataCount < DEFAULT_TIMESERIES_BATCH_READ_NUMBER) {
-      timeseriesMetadataList.add(
-          TimeseriesMetadata.deserializeFrom(reader.tsFileInput, needChunkMetadata));
-      currentTimeseriesMetadataCount++;
-    }
-    if (reader.position() >= endOffset) {
-      currentEndOffset = Long.MIN_VALUE;
-    }
-    return timeseriesMetadataList;
-  }
-
-  private void deserializeInternalNode(
-      IMetadataIndexEntry metadataIndexEntry, long endOffset, MetadataIndexNodeType type)
-      throws IOException {
-    if (MetadataIndexNodeType.LEAF_DEVICE.equals(type)) {
-      currentDeviceId = ((DeviceMetadataIndexEntry) metadataIndexEntry).getDeviceID();
-    }
-
-    boolean currentChildLevelIsDevice = MetadataIndexNodeType.INTERNAL_DEVICE.equals(type);
-    final MetadataIndexNode metadataIndexNode =
-        MetadataIndexNode.deserializeFrom(
-            reader.readData(metadataIndexEntry.getOffset(), endOffset), currentChildLevelIsDevice);
-    MetadataIndexNodeType metadataIndexNodeType = metadataIndexNode.getNodeType();
-    List<IMetadataIndexEntry> children = metadataIndexNode.getChildren();
-    long curEntryEndOffset = metadataIndexNode.getEndOffset();
-
-    for (int i = children.size() - 1; i >= 0; i--) {
-      metadataIndexEntryStack.push(
-          new MetadataIndexEntryInfo(children.get(i), metadataIndexNodeType, curEntryEndOffset));
-      curEntryEndOffset = children.get(i).getOffset();
-    }
-  }
-
-  private static class MetadataIndexEntryInfo {
-    private final IMetadataIndexEntry metadataIndexEntry;
-    private final MetadataIndexNodeType metadataIndexNodeType;
-    private final long endOffset;
-
-    public MetadataIndexEntryInfo(
-        IMetadataIndexEntry metadataIndexEntry,
-        MetadataIndexNodeType metadataIndexNodeType,
-        long endOffset) {
-      this.metadataIndexEntry = metadataIndexEntry;
-      this.metadataIndexNodeType = metadataIndexNodeType;
-      this.endOffset = endOffset;
-    }
-
-    public IMetadataIndexEntry getMetadataIndexEntry() {
-      return metadataIndexEntry;
-    }
-
-    public MetadataIndexNodeType getMetadataIndexNodeType() {
-      return metadataIndexNodeType;
-    }
-
-    public long getEndOffset() {
-      return endOffset;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/UnClosedTsFileReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/UnClosedTsFileReader.java
deleted file mode 100644
index fb0e320..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/UnClosedTsFileReader.java
+++ /dev/null
@@ -1,45 +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;
-
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata;
-
-import java.io.IOException;
-
-/** A class for reading unclosed tsfile. */
-public class UnClosedTsFileReader extends TsFileSequenceReader {
-
-  public UnClosedTsFileReader(String file) throws IOException {
-    super(file, false);
-  }
-
-  /** unclosed file has no tail magic data. */
-  @Override
-  public String readTailMagic() {
-    throw new NotImplementedException();
-  }
-
-  /** unclosed file has no file metadata. */
-  @Override
-  public TsFileMetadata readFileMetadata() {
-    throw new NotImplementedException();
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/BatchData.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/BatchData.java
deleted file mode 100644
index e79da51..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/BatchData.java
+++ /dev/null
@@ -1,919 +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;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsBinary;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsBoolean;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsDouble;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsFloat;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsInt;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsLong;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsVector;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * <code>BatchData</code> is a self-defined data structure which is optimized for different type of
- * values. This class can be viewed as a collection which is more efficient than ArrayList.
- *
- * <p>This class records a time list and a value list, which could be replaced by TVList in the
- * future
- *
- * <p>When you use BatchData in query process, it does not contain duplicated timestamps. The batch
- * data may be empty.
- *
- * <p>If you get a batch data, you can iterate the data as the following codes:
- *
- * <p>while (batchData.hasCurrent()) { long time = batchData.currentTime(); Object value =
- * batchData.currentValue(); batchData.next(); }
- */
-public class BatchData {
-
-  protected static final int CAPACITY_THRESHOLD = TSFileConfig.ARRAY_CAPACITY_THRESHOLD;
-  protected int capacity = 16;
-
-  protected TSDataType dataType;
-
-  protected BatchDataType batchDataType = BatchDataType.ORDINARY;
-
-  // outer list index for read
-  protected int readCurListIndex;
-  // inner array index for read
-  protected int readCurArrayIndex;
-
-  // outer list index for write
-  protected int writeCurListIndex;
-  // inner array index for write
-  protected int writeCurArrayIndex;
-
-  // the insert timestamp number of timeRet
-  protected int count;
-
-  protected List<long[]> timeRet;
-  protected List<boolean[]> booleanRet;
-  protected List<int[]> intRet;
-  protected List<long[]> longRet;
-  protected List<float[]> floatRet;
-  protected List<double[]> doubleRet;
-  protected List<Binary[]> binaryRet;
-  protected List<TsPrimitiveType[][]> vectorRet;
-
-  public BatchData() {
-    dataType = null;
-  }
-
-  /**
-   * BatchData Constructor.
-   *
-   * @param type Data type to record for this BatchData
-   */
-  public BatchData(TSDataType type) {
-    init(type);
-  }
-
-  public boolean isEmpty() {
-    return count == 0;
-  }
-
-  public boolean hasCurrent() {
-    if (readCurListIndex == writeCurListIndex) {
-      return readCurArrayIndex < writeCurArrayIndex;
-    }
-
-    return readCurListIndex < writeCurListIndex && readCurArrayIndex < capacity;
-  }
-
-  public void next() {
-    readCurArrayIndex++;
-    if (readCurArrayIndex == capacity) {
-      readCurArrayIndex = 0;
-      readCurListIndex++;
-    }
-  }
-
-  public long currentTime() {
-    return this.timeRet.get(readCurListIndex)[readCurArrayIndex];
-  }
-
-  /**
-   * get current value.
-   *
-   * @return current value
-   */
-  public Object currentValue() {
-    switch (dataType) {
-      case INT32:
-        return getInt();
-      case INT64:
-        return getLong();
-      case FLOAT:
-        return getFloat();
-      case DOUBLE:
-        return getDouble();
-      case BOOLEAN:
-        return getBoolean();
-      case TEXT:
-        return getBinary();
-      case VECTOR:
-        return getVector();
-      default:
-        return null;
-    }
-  }
-
-  public TsPrimitiveType currentTsPrimitiveType() {
-    switch (dataType) {
-      case INT32:
-        return new TsInt(getInt());
-      case INT64:
-        return new TsLong(getLong());
-      case FLOAT:
-        return new TsFloat(getFloat());
-      case DOUBLE:
-        return new TsDouble(getDouble());
-      case BOOLEAN:
-        return new TsBoolean(getBoolean());
-      case TEXT:
-        return new TsBinary(getBinary());
-      case VECTOR:
-        return new TsVector(getVector());
-      default:
-        return null;
-    }
-  }
-
-  public TSDataType getDataType() {
-    return dataType;
-  }
-
-  public void setDataType(TSDataType dataType) {
-    this.dataType = dataType;
-  }
-
-  public BatchDataType getBatchDataType() {
-    return batchDataType;
-  }
-
-  /**
-   * initialize batch data.
-   *
-   * @param type TSDataType
-   */
-  public void init(TSDataType type) {
-    this.dataType = type;
-    this.readCurListIndex = 0;
-    this.readCurArrayIndex = 0;
-    this.writeCurListIndex = 0;
-    this.writeCurArrayIndex = 0;
-
-    timeRet = new ArrayList<>();
-    timeRet.add(new long[capacity]);
-    count = 0;
-
-    switch (dataType) {
-      case BOOLEAN:
-        booleanRet = new ArrayList<>();
-        booleanRet.add(new boolean[capacity]);
-        break;
-      case INT32:
-        intRet = new ArrayList<>();
-        intRet.add(new int[capacity]);
-        break;
-      case INT64:
-        longRet = new ArrayList<>();
-        longRet.add(new long[capacity]);
-        break;
-      case FLOAT:
-        floatRet = new ArrayList<>();
-        floatRet.add(new float[capacity]);
-        break;
-      case DOUBLE:
-        doubleRet = new ArrayList<>();
-        doubleRet.add(new double[capacity]);
-        break;
-      case TEXT:
-        binaryRet = new ArrayList<>();
-        binaryRet.add(new Binary[capacity]);
-        break;
-      case VECTOR:
-        vectorRet = new ArrayList<>();
-        vectorRet.add(new TsPrimitiveType[capacity][]);
-        break;
-      default:
-        throw new UnSupportedDataTypeException(String.valueOf(dataType));
-    }
-  }
-
-  /**
-   * put boolean data.
-   *
-   * @param t timestamp
-   * @param v boolean data
-   */
-  public void putBoolean(long t, boolean v) {
-    if (writeCurArrayIndex == capacity) {
-      if (capacity >= CAPACITY_THRESHOLD) {
-        timeRet.add(new long[capacity]);
-        booleanRet.add(new boolean[capacity]);
-        writeCurListIndex++;
-        writeCurArrayIndex = 0;
-      } else {
-        int newCapacity = capacity << 1;
-
-        long[] newTimeData = new long[newCapacity];
-        boolean[] newValueData = new boolean[newCapacity];
-
-        System.arraycopy(timeRet.get(0), 0, newTimeData, 0, capacity);
-        System.arraycopy(booleanRet.get(0), 0, newValueData, 0, capacity);
-
-        timeRet.set(0, newTimeData);
-        booleanRet.set(0, newValueData);
-
-        capacity = newCapacity;
-      }
-    }
-    timeRet.get(writeCurListIndex)[writeCurArrayIndex] = t;
-    booleanRet.get(writeCurListIndex)[writeCurArrayIndex] = v;
-
-    writeCurArrayIndex++;
-    count++;
-  }
-
-  /**
-   * put int data.
-   *
-   * @param t timestamp
-   * @param v int data
-   */
-  public void putInt(long t, int v) {
-    if (writeCurArrayIndex == capacity) {
-      if (capacity >= CAPACITY_THRESHOLD) {
-        timeRet.add(new long[capacity]);
-        intRet.add(new int[capacity]);
-        writeCurListIndex++;
-        writeCurArrayIndex = 0;
-      } else {
-        int newCapacity = capacity << 1;
-
-        long[] newTimeData = new long[newCapacity];
-        int[] newValueData = new int[newCapacity];
-
-        System.arraycopy(timeRet.get(0), 0, newTimeData, 0, capacity);
-        System.arraycopy(intRet.get(0), 0, newValueData, 0, capacity);
-
-        timeRet.set(0, newTimeData);
-        intRet.set(0, newValueData);
-
-        capacity = newCapacity;
-      }
-    }
-    timeRet.get(writeCurListIndex)[writeCurArrayIndex] = t;
-    intRet.get(writeCurListIndex)[writeCurArrayIndex] = v;
-
-    writeCurArrayIndex++;
-    count++;
-  }
-
-  /**
-   * put long data.
-   *
-   * @param t timestamp
-   * @param v long data
-   */
-  public void putLong(long t, long v) {
-    if (writeCurArrayIndex == capacity) {
-      if (capacity >= CAPACITY_THRESHOLD) {
-        timeRet.add(new long[capacity]);
-        longRet.add(new long[capacity]);
-        writeCurListIndex++;
-        writeCurArrayIndex = 0;
-      } else {
-        int newCapacity = capacity << 1;
-
-        long[] newTimeData = new long[newCapacity];
-        long[] newValueData = new long[newCapacity];
-
-        System.arraycopy(timeRet.get(0), 0, newTimeData, 0, capacity);
-        System.arraycopy(longRet.get(0), 0, newValueData, 0, capacity);
-
-        timeRet.set(0, newTimeData);
-        longRet.set(0, newValueData);
-
-        capacity = newCapacity;
-      }
-    }
-    timeRet.get(writeCurListIndex)[writeCurArrayIndex] = t;
-    longRet.get(writeCurListIndex)[writeCurArrayIndex] = v;
-
-    writeCurArrayIndex++;
-    count++;
-  }
-
-  /**
-   * put float data.
-   *
-   * @param t timestamp
-   * @param v float data
-   */
-  public void putFloat(long t, float v) {
-    if (writeCurArrayIndex == capacity) {
-      if (capacity >= CAPACITY_THRESHOLD) {
-        timeRet.add(new long[capacity]);
-        floatRet.add(new float[capacity]);
-        writeCurListIndex++;
-        writeCurArrayIndex = 0;
-      } else {
-        int newCapacity = capacity << 1;
-
-        long[] newTimeData = new long[newCapacity];
-        float[] newValueData = new float[newCapacity];
-
-        System.arraycopy(timeRet.get(0), 0, newTimeData, 0, capacity);
-        System.arraycopy(floatRet.get(0), 0, newValueData, 0, capacity);
-
-        timeRet.set(0, newTimeData);
-        floatRet.set(0, newValueData);
-
-        capacity = newCapacity;
-      }
-    }
-    timeRet.get(writeCurListIndex)[writeCurArrayIndex] = t;
-    floatRet.get(writeCurListIndex)[writeCurArrayIndex] = v;
-
-    writeCurArrayIndex++;
-    count++;
-  }
-
-  /**
-   * put double data.
-   *
-   * @param t timestamp
-   * @param v double data
-   */
-  public void putDouble(long t, double v) {
-    if (writeCurArrayIndex == capacity) {
-      if (capacity >= CAPACITY_THRESHOLD) {
-        timeRet.add(new long[capacity]);
-        doubleRet.add(new double[capacity]);
-        writeCurListIndex++;
-        writeCurArrayIndex = 0;
-      } else {
-        int newCapacity = capacity << 1;
-
-        long[] newTimeData = new long[newCapacity];
-        double[] newValueData = new double[newCapacity];
-
-        System.arraycopy(timeRet.get(0), 0, newTimeData, 0, capacity);
-        System.arraycopy(doubleRet.get(0), 0, newValueData, 0, capacity);
-
-        timeRet.set(0, newTimeData);
-        doubleRet.set(0, newValueData);
-        capacity = newCapacity;
-      }
-    }
-    timeRet.get(writeCurListIndex)[writeCurArrayIndex] = t;
-    doubleRet.get(writeCurListIndex)[writeCurArrayIndex] = v;
-
-    writeCurArrayIndex++;
-    count++;
-  }
-
-  /**
-   * put binary data.
-   *
-   * @param t timestamp
-   * @param v binary data.
-   */
-  public void putBinary(long t, Binary v) {
-    if (writeCurArrayIndex == capacity) {
-      if (capacity >= CAPACITY_THRESHOLD) {
-        timeRet.add(new long[capacity]);
-        binaryRet.add(new Binary[capacity]);
-        writeCurListIndex++;
-        writeCurArrayIndex = 0;
-      } else {
-        int newCapacity = capacity << 1;
-
-        long[] newTimeData = new long[newCapacity];
-        Binary[] newValueData = new Binary[newCapacity];
-
-        System.arraycopy(timeRet.get(0), 0, newTimeData, 0, capacity);
-        System.arraycopy(binaryRet.get(0), 0, newValueData, 0, capacity);
-
-        timeRet.set(0, newTimeData);
-        binaryRet.set(0, newValueData);
-
-        capacity = newCapacity;
-      }
-    }
-    timeRet.get(writeCurListIndex)[writeCurArrayIndex] = t;
-    binaryRet.get(writeCurListIndex)[writeCurArrayIndex] = v;
-
-    writeCurArrayIndex++;
-    count++;
-  }
-
-  /**
-   * put vector data.
-   *
-   * @param t timestamp
-   * @param v vector data.
-   */
-  public void putVector(long t, TsPrimitiveType[] v) {
-    if (writeCurArrayIndex == capacity) {
-      if (capacity >= CAPACITY_THRESHOLD) {
-        timeRet.add(new long[capacity]);
-        vectorRet.add(new TsPrimitiveType[capacity][]);
-        writeCurListIndex++;
-        writeCurArrayIndex = 0;
-      } else {
-        int newCapacity = capacity << 1;
-
-        long[] newTimeData = new long[newCapacity];
-        TsPrimitiveType[][] newValueData = new TsPrimitiveType[newCapacity][];
-
-        System.arraycopy(timeRet.get(0), 0, newTimeData, 0, capacity);
-        System.arraycopy(vectorRet.get(0), 0, newValueData, 0, capacity);
-
-        timeRet.set(0, newTimeData);
-        vectorRet.set(0, newValueData);
-
-        capacity = newCapacity;
-      }
-    }
-    timeRet.get(writeCurListIndex)[writeCurArrayIndex] = t;
-    vectorRet.get(writeCurListIndex)[writeCurArrayIndex] = v;
-
-    writeCurArrayIndex++;
-    count++;
-  }
-
-  public boolean getBoolean() {
-    return this.booleanRet.get(readCurListIndex)[readCurArrayIndex];
-  }
-
-  public void setBoolean(boolean v) {
-    this.booleanRet.get(readCurListIndex)[readCurArrayIndex] = v;
-  }
-
-  public int getInt() {
-    return this.intRet.get(readCurListIndex)[readCurArrayIndex];
-  }
-
-  public void setInt(int v) {
-    this.intRet.get(readCurListIndex)[readCurArrayIndex] = v;
-  }
-
-  public long getLong() {
-    return this.longRet.get(readCurListIndex)[readCurArrayIndex];
-  }
-
-  public void setLong(long v) {
-    this.longRet.get(readCurListIndex)[readCurArrayIndex] = v;
-  }
-
-  public float getFloat() {
-    return this.floatRet.get(readCurListIndex)[readCurArrayIndex];
-  }
-
-  public void setFloat(float v) {
-    this.floatRet.get(readCurListIndex)[readCurArrayIndex] = v;
-  }
-
-  public double getDouble() {
-    return this.doubleRet.get(readCurListIndex)[readCurArrayIndex];
-  }
-
-  public void setDouble(double v) {
-    this.doubleRet.get(readCurListIndex)[readCurArrayIndex] = v;
-  }
-
-  public Binary getBinary() {
-    return this.binaryRet.get(readCurListIndex)[readCurArrayIndex];
-  }
-
-  public void setBinary(Binary v) {
-    this.binaryRet.get(readCurListIndex)[readCurArrayIndex] = v;
-  }
-
-  public TsPrimitiveType[] getVector() {
-    return this.vectorRet.get(readCurListIndex)[readCurArrayIndex];
-  }
-
-  public void setVector(TsPrimitiveType[] v) {
-    this.vectorRet.get(readCurListIndex)[readCurArrayIndex] = v;
-  }
-
-  public void setTime(long v) {
-    this.timeRet.get(readCurListIndex)[readCurArrayIndex] = v;
-  }
-
-  /**
-   * put an object.
-   *
-   * @param t timestamp
-   * @param v object
-   */
-  public void putAnObject(long t, Object v) {
-    switch (dataType) {
-      case BOOLEAN:
-        putBoolean(t, (boolean) v);
-        break;
-      case INT32:
-        putInt(t, (int) v);
-        break;
-      case INT64:
-        putLong(t, (long) v);
-        break;
-      case FLOAT:
-        putFloat(t, (float) v);
-        break;
-      case DOUBLE:
-        putDouble(t, (double) v);
-        break;
-      case TEXT:
-        putBinary(t, (Binary) v);
-        break;
-      case VECTOR:
-        putVector(t, (TsPrimitiveType[]) v);
-        break;
-      default:
-        throw new UnSupportedDataTypeException(String.valueOf(dataType));
-    }
-  }
-
-  public int length() {
-    return this.count;
-  }
-
-  /** Get the idx th timestamp by the time ascending order */
-  public long getTimeByIndex(int idx) {
-    return this.timeRet.get(idx / capacity)[idx % capacity];
-  }
-
-  /** Get the idx th long value by the time ascending order */
-  public long getLongByIndex(int idx) {
-    return this.longRet.get(idx / capacity)[idx % capacity];
-  }
-
-  /** Get the idx th double value by the time ascending order */
-  public double getDoubleByIndex(int idx) {
-    return this.doubleRet.get(idx / capacity)[idx % capacity];
-  }
-
-  /** Get the idx th int value by the time ascending order */
-  public int getIntByIndex(int idx) {
-    return this.intRet.get(idx / capacity)[idx % capacity];
-  }
-
-  /** Get the idx th float value by the time ascending order */
-  public float getFloatByIndex(int idx) {
-    return this.floatRet.get(idx / capacity)[idx % capacity];
-  }
-
-  /** Get the idx th binary value by the time ascending order */
-  public Binary getBinaryByIndex(int idx) {
-    return binaryRet.get(idx / capacity)[idx % capacity];
-  }
-
-  /** Get the idx th boolean value by the time ascending order */
-  public boolean getBooleanByIndex(int idx) {
-    return booleanRet.get(idx / capacity)[idx % capacity];
-  }
-
-  /** Get the idx th vector value by the time ascending order */
-  public TsPrimitiveType[] getVectorByIndex(int idx) {
-    return vectorRet.get(idx / capacity)[idx % capacity];
-  }
-
-  public TimeValuePair getLastPairBeforeOrEqualTimestamp(long queryTime) {
-    TimeValuePair resultPair = new TimeValuePair(Long.MIN_VALUE, null);
-    resetBatchData();
-    while (hasCurrent() && (currentTime() <= queryTime)) {
-      resultPair.setTimestamp(currentTime());
-      resultPair.setValue(currentTsPrimitiveType());
-      next();
-    }
-    return resultPair;
-  }
-
-  public Object getValueInTimestamp(long time) {
-    while (hasCurrent()) {
-      if (currentTime() < time) {
-        next();
-      } else if (currentTime() == time) {
-        Object value = currentValue();
-        next();
-        return value;
-      } else {
-        return null;
-      }
-    }
-    return null;
-  }
-
-  public long getMaxTimestamp() {
-    return getTimeByIndex(length() - 1);
-  }
-
-  public long getMinTimestamp() {
-    return getTimeByIndex(0);
-  }
-
-  public BatchDataIterator getBatchDataIterator() {
-    return new BatchDataIterator();
-  }
-
-  /** Only used for the batch data of vector time series. */
-  public IBatchDataIterator getBatchDataIterator(int subIndex) {
-    return new VectorBatchDataIterator(subIndex);
-  }
-
-  /**
-   * For any implementation of BatchData, the data serializing sequence must equal the one of
-   * writing, otherwise after deserializing the sequence will be reversed
-   */
-  public void serializeData(DataOutputStream outputStream) throws IOException {
-    switch (dataType) {
-      case BOOLEAN:
-        for (int i = 0; i < length(); i++) {
-          outputStream.writeLong(getTimeByIndex(i));
-          outputStream.writeBoolean(getBooleanByIndex(i));
-        }
-        break;
-      case DOUBLE:
-        for (int i = 0; i < length(); i++) {
-          outputStream.writeLong(getTimeByIndex(i));
-          outputStream.writeDouble(getDoubleByIndex(i));
-        }
-        break;
-      case FLOAT:
-        for (int i = 0; i < length(); i++) {
-          outputStream.writeLong(getTimeByIndex(i));
-          outputStream.writeFloat(getFloatByIndex(i));
-        }
-        break;
-      case TEXT:
-        for (int i = 0; i < length(); i++) {
-          outputStream.writeLong(getTimeByIndex(i));
-          Binary binary = getBinaryByIndex(i);
-          outputStream.writeInt(binary.getLength());
-          outputStream.write(binary.getValues());
-        }
-        break;
-      case INT64:
-        for (int i = 0; i < length(); i++) {
-          outputStream.writeLong(getTimeByIndex(i));
-          outputStream.writeLong(getLongByIndex(i));
-        }
-        break;
-      case INT32:
-        for (int i = 0; i < length(); i++) {
-          outputStream.writeLong(getTimeByIndex(i));
-          outputStream.writeInt(getIntByIndex(i));
-        }
-        break;
-      case VECTOR:
-        for (int i = 0; i < length(); i++) {
-          outputStream.writeLong(getTimeByIndex(i));
-          TsPrimitiveType[] values = getVectorByIndex(i);
-          outputStream.writeInt(values.length);
-          for (TsPrimitiveType value : values) {
-            if (value == null) {
-              outputStream.write(0);
-            } else {
-              outputStream.write(1);
-              outputStream.write(value.getDataType().serialize());
-              switch (value.getDataType()) {
-                case BOOLEAN:
-                  outputStream.writeBoolean(value.getBoolean());
-                  break;
-                case DOUBLE:
-                  outputStream.writeDouble(value.getDouble());
-                  break;
-                case FLOAT:
-                  outputStream.writeFloat(value.getFloat());
-                  break;
-                case TEXT:
-                  Binary binary = value.getBinary();
-                  outputStream.writeInt(binary.getLength());
-                  outputStream.write(binary.getValues());
-                  break;
-                case INT64:
-                  outputStream.writeLong(value.getLong());
-                  break;
-                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);
-    }
-  }
-
-  /**
-   * This method is used to reset batch data when more than one group by aggregation functions visit
-   * the same batch data
-   */
-  public void resetBatchData() {
-    this.readCurArrayIndex = 0;
-    this.readCurListIndex = 0;
-  }
-
-  public void resetBatchData(int readCurArrayIndex, int readCurListIndex) {
-    this.readCurArrayIndex = readCurArrayIndex;
-    this.readCurListIndex = readCurListIndex;
-  }
-
-  public int getReadCurListIndex() {
-    return readCurListIndex;
-  }
-
-  public int getReadCurArrayIndex() {
-    return readCurArrayIndex;
-  }
-
-  /**
-   * When put data, the writeIndex increases while the readIndex remains 0. For ascending read, we
-   * could read from 0 to writeIndex. So no need to flip.
-   */
-  public BatchData flip() {
-    return this;
-  }
-
-  public enum BatchDataType {
-    ORDINARY,
-    DESC_READ,
-    DESC_READ_WRITE;
-
-    BatchDataType() {}
-
-    /**
-     * give an integer to return a BatchType type.
-     *
-     * @param type -param to judge enum type
-     * @return -enum type
-     */
-    public static BatchData deserialize(byte type, TSDataType dataType) {
-      switch (type) {
-        case 0:
-          return new BatchData(dataType);
-        case 1:
-          return new DescReadBatchData(dataType);
-        case 2:
-          return new DescReadWriteBatchData(dataType);
-        default:
-          throw new IllegalArgumentException("Invalid input: " + type);
-      }
-    }
-  }
-
-  private class BatchDataIterator implements IPointReader, IBatchDataIterator {
-
-    @Override
-    public boolean hasNext() {
-      return BatchData.this.hasCurrent();
-    }
-
-    @Override
-    public boolean hasNext(long minBound, long maxBound) {
-      return hasNext();
-    }
-
-    @Override
-    public void next() {
-      BatchData.this.next();
-    }
-
-    @Override
-    public long currentTime() {
-      return BatchData.this.currentTime();
-    }
-
-    @Override
-    public Object currentValue() {
-      return BatchData.this.currentValue();
-    }
-
-    @Override
-    public void reset() {
-      BatchData.this.resetBatchData();
-    }
-
-    @Override
-    public int totalLength() {
-      return BatchData.this.length();
-    }
-
-    @Override
-    public boolean hasNextTimeValuePair() {
-      return hasNext();
-    }
-
-    @Override
-    public TimeValuePair nextTimeValuePair() {
-      TimeValuePair timeValuePair = new TimeValuePair(currentTime(), currentTsPrimitiveType());
-      next();
-      return timeValuePair;
-    }
-
-    @Override
-    public TimeValuePair currentTimeValuePair() {
-      return new TimeValuePair(currentTime(), currentTsPrimitiveType());
-    }
-
-    @Override
-    public long getUsedMemorySize() {
-      // not used
-      return 0;
-    }
-
-    @Override
-    public void close() {
-      // do nothing
-    }
-  }
-
-  private class VectorBatchDataIterator extends BatchDataIterator {
-
-    private final int subIndex;
-
-    private VectorBatchDataIterator(int subIndex) {
-      this.subIndex = subIndex;
-    }
-
-    @Override
-    public boolean hasNext() {
-      while (BatchData.this.hasCurrent() && currentValue() == null) {
-        super.next();
-      }
-      return BatchData.this.hasCurrent();
-    }
-
-    @Override
-    public boolean hasNext(long minBound, long maxBound) {
-      while (BatchData.this.hasCurrent() && currentValue() == null) {
-        if (super.currentTime() < minBound || super.currentTime() >= maxBound) {
-          break;
-        }
-        super.next();
-      }
-      return BatchData.this.hasCurrent();
-    }
-
-    @Override
-    public Object currentValue() {
-      TsPrimitiveType v = getVector()[subIndex];
-      return v == null ? null : v.getValue();
-    }
-
-    @Override
-    public int totalLength() {
-      // aligned timeseries' BatchData length() may return the length of time column
-      // we need traverse to VectorBatchDataIterator calculate the actual value column's length
-      int cnt = 0;
-      int readCurArrayIndexSave = BatchData.this.readCurArrayIndex;
-      int readCurListIndexSave = BatchData.this.readCurListIndex;
-      while (hasNext()) {
-        cnt++;
-        super.next();
-      }
-      BatchData.this.readCurArrayIndex = readCurArrayIndexSave;
-      BatchData.this.readCurListIndex = readCurListIndexSave;
-      return cnt;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/BatchDataFactory.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/BatchDataFactory.java
deleted file mode 100644
index d72384f..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/BatchDataFactory.java
+++ /dev/null
@@ -1,44 +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;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-
-public class BatchDataFactory {
-
-  private BatchDataFactory() {
-    throw new IllegalStateException("Factory class");
-  }
-
-  public static BatchData createBatchData(
-      TSDataType dataType, boolean ascending, boolean isWriteDesc) {
-    if (ascending) {
-      return new BatchData(dataType);
-    } else if (isWriteDesc) {
-      return new DescReadWriteBatchData(dataType);
-    } else {
-      return new DescReadBatchData(dataType);
-    }
-  }
-
-  public static BatchData createBatchData(TSDataType dataType) {
-    return new BatchData(dataType);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Chunk.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Chunk.java
deleted file mode 100644
index 99b9ace..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Chunk.java
+++ /dev/null
@@ -1,174 +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;
-
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.List;
-
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfByteArray;
-
-/** used in query. */
-public class Chunk {
-
-  private static final long INSTANCE_SIZE =
-      RamUsageEstimator.shallowSizeOfInstance(Chunk.class)
-          + ChunkHeader.INSTANCE_SIZE
-          + RamUsageEstimator.shallowSizeOfInstance(ByteBuffer.class);
-
-  private final ChunkHeader chunkHeader;
-  private ByteBuffer chunkData;
-  private Statistics chunkStatistic;
-
-  /** A list of deleted intervals. */
-  private List<TimeRange> deleteIntervalList;
-
-  public Chunk(
-      ChunkHeader header,
-      ByteBuffer buffer,
-      List<TimeRange> deleteIntervalList,
-      Statistics chunkStatistic) {
-    this.chunkHeader = header;
-    this.chunkData = buffer;
-    this.deleteIntervalList = deleteIntervalList;
-    this.chunkStatistic = chunkStatistic;
-  }
-
-  public Chunk(ChunkHeader header, ByteBuffer buffer) {
-    this.chunkHeader = header;
-    this.chunkData = buffer;
-  }
-
-  public ChunkHeader getHeader() {
-    return chunkHeader;
-  }
-
-  public ByteBuffer getData() {
-    return chunkData;
-  }
-
-  public List<TimeRange> getDeleteIntervalList() {
-    return deleteIntervalList;
-  }
-
-  public void setDeleteIntervalList(List<TimeRange> list) {
-    this.deleteIntervalList = list;
-  }
-
-  public void mergeChunkByAppendPage(Chunk chunk) throws IOException {
-    int dataSize = 0;
-    // from where the page data of the merged chunk starts, if -1, it means the merged chunk has
-    // more than one page
-    int offset1 = -1;
-    // if the merged chunk has only one page, after merge with current chunk ,it will have more than
-    // page
-    // so we should add page statistics for it
-    if (((byte) (chunk.chunkHeader.getChunkType() & 0x3F))
-        == MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER) {
-      // read the uncompressedSize and compressedSize of this page
-      ReadWriteForEncodingUtils.readUnsignedVarInt(chunk.chunkData);
-      ReadWriteForEncodingUtils.readUnsignedVarInt(chunk.chunkData);
-      // record the position from which we can reuse
-      offset1 = chunk.chunkData.position();
-      chunk.chunkData.flip();
-      // the actual size should add another page statistics size
-      dataSize += (chunk.chunkData.array().length + chunk.chunkStatistic.getSerializedSize());
-    } else {
-      // if the merge chunk already has more than one page, we can reuse all the part of its data
-      // the dataSize is equal to the before
-      dataSize += chunk.chunkData.array().length;
-    }
-    // from where the page data of the current chunk starts, if -1, it means the current chunk has
-    // more than one page
-    int offset2 = -1;
-    // if the current chunk has only one page, after merge with the merged chunk ,it will have more
-    // than page
-    // so we should add page statistics for it
-    if (((byte) (chunkHeader.getChunkType() & 0x3F)) == MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER) {
-      // change the chunk type
-      chunkHeader.setChunkType(MetaMarker.CHUNK_HEADER);
-      // read the uncompressedSize and compressedSize of this page
-      ReadWriteForEncodingUtils.readUnsignedVarInt(chunkData);
-      ReadWriteForEncodingUtils.readUnsignedVarInt(chunkData);
-      // record the position from which we can reuse
-      offset2 = chunkData.position();
-      chunkData.flip();
-      // the actual size should add another page statistics size
-      dataSize += (chunkData.array().length + chunkStatistic.getSerializedSize());
-    } else {
-      // if the current chunk already has more than one page, we can reuse all the part of its data
-      // the dataSize is equal to the before
-      dataSize += chunkData.array().length;
-    }
-    chunkHeader.setDataSize(dataSize);
-    ByteBuffer newChunkData = ByteBuffer.allocate(dataSize);
-    // the current chunk has more than one page, we can use its data part directly without any
-    // changes
-    if (offset2 == -1) {
-      newChunkData.put(chunkData.array());
-    } else { // the current chunk has only one page, we need to add one page statistics for it
-      byte[] b = chunkData.array();
-      // put the uncompressedSize and compressedSize of this page
-      newChunkData.put(b, 0, offset2);
-      // add page statistics
-      PublicBAOS a = new PublicBAOS();
-      chunkStatistic.serialize(a);
-      newChunkData.put(a.getBuf(), 0, a.size());
-      // put the remaining page data
-      newChunkData.put(b, offset2, b.length - offset2);
-    }
-    // the merged chunk has more than one page, we can use its data part directly without any
-    // changes
-    if (offset1 == -1) {
-      newChunkData.put(chunk.chunkData.array());
-    } else {
-      // put the uncompressedSize and compressedSize of this page
-      byte[] b = chunk.chunkData.array();
-      newChunkData.put(b, 0, offset1);
-      // add page statistics
-      PublicBAOS a = new PublicBAOS();
-      chunk.chunkStatistic.serialize(a);
-      newChunkData.put(a.getBuf(), 0, a.size());
-      // put the remaining page data
-      newChunkData.put(b, offset1, b.length - offset1);
-    }
-    chunkData = newChunkData;
-  }
-
-  public Statistics getChunkStatistic() {
-    return chunkStatistic;
-  }
-
-  /**
-   * it's only used for query cache, and assuming that we use HeapByteBuffer, if we use Pooled
-   * DirectByteBuffer in the future, we need to change the calculation logic here. chunkStatistic
-   * and deleteIntervalList are all null in cache
-   */
-  public long getRetainedSizeInBytes() {
-    return INSTANCE_SIZE + sizeOfByteArray(chunkData.capacity());
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/DescReadBatchData.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/DescReadBatchData.java
deleted file mode 100644
index 16e359f..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/DescReadBatchData.java
+++ /dev/null
@@ -1,86 +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;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-
-/**
- * This class is just for reading batch data reversely. The data source is from page reader. For
- * example, the timeRet from pageReader is [1, 1000], It will be written in ascending sequence, but
- * the sequence of reading will be 1000 -> 1.
- */
-public class DescReadBatchData extends BatchData {
-
-  public DescReadBatchData() {
-    batchDataType = BatchDataType.DESC_READ;
-  }
-
-  public DescReadBatchData(TSDataType dataType) {
-    super(dataType);
-    batchDataType = BatchDataType.DESC_READ;
-  }
-
-  @Override
-  public boolean hasCurrent() {
-    return super.readCurListIndex >= 0 && super.readCurArrayIndex >= 0;
-  }
-
-  @Override
-  public void next() {
-    super.readCurArrayIndex--;
-    if (super.readCurArrayIndex == -1) {
-      super.readCurArrayIndex = capacity - 1;
-      super.readCurListIndex--;
-    }
-  }
-
-  @Override
-  public void resetBatchData() {
-    super.readCurArrayIndex = writeCurArrayIndex - 1;
-    super.readCurListIndex = writeCurListIndex;
-  }
-
-  /**
-   * When put data, the writeIndex increases while the readIndex remains 0. For descending read, we
-   * need to read from writeIndex to 0 (set the readIndex to writeIndex)
-   */
-  @Override
-  public BatchData flip() {
-    super.readCurArrayIndex = writeCurArrayIndex - 1;
-    super.readCurListIndex = writeCurListIndex;
-    return this;
-  }
-
-  @Override
-  public Object getValueInTimestamp(long time) {
-    while (hasCurrent()) {
-      if (currentTime() > time) {
-        next();
-      } else if (currentTime() == time) {
-        Object value = currentValue();
-        next();
-        return value;
-      } else {
-        return null;
-      }
-    }
-    return null;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/DescReadWriteBatchData.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/DescReadWriteBatchData.java
deleted file mode 100644
index 6d9e15c..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/DescReadWriteBatchData.java
+++ /dev/null
@@ -1,510 +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;
-
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.LinkedList;
-
-/**
- * This class is for reading and writing batch data in reverse. The data source is from mergeReader.
- * For example, the time sequence from mergeReader is 1000 -> 1, to keep the consistency that the
- * timestamp should be ascending. It will be written in reverse, i.e. the timeRet will be [1, 1000].
- * Then it can be handled the same as DescReadBatchData.
- */
-public class DescReadWriteBatchData extends DescReadBatchData {
-
-  public DescReadWriteBatchData(TSDataType dataType) {
-    super();
-    this.batchDataType = BatchDataType.DESC_READ_WRITE;
-    this.dataType = dataType;
-    this.readCurListIndex = 0;
-    this.readCurArrayIndex = 0;
-    this.writeCurListIndex = 0;
-    this.writeCurArrayIndex = capacity - 1;
-
-    timeRet = new LinkedList<>();
-    timeRet.add(new long[capacity]);
-    count = 0;
-
-    switch (dataType) {
-      case BOOLEAN:
-        booleanRet = new LinkedList<>();
-        booleanRet.add(new boolean[capacity]);
-        break;
-      case INT32:
-        intRet = new LinkedList<>();
-        intRet.add(new int[capacity]);
-        break;
-      case INT64:
-        longRet = new LinkedList<>();
-        longRet.add(new long[capacity]);
-        break;
-      case FLOAT:
-        floatRet = new LinkedList<>();
-        floatRet.add(new float[capacity]);
-        break;
-      case DOUBLE:
-        doubleRet = new LinkedList<>();
-        doubleRet.add(new double[capacity]);
-        break;
-      case TEXT:
-        binaryRet = new LinkedList<>();
-        binaryRet.add(new Binary[capacity]);
-        break;
-      case VECTOR:
-        vectorRet = new LinkedList<>();
-        vectorRet.add(new TsPrimitiveType[capacity][]);
-        break;
-      default:
-        throw new UnSupportedDataTypeException(String.valueOf(dataType));
-    }
-  }
-
-  /**
-   * put boolean data reversely.
-   *
-   * @param t timestamp
-   * @param v boolean data
-   */
-  @Override
-  public void putBoolean(long t, boolean v) {
-    if (writeCurArrayIndex == -1) {
-      if (capacity >= CAPACITY_THRESHOLD) {
-        ((LinkedList<long[]>) timeRet).addFirst(new long[capacity]);
-        ((LinkedList<boolean[]>) booleanRet).addFirst(new boolean[capacity]);
-        writeCurListIndex++;
-        writeCurArrayIndex = capacity - 1;
-      } else {
-        int newCapacity = capacity << 1;
-
-        long[] newTimeData = new long[newCapacity];
-        boolean[] newValueData = new boolean[newCapacity];
-
-        System.arraycopy(timeRet.get(0), 0, newTimeData, newCapacity - capacity, capacity);
-        System.arraycopy(booleanRet.get(0), 0, newValueData, newCapacity - capacity, capacity);
-
-        timeRet.set(0, newTimeData);
-        booleanRet.set(0, newValueData);
-
-        writeCurArrayIndex = newCapacity - capacity - 1;
-        capacity = newCapacity;
-      }
-    }
-    timeRet.get(0)[writeCurArrayIndex] = t;
-    booleanRet.get(0)[writeCurArrayIndex] = v;
-
-    writeCurArrayIndex--;
-    count++;
-  }
-
-  /**
-   * put int data reversely.
-   *
-   * @param t timestamp
-   * @param v int data
-   */
-  @Override
-  public void putInt(long t, int v) {
-    if (writeCurArrayIndex == -1) {
-      if (capacity >= CAPACITY_THRESHOLD) {
-        ((LinkedList<long[]>) timeRet).addFirst(new long[capacity]);
-        ((LinkedList<int[]>) intRet).addFirst(new int[capacity]);
-        writeCurListIndex++;
-        writeCurArrayIndex = capacity - 1;
-      } else {
-        int newCapacity = capacity << 1;
-
-        long[] newTimeData = new long[newCapacity];
-        int[] newValueData = new int[newCapacity];
-
-        System.arraycopy(timeRet.get(0), 0, newTimeData, newCapacity - capacity, capacity);
-        System.arraycopy(intRet.get(0), 0, newValueData, newCapacity - capacity, capacity);
-
-        timeRet.set(0, newTimeData);
-        intRet.set(0, newValueData);
-
-        writeCurArrayIndex = newCapacity - capacity - 1;
-        capacity = newCapacity;
-      }
-    }
-    timeRet.get(0)[writeCurArrayIndex] = t;
-    intRet.get(0)[writeCurArrayIndex] = v;
-
-    writeCurArrayIndex--;
-    count++;
-  }
-
-  /**
-   * put long data reversely.
-   *
-   * @param t timestamp
-   * @param v long data
-   */
-  @Override
-  public void putLong(long t, long v) {
-    if (writeCurArrayIndex == -1) {
-      if (capacity >= CAPACITY_THRESHOLD) {
-        ((LinkedList<long[]>) timeRet).addFirst(new long[capacity]);
-        ((LinkedList<long[]>) longRet).addFirst(new long[capacity]);
-        writeCurListIndex++;
-        writeCurArrayIndex = capacity - 1;
-      } else {
-        int newCapacity = capacity << 1;
-
-        long[] newTimeData = new long[newCapacity];
-        long[] newValueData = new long[newCapacity];
-
-        System.arraycopy(timeRet.get(0), 0, newTimeData, newCapacity - capacity, capacity);
-        System.arraycopy(longRet.get(0), 0, newValueData, newCapacity - capacity, capacity);
-
-        timeRet.set(0, newTimeData);
-        longRet.set(0, newValueData);
-
-        writeCurArrayIndex = newCapacity - capacity - 1;
-        capacity = newCapacity;
-      }
-    }
-    timeRet.get(0)[writeCurArrayIndex] = t;
-    longRet.get(0)[writeCurArrayIndex] = v;
-
-    writeCurArrayIndex--;
-    count++;
-  }
-
-  /**
-   * put float data reversely.
-   *
-   * @param t timestamp
-   * @param v float data
-   */
-  @Override
-  public void putFloat(long t, float v) {
-    if (writeCurArrayIndex == -1) {
-      if (capacity >= CAPACITY_THRESHOLD) {
-        ((LinkedList<long[]>) timeRet).addFirst(new long[capacity]);
-        ((LinkedList<float[]>) floatRet).addFirst(new float[capacity]);
-        writeCurListIndex++;
-        writeCurArrayIndex = capacity - 1;
-      } else {
-        int newCapacity = capacity << 1;
-
-        long[] newTimeData = new long[newCapacity];
-        float[] newValueData = new float[newCapacity];
-
-        System.arraycopy(timeRet.get(0), 0, newTimeData, newCapacity - capacity, capacity);
-        System.arraycopy(floatRet.get(0), 0, newValueData, newCapacity - capacity, capacity);
-
-        timeRet.set(0, newTimeData);
-        floatRet.set(0, newValueData);
-
-        writeCurArrayIndex = newCapacity - capacity - 1;
-        capacity = newCapacity;
-      }
-    }
-    timeRet.get(0)[writeCurArrayIndex] = t;
-    floatRet.get(0)[writeCurArrayIndex] = v;
-
-    writeCurArrayIndex--;
-    count++;
-  }
-
-  /**
-   * put double data reversely.
-   *
-   * @param t timestamp
-   * @param v double data
-   */
-  @Override
-  public void putDouble(long t, double v) {
-    if (writeCurArrayIndex == -1) {
-      if (capacity >= CAPACITY_THRESHOLD) {
-        ((LinkedList<long[]>) timeRet).addFirst(new long[capacity]);
-        ((LinkedList<double[]>) doubleRet).addFirst(new double[capacity]);
-        writeCurListIndex++;
-        writeCurArrayIndex = capacity - 1;
-      } else {
-        int newCapacity = capacity << 1;
-
-        long[] newTimeData = new long[newCapacity];
-        double[] newValueData = new double[newCapacity];
-
-        System.arraycopy(timeRet.get(0), 0, newTimeData, newCapacity - capacity, capacity);
-        System.arraycopy(doubleRet.get(0), 0, newValueData, newCapacity - capacity, capacity);
-
-        timeRet.set(0, newTimeData);
-        doubleRet.set(0, newValueData);
-
-        writeCurArrayIndex = newCapacity - capacity - 1;
-        capacity = newCapacity;
-      }
-    }
-    timeRet.get(0)[writeCurArrayIndex] = t;
-    doubleRet.get(0)[writeCurArrayIndex] = v;
-
-    writeCurArrayIndex--;
-    count++;
-  }
-
-  /**
-   * put binary data reversely.
-   *
-   * @param t timestamp
-   * @param v binary data.
-   */
-  @Override
-  public void putBinary(long t, Binary v) {
-    if (writeCurArrayIndex == -1) {
-      if (capacity >= CAPACITY_THRESHOLD) {
-        ((LinkedList<long[]>) timeRet).addFirst(new long[capacity]);
-        ((LinkedList<Binary[]>) binaryRet).addFirst(new Binary[capacity]);
-        writeCurListIndex++;
-        writeCurArrayIndex = capacity - 1;
-      } else {
-        int newCapacity = capacity << 1;
-
-        long[] newTimeData = new long[newCapacity];
-        Binary[] newValueData = new Binary[newCapacity];
-
-        System.arraycopy(timeRet.get(0), 0, newTimeData, newCapacity - capacity, capacity);
-        System.arraycopy(binaryRet.get(0), 0, newValueData, newCapacity - capacity, capacity);
-
-        timeRet.set(0, newTimeData);
-        binaryRet.set(0, newValueData);
-
-        writeCurArrayIndex = newCapacity - capacity - 1;
-        capacity = newCapacity;
-      }
-    }
-    timeRet.get(0)[writeCurArrayIndex] = t;
-    binaryRet.get(0)[writeCurArrayIndex] = v;
-
-    writeCurArrayIndex--;
-    count++;
-  }
-
-  /**
-   * put vector data.
-   *
-   * @param t timestamp
-   * @param v vector data.
-   */
-  @Override
-  public void putVector(long t, TsPrimitiveType[] v) {
-    if (writeCurArrayIndex == -1) {
-      if (capacity >= CAPACITY_THRESHOLD) {
-        ((LinkedList<long[]>) timeRet).addFirst(new long[capacity]);
-        ((LinkedList<TsPrimitiveType[][]>) vectorRet).addFirst(new TsPrimitiveType[capacity][]);
-        writeCurListIndex++;
-        writeCurArrayIndex = capacity - 1;
-      } else {
-        int newCapacity = capacity << 1;
-
-        long[] newTimeData = new long[newCapacity];
-        TsPrimitiveType[][] newValueData = new TsPrimitiveType[newCapacity][];
-
-        System.arraycopy(timeRet.get(0), 0, newTimeData, newCapacity - capacity, capacity);
-        System.arraycopy(vectorRet.get(0), 0, newValueData, newCapacity - capacity, capacity);
-
-        timeRet.set(0, newTimeData);
-        vectorRet.set(0, newValueData);
-
-        writeCurArrayIndex = newCapacity - capacity - 1;
-        capacity = newCapacity;
-      }
-    }
-    timeRet.get(0)[writeCurArrayIndex] = t;
-    vectorRet.get(0)[writeCurArrayIndex] = v;
-
-    writeCurArrayIndex--;
-    count++;
-  }
-
-  @Override
-  public boolean hasCurrent() {
-    return (readCurListIndex == 0 && readCurArrayIndex > writeCurArrayIndex)
-        || (readCurListIndex > 0 && readCurArrayIndex >= 0);
-  }
-
-  @Override
-  public void next() {
-    super.readCurArrayIndex--;
-    if ((readCurListIndex == 0 && readCurArrayIndex <= writeCurArrayIndex)
-        || readCurArrayIndex == -1) {
-      super.readCurListIndex--;
-      super.readCurArrayIndex = capacity - 1;
-    }
-  }
-
-  @Override
-  public void resetBatchData() {
-    super.readCurArrayIndex = capacity - 1;
-    super.readCurListIndex = writeCurListIndex;
-  }
-
-  @Override
-  public long getTimeByIndex(int idx) {
-    return timeRet
-        .get((idx + writeCurArrayIndex + 1) / capacity)[(idx + writeCurArrayIndex + 1) % capacity];
-  }
-
-  @Override
-  public long getLongByIndex(int idx) {
-    return longRet
-        .get((idx + writeCurArrayIndex + 1) / capacity)[(idx + writeCurArrayIndex + 1) % capacity];
-  }
-
-  @Override
-  public double getDoubleByIndex(int idx) {
-    return doubleRet
-        .get((idx + writeCurArrayIndex + 1) / capacity)[(idx + writeCurArrayIndex + 1) % capacity];
-  }
-
-  @Override
-  public int getIntByIndex(int idx) {
-    return intRet
-        .get((idx + writeCurArrayIndex + 1) / capacity)[(idx + writeCurArrayIndex + 1) % capacity];
-  }
-
-  @Override
-  public float getFloatByIndex(int idx) {
-    return floatRet
-        .get((idx + writeCurArrayIndex + 1) / capacity)[(idx + writeCurArrayIndex + 1) % capacity];
-  }
-
-  @Override
-  public Binary getBinaryByIndex(int idx) {
-    return binaryRet
-        .get((idx + writeCurArrayIndex + 1) / capacity)[(idx + writeCurArrayIndex + 1) % capacity];
-  }
-
-  @Override
-  public boolean getBooleanByIndex(int idx) {
-    return booleanRet
-        .get((idx + writeCurArrayIndex + 1) / capacity)[(idx + writeCurArrayIndex + 1) % capacity];
-  }
-
-  @Override
-  public TsPrimitiveType[] getVectorByIndex(int idx) {
-    return vectorRet
-        .get((idx + writeCurArrayIndex + 1) / capacity)[(idx + writeCurArrayIndex + 1) % capacity];
-  }
-
-  @Override
-  public void serializeData(DataOutputStream outputStream) throws IOException {
-    switch (dataType) {
-      case BOOLEAN:
-        for (int i = length() - 1; i >= 0; i--) {
-          outputStream.writeLong(getTimeByIndex(i));
-          outputStream.writeBoolean(getBooleanByIndex(i));
-        }
-        break;
-      case DOUBLE:
-        for (int i = length() - 1; i >= 0; i--) {
-          outputStream.writeLong(getTimeByIndex(i));
-          outputStream.writeDouble(getDoubleByIndex(i));
-        }
-        break;
-      case FLOAT:
-        for (int i = length() - 1; i >= 0; i--) {
-          outputStream.writeLong(getTimeByIndex(i));
-          outputStream.writeFloat(getFloatByIndex(i));
-        }
-        break;
-      case TEXT:
-        for (int i = length() - 1; i >= 0; i--) {
-          outputStream.writeLong(getTimeByIndex(i));
-          Binary binary = getBinaryByIndex(i);
-          outputStream.writeInt(binary.getLength());
-          outputStream.write(binary.getValues());
-        }
-        break;
-      case INT64:
-        for (int i = length() - 1; i >= 0; i--) {
-          outputStream.writeLong(getTimeByIndex(i));
-          outputStream.writeLong(getLongByIndex(i));
-        }
-        break;
-      case INT32:
-        for (int i = length() - 1; i >= 0; i--) {
-          outputStream.writeLong(getTimeByIndex(i));
-          outputStream.writeInt(getIntByIndex(i));
-        }
-        break;
-      case VECTOR:
-        for (int i = length() - 1; i >= 0; i--) {
-          outputStream.writeLong(getTimeByIndex(i));
-          TsPrimitiveType[] values = getVectorByIndex(i);
-          outputStream.writeInt(values.length);
-          for (TsPrimitiveType value : values) {
-            if (value == null) {
-              outputStream.write(0);
-            } else {
-              outputStream.write(1);
-              outputStream.write(value.getDataType().serialize());
-              switch (value.getDataType()) {
-                case BOOLEAN:
-                  outputStream.writeBoolean(value.getBoolean());
-                  break;
-                case DOUBLE:
-                  outputStream.writeDouble(value.getDouble());
-                  break;
-                case FLOAT:
-                  outputStream.writeFloat(value.getFloat());
-                  break;
-                case TEXT:
-                  Binary binary = value.getBinary();
-                  outputStream.writeInt(binary.getLength());
-                  outputStream.write(binary.getValues());
-                  break;
-                case INT64:
-                  outputStream.writeLong(value.getLong());
-                  break;
-                case INT32:
-                  outputStream.writeInt(value.getInt());
-                  break;
-                default:
-                  throw new UnSupportedDataTypeException(String.valueOf(dataType));
-              }
-            }
-          }
-        }
-        break;
-      default:
-        throw new UnSupportedDataTypeException(String.valueOf(dataType));
-    }
-  }
-
-  /**
-   * Read: When put data, the writeIndex increases while the readIndex remains 0. For descending
-   * read, we need to read from writeIndex to writeCurArrayIndex
-   */
-  @Override
-  public BatchData flip() {
-    super.readCurArrayIndex = capacity - 1;
-    super.readCurListIndex = writeCurListIndex;
-    return this;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Field.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Field.java
deleted file mode 100644
index 82c580d..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Field.java
+++ /dev/null
@@ -1,254 +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;
-
-import org.apache.iotdb.tsfile.exception.NullFieldException;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-/**
- * Field is component of one {@code RowRecord} which stores a value in specific data type. The value
- * type of Field is primitive(int long, float, double, binary, boolean).
- */
-public class Field {
-
-  private final TSDataType dataType;
-  private boolean boolV;
-  private int intV;
-  private long longV;
-  private float floatV;
-  private double doubleV;
-  private Binary binaryV;
-
-  public Field(TSDataType dataType) {
-    this.dataType = dataType;
-  }
-
-  public static Field copy(Field field) {
-    Field out = new Field(field.dataType);
-    if (out.dataType != null) {
-      switch (out.dataType) {
-        case DOUBLE:
-          out.setDoubleV(field.getDoubleV());
-          break;
-        case FLOAT:
-          out.setFloatV(field.getFloatV());
-          break;
-        case INT64:
-          out.setLongV(field.getLongV());
-          break;
-        case INT32:
-          out.setIntV(field.getIntV());
-          break;
-        case BOOLEAN:
-          out.setBoolV(field.getBoolV());
-          break;
-        case TEXT:
-          out.setBinaryV(field.getBinaryV());
-          break;
-        default:
-          throw new UnSupportedDataTypeException(out.dataType.toString());
-      }
-    }
-
-    return out;
-  }
-
-  public TSDataType getDataType() {
-    return dataType;
-  }
-
-  public boolean getBoolV() {
-    if (dataType == null) {
-      throw new NullFieldException();
-    }
-    return boolV;
-  }
-
-  public void setBoolV(boolean boolV) {
-    this.boolV = boolV;
-  }
-
-  public int getIntV() {
-    if (dataType == null) {
-      throw new NullFieldException();
-    }
-    return intV;
-  }
-
-  public void setIntV(int intV) {
-    this.intV = intV;
-  }
-
-  public long getLongV() {
-    if (dataType == null) {
-      throw new NullFieldException();
-    }
-    return longV;
-  }
-
-  public void setLongV(long longV) {
-    this.longV = longV;
-  }
-
-  public float getFloatV() {
-    if (dataType == null) {
-      throw new NullFieldException();
-    }
-    return floatV;
-  }
-
-  public void setFloatV(float floatV) {
-    this.floatV = floatV;
-  }
-
-  public double getDoubleV() {
-    if (dataType == null) {
-      throw new NullFieldException();
-    }
-    return doubleV;
-  }
-
-  public void setDoubleV(double doubleV) {
-    this.doubleV = doubleV;
-  }
-
-  public Binary getBinaryV() {
-    if (dataType == null) {
-      throw new NullFieldException();
-    }
-    return binaryV;
-  }
-
-  public void setBinaryV(Binary binaryV) {
-    this.binaryV = binaryV;
-  }
-
-  /**
-   * get field value and convert to string.
-   *
-   * @return value string
-   */
-  public String getStringValue() {
-    if (dataType == null) {
-      return "null";
-    }
-    switch (dataType) {
-      case BOOLEAN:
-        return String.valueOf(boolV);
-      case INT32:
-        return String.valueOf(intV);
-      case INT64:
-        return String.valueOf(longV);
-      case FLOAT:
-        return String.valueOf(floatV);
-      case DOUBLE:
-        return String.valueOf(doubleV);
-      case TEXT:
-        return binaryV.toString();
-      default:
-        throw new UnSupportedDataTypeException(dataType.toString());
-    }
-  }
-
-  @Override
-  public String toString() {
-    return getStringValue();
-  }
-
-  public Object getObjectValue(TSDataType dataType) {
-    if (this.dataType == null) {
-      return null;
-    }
-    switch (dataType) {
-      case DOUBLE:
-        return getDoubleV();
-      case FLOAT:
-        return getFloatV();
-      case INT64:
-        return getLongV();
-      case INT32:
-        return getIntV();
-      case BOOLEAN:
-        return getBoolV();
-      case TEXT:
-        return getBinaryV();
-      default:
-        throw new UnSupportedDataTypeException(dataType.toString());
-    }
-  }
-
-  public static Field getField(Object value, TSDataType dataType) {
-    if (value == null) {
-      return null;
-    }
-    Field field = new Field(dataType);
-    switch (dataType) {
-      case INT32:
-        field.setIntV((int) value);
-        break;
-      case INT64:
-        field.setLongV((long) value);
-        break;
-      case FLOAT:
-        field.setFloatV((float) value);
-        break;
-      case DOUBLE:
-        field.setDoubleV((double) value);
-        break;
-      case BOOLEAN:
-        field.setBoolV((boolean) value);
-        break;
-      case TEXT:
-        field.setBinaryV((Binary) value);
-        break;
-      default:
-        throw new UnSupportedDataTypeException(dataType.toString());
-    }
-    return field;
-  }
-
-  public static void setTsPrimitiveValue(TsPrimitiveType value, Field field) {
-    switch (value.getDataType()) {
-      case BOOLEAN:
-        field.setBoolV(value.getBoolean());
-        break;
-      case INT32:
-        field.setIntV(value.getInt());
-        break;
-      case INT64:
-        field.setLongV(value.getLong());
-        break;
-      case FLOAT:
-        field.setFloatV(value.getFloat());
-        break;
-      case DOUBLE:
-        field.setDoubleV(value.getDouble());
-        break;
-      case TEXT:
-        field.setBinaryV(value.getBinary());
-        break;
-      default:
-        throw new UnSupportedDataTypeException("UnSupported" + value.getDataType());
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/IBatchDataIterator.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/IBatchDataIterator.java
deleted file mode 100644
index 0761c1d..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/IBatchDataIterator.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 interface IBatchDataIterator {
-
-  boolean hasNext();
-
-  boolean hasNext(long minBound, long maxBound);
-
-  void next();
-
-  long currentTime();
-
-  Object currentValue();
-
-  void reset();
-
-  int totalLength();
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Path.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Path.java
deleted file mode 100644
index b2d9686..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Path.java
+++ /dev/null
@@ -1,302 +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;
-
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.exception.PathParseException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.read.common.parser.PathNodesGenerator;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.Validate;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-
-/**
- * This class represent a time series in TsFile, which is usually defined by a device and a
- * measurement.
- *
- * <p>If you want to use one String such as "device1.measurement1" to init Path in TsFile API,
- * please use the new Path(string, true) to split it to device and measurement.
- */
-public class Path implements Serializable, Comparable<Path> {
-
-  private static final long serialVersionUID = 3405277066329298200L;
-  private String measurement;
-  protected String device;
-  protected String fullPath;
-  private static final String ILLEGAL_PATH_ARGUMENT = "Path parameter is null";
-
-  public Path() {}
-
-  // Only used for test
-  public Path(IDeviceID deviceID) {
-    this(((PlainDeviceID) deviceID).toStringID());
-  }
-
-  /**
-   * this constructor doesn't split the path, only useful for table header.
-   *
-   * @param pathSc the path that wouldn't be split.
-   */
-  @SuppressWarnings("the path that wouldn't be split")
-  public Path(String pathSc) {
-    this(pathSc, false);
-  }
-
-  /**
-   * @param pathSc path
-   * @param needSplit whether need to be split to device and measurement, doesn't support escape
-   *     character yet.
-   */
-  public Path(String pathSc, boolean needSplit) {
-    if (pathSc == null) {
-      throw new PathParseException(ILLEGAL_PATH_ARGUMENT);
-    }
-    if (!needSplit) {
-      // no split, we don't use antlr to check here.
-      fullPath = pathSc;
-    } else {
-      if (pathSc.length() > 0) {
-        String[] nodes = PathNodesGenerator.splitPathToNodes(pathSc);
-        device = "";
-        if (nodes.length > 1) {
-          device = transformNodesToString(nodes, nodes.length - 1);
-        }
-        measurement = nodes[nodes.length - 1];
-        fullPath = transformNodesToString(nodes, nodes.length);
-      } else {
-        fullPath = pathSc;
-        device = "";
-        measurement = pathSc;
-      }
-    }
-  }
-
-  public Path(IDeviceID device, String measurement, boolean needCheck) {
-    this(((PlainDeviceID) device).toStringID(), measurement, needCheck);
-  }
-
-  /**
-   * construct a Path directly using device and measurement, no need to reformat the path
-   *
-   * @param device root.deviceType.d1
-   * @param measurement s1 , does not contain TsFileConstant.PATH_SEPARATOR
-   * @param needCheck need to validate the correctness of the path
-   */
-  public Path(String device, String measurement, boolean needCheck) {
-    if (device == null || measurement == null) {
-      throw new PathParseException(ILLEGAL_PATH_ARGUMENT);
-    }
-    if (!needCheck) {
-      this.measurement = measurement;
-      this.device = device;
-      this.fullPath = device + TsFileConstant.PATH_SEPARATOR + measurement;
-      return;
-    }
-    // use PathNodesGenerator to check whether path is legal.
-    if (!StringUtils.isEmpty(device) && !StringUtils.isEmpty(measurement)) {
-      String path = device + TsFileConstant.PATH_SEPARATOR + measurement;
-      String[] nodes = PathNodesGenerator.splitPathToNodes(path);
-      this.device = transformNodesToString(nodes, nodes.length - 1);
-      this.measurement = nodes[nodes.length - 1];
-      this.fullPath = transformNodesToString(nodes, nodes.length);
-    } else if (!StringUtils.isEmpty(device)) {
-      String[] deviceNodes = PathNodesGenerator.splitPathToNodes(device);
-      this.device = transformNodesToString(deviceNodes, deviceNodes.length);
-      this.measurement = measurement;
-      // for aligned path, sensor name for time column is ""
-      this.fullPath = device + TsFileConstant.PATH_SEPARATOR + measurement;
-    } else if (!StringUtils.isEmpty(measurement)) {
-      String[] measurementNodes = PathNodesGenerator.splitPathToNodes(measurement);
-      this.measurement = transformNodesToString(measurementNodes, measurementNodes.length);
-      this.device = device;
-      this.fullPath = measurement;
-    } else {
-      this.device = device;
-      this.measurement = measurement;
-      this.fullPath = "";
-    }
-  }
-
-  public String getFullPath() {
-    return fullPath;
-  }
-
-  public String getDevice() {
-    return device;
-  }
-
-  public IDeviceID getIDeviceID() {
-    // TODO
-    return new PlainDeviceID(getDevice());
-  }
-
-  public String getMeasurement() {
-    return measurement;
-  }
-
-  public String getFullPathWithAlias() {
-    throw new IllegalArgumentException("doesn't alias in TSFile Path");
-  }
-
-  public void setMeasurement(String measurement) {
-    this.measurement = measurement;
-  }
-
-  @Override
-  public int hashCode() {
-    return fullPath.hashCode();
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    return obj instanceof Path && this.fullPath.equals(((Path) obj).fullPath);
-  }
-
-  public boolean equals(String obj) {
-    return this.fullPath.equals(obj);
-  }
-
-  @Override
-  public int compareTo(Path path) {
-    return fullPath.compareTo(path.getFullPath());
-  }
-
-  @Override
-  public String toString() {
-    return fullPath;
-  }
-
-  @Override
-  public Path clone() {
-    return new Path(fullPath);
-  }
-
-  /** return the column contained by this path */
-  public int getColumnNum() {
-    return 1;
-  }
-
-  public void serialize(ByteBuffer byteBuffer) {
-    ReadWriteIOUtils.write((byte) 3, byteBuffer); // org.apache.iotdb.db.metadata.path#PathType
-    serializeWithoutType(byteBuffer);
-  }
-
-  public void serialize(OutputStream stream) throws IOException {
-    ReadWriteIOUtils.write((byte) 3, stream); // org.apache.iotdb.db.metadata.path#PathType
-    serializeWithoutType(stream);
-  }
-
-  public void serialize(PublicBAOS stream) throws IOException {
-    ReadWriteIOUtils.write((byte) 3, stream); // org.apache.iotdb.db.metadata.path#PathType
-    serializeWithoutType(stream);
-  }
-
-  protected void serializeWithoutType(ByteBuffer byteBuffer) {
-    if (measurement == null) {
-      ReadWriteIOUtils.write((byte) 0, byteBuffer);
-    } else {
-      ReadWriteIOUtils.write((byte) 1, byteBuffer);
-      ReadWriteIOUtils.write(measurement, byteBuffer);
-    }
-    if (device == null) {
-      ReadWriteIOUtils.write((byte) 0, byteBuffer);
-    } else {
-      ReadWriteIOUtils.write((byte) 1, byteBuffer);
-      ReadWriteIOUtils.write(device, byteBuffer);
-    }
-    if (fullPath == null) {
-      ReadWriteIOUtils.write((byte) 0, byteBuffer);
-    } else {
-      ReadWriteIOUtils.write((byte) 1, byteBuffer);
-      ReadWriteIOUtils.write(fullPath, byteBuffer);
-    }
-  }
-
-  protected void serializeWithoutType(OutputStream stream) throws IOException {
-    if (measurement == null) {
-      ReadWriteIOUtils.write((byte) 0, stream);
-    } else {
-      ReadWriteIOUtils.write((byte) 1, stream);
-      ReadWriteIOUtils.write(measurement, stream);
-    }
-    if (device == null) {
-      ReadWriteIOUtils.write((byte) 0, stream);
-    } else {
-      ReadWriteIOUtils.write((byte) 1, stream);
-      ReadWriteIOUtils.write(device, stream);
-    }
-    if (fullPath == null) {
-      ReadWriteIOUtils.write((byte) 0, stream);
-    } else {
-      ReadWriteIOUtils.write((byte) 1, stream);
-      ReadWriteIOUtils.write(fullPath, stream);
-    }
-  }
-
-  protected void serializeWithoutType(PublicBAOS stream) throws IOException {
-    if (measurement == null) {
-      ReadWriteIOUtils.write((byte) 0, stream);
-    } else {
-      ReadWriteIOUtils.write((byte) 1, stream);
-      ReadWriteIOUtils.write(measurement, stream);
-    }
-    if (device == null) {
-      ReadWriteIOUtils.write((byte) 0, stream);
-    } else {
-      ReadWriteIOUtils.write((byte) 1, stream);
-      ReadWriteIOUtils.write(device, stream);
-    }
-    if (fullPath == null) {
-      ReadWriteIOUtils.write((byte) 0, stream);
-    } else {
-      ReadWriteIOUtils.write((byte) 1, stream);
-      ReadWriteIOUtils.write(fullPath, stream);
-    }
-  }
-
-  public static Path deserialize(ByteBuffer byteBuffer) {
-    Path path = new Path();
-    byte isNull = ReadWriteIOUtils.readByte(byteBuffer);
-    path.measurement = isNull == 0 ? null : ReadWriteIOUtils.readString(byteBuffer);
-    isNull = ReadWriteIOUtils.readByte(byteBuffer);
-    path.device = isNull == 0 ? null : ReadWriteIOUtils.readString(byteBuffer);
-    isNull = ReadWriteIOUtils.readByte(byteBuffer);
-    path.fullPath = isNull == 0 ? null : ReadWriteIOUtils.readString(byteBuffer);
-    return path;
-  }
-
-  private String transformNodesToString(String[] nodes, int index) {
-    Validate.isTrue(nodes.length > 0);
-    StringBuilder s = new StringBuilder(nodes[0]);
-    for (int i = 1; i < index; i++) {
-      s.append(TsFileConstant.PATH_SEPARATOR);
-      s.append(nodes[i]);
-    }
-    return s.toString();
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/RowRecord.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/RowRecord.java
deleted file mode 100644
index 5fb65793..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/RowRecord.java
+++ /dev/null
@@ -1,133 +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;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class RowRecord {
-
-  private long timestamp;
-  private final List<Field> fields;
-  /** if any column is null, this field should be set to true; otherwise false */
-  private boolean hasNullField = false;
-
-  /** if any column is not null, this field should be set to false; otherwise true */
-  private boolean allNull = true;
-
-  public RowRecord(long timestamp) {
-    this.timestamp = timestamp;
-    this.fields = new ArrayList<>();
-  }
-
-  public RowRecord(long timestamp, int nums) {
-    this.timestamp = timestamp;
-    this.fields = new ArrayList<>(nums);
-    for (int i = 0; i < nums; i++) {
-      this.fields.add(null);
-    }
-  }
-
-  public RowRecord(long timestamp, List<Field> fields) {
-    this.timestamp = timestamp;
-    this.fields = fields;
-    for (Field field : fields) {
-      if (field == null || field.getDataType() == null) {
-        hasNullField = true;
-      } else {
-        allNull = false;
-      }
-    }
-  }
-
-  public void addField(Field f) {
-    this.fields.add(f);
-    if (f == null || f.getDataType() == null) {
-      hasNullField = true;
-    } else {
-      allNull = false;
-    }
-  }
-
-  public void setField(int index, Field f) {
-    this.fields.set(index, f);
-    if (f == null || f.getDataType() == null) {
-      hasNullField = true;
-    } else {
-      allNull = false;
-    }
-  }
-
-  public void addField(Object value, TSDataType dataType) {
-    this.fields.add(Field.getField(value, dataType));
-    if (value == null || dataType == null) {
-      hasNullField = true;
-    } else {
-      allNull = false;
-    }
-  }
-
-  public void setField(int index, Object value, TSDataType dataType) {
-    this.fields.set(index, Field.getField(value, dataType));
-    if (value == null || dataType == null) {
-      hasNullField = true;
-    } else {
-      allNull = false;
-    }
-  }
-
-  @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder();
-    sb.append(timestamp);
-    for (Field f : fields) {
-      sb.append("\t");
-      sb.append(f);
-    }
-    return sb.toString();
-  }
-
-  public void setTimestamp(long timestamp) {
-    this.timestamp = timestamp;
-  }
-
-  public long getTimestamp() {
-    return timestamp;
-  }
-
-  public List<Field> getFields() {
-    return fields;
-  }
-
-  public boolean hasNullField() {
-    return hasNullField;
-  }
-
-  public boolean isAllNull() {
-    return allNull;
-  }
-
-  public void resetNullFlag() {
-    hasNullField = false;
-    allNull = true;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/SignalBatchData.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/SignalBatchData.java
deleted file mode 100644
index fea8f78..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/SignalBatchData.java
+++ /dev/null
@@ -1,44 +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;
-
-/** It is an empty signal to notify the caller that there is no more batch data after it. */
-public class SignalBatchData extends BatchData {
-
-  private static final long serialVersionUID = -4175548102820374070L;
-
-  public static SignalBatchData getInstance() {
-    return InstanceHolder.instance;
-  }
-
-  private static class InstanceHolder {
-
-    private InstanceHolder() {
-      // allowed to do nothing
-    }
-
-    private static SignalBatchData instance = new SignalBatchData();
-  }
-
-  @Override
-  public boolean hasCurrent() {
-    throw new UnsupportedOperationException("hasCurrent is not supported for SignalBatchData");
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/TimeRange.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/TimeRange.java
deleted file mode 100644
index 5214878..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/TimeRange.java
+++ /dev/null
@@ -1,404 +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;
-
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * interval [min,max] of long data type
- *
- * <p>Reference: http://www.java2s.com/Code/Java/Collections-Data-Structure/Anumericalinterval.htm
- */
-public class TimeRange implements Comparable<TimeRange> {
-
-  /** The lower value */
-  private long min = 0;
-
-  /** The upper value */
-  private long max = 0;
-
-  /**
-   * Initialize a closed interval [min,max].
-   *
-   * @param min the left endpoint of the closed interval
-   * @param max the right endpoint of the closed interval
-   */
-  public TimeRange(long min, long max) {
-    set(min, max);
-  }
-
-  @Override
-  public int compareTo(TimeRange r) {
-    if (r == null) {
-      throw new NullPointerException("The input cannot be null!");
-    }
-    if (this.min > r.min) {
-      return 1;
-    } else if (this.min < r.min) {
-      return -1;
-    } else {
-      if (this.max > r.max) {
-        return 1;
-      } else if (this.max < r.max) {
-        return -1;
-      } else {
-        return 0;
-      }
-    }
-  }
-
-  public void setMin(long min) {
-    if (min < 0 || min > this.max) {
-      throw new IllegalArgumentException("Invalid input!");
-    }
-    this.min = min;
-  }
-
-  public void setMax(long max) {
-    if (max < 0 || max < this.min) {
-      throw new IllegalArgumentException("Invalid input!");
-    }
-    this.max = max;
-  }
-
-  /**
-   * Check whether this TimeRange contains r.
-   *
-   * @return true if the given range lies in this range, inclusively
-   */
-  public boolean contains(TimeRange r) {
-    return min <= r.min && max >= r.max;
-  }
-
-  public boolean contains(long min, long max) {
-    if (leftClose && rightClose) {
-      return this.min <= min && this.max >= max;
-    } else if (leftClose) {
-      return this.min <= min && this.max > max;
-    } else if (rightClose) {
-      return this.min < min && this.max >= max;
-    } else {
-      return this.min < min && this.max > max;
-    }
-  }
-
-  public boolean contains(long time) {
-    if (leftClose && rightClose) {
-      return time >= this.min && time <= this.max;
-    } else if (leftClose) {
-      return time >= this.min && time < this.max;
-    } else if (rightClose) {
-      return time > this.min && time <= this.max;
-    } else {
-      return time > this.min && time < this.max;
-    }
-  }
-
-  /**
-   * Set a closed interval [min,max].
-   *
-   * @param min the left endpoint of the closed interval
-   * @param max the right endpoint of the closed interval
-   */
-  public void set(long min, long max) {
-    if (min > max) {
-      throw new IllegalArgumentException("min:" + min + " should not be larger than max: " + max);
-    }
-    this.min = min;
-    this.max = max;
-  }
-
-  /**
-   * Get the lower range bundary.
-   *
-   * @return The lower range boundary.
-   */
-  public long getMin() {
-    return min;
-  }
-
-  /**
-   * Get the upper range boundary.
-   *
-   * @return The upper range boundary.
-   */
-  public long getMax() {
-    return max;
-  }
-
-  /**
-   * Here are some examples.
-   *
-   * <p>[1,3] does not intersect with (4,5].
-   *
-   * <p>[1,3) does not intersect with (3,5].
-   *
-   * <p>[1,3] does not intersect with [5,6].
-   *
-   * <p>[1,3] intersects with [2,5].
-   *
-   * <p>[1,3] intersects with (3,5].
-   *
-   * <p>[1,3) intersects with (2,5].
-   *
-   * <p>Note: this method treats [1,3] and [4,5] as two "intersected" interval even if they are not
-   * truly intersected.
-   *
-   * @param r the given time range
-   * @return true if the current time range "intersects" with the given time range r
-   */
-  public boolean intersects(TimeRange r) {
-    if ((!leftClose || !r.rightClose) && (r.max < min)) {
-      // e.g., [1,3] does not intersect with (4,5].
-      return false;
-    } else if (!leftClose && !r.rightClose && r.max <= min) {
-      // e.g.,[1,3) does not intersect with (3,5]
-      return false;
-    } else if (leftClose && r.rightClose && r.max <= min - 2) {
-      // e.g.,[1,3] does not intersect with [5,6].
-      // take care of overflow. e.g., Long.MIN_VALUE
-      return false;
-    } else if ((!rightClose || !r.leftClose) && (r.min > max)) {
-      return false;
-    } else if (!rightClose && !r.leftClose && r.min >= max) {
-      return false;
-    } else if (rightClose && r.leftClose && r.min >= max + 2) {
-      // take care of overflow. e.g., Long.MAX_VALUE
-      return false;
-    } else {
-      return true;
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    TimeRange that = (TimeRange) o;
-    return (this.min == that.min && this.max == that.max);
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(min, max);
-  }
-
-  /**
-   * Check if two TimeRanges overlap
-   *
-   * @param rhs the given time range
-   * @return true if the current time range overlaps with the given time range rhs
-   */
-  public boolean overlaps(TimeRange rhs) {
-    if ((!this.leftClose || !rhs.rightClose) && (rhs.max <= this.min)) {
-      // e.g., rhs:[1,3] does not overlap with this:(3,5].
-      return false;
-    } else if (!this.leftClose && !rhs.rightClose && rhs.max <= this.min + 1) {
-      // e.g., rhs:[1,4) does not overlap with this:(3,5]
-      return false;
-    } else if (this.leftClose && rhs.rightClose && rhs.max < this.min) {
-      // e.g., rhs:[1,4] does not overlap with this:[5,6]
-      return false;
-    } else if ((!this.rightClose || !rhs.leftClose) && (rhs.min >= this.max)) {
-      // e.g., this:[1,5) does not overlap with rhs:[5,6]
-      return false;
-    } 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 {
-      // e.g., this:[1,5] does not overlap with rhs:[6,8]
-      return !this.rightClose || !rhs.leftClose || rhs.min <= this.max;
-    }
-  }
-
-  @Override
-  public String toString() {
-    StringBuilder res = new StringBuilder();
-    if (leftClose) {
-      res.append("[ ");
-    } else {
-      res.append("( ");
-    }
-    res.append(min).append(" : ").append(max);
-    if (rightClose) {
-      res.append(" ]");
-    } else {
-      res.append(" )");
-    }
-    return res.toString();
-  }
-
-  // NOTE the primitive timeRange is always a closed interval [min,max] and
-  // only in getRemains functions are leftClose and rightClose considered.
-  private boolean leftClose = true; // default true
-  private boolean rightClose = true; // default true
-
-  public void setLeftClose(boolean leftClose) {
-    this.leftClose = leftClose;
-  }
-
-  public void setRightClose(boolean rightClose) {
-    this.rightClose = rightClose;
-  }
-
-  public boolean getLeftClose() {
-    return leftClose;
-  }
-
-  public boolean getRightClose() {
-    return rightClose;
-  }
-
-  /**
-   * Return the union of the given time ranges.
-   *
-   * @param unionCandidates time ranges to be merged
-   * @return the union of time ranges
-   */
-  public static List<TimeRange> sortAndMerge(List<TimeRange> unionCandidates) {
-    // sort the time ranges in ascending order of the start time
-    Collections.sort(unionCandidates);
-
-    ArrayList<TimeRange> unionResult = new ArrayList<>();
-    Iterator<TimeRange> iterator = unionCandidates.iterator();
-    TimeRange rangeCurr;
-
-    if (!iterator.hasNext()) {
-      return unionResult;
-    } else {
-      rangeCurr = iterator.next();
-    }
-
-    while (iterator.hasNext()) {
-      TimeRange rangeNext = iterator.next();
-      if (rangeCurr.intersects(rangeNext)) {
-        rangeCurr.merge(rangeNext);
-      } else {
-        unionResult.add(rangeCurr);
-        rangeCurr = rangeNext;
-      }
-    }
-    unionResult.add(rangeCurr);
-    return unionResult;
-  }
-
-  public void merge(TimeRange rhs) {
-    set(Math.min(getMin(), rhs.getMin()), Math.max(getMax(), rhs.getMax()));
-  }
-
-  /**
-   * Get the remaining time ranges in the current ranges but not in timeRangesPrev.
-   *
-   * <p>NOTE the primitive timeRange is always a closed interval [min,max] and only in this function
-   * are leftClose and rightClose changed.
-   *
-   * @param timeRangesPrev time ranges union in ascending order of the start time
-   * @return the remaining time ranges
-   */
-  @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning
-  public List<TimeRange> getRemains(List<TimeRange> timeRangesPrev) {
-    List<TimeRange> remains = new ArrayList<>();
-
-    for (TimeRange prev : timeRangesPrev) {
-      // +2 is to keep consistent with the definition of `intersects` of two closed intervals
-      if (prev.min >= max + 2) {
-        // break early since timeRangesPrev is sorted
-        break;
-      }
-
-      if (intersects(prev)) {
-        if (prev.contains(this)) {
-          // e.g., this=[3,5], prev=[1,10]
-          // e.g., this=[3,5], prev=[3,5] Note that in this case, prev contains this and vice versa.
-          return remains;
-        } else if (this.contains(prev)) {
-          if (prev.min > this.min && prev.max == this.max) {
-            // e.g., this=[1,6], prev=[3,6]
-            this.setMax(prev.min);
-            this.setRightClose(false);
-            remains.add(this);
-            // return the final result because timeRangesPrev is sorted
-            return remains;
-          } else if (prev.min == this.min) {
-            // Note prev.max < this.max e.g., this=[1,10], prev=[1,4]
-            min = prev.max;
-            leftClose = false;
-          } else {
-            // e.g., prev=[3,6], this=[1,10]
-            TimeRange r = new TimeRange(this.min, prev.min);
-            r.setLeftClose(this.leftClose);
-            r.setRightClose(false);
-            remains.add(r);
-            min = prev.max;
-            leftClose = false;
-          }
-        } else {
-          // intersect without one containing the other
-          if (prev.min < this.min) {
-            // e.g., this=[3,10], prev=[1,6]
-            min = prev.max;
-            leftClose = false;
-          } else {
-            // e.g., this=[1,8], prev=[5,12]
-            this.setMax(prev.min);
-            this.setRightClose(false);
-            remains.add(this);
-            // return the final result because timeRangesPrev is sorted
-            return remains;
-          }
-        }
-      }
-    }
-
-    remains.add(this);
-    return remains;
-  }
-
-  public IExpression getExpression() {
-    IExpression left;
-    IExpression right;
-    if (leftClose) {
-      left = new GlobalTimeExpression(TimeFilterApi.gtEq(min));
-    } else {
-      left = new GlobalTimeExpression(TimeFilterApi.gt(min));
-    }
-
-    if (rightClose) {
-      right = new GlobalTimeExpression(TimeFilterApi.ltEq(max));
-    } else {
-      right = new GlobalTimeExpression(TimeFilterApi.lt(max));
-    }
-
-    return BinaryExpression.and(left, right);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlock.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlock.java
deleted file mode 100644
index 39233628..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlock.java
+++ /dev/null
@@ -1,556 +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 org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.common.IBatchDataIterator;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import static java.lang.String.format;
-import static java.util.Objects.requireNonNull;
-
-/**
- * Intermediate result for most of ExecOperators. The TsBlock contains data from one or more columns
- * and constructs them as a row based view The columns can be series, aggregation result for one
- * series or scalar value (such as deviceName).
- */
-public class TsBlock {
-
-  public static final int INSTANCE_SIZE =
-      (int) RamUsageEstimator.shallowSizeOfInstance(TsBlock.class);
-
-  private static final Column[] EMPTY_COLUMNS = new Column[0];
-
-  /**
-   * Visible to give trusted classes like {@link TsBlockBuilder} access to a constructor that
-   * doesn't defensively copy the valueColumns
-   */
-  public static TsBlock wrapBlocksWithoutCopy(
-      int positionCount, TimeColumn timeColumn, Column[] valueColumns) {
-    return new TsBlock(false, positionCount, timeColumn, valueColumns);
-  }
-
-  private final TimeColumn timeColumn;
-
-  private final Column[] valueColumns;
-
-  /** How many rows in current TsBlock */
-  private final int positionCount;
-
-  private volatile long retainedSizeInBytes = -1;
-
-  public TsBlock(int positionCount) {
-    this(false, positionCount, null, EMPTY_COLUMNS);
-  }
-
-  public TsBlock(TimeColumn timeColumn, Column... valueColumns) {
-    this(true, determinePositionCount(valueColumns), timeColumn, valueColumns);
-  }
-
-  public TsBlock(int positionCount, TimeColumn timeColumn, Column... valueColumns) {
-    this(true, positionCount, timeColumn, valueColumns);
-  }
-
-  private TsBlock(
-      boolean columnsCopyRequired,
-      int positionCount,
-      TimeColumn timeColumn,
-      Column[] valueColumns) {
-    requireNonNull(valueColumns, "blocks is null");
-    this.positionCount = positionCount;
-    this.timeColumn = timeColumn;
-    if (valueColumns.length == 0) {
-      this.valueColumns = EMPTY_COLUMNS;
-      // Empty blocks are not considered "retained" by any particular page
-      this.retainedSizeInBytes = INSTANCE_SIZE;
-    } else {
-      this.valueColumns = columnsCopyRequired ? valueColumns.clone() : valueColumns;
-    }
-  }
-
-  public int getPositionCount() {
-    return positionCount;
-  }
-
-  public long getStartTime() {
-    return timeColumn.getStartTime();
-  }
-
-  public long getEndTime() {
-    return timeColumn.getEndTime();
-  }
-
-  public boolean isEmpty() {
-    return positionCount == 0;
-  }
-
-  public long getRetainedSizeInBytes() {
-    if (retainedSizeInBytes < 0) {
-      return updateRetainedSize();
-    }
-    return retainedSizeInBytes;
-  }
-
-  /**
-   * @param positionOffset start offset
-   * @param length slice length
-   * @return view of current TsBlock start from positionOffset to positionOffset + length
-   */
-  public TsBlock getRegion(int positionOffset, int length) {
-    if (positionOffset < 0 || length < 0 || positionOffset + length > positionCount) {
-      throw new IndexOutOfBoundsException(
-          format(
-              "Invalid position %s and length %s in page with %s positions",
-              positionOffset, length, positionCount));
-    }
-    int channelCount = getValueColumnCount();
-    Column[] slicedColumns = new Column[channelCount];
-    for (int i = 0; i < channelCount; i++) {
-      slicedColumns[i] = valueColumns[i].getRegion(positionOffset, length);
-    }
-    return wrapBlocksWithoutCopy(
-        length, (TimeColumn) timeColumn.getRegion(positionOffset, length), slicedColumns);
-  }
-
-  /**
-   * ATTENTION!!! The following two methods use System.arraycopy() to extend the valueColumn array,
-   * so its performance is not ensured if you have many insert operations. </br> PLEASE MAKE SURE
-   * the column object CAN'T BE NULL and POSITION COUNT SHOULD MATCH valueColumn's</br>
-   */
-  public TsBlock appendValueColumns(Column[] columns) {
-    Column[] newBlocks = Arrays.copyOf(valueColumns, valueColumns.length + columns.length);
-    System.arraycopy(columns, 0, newBlocks, valueColumns.length, columns.length);
-    return wrapBlocksWithoutCopy(positionCount, timeColumn, newBlocks);
-  }
-
-  public TsBlock insertValueColumn(int index, Column[] columns) {
-    Column[] newBlocks = Arrays.copyOf(valueColumns, valueColumns.length + columns.length);
-    System.arraycopy(
-        newBlocks, index, newBlocks, index + columns.length, valueColumns.length - index);
-    System.arraycopy(columns, 0, newBlocks, index, columns.length);
-    return wrapBlocksWithoutCopy(positionCount, timeColumn, newBlocks);
-  }
-
-  /**
-   * This method will create a temporary view of origin tsBlock, which will reuse the arrays of
-   * columns but with different offset. It can be used where you want to skip some points when
-   * getting iterator.
-   */
-  public TsBlock subTsBlock(int fromIndex) {
-    if (fromIndex > positionCount) {
-      throw new IllegalArgumentException("FromIndex of subTsBlock cannot over positionCount.");
-    }
-    TimeColumn subTimeColumn = (TimeColumn) timeColumn.subColumn(fromIndex);
-    Column[] subValueColumns = new Column[valueColumns.length];
-    for (int i = 0; i < subValueColumns.length; i++) {
-      subValueColumns[i] = valueColumns[i].subColumn(fromIndex);
-    }
-    return new TsBlock(subTimeColumn, subValueColumns);
-  }
-
-  public TsBlock skipFirst() {
-    return this.subTsBlock(1);
-  }
-
-  public long getTimeByIndex(int index) {
-    return timeColumn.getLong(index);
-  }
-
-  public int getValueColumnCount() {
-    return valueColumns.length;
-  }
-
-  public TimeColumn getTimeColumn() {
-    return timeColumn;
-  }
-
-  public Column[] getValueColumns() {
-    return valueColumns;
-  }
-
-  public Column getColumn(int columnIndex) {
-    return valueColumns[columnIndex];
-  }
-
-  public Column[] getTimeAndValueColumn(int columnIndex) {
-    Column[] columns = new Column[2];
-    columns[0] = getTimeColumn();
-    columns[1] = getColumn(columnIndex);
-    return columns;
-  }
-
-  public Column[] getColumns(int[] columnIndexes) {
-    Column[] columns = new Column[columnIndexes.length];
-    for (int i = 0; i < columnIndexes.length; i++) {
-      columns[i] = valueColumns[columnIndexes[i]];
-    }
-    return columns;
-  }
-
-  public TsBlockSingleColumnIterator getTsBlockSingleColumnIterator() {
-    return new TsBlockSingleColumnIterator(0);
-  }
-
-  public TsBlockSingleColumnIterator getTsBlockSingleColumnIterator(int columnIndex) {
-    return new TsBlockSingleColumnIterator(0, columnIndex);
-  }
-
-  public void reverse() {
-    timeColumn.reverse();
-    for (Column valueColumn : valueColumns) {
-      valueColumn.reverse();
-    }
-  }
-
-  public TsBlockRowIterator getTsBlockRowIterator() {
-    return new TsBlockRowIterator(0);
-  }
-
-  /** Only used for the batch data of vector time series. */
-  public TsBlockAlignedRowIterator getTsBlockAlignedRowIterator() {
-    return new TsBlockAlignedRowIterator(0);
-  }
-
-  public class TsBlockSingleColumnIterator implements IPointReader, IBatchDataIterator {
-
-    private int rowIndex;
-    private final int columnIndex;
-
-    public TsBlockSingleColumnIterator(int rowIndex) {
-      this.rowIndex = rowIndex;
-      this.columnIndex = 0;
-    }
-
-    public TsBlockSingleColumnIterator(int rowIndex, int columnIndex) {
-      this.rowIndex = rowIndex;
-      this.columnIndex = columnIndex;
-    }
-
-    @Override
-    public boolean hasNext() {
-      return rowIndex < positionCount;
-    }
-
-    @Override
-    public boolean hasNext(long minBound, long maxBound) {
-      return hasNext();
-    }
-
-    @Override
-    public void next() {
-      rowIndex++;
-    }
-
-    @Override
-    public long currentTime() {
-      return timeColumn.getLong(rowIndex);
-    }
-
-    @Override
-    public Object currentValue() {
-      return valueColumns[columnIndex].getTsPrimitiveType(rowIndex).getValue();
-    }
-
-    @Override
-    public void reset() {
-      rowIndex = 0;
-    }
-
-    @Override
-    public int totalLength() {
-      return positionCount;
-    }
-
-    @Override
-    public boolean hasNextTimeValuePair() {
-      return hasNext();
-    }
-
-    @Override
-    public TimeValuePair nextTimeValuePair() {
-      TimeValuePair res = currentTimeValuePair();
-      next();
-      return res;
-    }
-
-    @Override
-    public TimeValuePair currentTimeValuePair() {
-      return new TimeValuePair(
-          timeColumn.getLong(rowIndex), valueColumns[columnIndex].getTsPrimitiveType(rowIndex));
-    }
-
-    @Override
-    public long getUsedMemorySize() {
-      return getRetainedSizeInBytes();
-    }
-
-    @Override
-    public void close() {
-      // do nothing
-    }
-
-    public long getEndTime() {
-      return TsBlock.this.getEndTime();
-    }
-
-    public long getStartTime() {
-      return TsBlock.this.getStartTime();
-    }
-
-    public int getRowIndex() {
-      return rowIndex;
-    }
-
-    public void setRowIndex(int rowIndex) {
-      this.rowIndex = rowIndex;
-    }
-  }
-
-  /** Mainly used for UDF framework. Note that the timestamps are at the last column. */
-  public class TsBlockRowIterator implements Iterator<Object[]> {
-
-    protected int rowIndex;
-    protected int columnCount;
-
-    public TsBlockRowIterator(int rowIndex) {
-      this.rowIndex = rowIndex;
-      columnCount = getValueColumnCount();
-    }
-
-    @Override
-    public boolean hasNext() {
-      return rowIndex < positionCount;
-    }
-
-    /** @return A row in the TsBlock. The timestamp is at the last column. */
-    @Override
-    public Object[] next() {
-      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[curColumnCount] = timeColumn.getObject(rowIndex);
-
-      rowIndex++;
-
-      return row;
-    }
-  }
-
-  private class TsBlockAlignedRowIterator implements IPointReader, IBatchDataIterator {
-
-    private int rowIndex;
-
-    public TsBlockAlignedRowIterator(int rowIndex) {
-      this.rowIndex = rowIndex;
-    }
-
-    @Override
-    public boolean hasNext() {
-      return rowIndex < positionCount;
-    }
-
-    @Override
-    public boolean hasNext(long minBound, long maxBound) {
-      while (hasNext()) {
-        if (currentTime() < minBound || currentTime() >= maxBound) {
-          break;
-        }
-        next();
-      }
-      return hasNext();
-    }
-
-    @Override
-    public void next() {
-      rowIndex++;
-    }
-
-    @Override
-    public long currentTime() {
-      return timeColumn.getLong(rowIndex);
-    }
-
-    @Override
-    public TsPrimitiveType[] currentValue() {
-      TsPrimitiveType[] tsPrimitiveTypes = new TsPrimitiveType[valueColumns.length];
-      for (int i = 0; i < valueColumns.length; i++) {
-        if (!valueColumns[i].isNull(rowIndex)) {
-          tsPrimitiveTypes[i] = valueColumns[i].getTsPrimitiveType(rowIndex);
-        }
-      }
-      return tsPrimitiveTypes;
-    }
-
-    @Override
-    public void reset() {
-      rowIndex = 0;
-    }
-
-    @Override
-    public int totalLength() {
-      return positionCount;
-    }
-
-    @Override
-    public boolean hasNextTimeValuePair() {
-      while (hasNext() && isCurrentValueAllNull()) {
-        next();
-      }
-      return hasNext();
-    }
-
-    @Override
-    public TimeValuePair nextTimeValuePair() {
-      TimeValuePair res = currentTimeValuePair();
-      next();
-      return res;
-    }
-
-    @Override
-    public TimeValuePair currentTimeValuePair() {
-      return new TimeValuePair(
-          timeColumn.getLong(rowIndex), new TsPrimitiveType.TsVector(currentValue()));
-    }
-
-    @Override
-    public long getUsedMemorySize() {
-      return getRetainedSizeInBytes();
-    }
-
-    @Override
-    public void close() {
-      // do nothing
-    }
-
-    public long getEndTime() {
-      return TsBlock.this.getEndTime();
-    }
-
-    public long getStartTime() {
-      return TsBlock.this.getStartTime();
-    }
-
-    public int getRowIndex() {
-      return rowIndex;
-    }
-
-    public void setRowIndex(int rowIndex) {
-      this.rowIndex = rowIndex;
-    }
-
-    private boolean isCurrentValueAllNull() {
-      for (Column valueColumn : valueColumns) {
-        if (!valueColumn.isNull(rowIndex)) {
-          return false;
-        }
-      }
-      return true;
-    }
-  }
-
-  private long updateRetainedSize() {
-    long newRetainedSizeInBytes = INSTANCE_SIZE;
-    newRetainedSizeInBytes += timeColumn.getRetainedSizeInBytes();
-    for (Column column : valueColumns) {
-      newRetainedSizeInBytes += column.getRetainedSizeInBytes();
-    }
-    this.retainedSizeInBytes = newRetainedSizeInBytes;
-    return newRetainedSizeInBytes;
-  }
-
-  public int getTotalInstanceSize() {
-    int totalInstanceSize = INSTANCE_SIZE;
-    totalInstanceSize += timeColumn.getInstanceSize();
-    for (Column column : valueColumns) {
-      totalInstanceSize += column.getInstanceSize();
-    }
-    return totalInstanceSize;
-  }
-
-  private static int determinePositionCount(Column... columns) {
-    requireNonNull(columns, "columns is null");
-    if (columns.length == 0) {
-      throw new IllegalArgumentException("columns is empty");
-    }
-
-    return columns[0].getPositionCount();
-  }
-
-  public void update(int updateIdx, TsBlock sourceTsBlock, int sourceIndex) {
-    timeColumn.getTimes()[updateIdx] = sourceTsBlock.getTimeByIndex(sourceIndex);
-    for (int i = 0; i < getValueColumnCount(); i++) {
-      if (sourceTsBlock.getValueColumns()[i].isNull(sourceIndex)) {
-        valueColumns[i].isNull()[updateIdx] = true;
-        continue;
-      }
-      switch (valueColumns[i].getDataType()) {
-        case BOOLEAN:
-          valueColumns[i].isNull()[updateIdx] = false;
-          valueColumns[i].getBooleans()[updateIdx] =
-              sourceTsBlock.getValueColumns()[i].getBoolean(sourceIndex);
-          break;
-        case INT32:
-          valueColumns[i].isNull()[updateIdx] = false;
-          valueColumns[i].getInts()[updateIdx] =
-              sourceTsBlock.getValueColumns()[i].getInt(sourceIndex);
-          break;
-        case INT64:
-          valueColumns[i].isNull()[updateIdx] = false;
-          valueColumns[i].getLongs()[updateIdx] =
-              sourceTsBlock.getValueColumns()[i].getLong(sourceIndex);
-          break;
-        case FLOAT:
-          valueColumns[i].isNull()[updateIdx] = false;
-          valueColumns[i].getFloats()[updateIdx] =
-              sourceTsBlock.getValueColumns()[i].getFloat(sourceIndex);
-          break;
-        case DOUBLE:
-          valueColumns[i].isNull()[updateIdx] = false;
-          valueColumns[i].getDoubles()[updateIdx] =
-              sourceTsBlock.getValueColumns()[i].getDouble(sourceIndex);
-          break;
-        case TEXT:
-          valueColumns[i].isNull()[updateIdx] = false;
-          valueColumns[i].getBinaries()[updateIdx] =
-              sourceTsBlock.getValueColumns()[i].getBinary(sourceIndex);
-          break;
-        default:
-          throw new UnSupportedDataTypeException(
-              "Unknown datatype: " + valueColumns[i].getDataType());
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilder.java
deleted file mode 100644
index 890f9ae..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilder.java
+++ /dev/null
@@ -1,339 +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 org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.BooleanColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.DoubleColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.FloatColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.IntColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.LongColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-
-import java.util.List;
-
-import static java.lang.String.format;
-import static java.util.Objects.requireNonNull;
-import static org.apache.iotdb.tsfile.utils.Preconditions.checkArgument;
-
-public class TsBlockBuilder {
-
-  // We choose default initial size to be 8 for TsBlockBuilder and ColumnBuilder
-  // so the underlying data is larger than the object overhead, and the size is power of 2.
-  //
-  // This could be any other small number.
-  private static final int DEFAULT_INITIAL_EXPECTED_ENTRIES = 8;
-
-  private static final int DEFAULT_MAX_TSBLOCK_SIZE_IN_BYTES =
-      TSFileDescriptor.getInstance().getConfig().getMaxTsBlockSizeInBytes();
-
-  private TimeColumnBuilder timeColumnBuilder;
-  private ColumnBuilder[] valueColumnBuilders;
-  private List<TSDataType> types;
-  private TsBlockBuilderStatus tsBlockBuilderStatus;
-  private int declaredPositions;
-  private int maxTsBlockLineNumber =
-      TSFileDescriptor.getInstance().getConfig().getMaxTsBlockLineNumber();
-
-  private TsBlockBuilder() {}
-
-  /**
-   * Create a TsBlockBuilder with given types.
-   *
-   * <p>A TsBlockBuilder instance created with this constructor has no estimation about bytes per
-   * entry, therefore it can resize frequently while appending new rows.
-   *
-   * <p>This constructor should only be used to get the initial TsBlockBuilder. Once the
-   * TsBlockBuilder is full use reset() or createTsBlockBuilderLike() to create a new TsBlockBuilder
-   * instance with its size estimated based on previous data.
-   */
-  public TsBlockBuilder(List<TSDataType> types) {
-    this(DEFAULT_INITIAL_EXPECTED_ENTRIES, types);
-  }
-
-  public TsBlockBuilder(int initialExpectedEntries, List<TSDataType> types) {
-    this(initialExpectedEntries, DEFAULT_MAX_TSBLOCK_SIZE_IN_BYTES, types);
-  }
-
-  public static TsBlockBuilder createWithOnlyTimeColumn() {
-    TsBlockBuilder res = new TsBlockBuilder();
-    res.tsBlockBuilderStatus = new TsBlockBuilderStatus(DEFAULT_INITIAL_EXPECTED_ENTRIES);
-    res.timeColumnBuilder =
-        new TimeColumnBuilder(
-            res.tsBlockBuilderStatus.createColumnBuilderStatus(), DEFAULT_INITIAL_EXPECTED_ENTRIES);
-    res.valueColumnBuilders = new ColumnBuilder[0];
-    return res;
-  }
-
-  public static TsBlockBuilder withMaxTsBlockSize(int maxTsBlockBytes, List<TSDataType> types) {
-    return new TsBlockBuilder(DEFAULT_INITIAL_EXPECTED_ENTRIES, maxTsBlockBytes, types);
-  }
-
-  private TsBlockBuilder(int initialExpectedEntries, int maxTsBlockBytes, List<TSDataType> types) {
-    this.types = requireNonNull(types, "types is null");
-
-    tsBlockBuilderStatus = new TsBlockBuilderStatus(maxTsBlockBytes);
-    timeColumnBuilder =
-        new TimeColumnBuilder(
-            tsBlockBuilderStatus.createColumnBuilderStatus(), initialExpectedEntries);
-    valueColumnBuilders = new ColumnBuilder[types.size()];
-
-    for (int i = 0; i < valueColumnBuilders.length; i++) {
-      // TODO use Type interface to encapsulate createColumnBuilder to each concrete type class
-      // instead of switch-case
-      switch (types.get(i)) {
-        case BOOLEAN:
-          valueColumnBuilders[i] =
-              new BooleanColumnBuilder(
-                  tsBlockBuilderStatus.createColumnBuilderStatus(), initialExpectedEntries);
-          break;
-        case INT32:
-          valueColumnBuilders[i] =
-              new IntColumnBuilder(
-                  tsBlockBuilderStatus.createColumnBuilderStatus(), initialExpectedEntries);
-          break;
-        case INT64:
-          valueColumnBuilders[i] =
-              new LongColumnBuilder(
-                  tsBlockBuilderStatus.createColumnBuilderStatus(), initialExpectedEntries);
-          break;
-        case FLOAT:
-          valueColumnBuilders[i] =
-              new FloatColumnBuilder(
-                  tsBlockBuilderStatus.createColumnBuilderStatus(), initialExpectedEntries);
-          break;
-        case DOUBLE:
-          valueColumnBuilders[i] =
-              new DoubleColumnBuilder(
-                  tsBlockBuilderStatus.createColumnBuilderStatus(), initialExpectedEntries);
-          break;
-        case TEXT:
-          valueColumnBuilders[i] =
-              new BinaryColumnBuilder(
-                  tsBlockBuilderStatus.createColumnBuilderStatus(), initialExpectedEntries);
-          break;
-        default:
-          throw new IllegalArgumentException("Unknown data type: " + types.get(i));
-      }
-    }
-  }
-
-  private TsBlockBuilder(
-      int maxTsBlockBytes,
-      List<TSDataType> types,
-      TimeColumnBuilder templateTimeColumnBuilder,
-      ColumnBuilder[] templateValueColumnBuilders) {
-    this.types = requireNonNull(types, "types is null");
-
-    tsBlockBuilderStatus = new TsBlockBuilderStatus(maxTsBlockBytes);
-    valueColumnBuilders = new ColumnBuilder[types.size()];
-
-    checkArgument(
-        templateValueColumnBuilders.length == types.size(),
-        "Size of templates and types should match");
-    timeColumnBuilder =
-        (TimeColumnBuilder)
-            templateTimeColumnBuilder.newColumnBuilderLike(
-                tsBlockBuilderStatus.createColumnBuilderStatus());
-    for (int i = 0; i < valueColumnBuilders.length; i++) {
-      valueColumnBuilders[i] =
-          templateValueColumnBuilders[i].newColumnBuilderLike(
-              tsBlockBuilderStatus.createColumnBuilderStatus());
-    }
-  }
-
-  public void buildValueColumnBuilders(List<TSDataType> types) {
-    this.types = requireNonNull(types, "types is null");
-    valueColumnBuilders = new ColumnBuilder[types.size()];
-    int initialExpectedEntries = timeColumnBuilder.getPositionCount();
-    for (int i = 0; i < valueColumnBuilders.length; i++) {
-      // TODO use Type interface to encapsulate createColumnBuilder to each concrete type class
-      // instead of switch-case
-      switch (types.get(i)) {
-        case BOOLEAN:
-          valueColumnBuilders[i] =
-              new BooleanColumnBuilder(
-                  tsBlockBuilderStatus.createColumnBuilderStatus(), initialExpectedEntries);
-          break;
-        case INT32:
-          valueColumnBuilders[i] =
-              new IntColumnBuilder(
-                  tsBlockBuilderStatus.createColumnBuilderStatus(), initialExpectedEntries);
-          break;
-        case INT64:
-          valueColumnBuilders[i] =
-              new LongColumnBuilder(
-                  tsBlockBuilderStatus.createColumnBuilderStatus(), initialExpectedEntries);
-          break;
-        case FLOAT:
-          valueColumnBuilders[i] =
-              new FloatColumnBuilder(
-                  tsBlockBuilderStatus.createColumnBuilderStatus(), initialExpectedEntries);
-          break;
-        case DOUBLE:
-          valueColumnBuilders[i] =
-              new DoubleColumnBuilder(
-                  tsBlockBuilderStatus.createColumnBuilderStatus(), initialExpectedEntries);
-          break;
-        case TEXT:
-          valueColumnBuilders[i] =
-              new BinaryColumnBuilder(
-                  tsBlockBuilderStatus.createColumnBuilderStatus(), initialExpectedEntries);
-          break;
-        default:
-          throw new IllegalArgumentException("Unknown data type: " + types.get(i));
-      }
-    }
-  }
-
-  public void reset() {
-    if (isEmpty()) {
-      return;
-    }
-    tsBlockBuilderStatus =
-        new TsBlockBuilderStatus(tsBlockBuilderStatus.getMaxTsBlockSizeInBytes());
-
-    declaredPositions = 0;
-
-    timeColumnBuilder =
-        (TimeColumnBuilder)
-            timeColumnBuilder.newColumnBuilderLike(
-                tsBlockBuilderStatus.createColumnBuilderStatus());
-    for (int i = 0; i < valueColumnBuilders.length; i++) {
-      valueColumnBuilders[i] =
-          valueColumnBuilders[i].newColumnBuilderLike(
-              tsBlockBuilderStatus.createColumnBuilderStatus());
-    }
-  }
-
-  public TsBlockBuilder newTsBlockBuilderLike() {
-    return new TsBlockBuilder(
-        tsBlockBuilderStatus.getMaxTsBlockSizeInBytes(),
-        types,
-        timeColumnBuilder,
-        valueColumnBuilders);
-  }
-
-  public TimeColumnBuilder getTimeColumnBuilder() {
-    return timeColumnBuilder;
-  }
-
-  public ColumnBuilder getColumnBuilder(int channel) {
-    return valueColumnBuilders[channel];
-  }
-
-  public ColumnBuilder[] getValueColumnBuilders() {
-    return valueColumnBuilders;
-  }
-
-  public TSDataType getType(int channel) {
-    return types.get(channel);
-  }
-
-  // Indicate current row number
-  public void declarePosition() {
-    declaredPositions++;
-  }
-
-  public void declarePositions(int deltaPositions) {
-    declaredPositions += deltaPositions;
-  }
-
-  public boolean isFull() {
-    return declaredPositions >= maxTsBlockLineNumber || tsBlockBuilderStatus.isFull();
-  }
-
-  public boolean isEmpty() {
-    return declaredPositions == 0;
-  }
-
-  public int getPositionCount() {
-    return declaredPositions;
-  }
-
-  public int getMaxTsBlockLineNumber() {
-    return this.maxTsBlockLineNumber;
-  }
-
-  public void setMaxTsBlockLineNumber(int maxTsBlockLineNumber) {
-    if (maxTsBlockLineNumber > 0) {
-      this.maxTsBlockLineNumber = maxTsBlockLineNumber;
-    }
-  }
-
-  public long getSizeInBytes() {
-    return tsBlockBuilderStatus.getSizeInBytes();
-  }
-
-  public long getRetainedSizeInBytes() {
-    // We use a foreach loop instead of streams
-    // as it has much better performance.
-    long retainedSizeInBytes = timeColumnBuilder.getRetainedSizeInBytes();
-    for (ColumnBuilder columnBuilder : valueColumnBuilders) {
-      retainedSizeInBytes += columnBuilder.getRetainedSizeInBytes();
-    }
-    return retainedSizeInBytes;
-  }
-
-  public TsBlock build() {
-    TimeColumn timeColumn = (TimeColumn) timeColumnBuilder.build();
-    if (timeColumn.getPositionCount() != declaredPositions) {
-      throw new IllegalStateException(
-          format(
-              "Declared positions (%s) does not match time column's number of entries (%s)",
-              declaredPositions, timeColumn.getPositionCount()));
-    }
-
-    Column[] columns = new Column[valueColumnBuilders.length];
-    for (int i = 0; i < columns.length; i++) {
-      columns[i] = valueColumnBuilders[i].build();
-      if (columns[i].getPositionCount() != declaredPositions) {
-        throw new IllegalStateException(
-            format(
-                "Declared positions (%s) does not match column %s's number of entries (%s)",
-                declaredPositions, i, columns[i].getPositionCount()));
-      }
-    }
-
-    return TsBlock.wrapBlocksWithoutCopy(declaredPositions, timeColumn, columns);
-  }
-
-  /**
-   * Write a text value to the columnIndex. If the value is null, then the place will be recorded
-   * with null.
-   *
-   * @param columnIndex the target column index.
-   * @param value the text value to be inserted.
-   */
-  public void writeNullableText(int columnIndex, String value) {
-    if (value == null) {
-      getColumnBuilder(columnIndex).appendNull();
-    } else {
-      getColumnBuilder(columnIndex).writeBinary(new Binary(value, TSFileConfig.STRING_CHARSET));
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockUtil.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockUtil.java
deleted file mode 100644
index 2206954..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockUtil.java
+++ /dev/null
@@ -1,123 +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 org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.reader.series.PaginationController;
-
-public class TsBlockUtil {
-
-  private TsBlockUtil() {
-    // forbidding instantiation
-  }
-
-  /** Skip lines at the beginning of the tsBlock that are not in the time range. */
-  public static TsBlock skipPointsOutOfTimeRange(
-      TsBlock tsBlock, TimeRange targetTimeRange, boolean ascending) {
-    int firstIndex = getFirstConditionIndex(tsBlock, targetTimeRange, ascending);
-    return tsBlock.subTsBlock(firstIndex);
-  }
-
-  // If ascending, find the index of first greater than or equal to targetTime
-  // else, find the index of first less than or equal to targetTime
-  public static int getFirstConditionIndex(
-      TsBlock tsBlock, TimeRange targetTimeRange, boolean ascending) {
-    TimeColumn timeColumn = tsBlock.getTimeColumn();
-    long targetTime = ascending ? targetTimeRange.getMin() : targetTimeRange.getMax();
-    int left = 0;
-    int right = timeColumn.getPositionCount() - 1;
-    int mid;
-
-    while (left < right) {
-      mid = (left + right) >> 1;
-      if (timeColumn.getLong(mid) < targetTime) {
-        if (ascending) {
-          left = mid + 1;
-        } else {
-          right = mid;
-        }
-      } else if (timeColumn.getLong(mid) > targetTime) {
-        if (ascending) {
-          right = mid;
-        } else {
-          left = mid + 1;
-        }
-      } else if (timeColumn.getLong(mid) == targetTime) {
-        return mid;
-      }
-    }
-    return left;
-  }
-
-  public static TsBlock applyFilterAndLimitOffsetToTsBlock(
-      TsBlock unFilteredBlock,
-      TsBlockBuilder builder,
-      Filter pushDownFilter,
-      PaginationController paginationController) {
-    boolean[] keepCurrentRow = pushDownFilter.satisfyTsBlock(unFilteredBlock);
-
-    // construct time column
-    int readEndIndex =
-        buildTimeColumnWithPagination(
-            unFilteredBlock, builder, keepCurrentRow, paginationController);
-
-    // construct value columns
-    for (int i = 0; i < builder.getValueColumnBuilders().length; i++) {
-      for (int rowIndex = 0; rowIndex < readEndIndex; rowIndex++) {
-        if (keepCurrentRow[rowIndex]) {
-          if (unFilteredBlock.getValueColumns()[i].isNull(rowIndex)) {
-            builder.getColumnBuilder(i).appendNull();
-          } else {
-            builder
-                .getColumnBuilder(i)
-                .writeObject(unFilteredBlock.getValueColumns()[i].getObject(rowIndex));
-          }
-        }
-      }
-    }
-    return builder.build();
-  }
-
-  private static int buildTimeColumnWithPagination(
-      TsBlock unFilteredBlock,
-      TsBlockBuilder builder,
-      boolean[] keepCurrentRow,
-      PaginationController paginationController) {
-    int readEndIndex = unFilteredBlock.getPositionCount();
-    for (int rowIndex = 0; rowIndex < readEndIndex; rowIndex++) {
-      if (keepCurrentRow[rowIndex]) {
-        if (paginationController.hasCurOffset()) {
-          paginationController.consumeOffset();
-          keepCurrentRow[rowIndex] = false;
-        } else if (paginationController.hasCurLimit()) {
-          builder.getTimeColumnBuilder().writeLong(unFilteredBlock.getTimeByIndex(rowIndex));
-          builder.declarePosition();
-          paginationController.consumeLimit();
-        } else {
-          readEndIndex = rowIndex;
-          break;
-        }
-      }
-    }
-    return readEndIndex;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryArrayColumnEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryArrayColumnEncoder.java
deleted file mode 100644
index af707fb9..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryArrayColumnEncoder.java
+++ /dev/null
@@ -1,92 +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.column;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-public class BinaryArrayColumnEncoder implements ColumnEncoder {
-
-  @Override
-  public Column readColumn(ByteBuffer input, TSDataType dataType, int positionCount) {
-    // Serialized data layout:
-    //    +---------------+-----------------+-------------+
-    //    | may have null | null indicators |   values    |
-    //    +---------------+-----------------+-------------+
-    //    | byte          | list[byte]      | list[entry] |
-    //    +---------------+-----------------+-------------+
-    //
-    // Each entry is represented as:
-    //    +---------------+-------+
-    //    | value length  | value |
-    //    +---------------+-------+
-    //    | int32         | bytes |
-    //    +---------------+-------+
-
-    if (!TSDataType.TEXT.equals(dataType)) {
-      throw new IllegalArgumentException("Invalid data type: " + dataType);
-    }
-
-    boolean[] nullIndicators = ColumnEncoder.deserializeNullIndicators(input, positionCount);
-    Binary[] values = new Binary[positionCount];
-    if (nullIndicators == null) {
-      for (int i = 0; i < positionCount; i++) {
-        int length = input.getInt();
-        byte[] value = new byte[length];
-        input.get(value);
-        values[i] = new Binary(value);
-      }
-    } else {
-      for (int i = 0; i < positionCount; i++) {
-        if (!nullIndicators[i]) {
-          int length = input.getInt();
-          byte[] value = new byte[length];
-          input.get(value);
-          values[i] = new Binary(value);
-        }
-      }
-    }
-    return new BinaryColumn(0, positionCount, nullIndicators, values);
-  }
-
-  @Override
-  public void writeColumn(DataOutputStream output, Column column) throws IOException {
-
-    ColumnEncoder.serializeNullIndicators(output, column);
-
-    TSDataType dataType = column.getDataType();
-    int positionCount = column.getPositionCount();
-    if (TSDataType.TEXT.equals(dataType)) {
-      for (int i = 0; i < positionCount; i++) {
-        if (!column.isNull(i)) {
-          Binary binary = column.getBinary(i);
-          output.writeInt(binary.getLength());
-          output.write(binary.getValues());
-        }
-      }
-    } else {
-      throw new IllegalArgumentException("Invalid data type: " + dataType);
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumn.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumn.java
deleted file mode 100644
index e383342..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumn.java
+++ /dev/null
@@ -1,170 +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.column;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.util.Arrays;
-import java.util.Optional;
-
-import static org.apache.iotdb.tsfile.read.common.block.column.ColumnUtil.checkValidRegion;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfBooleanArray;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfObjectArray;
-
-public class BinaryColumn implements Column {
-
-  private static final int INSTANCE_SIZE =
-      (int) RamUsageEstimator.shallowSizeOfInstance(BinaryColumn.class);
-
-  private final int arrayOffset;
-  private final int positionCount;
-  private final boolean[] valueIsNull;
-  private final Binary[] values;
-
-  private final long retainedSizeInBytes;
-
-  public BinaryColumn(int positionCount, Optional<boolean[]> valueIsNull, Binary[] values) {
-    this(0, positionCount, valueIsNull.orElse(null), values);
-  }
-
-  BinaryColumn(int arrayOffset, int positionCount, boolean[] valueIsNull, Binary[] values) {
-    if (arrayOffset < 0) {
-      throw new IllegalArgumentException("arrayOffset is negative");
-    }
-    this.arrayOffset = arrayOffset;
-    if (positionCount < 0) {
-      throw new IllegalArgumentException("positionCount is negative");
-    }
-    this.positionCount = positionCount;
-
-    if (values.length - arrayOffset < positionCount) {
-      throw new IllegalArgumentException("values length is less than positionCount");
-    }
-    this.values = values;
-
-    if (valueIsNull != null && valueIsNull.length - arrayOffset < positionCount) {
-      throw new IllegalArgumentException("isNull length is less than positionCount");
-    }
-    this.valueIsNull = valueIsNull;
-
-    // TODO we need to sum up all the Binary's retainedSize here
-    retainedSizeInBytes =
-        INSTANCE_SIZE + sizeOfBooleanArray(positionCount) + sizeOfObjectArray(positionCount);
-  }
-
-  @Override
-  public TSDataType getDataType() {
-    return TSDataType.TEXT;
-  }
-
-  @Override
-  public ColumnEncoding getEncoding() {
-    return ColumnEncoding.BINARY_ARRAY;
-  }
-
-  @Override
-  public Binary getBinary(int position) {
-    return values[position + arrayOffset];
-  }
-
-  @Override
-  public Binary[] getBinaries() {
-    return values;
-  }
-
-  @Override
-  public Object getObject(int position) {
-    return getBinary(position);
-  }
-
-  @Override
-  public TsPrimitiveType getTsPrimitiveType(int position) {
-    return new TsPrimitiveType.TsBinary(getBinary(position));
-  }
-
-  @Override
-  public boolean mayHaveNull() {
-    return valueIsNull != null;
-  }
-
-  @Override
-  public boolean isNull(int position) {
-    return valueIsNull != null && valueIsNull[position + arrayOffset];
-  }
-
-  @Override
-  public boolean[] isNull() {
-    if (valueIsNull == null) {
-      boolean[] res = new boolean[positionCount];
-      Arrays.fill(res, false);
-      return res;
-    }
-    return valueIsNull;
-  }
-
-  @Override
-  public int getPositionCount() {
-    return positionCount;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return retainedSizeInBytes;
-  }
-
-  @Override
-  public Column getRegion(int positionOffset, int length) {
-    checkValidRegion(getPositionCount(), positionOffset, length);
-    return new BinaryColumn(positionOffset + arrayOffset, length, valueIsNull, values);
-  }
-
-  @Override
-  public Column subColumn(int fromIndex) {
-    if (fromIndex > positionCount) {
-      throw new IllegalArgumentException("fromIndex is not valid");
-    }
-    return new BinaryColumn(
-        arrayOffset + fromIndex, positionCount - fromIndex, valueIsNull, values);
-  }
-
-  @Override
-  public void reverse() {
-    for (int i = arrayOffset, j = arrayOffset + positionCount - 1; i < j; i++, j--) {
-      Binary valueTmp = values[i];
-      values[i] = values[j];
-      values[j] = valueTmp;
-    }
-    if (valueIsNull != null) {
-      for (int i = arrayOffset, j = arrayOffset + positionCount - 1; i < j; i++, j--) {
-        boolean isNullTmp = valueIsNull[i];
-        valueIsNull[i] = valueIsNull[j];
-        valueIsNull[j] = isNullTmp;
-      }
-    }
-  }
-
-  @Override
-  public int getInstanceSize() {
-    return INSTANCE_SIZE;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumnBuilder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumnBuilder.java
deleted file mode 100644
index 965a590..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumnBuilder.java
+++ /dev/null
@@ -1,155 +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.column;
-
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.util.Arrays;
-
-import static java.lang.Math.max;
-import static org.apache.iotdb.tsfile.read.common.block.column.ColumnUtil.calculateBlockResetSize;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.shallowSizeOf;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOf;
-
-public class BinaryColumnBuilder implements ColumnBuilder {
-
-  private static final long INSTANCE_SIZE =
-      RamUsageEstimator.shallowSizeOfInstance(BinaryColumnBuilder.class);
-
-  private final ColumnBuilderStatus columnBuilderStatus;
-  public static final BinaryColumn NULL_VALUE_BLOCK =
-      new BinaryColumn(0, 1, new boolean[] {true}, new Binary[1]);
-
-  private boolean initialized;
-  private final int initialEntryCount;
-
-  private int positionCount;
-  private boolean hasNullValue;
-  private boolean hasNonNullValue;
-
-  // it is assumed that these arrays are the same length
-  private boolean[] valueIsNull = new boolean[0];
-  private Binary[] values = new Binary[0];
-
-  private long arraysRetainedSizeInBytes;
-
-  public BinaryColumnBuilder(ColumnBuilderStatus columnBuilderStatus, int expectedEntries) {
-    this.initialEntryCount = max(expectedEntries, 1);
-    this.columnBuilderStatus = columnBuilderStatus;
-    updateArraysDataSize();
-  }
-
-  @Override
-  public ColumnBuilder writeBinary(Binary value) {
-    if (values.length <= positionCount) {
-      growCapacity();
-    }
-
-    values[positionCount] = value;
-
-    hasNonNullValue = true;
-    positionCount++;
-    return this;
-  }
-
-  /** Write an Object to the current entry, which should be the Binary type; */
-  @Override
-  public ColumnBuilder writeObject(Object value) {
-    if (value instanceof Binary) {
-      writeBinary((Binary) value);
-      return this;
-    }
-    throw new UnSupportedDataTypeException("BinaryColumn only support Binary data type");
-  }
-
-  @Override
-  public ColumnBuilder write(Column column, int index) {
-    return writeBinary(column.getBinary(index));
-  }
-
-  @Override
-  public ColumnBuilder writeTsPrimitiveType(TsPrimitiveType value) {
-    return writeBinary(value.getBinary());
-  }
-
-  @Override
-  public ColumnBuilder appendNull() {
-    if (values.length <= positionCount) {
-      growCapacity();
-    }
-
-    valueIsNull[positionCount] = true;
-
-    hasNullValue = true;
-    positionCount++;
-    return this;
-  }
-
-  @Override
-  public Column build() {
-    if (!hasNonNullValue) {
-      return new RunLengthEncodedColumn(NULL_VALUE_BLOCK, positionCount);
-    }
-    return new BinaryColumn(0, positionCount, hasNullValue ? valueIsNull : null, values);
-  }
-
-  @Override
-  public TSDataType getDataType() {
-    return TSDataType.TEXT;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    // TODO we need to sum up all the Binary's retainedSize here
-    long size = INSTANCE_SIZE + arraysRetainedSizeInBytes;
-    if (columnBuilderStatus != null) {
-      size += ColumnBuilderStatus.INSTANCE_SIZE;
-    }
-    return size;
-  }
-
-  @Override
-  public ColumnBuilder newColumnBuilderLike(ColumnBuilderStatus columnBuilderStatus) {
-    // TODO we should take retain size into account here
-    return new BinaryColumnBuilder(columnBuilderStatus, calculateBlockResetSize(positionCount));
-  }
-
-  private void growCapacity() {
-    int newSize;
-    if (initialized) {
-      newSize = ColumnUtil.calculateNewArraySize(values.length);
-    } else {
-      newSize = initialEntryCount;
-      initialized = true;
-    }
-
-    valueIsNull = Arrays.copyOf(valueIsNull, newSize);
-    values = Arrays.copyOf(values, newSize);
-    updateArraysDataSize();
-  }
-
-  private void updateArraysDataSize() {
-    arraysRetainedSizeInBytes = sizeOf(valueIsNull) + shallowSizeOf(values);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumn.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumn.java
deleted file mode 100644
index daed6cf..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumn.java
+++ /dev/null
@@ -1,168 +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.column;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.util.Arrays;
-import java.util.Optional;
-
-import static org.apache.iotdb.tsfile.read.common.block.column.ColumnUtil.checkValidRegion;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfBooleanArray;
-
-public class BooleanColumn implements Column {
-
-  private static final int INSTANCE_SIZE =
-      (int) RamUsageEstimator.shallowSizeOfInstance(BooleanColumn.class);
-  public static final int SIZE_IN_BYTES_PER_POSITION = Byte.BYTES + Byte.BYTES;
-
-  private final int arrayOffset;
-  private final int positionCount;
-  private final boolean[] valueIsNull;
-  private final boolean[] values;
-
-  private final long retainedSizeInBytes;
-
-  public BooleanColumn(int positionCount, Optional<boolean[]> valueIsNull, boolean[] values) {
-    this(0, positionCount, valueIsNull.orElse(null), values);
-  }
-
-  BooleanColumn(int arrayOffset, int positionCount, boolean[] valueIsNull, boolean[] values) {
-    if (arrayOffset < 0) {
-      throw new IllegalArgumentException("arrayOffset is negative");
-    }
-    this.arrayOffset = arrayOffset;
-    if (positionCount < 0) {
-      throw new IllegalArgumentException("positionCount is negative");
-    }
-    this.positionCount = positionCount;
-
-    if (values.length - arrayOffset < positionCount) {
-      throw new IllegalArgumentException("values length is less than positionCount");
-    }
-    this.values = values;
-
-    if (valueIsNull != null && valueIsNull.length - arrayOffset < positionCount) {
-      throw new IllegalArgumentException("isNull length is less than positionCount");
-    }
-    this.valueIsNull = valueIsNull;
-
-    retainedSizeInBytes =
-        INSTANCE_SIZE + sizeOfBooleanArray(positionCount) + sizeOfBooleanArray(positionCount);
-  }
-
-  @Override
-  public TSDataType getDataType() {
-    return TSDataType.BOOLEAN;
-  }
-
-  @Override
-  public ColumnEncoding getEncoding() {
-    return ColumnEncoding.BYTE_ARRAY;
-  }
-
-  @Override
-  public boolean getBoolean(int position) {
-    return values[position + arrayOffset];
-  }
-
-  @Override
-  public boolean[] getBooleans() {
-    return values;
-  }
-
-  @Override
-  public Object getObject(int position) {
-    return getBoolean(position);
-  }
-
-  @Override
-  public TsPrimitiveType getTsPrimitiveType(int position) {
-    return new TsPrimitiveType.TsBoolean(getBoolean(position));
-  }
-
-  @Override
-  public boolean mayHaveNull() {
-    return valueIsNull != null;
-  }
-
-  @Override
-  public boolean isNull(int position) {
-    return valueIsNull != null && valueIsNull[position + arrayOffset];
-  }
-
-  @Override
-  public boolean[] isNull() {
-    if (valueIsNull == null) {
-      boolean[] res = new boolean[positionCount];
-      Arrays.fill(res, false);
-      return res;
-    }
-    return valueIsNull;
-  }
-
-  @Override
-  public int getPositionCount() {
-    return positionCount;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return retainedSizeInBytes;
-  }
-
-  @Override
-  public Column getRegion(int positionOffset, int length) {
-    checkValidRegion(getPositionCount(), positionOffset, length);
-    return new BooleanColumn(positionOffset + arrayOffset, length, valueIsNull, values);
-  }
-
-  @Override
-  public Column subColumn(int fromIndex) {
-    if (fromIndex > positionCount) {
-      throw new IllegalArgumentException("fromIndex is not valid");
-    }
-    return new BooleanColumn(
-        arrayOffset + fromIndex, positionCount - fromIndex, valueIsNull, values);
-  }
-
-  @Override
-  public void reverse() {
-    for (int i = arrayOffset, j = arrayOffset + positionCount - 1; i < j; i++, j--) {
-      boolean valueTmp = values[i];
-      values[i] = values[j];
-      values[j] = valueTmp;
-    }
-    if (valueIsNull != null) {
-      for (int i = arrayOffset, j = arrayOffset + positionCount - 1; i < j; i++, j--) {
-        boolean isNullTmp = valueIsNull[i];
-        valueIsNull[i] = valueIsNull[j];
-        valueIsNull[j] = isNullTmp;
-      }
-    }
-  }
-
-  @Override
-  public int getInstanceSize() {
-    return INSTANCE_SIZE;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumnBuilder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumnBuilder.java
deleted file mode 100644
index e8a883b..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumnBuilder.java
+++ /dev/null
@@ -1,156 +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.column;
-
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.util.Arrays;
-
-import static java.lang.Math.max;
-import static org.apache.iotdb.tsfile.read.common.block.column.ColumnUtil.calculateBlockResetSize;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOf;
-
-public class BooleanColumnBuilder implements ColumnBuilder {
-
-  private static final int INSTANCE_SIZE =
-      (int) RamUsageEstimator.shallowSizeOfInstance(BooleanColumnBuilder.class);
-  public static final BooleanColumn NULL_VALUE_BLOCK =
-      new BooleanColumn(0, 1, new boolean[] {true}, new boolean[1]);
-
-  private final ColumnBuilderStatus columnBuilderStatus;
-  private boolean initialized;
-  private final int initialEntryCount;
-
-  private int positionCount;
-  private boolean hasNullValue;
-  private boolean hasNonNullValue;
-
-  // it is assumed that these arrays are the same length
-  private boolean[] valueIsNull = new boolean[0];
-  private boolean[] values = new boolean[0];
-
-  private long retainedSizeInBytes;
-
-  public BooleanColumnBuilder(ColumnBuilderStatus columnBuilderStatus, int expectedEntries) {
-    this.columnBuilderStatus = columnBuilderStatus;
-    this.initialEntryCount = max(expectedEntries, 1);
-
-    updateDataSize();
-  }
-
-  @Override
-  public ColumnBuilder writeBoolean(boolean value) {
-    if (values.length <= positionCount) {
-      growCapacity();
-    }
-
-    values[positionCount] = value;
-
-    hasNonNullValue = true;
-    positionCount++;
-    if (columnBuilderStatus != null) {
-      columnBuilderStatus.addBytes(BooleanColumn.SIZE_IN_BYTES_PER_POSITION);
-    }
-    return this;
-  }
-
-  /** Write an Object to the current entry, which should be the Boolean type; */
-  @Override
-  public ColumnBuilder writeObject(Object value) {
-    if (value instanceof Boolean) {
-      writeBoolean((Boolean) value);
-      return this;
-    }
-    throw new UnSupportedDataTypeException("BooleanColumn only support Boolean data type");
-  }
-
-  @Override
-  public ColumnBuilder write(Column column, int index) {
-    return writeBoolean(column.getBoolean(index));
-  }
-
-  @Override
-  public ColumnBuilder writeTsPrimitiveType(TsPrimitiveType value) {
-    return writeBoolean(value.getBoolean());
-  }
-
-  @Override
-  public ColumnBuilder appendNull() {
-    if (values.length <= positionCount) {
-      growCapacity();
-    }
-
-    valueIsNull[positionCount] = true;
-
-    hasNullValue = true;
-    positionCount++;
-    if (columnBuilderStatus != null) {
-      columnBuilderStatus.addBytes(BooleanColumn.SIZE_IN_BYTES_PER_POSITION);
-    }
-    return this;
-  }
-
-  @Override
-  public Column build() {
-    if (!hasNonNullValue) {
-      return new RunLengthEncodedColumn(NULL_VALUE_BLOCK, positionCount);
-    }
-    return new BooleanColumn(0, positionCount, hasNullValue ? valueIsNull : null, values);
-  }
-
-  @Override
-  public TSDataType getDataType() {
-    return TSDataType.BOOLEAN;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return retainedSizeInBytes;
-  }
-
-  @Override
-  public ColumnBuilder newColumnBuilderLike(ColumnBuilderStatus columnBuilderStatus) {
-    return new BooleanColumnBuilder(columnBuilderStatus, calculateBlockResetSize(positionCount));
-  }
-
-  private void growCapacity() {
-    int newSize;
-    if (initialized) {
-      newSize = ColumnUtil.calculateNewArraySize(values.length);
-    } else {
-      newSize = initialEntryCount;
-      initialized = true;
-    }
-
-    valueIsNull = Arrays.copyOf(valueIsNull, newSize);
-    values = Arrays.copyOf(values, newSize);
-    updateDataSize();
-  }
-
-  private void updateDataSize() {
-    retainedSizeInBytes = INSTANCE_SIZE + sizeOf(valueIsNull) + sizeOf(values);
-    if (columnBuilderStatus != null) {
-      retainedSizeInBytes += ColumnBuilderStatus.INSTANCE_SIZE;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ByteArrayColumnEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ByteArrayColumnEncoder.java
deleted file mode 100644
index 7636189..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ByteArrayColumnEncoder.java
+++ /dev/null
@@ -1,62 +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.column;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-public class ByteArrayColumnEncoder implements ColumnEncoder {
-
-  @Override
-  public Column readColumn(ByteBuffer input, TSDataType dataType, int positionCount) {
-
-    // Serialized data layout:
-    //    +---------------+-----------------+-------------+
-    //    | may have null | null indicators |   values    |
-    //    +---------------+-----------------+-------------+
-    //    | byte          | list[byte]      | list[byte]  |
-    //    +---------------+-----------------+-------------+
-
-    if (!TSDataType.BOOLEAN.equals(dataType)) {
-      throw new IllegalArgumentException("Invalid data type: " + dataType);
-    }
-
-    boolean[] nullIndicators = ColumnEncoder.deserializeNullIndicators(input, positionCount);
-    boolean[] values = ColumnEncoder.deserializeBooleanArray(input, positionCount);
-
-    return new BooleanColumn(0, positionCount, nullIndicators, values);
-  }
-
-  @Override
-  public void writeColumn(DataOutputStream output, Column column) throws IOException {
-
-    ColumnEncoder.serializeNullIndicators(output, column);
-
-    TSDataType dataType = column.getDataType();
-    if (TSDataType.BOOLEAN.equals(dataType)) {
-      ColumnEncoder.serializeBooleanArray(output, column, Column::getBoolean);
-    } else {
-      throw new IllegalArgumentException("Invalid data type: " + dataType);
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnEncoder.java
deleted file mode 100644
index 7bf79c1..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnEncoder.java
+++ /dev/null
@@ -1,127 +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.column;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-public interface ColumnEncoder {
-
-  /** Read a time column from the specified input. */
-  default TimeColumn readTimeColumn(ByteBuffer input, int positionCount) {
-    throw new UnsupportedOperationException();
-  }
-
-  /** Read a column from the specified input. */
-  Column readColumn(ByteBuffer input, TSDataType dataType, int positionCount);
-
-  /** Write the specified column to the specified output */
-  void writeColumn(DataOutputStream output, Column column) throws IOException;
-
-  static void serializeNullIndicators(DataOutputStream output, Column column) throws IOException {
-    boolean mayHaveNull = column.mayHaveNull();
-    output.writeBoolean(mayHaveNull);
-    if (!mayHaveNull) {
-      return;
-    }
-    serializeBooleanArray(output, column, Column::isNull);
-  }
-
-  static boolean[] deserializeNullIndicators(ByteBuffer input, int positionCount) {
-    boolean mayHaveNull = input.get() != 0;
-    if (!mayHaveNull) {
-      return null;
-    }
-    return deserializeBooleanArray(input, positionCount);
-  }
-
-  interface ColumnToBooleanFunction {
-    boolean apply(Column column, int position);
-  }
-
-  static void serializeBooleanArray(
-      DataOutputStream output, Column column, ColumnToBooleanFunction toBooleanFunction)
-      throws IOException {
-    int positionCount = column.getPositionCount();
-    byte[] packedIsNull = new byte[((positionCount & ~0b111) + 1) / 8];
-    int currentByte = 0;
-
-    for (int position = 0; position < (positionCount & ~0b111); position += 8, currentByte++) {
-      byte value = 0;
-      value |= toBooleanFunction.apply(column, position) ? 0b1000_0000 : 0;
-      value |= toBooleanFunction.apply(column, position + 1) ? 0b0100_0000 : 0;
-      value |= toBooleanFunction.apply(column, position + 2) ? 0b0010_0000 : 0;
-      value |= toBooleanFunction.apply(column, position + 3) ? 0b0001_0000 : 0;
-      value |= toBooleanFunction.apply(column, position + 4) ? 0b0000_1000 : 0;
-      value |= toBooleanFunction.apply(column, position + 5) ? 0b0000_0100 : 0;
-      value |= toBooleanFunction.apply(column, position + 6) ? 0b0000_0010 : 0;
-      value |= toBooleanFunction.apply(column, position + 7) ? 0b0000_0001 : 0;
-      packedIsNull[currentByte] = value;
-    }
-
-    output.write(packedIsNull);
-
-    // write last null bits
-    if ((positionCount & 0b111) > 0) {
-      byte value = 0;
-      int mask = 0b1000_0000;
-      for (int position = positionCount & ~0b111; position < positionCount; position++) {
-        value |= toBooleanFunction.apply(column, position) ? mask : 0;
-        mask >>>= 1;
-      }
-      output.write(value);
-    }
-  }
-
-  static boolean[] deserializeBooleanArray(ByteBuffer input, int size) {
-    byte[] packedBooleanArray = new byte[(size + 7) / 8];
-    input.get(packedBooleanArray);
-
-    // read null bits 8 at a time
-    boolean[] output = new boolean[size];
-    int currentByte = 0;
-    for (int position = 0; position < (size & ~0b111); position += 8, currentByte++) {
-      byte value = packedBooleanArray[currentByte];
-      output[position] = ((value & 0b1000_0000) != 0);
-      output[position + 1] = ((value & 0b0100_0000) != 0);
-      output[position + 2] = ((value & 0b0010_0000) != 0);
-      output[position + 3] = ((value & 0b0001_0000) != 0);
-      output[position + 4] = ((value & 0b0000_1000) != 0);
-      output[position + 5] = ((value & 0b0000_0100) != 0);
-      output[position + 6] = ((value & 0b0000_0010) != 0);
-      output[position + 7] = ((value & 0b0000_0001) != 0);
-    }
-
-    // read last null bits
-    if ((size & 0b111) > 0) {
-      byte value = packedBooleanArray[packedBooleanArray.length - 1];
-      int mask = 0b1000_0000;
-      for (int position = size & ~0b111; position < size; position++) {
-        output[position] = ((value & mask) != 0);
-        mask >>>= 1;
-      }
-    }
-
-    return output;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnEncoderFactory.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnEncoderFactory.java
deleted file mode 100644
index f6055a8..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnEncoderFactory.java
+++ /dev/null
@@ -1,48 +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.column;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class ColumnEncoderFactory {
-
-  private ColumnEncoderFactory() {
-    // util class
-  }
-
-  private static final Map<ColumnEncoding, ColumnEncoder> encodingToEncoder = new HashMap<>();
-
-  static {
-    encodingToEncoder.put(ColumnEncoding.INT32_ARRAY, new Int32ArrayColumnEncoder());
-    encodingToEncoder.put(ColumnEncoding.INT64_ARRAY, new Int64ArrayColumnEncoder());
-    encodingToEncoder.put(ColumnEncoding.BYTE_ARRAY, new ByteArrayColumnEncoder());
-    encodingToEncoder.put(ColumnEncoding.BINARY_ARRAY, new BinaryArrayColumnEncoder());
-    encodingToEncoder.put(ColumnEncoding.RLE, new RunLengthColumnEncoder());
-  }
-
-  public static ColumnEncoder get(ColumnEncoding columnEncoding) {
-    ColumnEncoder res = encodingToEncoder.get(columnEncoding);
-    if (res == null) {
-      throw new IllegalArgumentException("Unsupported column encoding: " + columnEncoding);
-    }
-    return res;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnUtil.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnUtil.java
deleted file mode 100644
index ddf5db4..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/ColumnUtil.java
+++ /dev/null
@@ -1,98 +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.column;
-
-import static java.lang.Math.ceil;
-import static java.lang.String.format;
-import static java.util.Objects.requireNonNull;
-
-public class ColumnUtil {
-
-  private static final double BLOCK_RESET_SKEW = 1.25;
-
-  private static final int DEFAULT_CAPACITY = 64;
-  // See java.util.ArrayList for an explanation
-  static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
-
-  private ColumnUtil() {}
-
-  static void checkArrayRange(int[] array, int offset, int length) {
-    requireNonNull(array, "array is null");
-    if (offset < 0 || length < 0 || offset + length > array.length) {
-      throw new IndexOutOfBoundsException(
-          format(
-              "Invalid offset %s and length %s in array with %s elements",
-              offset, length, array.length));
-    }
-  }
-
-  static void checkValidRegion(int positionCount, int positionOffset, int length) {
-    if (positionOffset < 0 || length < 0 || positionOffset + length > positionCount) {
-      throw new IndexOutOfBoundsException(
-          format(
-              "Invalid position %s and length %s in block with %s positions",
-              positionOffset, length, positionCount));
-    }
-  }
-
-  static void checkValidPositions(boolean[] positions, int positionCount) {
-    if (positions.length != positionCount) {
-      throw new IllegalArgumentException(
-          format(
-              "Invalid positions array size %d, actual position count is %d",
-              positions.length, positionCount));
-    }
-  }
-
-  static void checkValidPosition(int position, int positionCount) {
-    if (position < 0 || position >= positionCount) {
-      throw new IllegalArgumentException(
-          format("Invalid position %s in block with %s positions", position, positionCount));
-    }
-  }
-
-  static int calculateNewArraySize(int currentSize) {
-    // grow array by 50%
-    long newSize = (long) currentSize + (currentSize >> 1);
-
-    // verify new size is within reasonable bounds
-    if (newSize < DEFAULT_CAPACITY) {
-      newSize = DEFAULT_CAPACITY;
-    } else if (newSize > MAX_ARRAY_SIZE) {
-      newSize = MAX_ARRAY_SIZE;
-      if (newSize == currentSize) {
-        throw new IllegalArgumentException(format("Cannot grow array beyond '%s'", MAX_ARRAY_SIZE));
-      }
-    }
-    return (int) newSize;
-  }
-
-  static int calculateBlockResetSize(int currentSize) {
-    long newSize = (long) ceil(currentSize * BLOCK_RESET_SKEW);
-
-    // verify new size is within reasonable bounds
-    if (newSize < DEFAULT_CAPACITY) {
-      newSize = DEFAULT_CAPACITY;
-    } else if (newSize > MAX_ARRAY_SIZE) {
-      newSize = MAX_ARRAY_SIZE;
-    }
-    return (int) newSize;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumn.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumn.java
deleted file mode 100644
index 6042b47..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumn.java
+++ /dev/null
@@ -1,169 +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.column;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.util.Arrays;
-import java.util.Optional;
-
-import static org.apache.iotdb.tsfile.read.common.block.column.ColumnUtil.checkValidRegion;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfBooleanArray;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfDoubleArray;
-
-public class DoubleColumn implements Column {
-
-  private static final int INSTANCE_SIZE =
-      (int) RamUsageEstimator.shallowSizeOfInstance(DoubleColumn.class);
-  public static final int SIZE_IN_BYTES_PER_POSITION = Double.BYTES + Byte.BYTES;
-
-  private final int arrayOffset;
-  private final int positionCount;
-  private final boolean[] valueIsNull;
-  private final double[] values;
-
-  private final long retainedSizeInBytes;
-
-  public DoubleColumn(int positionCount, Optional<boolean[]> valueIsNull, double[] values) {
-    this(0, positionCount, valueIsNull.orElse(null), values);
-  }
-
-  DoubleColumn(int arrayOffset, int positionCount, boolean[] valueIsNull, double[] values) {
-    if (arrayOffset < 0) {
-      throw new IllegalArgumentException("arrayOffset is negative");
-    }
-    this.arrayOffset = arrayOffset;
-    if (positionCount < 0) {
-      throw new IllegalArgumentException("positionCount is negative");
-    }
-    this.positionCount = positionCount;
-
-    if (values.length - arrayOffset < positionCount) {
-      throw new IllegalArgumentException("values length is less than positionCount");
-    }
-    this.values = values;
-
-    if (valueIsNull != null && valueIsNull.length - arrayOffset < positionCount) {
-      throw new IllegalArgumentException("isNull length is less than positionCount");
-    }
-    this.valueIsNull = valueIsNull;
-
-    retainedSizeInBytes =
-        INSTANCE_SIZE + sizeOfBooleanArray(positionCount) + sizeOfDoubleArray(positionCount);
-  }
-
-  @Override
-  public TSDataType getDataType() {
-    return TSDataType.DOUBLE;
-  }
-
-  @Override
-  public ColumnEncoding getEncoding() {
-    return ColumnEncoding.INT64_ARRAY;
-  }
-
-  @Override
-  public double getDouble(int position) {
-    return values[position + arrayOffset];
-  }
-
-  @Override
-  public double[] getDoubles() {
-    return values;
-  }
-
-  @Override
-  public Object getObject(int position) {
-    return getDouble(position);
-  }
-
-  @Override
-  public TsPrimitiveType getTsPrimitiveType(int position) {
-    return new TsPrimitiveType.TsDouble(getDouble(position));
-  }
-
-  @Override
-  public boolean mayHaveNull() {
-    return valueIsNull != null;
-  }
-
-  @Override
-  public boolean isNull(int position) {
-    return valueIsNull != null && valueIsNull[position + arrayOffset];
-  }
-
-  @Override
-  public boolean[] isNull() {
-    if (valueIsNull == null) {
-      boolean[] res = new boolean[positionCount];
-      Arrays.fill(res, false);
-      return res;
-    }
-    return valueIsNull;
-  }
-
-  @Override
-  public int getPositionCount() {
-    return positionCount;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return retainedSizeInBytes;
-  }
-
-  @Override
-  public Column getRegion(int positionOffset, int length) {
-    checkValidRegion(getPositionCount(), positionOffset, length);
-    return new DoubleColumn(positionOffset + arrayOffset, length, valueIsNull, values);
-  }
-
-  @Override
-  public Column subColumn(int fromIndex) {
-    if (fromIndex > positionCount) {
-      throw new IllegalArgumentException("fromIndex is not valid");
-    }
-    return new DoubleColumn(
-        arrayOffset + fromIndex, positionCount - fromIndex, valueIsNull, values);
-  }
-
-  @Override
-  public void reverse() {
-    for (int i = arrayOffset, j = arrayOffset + positionCount - 1; i < j; i++, j--) {
-      double valueTmp = values[i];
-      values[i] = values[j];
-      values[j] = valueTmp;
-    }
-    if (valueIsNull != null) {
-      for (int i = arrayOffset, j = arrayOffset + positionCount - 1; i < j; i++, j--) {
-        boolean isNullTmp = valueIsNull[i];
-        valueIsNull[i] = valueIsNull[j];
-        valueIsNull[j] = isNullTmp;
-      }
-    }
-  }
-
-  @Override
-  public int getInstanceSize() {
-    return INSTANCE_SIZE;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumnBuilder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumnBuilder.java
deleted file mode 100644
index 68e47de..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumnBuilder.java
+++ /dev/null
@@ -1,156 +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.column;
-
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.util.Arrays;
-
-import static java.lang.Math.max;
-import static org.apache.iotdb.tsfile.read.common.block.column.ColumnUtil.calculateBlockResetSize;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOf;
-
-public class DoubleColumnBuilder implements ColumnBuilder {
-
-  private static final int INSTANCE_SIZE =
-      (int) RamUsageEstimator.shallowSizeOfInstance(DoubleColumnBuilder.class);
-  public static final DoubleColumn NULL_VALUE_BLOCK =
-      new DoubleColumn(0, 1, new boolean[] {true}, new double[1]);
-
-  private final ColumnBuilderStatus columnBuilderStatus;
-  private boolean initialized;
-  private final int initialEntryCount;
-
-  private int positionCount;
-  private boolean hasNullValue;
-  private boolean hasNonNullValue;
-
-  // it is assumed that these arrays are the same length
-  private boolean[] valueIsNull = new boolean[0];
-  private double[] values = new double[0];
-
-  private long retainedSizeInBytes;
-
-  public DoubleColumnBuilder(ColumnBuilderStatus columnBuilderStatus, int expectedEntries) {
-    this.columnBuilderStatus = columnBuilderStatus;
-    this.initialEntryCount = max(expectedEntries, 1);
-
-    updateDataSize();
-  }
-
-  @Override
-  public ColumnBuilder writeDouble(double value) {
-    if (values.length <= positionCount) {
-      growCapacity();
-    }
-
-    values[positionCount] = value;
-
-    hasNonNullValue = true;
-    positionCount++;
-    if (columnBuilderStatus != null) {
-      columnBuilderStatus.addBytes(DoubleColumn.SIZE_IN_BYTES_PER_POSITION);
-    }
-    return this;
-  }
-
-  /** Write an Object to the current entry, which should be the Double type; */
-  @Override
-  public ColumnBuilder writeObject(Object value) {
-    if (value instanceof Double) {
-      writeDouble((Double) value);
-      return this;
-    }
-    throw new UnSupportedDataTypeException("DoubleColumn only support Double data type");
-  }
-
-  @Override
-  public ColumnBuilder write(Column column, int index) {
-    return writeDouble(column.getDouble(index));
-  }
-
-  @Override
-  public ColumnBuilder writeTsPrimitiveType(TsPrimitiveType value) {
-    return writeDouble(value.getDouble());
-  }
-
-  @Override
-  public ColumnBuilder appendNull() {
-    if (values.length <= positionCount) {
-      growCapacity();
-    }
-
-    valueIsNull[positionCount] = true;
-
-    hasNullValue = true;
-    positionCount++;
-    if (columnBuilderStatus != null) {
-      columnBuilderStatus.addBytes(DoubleColumn.SIZE_IN_BYTES_PER_POSITION);
-    }
-    return this;
-  }
-
-  @Override
-  public Column build() {
-    if (!hasNonNullValue) {
-      return new RunLengthEncodedColumn(NULL_VALUE_BLOCK, positionCount);
-    }
-    return new DoubleColumn(0, positionCount, hasNullValue ? valueIsNull : null, values);
-  }
-
-  @Override
-  public TSDataType getDataType() {
-    return TSDataType.DOUBLE;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return retainedSizeInBytes;
-  }
-
-  @Override
-  public ColumnBuilder newColumnBuilderLike(ColumnBuilderStatus columnBuilderStatus) {
-    return new DoubleColumnBuilder(columnBuilderStatus, calculateBlockResetSize(positionCount));
-  }
-
-  private void growCapacity() {
-    int newSize;
-    if (initialized) {
-      newSize = ColumnUtil.calculateNewArraySize(values.length);
-    } else {
-      newSize = initialEntryCount;
-      initialized = true;
-    }
-
-    valueIsNull = Arrays.copyOf(valueIsNull, newSize);
-    values = Arrays.copyOf(values, newSize);
-    updateDataSize();
-  }
-
-  private void updateDataSize() {
-    retainedSizeInBytes = INSTANCE_SIZE + sizeOf(valueIsNull) + sizeOf(values);
-    if (columnBuilderStatus != null) {
-      retainedSizeInBytes += ColumnBuilderStatus.INSTANCE_SIZE;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumn.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumn.java
deleted file mode 100644
index 003ad3f..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumn.java
+++ /dev/null
@@ -1,168 +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.column;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.util.Arrays;
-import java.util.Optional;
-
-import static org.apache.iotdb.tsfile.read.common.block.column.ColumnUtil.checkValidRegion;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfBooleanArray;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfFloatArray;
-
-public class FloatColumn implements Column {
-
-  private static final int INSTANCE_SIZE =
-      (int) RamUsageEstimator.shallowSizeOfInstance(FloatColumn.class);
-  public static final int SIZE_IN_BYTES_PER_POSITION = Float.BYTES + Byte.BYTES;
-
-  private final int arrayOffset;
-  private final int positionCount;
-  private final boolean[] valueIsNull;
-  private final float[] values;
-
-  private final long retainedSizeInBytes;
-
-  public FloatColumn(int positionCount, Optional<boolean[]> valueIsNull, float[] values) {
-    this(0, positionCount, valueIsNull.orElse(null), values);
-  }
-
-  FloatColumn(int arrayOffset, int positionCount, boolean[] valueIsNull, float[] values) {
-    if (arrayOffset < 0) {
-      throw new IllegalArgumentException("arrayOffset is negative");
-    }
-    this.arrayOffset = arrayOffset;
-    if (positionCount < 0) {
-      throw new IllegalArgumentException("positionCount is negative");
-    }
-    this.positionCount = positionCount;
-
-    if (values.length - arrayOffset < positionCount) {
-      throw new IllegalArgumentException("values length is less than positionCount");
-    }
-    this.values = values;
-
-    if (valueIsNull != null && valueIsNull.length - arrayOffset < positionCount) {
-      throw new IllegalArgumentException("isNull length is less than positionCount");
-    }
-    this.valueIsNull = valueIsNull;
-
-    retainedSizeInBytes =
-        INSTANCE_SIZE + sizeOfFloatArray(positionCount) + sizeOfBooleanArray(positionCount);
-  }
-
-  @Override
-  public TSDataType getDataType() {
-    return TSDataType.FLOAT;
-  }
-
-  @Override
-  public ColumnEncoding getEncoding() {
-    return ColumnEncoding.INT32_ARRAY;
-  }
-
-  @Override
-  public float getFloat(int position) {
-    return values[position + arrayOffset];
-  }
-
-  @Override
-  public float[] getFloats() {
-    return values;
-  }
-
-  @Override
-  public Object getObject(int position) {
-    return getFloat(position);
-  }
-
-  @Override
-  public TsPrimitiveType getTsPrimitiveType(int position) {
-    return new TsPrimitiveType.TsFloat(getFloat(position));
-  }
-
-  @Override
-  public boolean mayHaveNull() {
-    return valueIsNull != null;
-  }
-
-  @Override
-  public boolean isNull(int position) {
-    return valueIsNull != null && valueIsNull[position + arrayOffset];
-  }
-
-  @Override
-  public boolean[] isNull() {
-    if (valueIsNull == null) {
-      boolean[] res = new boolean[positionCount];
-      Arrays.fill(res, false);
-      return res;
-    }
-    return valueIsNull;
-  }
-
-  @Override
-  public int getPositionCount() {
-    return positionCount;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return retainedSizeInBytes;
-  }
-
-  @Override
-  public Column getRegion(int positionOffset, int length) {
-    checkValidRegion(getPositionCount(), positionOffset, length);
-    return new FloatColumn(positionOffset + arrayOffset, length, valueIsNull, values);
-  }
-
-  @Override
-  public Column subColumn(int fromIndex) {
-    if (fromIndex > positionCount) {
-      throw new IllegalArgumentException("fromIndex is not valid");
-    }
-    return new FloatColumn(arrayOffset + fromIndex, positionCount - fromIndex, valueIsNull, values);
-  }
-
-  @Override
-  public void reverse() {
-    for (int i = arrayOffset, j = arrayOffset + positionCount - 1; i < j; i++, j--) {
-      float valueTmp = values[i];
-      values[i] = values[j];
-      values[j] = valueTmp;
-    }
-    if (valueIsNull != null) {
-      for (int i = arrayOffset, j = arrayOffset + positionCount - 1; i < j; i++, j--) {
-        boolean isNullTmp = valueIsNull[i];
-        valueIsNull[i] = valueIsNull[j];
-        valueIsNull[j] = isNullTmp;
-      }
-    }
-  }
-
-  @Override
-  public int getInstanceSize() {
-    return INSTANCE_SIZE;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumnBuilder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumnBuilder.java
deleted file mode 100644
index ac64bae..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumnBuilder.java
+++ /dev/null
@@ -1,156 +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.column;
-
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.util.Arrays;
-
-import static java.lang.Math.max;
-import static org.apache.iotdb.tsfile.read.common.block.column.ColumnUtil.calculateBlockResetSize;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOf;
-
-public class FloatColumnBuilder implements ColumnBuilder {
-
-  private static final int INSTANCE_SIZE =
-      (int) RamUsageEstimator.shallowSizeOfInstance(FloatColumnBuilder.class);
-  public static final FloatColumn NULL_VALUE_BLOCK =
-      new FloatColumn(0, 1, new boolean[] {true}, new float[1]);
-
-  private final ColumnBuilderStatus columnBuilderStatus;
-  private boolean initialized;
-  private final int initialEntryCount;
-
-  private int positionCount;
-  private boolean hasNullValue;
-  private boolean hasNonNullValue;
-
-  // it is assumed that these arrays are the same length
-  private boolean[] valueIsNull = new boolean[0];
-  private float[] values = new float[0];
-
-  private long retainedSizeInBytes;
-
-  public FloatColumnBuilder(ColumnBuilderStatus columnBuilderStatus, int expectedEntries) {
-    this.columnBuilderStatus = columnBuilderStatus;
-    this.initialEntryCount = max(expectedEntries, 1);
-
-    updateDataSize();
-  }
-
-  @Override
-  public ColumnBuilder writeFloat(float value) {
-    if (values.length <= positionCount) {
-      growCapacity();
-    }
-
-    values[positionCount] = value;
-
-    hasNonNullValue = true;
-    positionCount++;
-    if (columnBuilderStatus != null) {
-      columnBuilderStatus.addBytes(FloatColumn.SIZE_IN_BYTES_PER_POSITION);
-    }
-    return this;
-  }
-
-  @Override
-  public ColumnBuilder writeTsPrimitiveType(TsPrimitiveType value) {
-    return writeFloat(value.getFloat());
-  }
-
-  /** Write an Object to the current entry, which should be the Float type; */
-  @Override
-  public ColumnBuilder writeObject(Object value) {
-    if (value instanceof Float) {
-      writeFloat((Float) value);
-      return this;
-    }
-    throw new UnSupportedDataTypeException("FloatColumn only support Float data type");
-  }
-
-  @Override
-  public ColumnBuilder write(Column column, int index) {
-    return writeFloat(column.getFloat(index));
-  }
-
-  @Override
-  public ColumnBuilder appendNull() {
-    if (values.length <= positionCount) {
-      growCapacity();
-    }
-
-    valueIsNull[positionCount] = true;
-
-    hasNullValue = true;
-    positionCount++;
-    if (columnBuilderStatus != null) {
-      columnBuilderStatus.addBytes(FloatColumn.SIZE_IN_BYTES_PER_POSITION);
-    }
-    return this;
-  }
-
-  @Override
-  public Column build() {
-    if (!hasNonNullValue) {
-      return new RunLengthEncodedColumn(NULL_VALUE_BLOCK, positionCount);
-    }
-    return new FloatColumn(0, positionCount, hasNullValue ? valueIsNull : null, values);
-  }
-
-  @Override
-  public TSDataType getDataType() {
-    return TSDataType.FLOAT;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return retainedSizeInBytes;
-  }
-
-  @Override
-  public ColumnBuilder newColumnBuilderLike(ColumnBuilderStatus columnBuilderStatus) {
-    return new FloatColumnBuilder(columnBuilderStatus, calculateBlockResetSize(positionCount));
-  }
-
-  private void growCapacity() {
-    int newSize;
-    if (initialized) {
-      newSize = ColumnUtil.calculateNewArraySize(values.length);
-    } else {
-      newSize = initialEntryCount;
-      initialized = true;
-    }
-
-    valueIsNull = Arrays.copyOf(valueIsNull, newSize);
-    values = Arrays.copyOf(values, newSize);
-    updateDataSize();
-  }
-
-  private void updateDataSize() {
-    retainedSizeInBytes = INSTANCE_SIZE + sizeOf(valueIsNull) + sizeOf(values);
-    if (columnBuilderStatus != null) {
-      retainedSizeInBytes += ColumnBuilderStatus.INSTANCE_SIZE;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/Int32ArrayColumnEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/Int32ArrayColumnEncoder.java
deleted file mode 100644
index 74486e7..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/Int32ArrayColumnEncoder.java
+++ /dev/null
@@ -1,110 +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.column;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-public class Int32ArrayColumnEncoder implements ColumnEncoder {
-
-  @Override
-  public Column readColumn(ByteBuffer input, TSDataType dataType, int positionCount) {
-
-    // Serialized data layout:
-    //    +---------------+-----------------+-------------+
-    //    | may have null | null indicators |   values    |
-    //    +---------------+-----------------+-------------+
-    //    | byte          | list[byte]      | list[int32] |
-    //    +---------------+-----------------+-------------+
-
-    boolean[] nullIndicators = ColumnEncoder.deserializeNullIndicators(input, positionCount);
-
-    if (TSDataType.INT32.equals(dataType)) {
-      int[] values = new int[positionCount];
-      if (nullIndicators == null) {
-        for (int i = 0; i < positionCount; i++) {
-          values[i] = input.getInt();
-        }
-      } else {
-        for (int i = 0; i < positionCount; i++) {
-          if (!nullIndicators[i]) {
-            values[i] = input.getInt();
-          }
-        }
-      }
-      return new IntColumn(0, positionCount, nullIndicators, values);
-    } else if (TSDataType.FLOAT.equals(dataType)) {
-      float[] values = new float[positionCount];
-      if (nullIndicators == null) {
-        for (int i = 0; i < positionCount; i++) {
-          values[i] = Float.intBitsToFloat(input.getInt());
-        }
-      } else {
-        for (int i = 0; i < positionCount; i++) {
-          if (!nullIndicators[i]) {
-            values[i] = Float.intBitsToFloat(input.getInt());
-          }
-        }
-      }
-      return new FloatColumn(0, positionCount, nullIndicators, values);
-    } else {
-      throw new IllegalArgumentException("Invalid data type: " + dataType);
-    }
-  }
-
-  @Override
-  public void writeColumn(DataOutputStream output, Column column) throws IOException {
-
-    ColumnEncoder.serializeNullIndicators(output, column);
-
-    TSDataType dataType = column.getDataType();
-    int positionCount = column.getPositionCount();
-    if (TSDataType.INT32.equals(dataType)) {
-      if (column.mayHaveNull()) {
-        for (int i = 0; i < positionCount; i++) {
-          if (!column.isNull(i)) {
-            output.writeInt(column.getInt(i));
-          }
-        }
-      } else {
-        for (int i = 0; i < positionCount; i++) {
-          output.writeInt(column.getInt(i));
-        }
-      }
-    } else if (TSDataType.FLOAT.equals(dataType)) {
-      if (column.mayHaveNull()) {
-        for (int i = 0; i < positionCount; i++) {
-          if (!column.isNull(i)) {
-            output.writeInt(Float.floatToIntBits(column.getFloat(i)));
-          }
-        }
-      } else {
-        for (int i = 0; i < positionCount; i++) {
-          output.writeInt(Float.floatToIntBits(column.getFloat(i)));
-        }
-      }
-    } else {
-      throw new IllegalArgumentException("Invalid data type: " + dataType);
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/Int64ArrayColumnEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/Int64ArrayColumnEncoder.java
deleted file mode 100644
index 7af3790..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/Int64ArrayColumnEncoder.java
+++ /dev/null
@@ -1,120 +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.column;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-public class Int64ArrayColumnEncoder implements ColumnEncoder {
-
-  @Override
-  public TimeColumn readTimeColumn(ByteBuffer input, int positionCount) {
-
-    // Serialized data layout:
-    //    +---------------+-----------------+-------------+
-    //    | may have null | null indicators |   values    |
-    //    +---------------+-----------------+-------------+
-    //    | byte          | list[byte]      | list[int64] |
-    //    +---------------+-----------------+-------------+
-
-    boolean[] nullIndicators = ColumnEncoder.deserializeNullIndicators(input, positionCount);
-    long[] values = new long[positionCount];
-    if (nullIndicators == null) {
-      for (int i = 0; i < positionCount; i++) {
-        values[i] = input.getLong();
-      }
-      return new TimeColumn(0, positionCount, values);
-    } else {
-      throw new IllegalArgumentException("TimeColumn should not contain null values.");
-    }
-  }
-
-  @Override
-  public Column readColumn(ByteBuffer input, TSDataType dataType, int positionCount) {
-
-    // Serialized data layout:
-    //    +---------------+-----------------+-------------+
-    //    | may have null | null indicators |   values    |
-    //    +---------------+-----------------+-------------+
-    //    | byte          | list[byte]      | list[int64] |
-    //    +---------------+-----------------+-------------+
-
-    boolean[] nullIndicators = ColumnEncoder.deserializeNullIndicators(input, positionCount);
-
-    if (TSDataType.INT64.equals(dataType)) {
-      long[] values = new long[positionCount];
-      if (nullIndicators == null) {
-        for (int i = 0; i < positionCount; i++) {
-          values[i] = input.getLong();
-        }
-      } else {
-        for (int i = 0; i < positionCount; i++) {
-          if (!nullIndicators[i]) {
-            values[i] = input.getLong();
-          }
-        }
-      }
-      return new LongColumn(0, positionCount, nullIndicators, values);
-    } else if (TSDataType.DOUBLE.equals(dataType)) {
-      double[] values = new double[positionCount];
-      if (nullIndicators == null) {
-        for (int i = 0; i < positionCount; i++) {
-          values[i] = Double.longBitsToDouble(input.getLong());
-        }
-      } else {
-        for (int i = 0; i < positionCount; i++) {
-          if (!nullIndicators[i]) {
-            values[i] = Double.longBitsToDouble(input.getLong());
-          }
-        }
-      }
-      return new DoubleColumn(0, positionCount, nullIndicators, values);
-    } else {
-      throw new IllegalArgumentException("Invalid data type: " + dataType);
-    }
-  }
-
-  @Override
-  public void writeColumn(DataOutputStream output, Column column) throws IOException {
-
-    ColumnEncoder.serializeNullIndicators(output, column);
-
-    TSDataType dataType = column.getDataType();
-    int positionCount = column.getPositionCount();
-    if (TSDataType.INT64.equals(dataType)) {
-      for (int i = 0; i < positionCount; i++) {
-        if (!column.isNull(i)) {
-          output.writeLong(column.getLong(i));
-        }
-      }
-    } else if (TSDataType.DOUBLE.equals(dataType)) {
-      for (int i = 0; i < positionCount; i++) {
-        if (!column.isNull(i)) {
-          output.writeLong(Double.doubleToLongBits(column.getDouble(i)));
-        }
-      }
-    } else {
-      throw new IllegalArgumentException("Invalid data type: " + dataType);
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumn.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumn.java
deleted file mode 100644
index 867cb37..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumn.java
+++ /dev/null
@@ -1,168 +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.column;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.util.Arrays;
-import java.util.Optional;
-
-import static org.apache.iotdb.tsfile.read.common.block.column.ColumnUtil.checkValidRegion;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfBooleanArray;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfIntArray;
-
-public class IntColumn implements Column {
-
-  private static final int INSTANCE_SIZE =
-      (int) RamUsageEstimator.shallowSizeOfInstance(IntColumn.class);
-  public static final int SIZE_IN_BYTES_PER_POSITION = Integer.BYTES + Byte.BYTES;
-
-  private final int arrayOffset;
-  private final int positionCount;
-  private final boolean[] valueIsNull;
-  private final int[] values;
-
-  private final long retainedSizeInBytes;
-
-  public IntColumn(int positionCount, Optional<boolean[]> valueIsNull, int[] values) {
-    this(0, positionCount, valueIsNull.orElse(null), values);
-  }
-
-  IntColumn(int arrayOffset, int positionCount, boolean[] valueIsNull, int[] values) {
-    if (arrayOffset < 0) {
-      throw new IllegalArgumentException("arrayOffset is negative");
-    }
-    this.arrayOffset = arrayOffset;
-    if (positionCount < 0) {
-      throw new IllegalArgumentException("positionCount is negative");
-    }
-    this.positionCount = positionCount;
-
-    if (values.length - arrayOffset < positionCount) {
-      throw new IllegalArgumentException("values length is less than positionCount");
-    }
-    this.values = values;
-
-    if (valueIsNull != null && valueIsNull.length - arrayOffset < positionCount) {
-      throw new IllegalArgumentException("isNull length is less than positionCount");
-    }
-    this.valueIsNull = valueIsNull;
-
-    retainedSizeInBytes =
-        INSTANCE_SIZE + sizeOfIntArray(positionCount) + sizeOfBooleanArray(positionCount);
-  }
-
-  @Override
-  public TSDataType getDataType() {
-    return TSDataType.INT32;
-  }
-
-  @Override
-  public ColumnEncoding getEncoding() {
-    return ColumnEncoding.INT32_ARRAY;
-  }
-
-  @Override
-  public int getInt(int position) {
-    return values[position + arrayOffset];
-  }
-
-  @Override
-  public int[] getInts() {
-    return values;
-  }
-
-  @Override
-  public Object getObject(int position) {
-    return getInt(position);
-  }
-
-  @Override
-  public TsPrimitiveType getTsPrimitiveType(int position) {
-    return new TsPrimitiveType.TsInt(getInt(position));
-  }
-
-  @Override
-  public boolean mayHaveNull() {
-    return valueIsNull != null;
-  }
-
-  @Override
-  public boolean isNull(int position) {
-    return valueIsNull != null && valueIsNull[position + arrayOffset];
-  }
-
-  @Override
-  public boolean[] isNull() {
-    if (valueIsNull == null) {
-      boolean[] res = new boolean[positionCount];
-      Arrays.fill(res, false);
-      return res;
-    }
-    return valueIsNull;
-  }
-
-  @Override
-  public int getPositionCount() {
-    return positionCount;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return retainedSizeInBytes;
-  }
-
-  @Override
-  public Column getRegion(int positionOffset, int length) {
-    checkValidRegion(getPositionCount(), positionOffset, length);
-    return new IntColumn(positionOffset + arrayOffset, length, valueIsNull, values);
-  }
-
-  @Override
-  public Column subColumn(int fromIndex) {
-    if (fromIndex > positionCount) {
-      throw new IllegalArgumentException("fromIndex is not valid");
-    }
-    return new IntColumn(arrayOffset + fromIndex, positionCount - fromIndex, valueIsNull, values);
-  }
-
-  @Override
-  public void reverse() {
-    for (int i = arrayOffset, j = arrayOffset + positionCount - 1; i < j; i++, j--) {
-      int valueTmp = values[i];
-      values[i] = values[j];
-      values[j] = valueTmp;
-    }
-    if (valueIsNull != null) {
-      for (int i = arrayOffset, j = arrayOffset + positionCount - 1; i < j; i++, j--) {
-        boolean isNullTmp = valueIsNull[i];
-        valueIsNull[i] = valueIsNull[j];
-        valueIsNull[j] = isNullTmp;
-      }
-    }
-  }
-
-  @Override
-  public int getInstanceSize() {
-    return INSTANCE_SIZE;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumnBuilder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumnBuilder.java
deleted file mode 100644
index a7a4253..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumnBuilder.java
+++ /dev/null
@@ -1,156 +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.column;
-
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.util.Arrays;
-
-import static java.lang.Math.max;
-import static org.apache.iotdb.tsfile.read.common.block.column.ColumnUtil.calculateBlockResetSize;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOf;
-
-public class IntColumnBuilder implements ColumnBuilder {
-
-  private static final int INSTANCE_SIZE =
-      (int) RamUsageEstimator.shallowSizeOfInstance(IntColumnBuilder.class);
-  public static final IntColumn NULL_VALUE_BLOCK =
-      new IntColumn(0, 1, new boolean[] {true}, new int[1]);
-
-  private final ColumnBuilderStatus columnBuilderStatus;
-  private boolean initialized;
-  private final int initialEntryCount;
-
-  private int positionCount;
-  private boolean hasNullValue;
-  private boolean hasNonNullValue;
-
-  // it is assumed that these arrays are the same length
-  private boolean[] valueIsNull = new boolean[0];
-  private int[] values = new int[0];
-
-  private long retainedSizeInBytes;
-
-  public IntColumnBuilder(ColumnBuilderStatus columnBuilderStatus, int expectedEntries) {
-    this.columnBuilderStatus = columnBuilderStatus;
-    this.initialEntryCount = max(expectedEntries, 1);
-
-    updateDataSize();
-  }
-
-  @Override
-  public ColumnBuilder writeInt(int value) {
-    if (values.length <= positionCount) {
-      growCapacity();
-    }
-
-    values[positionCount] = value;
-
-    hasNonNullValue = true;
-    positionCount++;
-    if (columnBuilderStatus != null) {
-      columnBuilderStatus.addBytes(IntColumn.SIZE_IN_BYTES_PER_POSITION);
-    }
-    return this;
-  }
-
-  /** Write an Object to the current entry, which should be the Integer type; */
-  @Override
-  public ColumnBuilder writeObject(Object value) {
-    if (value instanceof Integer) {
-      writeInt((Integer) value);
-      return this;
-    }
-    throw new UnSupportedDataTypeException("IntegerColumn only support Integer data type");
-  }
-
-  @Override
-  public ColumnBuilder write(Column column, int index) {
-    return writeInt(column.getInt(index));
-  }
-
-  @Override
-  public ColumnBuilder writeTsPrimitiveType(TsPrimitiveType value) {
-    return writeInt(value.getInt());
-  }
-
-  @Override
-  public ColumnBuilder appendNull() {
-    if (values.length <= positionCount) {
-      growCapacity();
-    }
-
-    valueIsNull[positionCount] = true;
-
-    hasNullValue = true;
-    positionCount++;
-    if (columnBuilderStatus != null) {
-      columnBuilderStatus.addBytes(IntColumn.SIZE_IN_BYTES_PER_POSITION);
-    }
-    return this;
-  }
-
-  @Override
-  public Column build() {
-    if (!hasNonNullValue) {
-      return new RunLengthEncodedColumn(NULL_VALUE_BLOCK, positionCount);
-    }
-    return new IntColumn(0, positionCount, hasNullValue ? valueIsNull : null, values);
-  }
-
-  @Override
-  public TSDataType getDataType() {
-    return TSDataType.INT32;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return retainedSizeInBytes;
-  }
-
-  @Override
-  public ColumnBuilder newColumnBuilderLike(ColumnBuilderStatus columnBuilderStatus) {
-    return new IntColumnBuilder(columnBuilderStatus, calculateBlockResetSize(positionCount));
-  }
-
-  private void growCapacity() {
-    int newSize;
-    if (initialized) {
-      newSize = ColumnUtil.calculateNewArraySize(values.length);
-    } else {
-      newSize = initialEntryCount;
-      initialized = true;
-    }
-
-    valueIsNull = Arrays.copyOf(valueIsNull, newSize);
-    values = Arrays.copyOf(values, newSize);
-    updateDataSize();
-  }
-
-  private void updateDataSize() {
-    retainedSizeInBytes = INSTANCE_SIZE + sizeOf(valueIsNull) + sizeOf(values);
-    if (columnBuilderStatus != null) {
-      retainedSizeInBytes += ColumnBuilderStatus.INSTANCE_SIZE;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumn.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumn.java
deleted file mode 100644
index 0cbacc7..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumn.java
+++ /dev/null
@@ -1,168 +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.column;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.util.Arrays;
-import java.util.Optional;
-
-import static org.apache.iotdb.tsfile.read.common.block.column.ColumnUtil.checkValidRegion;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfBooleanArray;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfLongArray;
-
-public class LongColumn implements Column {
-
-  private static final int INSTANCE_SIZE =
-      (int) RamUsageEstimator.shallowSizeOfInstance(LongColumn.class);
-  public static final int SIZE_IN_BYTES_PER_POSITION = Long.BYTES + Byte.BYTES;
-
-  private final int arrayOffset;
-  private final int positionCount;
-  private final boolean[] valueIsNull;
-  private final long[] values;
-
-  private final long retainedSizeInBytes;
-
-  public LongColumn(int positionCount, Optional<boolean[]> valueIsNull, long[] values) {
-    this(0, positionCount, valueIsNull.orElse(null), values);
-  }
-
-  LongColumn(int arrayOffset, int positionCount, boolean[] valueIsNull, long[] values) {
-    if (arrayOffset < 0) {
-      throw new IllegalArgumentException("arrayOffset is negative");
-    }
-    this.arrayOffset = arrayOffset;
-    if (positionCount < 0) {
-      throw new IllegalArgumentException("positionCount is negative");
-    }
-    this.positionCount = positionCount;
-
-    if (values.length - arrayOffset < positionCount) {
-      throw new IllegalArgumentException("values length is less than positionCount");
-    }
-    this.values = values;
-
-    if (valueIsNull != null && valueIsNull.length - arrayOffset < positionCount) {
-      throw new IllegalArgumentException("isNull length is less than positionCount");
-    }
-    this.valueIsNull = valueIsNull;
-
-    retainedSizeInBytes =
-        INSTANCE_SIZE + sizeOfLongArray(positionCount) + sizeOfBooleanArray(positionCount);
-  }
-
-  @Override
-  public TSDataType getDataType() {
-    return TSDataType.INT64;
-  }
-
-  @Override
-  public ColumnEncoding getEncoding() {
-    return ColumnEncoding.INT64_ARRAY;
-  }
-
-  @Override
-  public long getLong(int position) {
-    return values[position + arrayOffset];
-  }
-
-  @Override
-  public long[] getLongs() {
-    return values;
-  }
-
-  @Override
-  public Object getObject(int position) {
-    return getLong(position);
-  }
-
-  @Override
-  public TsPrimitiveType getTsPrimitiveType(int position) {
-    return new TsPrimitiveType.TsLong(getLong(position));
-  }
-
-  @Override
-  public boolean mayHaveNull() {
-    return valueIsNull != null;
-  }
-
-  @Override
-  public boolean isNull(int position) {
-    return valueIsNull != null && valueIsNull[position + arrayOffset];
-  }
-
-  @Override
-  public boolean[] isNull() {
-    if (valueIsNull == null) {
-      boolean[] res = new boolean[positionCount];
-      Arrays.fill(res, false);
-      return res;
-    }
-    return valueIsNull;
-  }
-
-  @Override
-  public int getPositionCount() {
-    return positionCount;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return retainedSizeInBytes;
-  }
-
-  @Override
-  public Column getRegion(int positionOffset, int length) {
-    checkValidRegion(getPositionCount(), positionOffset, length);
-    return new LongColumn(positionOffset + arrayOffset, length, valueIsNull, values);
-  }
-
-  @Override
-  public Column subColumn(int fromIndex) {
-    if (fromIndex > positionCount) {
-      throw new IllegalArgumentException("fromIndex is not valid");
-    }
-    return new LongColumn(arrayOffset + fromIndex, positionCount - fromIndex, valueIsNull, values);
-  }
-
-  @Override
-  public void reverse() {
-    for (int i = arrayOffset, j = arrayOffset + positionCount - 1; i < j; i++, j--) {
-      long valueTmp = values[i];
-      values[i] = values[j];
-      values[j] = valueTmp;
-    }
-    if (valueIsNull != null) {
-      for (int i = arrayOffset, j = arrayOffset + positionCount - 1; i < j; i++, j--) {
-        boolean isNullTmp = valueIsNull[i];
-        valueIsNull[i] = valueIsNull[j];
-        valueIsNull[j] = isNullTmp;
-      }
-    }
-  }
-
-  @Override
-  public int getInstanceSize() {
-    return INSTANCE_SIZE;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumnBuilder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumnBuilder.java
deleted file mode 100644
index b93b70c..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumnBuilder.java
+++ /dev/null
@@ -1,156 +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.column;
-
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.util.Arrays;
-
-import static java.lang.Math.max;
-import static org.apache.iotdb.tsfile.read.common.block.column.ColumnUtil.calculateBlockResetSize;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOf;
-
-public class LongColumnBuilder implements ColumnBuilder {
-
-  private static final int INSTANCE_SIZE =
-      (int) RamUsageEstimator.shallowSizeOfInstance(LongColumnBuilder.class);
-  public static final LongColumn NULL_VALUE_BLOCK =
-      new LongColumn(0, 1, new boolean[] {true}, new long[1]);
-
-  private final ColumnBuilderStatus columnBuilderStatus;
-  private boolean initialized;
-  private final int initialEntryCount;
-
-  private int positionCount;
-  private boolean hasNullValue;
-  private boolean hasNonNullValue;
-
-  // it is assumed that these arrays are the same length
-  private boolean[] valueIsNull = new boolean[0];
-  private long[] values = new long[0];
-
-  private long retainedSizeInBytes;
-
-  public LongColumnBuilder(ColumnBuilderStatus columnBuilderStatus, int expectedEntries) {
-    this.columnBuilderStatus = columnBuilderStatus;
-    this.initialEntryCount = max(expectedEntries, 1);
-
-    updateDataSize();
-  }
-
-  @Override
-  public ColumnBuilder writeLong(long value) {
-    if (values.length <= positionCount) {
-      growCapacity();
-    }
-
-    values[positionCount] = value;
-
-    hasNonNullValue = true;
-    positionCount++;
-    if (columnBuilderStatus != null) {
-      columnBuilderStatus.addBytes(LongColumn.SIZE_IN_BYTES_PER_POSITION);
-    }
-    return this;
-  }
-
-  /** Write an Object to the current entry, which should be the Long type; */
-  @Override
-  public ColumnBuilder writeObject(Object value) {
-    if (value instanceof Long) {
-      writeLong((Long) value);
-      return this;
-    }
-    throw new UnSupportedDataTypeException("LongColumn only support Long data type");
-  }
-
-  @Override
-  public ColumnBuilder write(Column column, int index) {
-    return writeLong(column.getLong(index));
-  }
-
-  @Override
-  public ColumnBuilder writeTsPrimitiveType(TsPrimitiveType value) {
-    return writeLong(value.getLong());
-  }
-
-  @Override
-  public ColumnBuilder appendNull() {
-    if (values.length <= positionCount) {
-      growCapacity();
-    }
-
-    valueIsNull[positionCount] = true;
-
-    hasNullValue = true;
-    positionCount++;
-    if (columnBuilderStatus != null) {
-      columnBuilderStatus.addBytes(LongColumn.SIZE_IN_BYTES_PER_POSITION);
-    }
-    return this;
-  }
-
-  @Override
-  public Column build() {
-    if (!hasNonNullValue) {
-      return new RunLengthEncodedColumn(NULL_VALUE_BLOCK, positionCount);
-    }
-    return new LongColumn(0, positionCount, hasNullValue ? valueIsNull : null, values);
-  }
-
-  @Override
-  public TSDataType getDataType() {
-    return TSDataType.INT64;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return retainedSizeInBytes;
-  }
-
-  @Override
-  public ColumnBuilder newColumnBuilderLike(ColumnBuilderStatus columnBuilderStatus) {
-    return new LongColumnBuilder(columnBuilderStatus, calculateBlockResetSize(positionCount));
-  }
-
-  private void growCapacity() {
-    int newSize;
-    if (initialized) {
-      newSize = ColumnUtil.calculateNewArraySize(values.length);
-    } else {
-      newSize = initialEntryCount;
-      initialized = true;
-    }
-
-    valueIsNull = Arrays.copyOf(valueIsNull, newSize);
-    values = Arrays.copyOf(values, newSize);
-    updateDataSize();
-  }
-
-  private void updateDataSize() {
-    retainedSizeInBytes = INSTANCE_SIZE + sizeOf(valueIsNull) + sizeOf(values);
-    if (columnBuilderStatus != null) {
-      retainedSizeInBytes += ColumnBuilderStatus.INSTANCE_SIZE;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/NullColumn.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/NullColumn.java
deleted file mode 100644
index dff65bc..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/NullColumn.java
+++ /dev/null
@@ -1,127 +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.column;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-
-import static java.util.Objects.requireNonNull;
-import static org.apache.iotdb.tsfile.read.common.block.column.ColumnUtil.checkValidRegion;
-
-/**
- * This column is used to represent columns that only contain null values. But its positionCount has
- * to be consistent with corresponding valueColumn.
- */
-public class NullColumn implements Column {
-
-  private static final int INSTANCE_SIZE =
-      (int) RamUsageEstimator.shallowSizeOfInstance(BooleanColumn.class);
-
-  private final int positionCount;
-
-  private final long retainedSizeInBytes;
-
-  public NullColumn(int positionCount) {
-    if (positionCount < 0) {
-      throw new IllegalArgumentException("positionCount is negative");
-    }
-    this.positionCount = positionCount;
-    retainedSizeInBytes = INSTANCE_SIZE;
-  }
-
-  @Override
-  public TSDataType getDataType() {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  @Override
-  public ColumnEncoding getEncoding() {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  @Override
-  public boolean mayHaveNull() {
-    return true;
-  }
-
-  @Override
-  public boolean isNull(int position) {
-    return true;
-  }
-
-  @Override
-  public boolean[] isNull() {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  @Override
-  public int getPositionCount() {
-    return positionCount;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return retainedSizeInBytes;
-  }
-
-  @Override
-  public Column getRegion(int positionOffset, int length) {
-    checkValidRegion(getPositionCount(), positionOffset, length);
-    return new NullColumn(length);
-  }
-
-  @Override
-  public Column subColumn(int fromIndex) {
-    if (fromIndex > positionCount) {
-      throw new IllegalArgumentException("fromIndex is not valid");
-    }
-    return new NullColumn(positionCount - fromIndex);
-  }
-
-  @Override
-  public void reverse() {
-    // do nothing
-  }
-
-  public static Column create(TSDataType dataType, int positionCount) {
-    requireNonNull(dataType, "dataType is null");
-    switch (dataType) {
-      case BOOLEAN:
-        return new RunLengthEncodedColumn(BooleanColumnBuilder.NULL_VALUE_BLOCK, positionCount);
-      case INT32:
-        return new RunLengthEncodedColumn(IntColumnBuilder.NULL_VALUE_BLOCK, positionCount);
-      case INT64:
-        return new RunLengthEncodedColumn(LongColumnBuilder.NULL_VALUE_BLOCK, positionCount);
-      case FLOAT:
-        return new RunLengthEncodedColumn(FloatColumnBuilder.NULL_VALUE_BLOCK, positionCount);
-      case DOUBLE:
-        return new RunLengthEncodedColumn(DoubleColumnBuilder.NULL_VALUE_BLOCK, positionCount);
-      case TEXT:
-        return new RunLengthEncodedColumn(BinaryColumnBuilder.NULL_VALUE_BLOCK, positionCount);
-      default:
-        throw new IllegalArgumentException("Unknown data type: " + dataType);
-    }
-  }
-
-  @Override
-  public int getInstanceSize() {
-    return INSTANCE_SIZE;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/RunLengthColumnEncoder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/RunLengthColumnEncoder.java
deleted file mode 100644
index 9ee0665..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/RunLengthColumnEncoder.java
+++ /dev/null
@@ -1,54 +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.column;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-public class RunLengthColumnEncoder implements ColumnEncoder {
-
-  @Override
-  public Column readColumn(ByteBuffer input, TSDataType dataType, int positionCount) {
-    // Serialized data layout:
-    //    +-----------+-------------------------+
-    //    | encoding  | serialized inner column |
-    //    +-----------+-------------------------+
-    //    | byte      | list[byte]              |
-    //    +-----------+-------------------------+
-    ColumnEncoder columnEncoder = ColumnEncoderFactory.get(ColumnEncoding.deserializeFrom(input));
-    Column innerColumn = columnEncoder.readColumn(input, dataType, 1);
-    return new RunLengthEncodedColumn(innerColumn, positionCount);
-  }
-
-  @Override
-  public void writeColumn(DataOutputStream output, Column column) throws IOException {
-    Column innerColumn = ((RunLengthEncodedColumn) column).getValue();
-    if (innerColumn instanceof RunLengthEncodedColumn) {
-      throw new IOException("Unable to encode a nested RLE column.");
-    }
-
-    innerColumn.getEncoding().serializeTo(output);
-    ColumnEncoder columnEncoder = ColumnEncoderFactory.get(innerColumn.getEncoding());
-    columnEncoder.writeColumn(output, innerColumn);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/RunLengthEncodedColumn.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/RunLengthEncodedColumn.java
deleted file mode 100644
index 8db2209..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/RunLengthEncodedColumn.java
+++ /dev/null
@@ -1,216 +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.column;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.util.Arrays;
-
-import static java.lang.String.format;
-import static java.util.Objects.requireNonNull;
-import static org.apache.iotdb.tsfile.read.common.block.column.ColumnUtil.checkValidRegion;
-
-public class RunLengthEncodedColumn implements Column {
-
-  private static final int INSTANCE_SIZE =
-      (int) RamUsageEstimator.shallowSizeOfInstance(RunLengthEncodedColumn.class);
-
-  private final Column value;
-  private final int positionCount;
-
-  public RunLengthEncodedColumn(Column value, int positionCount) {
-    requireNonNull(value, "value is null");
-    if (value.getPositionCount() != 1) {
-      throw new IllegalArgumentException(
-          format(
-              "Expected value to contain a single position but has %s positions",
-              value.getPositionCount()));
-    }
-
-    if (value instanceof RunLengthEncodedColumn) {
-      this.value = ((RunLengthEncodedColumn) value).getValue();
-    } else {
-      this.value = value;
-    }
-
-    if (positionCount < 0) {
-      throw new IllegalArgumentException("positionCount is negative");
-    }
-
-    this.positionCount = positionCount;
-  }
-
-  public Column getValue() {
-    return value;
-  }
-
-  @Override
-  public TSDataType getDataType() {
-    return value.getDataType();
-  }
-
-  @Override
-  public ColumnEncoding getEncoding() {
-    return ColumnEncoding.RLE;
-  }
-
-  @Override
-  public boolean getBoolean(int position) {
-    return value.getBoolean(0);
-  }
-
-  @Override
-  public int getInt(int position) {
-    return value.getInt(0);
-  }
-
-  @Override
-  public long getLong(int position) {
-    return value.getLong(0);
-  }
-
-  @Override
-  public float getFloat(int position) {
-    return value.getFloat(0);
-  }
-
-  @Override
-  public double getDouble(int position) {
-    return value.getDouble(0);
-  }
-
-  @Override
-  public Binary getBinary(int position) {
-    return value.getBinary(0);
-  }
-
-  @Override
-  public Object getObject(int position) {
-    return value.getObject(0);
-  }
-
-  @Override
-  public boolean[] getBooleans() {
-    boolean[] res = new boolean[positionCount];
-    Arrays.fill(res, value.getBoolean(0));
-    return res;
-  }
-
-  @Override
-  public int[] getInts() {
-    int[] res = new int[positionCount];
-    Arrays.fill(res, value.getInt(0));
-    return res;
-  }
-
-  @Override
-  public long[] getLongs() {
-    long[] res = new long[positionCount];
-    Arrays.fill(res, value.getLong(0));
-    return res;
-  }
-
-  @Override
-  public float[] getFloats() {
-    float[] res = new float[positionCount];
-    Arrays.fill(res, value.getFloat(0));
-    return res;
-  }
-
-  @Override
-  public double[] getDoubles() {
-    double[] res = new double[positionCount];
-    Arrays.fill(res, value.getDouble(0));
-    return res;
-  }
-
-  @Override
-  public Binary[] getBinaries() {
-    Binary[] res = new Binary[positionCount];
-    Arrays.fill(res, value.getBinary(0));
-    return res;
-  }
-
-  @Override
-  public Object[] getObjects() {
-    Object[] res = new Object[positionCount];
-    Arrays.fill(res, value.getObject(0));
-    return res;
-  }
-
-  @Override
-  public TsPrimitiveType getTsPrimitiveType(int position) {
-    return value.getTsPrimitiveType(0);
-  }
-
-  @Override
-  public boolean mayHaveNull() {
-    return value.mayHaveNull();
-  }
-
-  @Override
-  public boolean isNull(int position) {
-    return value.isNull(0);
-  }
-
-  @Override
-  public boolean[] isNull() {
-    boolean[] res = new boolean[positionCount];
-    Arrays.fill(res, value.isNull(0));
-    return res;
-  }
-
-  @Override
-  public int getPositionCount() {
-    return positionCount;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return INSTANCE_SIZE + value.getRetainedSizeInBytes();
-  }
-
-  @Override
-  public Column getRegion(int positionOffset, int length) {
-    checkValidRegion(positionCount, positionOffset, length);
-    return new RunLengthEncodedColumn(value, length);
-  }
-
-  @Override
-  public Column subColumn(int fromIndex) {
-    if (fromIndex > positionCount) {
-      throw new IllegalArgumentException("fromIndex is not valid");
-    }
-    return new RunLengthEncodedColumn(value, positionCount - fromIndex);
-  }
-
-  @Override
-  public void reverse() {
-    // do nothing because the underlying column has only one value
-  }
-
-  @Override
-  public int getInstanceSize() {
-    return INSTANCE_SIZE;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumn.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumn.java
deleted file mode 100644
index c5cc3f5..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumn.java
+++ /dev/null
@@ -1,152 +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.column;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-
-import static org.apache.iotdb.tsfile.read.common.block.column.ColumnUtil.checkValidRegion;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfLongArray;
-
-public class TimeColumn implements Column {
-
-  private static final int INSTANCE_SIZE =
-      (int) RamUsageEstimator.shallowSizeOfInstance(LongColumn.class);
-  public static final int SIZE_IN_BYTES_PER_POSITION = Long.BYTES;
-
-  private final int arrayOffset;
-  private final int positionCount;
-
-  private final long[] values;
-
-  private final long retainedSizeInBytes;
-
-  public TimeColumn(int positionCount, long[] values) {
-    this(0, positionCount, values);
-  }
-
-  TimeColumn(int arrayOffset, int positionCount, long[] values) {
-    if (arrayOffset < 0) {
-      throw new IllegalArgumentException("arrayOffset is negative");
-    }
-    this.arrayOffset = arrayOffset;
-    if (positionCount < 0) {
-      throw new IllegalArgumentException("positionCount is negative");
-    }
-    this.positionCount = positionCount;
-
-    if (values.length - arrayOffset < positionCount) {
-      throw new IllegalArgumentException("values length is less than positionCount");
-    }
-    this.values = values;
-
-    retainedSizeInBytes = INSTANCE_SIZE + sizeOfLongArray(positionCount);
-  }
-
-  @Override
-  public TSDataType getDataType() {
-    return TSDataType.INT64;
-  }
-
-  @Override
-  public ColumnEncoding getEncoding() {
-    return ColumnEncoding.INT64_ARRAY;
-  }
-
-  @Override
-  public long getLong(int position) {
-    return values[position + arrayOffset];
-  }
-
-  @Override
-  public Object getObject(int position) {
-    return getLong(position);
-  }
-
-  public boolean mayHaveNull() {
-    return false;
-  }
-
-  @Override
-  public boolean isNull(int position) {
-    return false;
-  }
-
-  @Override
-  public boolean[] isNull() {
-    // todo
-    return null;
-  }
-
-  @Override
-  public int getPositionCount() {
-    return positionCount;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return retainedSizeInBytes;
-  }
-
-  @Override
-  public Column getRegion(int positionOffset, int length) {
-    checkValidRegion(getPositionCount(), positionOffset, length);
-    return new TimeColumn(positionOffset + arrayOffset, length, values);
-  }
-
-  @Override
-  public Column subColumn(int fromIndex) {
-    if (fromIndex > positionCount) {
-      throw new IllegalArgumentException("fromIndex is not valid");
-    }
-    return new TimeColumn(arrayOffset + fromIndex, positionCount - fromIndex, values);
-  }
-
-  @Override
-  public void reverse() {
-    for (int i = arrayOffset, j = arrayOffset + positionCount - 1; i < j; i++, j--) {
-      long time = values[i];
-      values[i] = values[j];
-      values[j] = time;
-    }
-  }
-
-  public long getStartTime() {
-    return values[arrayOffset];
-  }
-
-  public long getEndTime() {
-    return values[getPositionCount() + arrayOffset - 1];
-  }
-
-  public long[] getTimes() {
-    return values;
-  }
-
-  @Override
-  public long[] getLongs() {
-    return getTimes();
-  }
-
-  @Override
-  public int getInstanceSize() {
-    return INSTANCE_SIZE;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumnBuilder.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumnBuilder.java
deleted file mode 100644
index fa1988d..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumnBuilder.java
+++ /dev/null
@@ -1,148 +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.column;
-
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
-
-import java.util.Arrays;
-
-import static java.lang.Math.max;
-import static org.apache.iotdb.tsfile.read.common.block.column.ColumnUtil.calculateBlockResetSize;
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOf;
-
-public class TimeColumnBuilder implements ColumnBuilder {
-
-  private static final int INSTANCE_SIZE =
-      (int) RamUsageEstimator.shallowSizeOfInstance(TimeColumnBuilder.class);
-
-  private final ColumnBuilderStatus columnBuilderStatus;
-  private boolean initialized;
-  private final int initialEntryCount;
-
-  private int positionCount;
-
-  private long[] values = new long[0];
-
-  private long retainedSizeInBytes;
-
-  public TimeColumnBuilder(ColumnBuilderStatus columnBuilderStatus, int expectedEntries) {
-    this.columnBuilderStatus = columnBuilderStatus;
-    this.initialEntryCount = max(expectedEntries, 1);
-
-    updateDataSize();
-  }
-
-  @Override
-  public ColumnBuilder writeLong(long value) {
-    if (values.length <= positionCount) {
-      growCapacity();
-    }
-
-    values[positionCount] = value;
-
-    positionCount++;
-    if (columnBuilderStatus != null) {
-      columnBuilderStatus.addBytes(TimeColumn.SIZE_IN_BYTES_PER_POSITION);
-    }
-    return this;
-  }
-
-  /** Write an Object to the current entry, which should be the Long type; */
-  @Override
-  public ColumnBuilder writeObject(Object value) {
-    if (value instanceof Long) {
-      writeLong((Long) value);
-      return this;
-    }
-    throw new UnSupportedDataTypeException("LongColumn only support Long data type");
-  }
-
-  @Override
-  public ColumnBuilder write(Column column, int index) {
-    return writeLong(column.getLong(index));
-  }
-
-  @Override
-  public ColumnBuilder appendNull() {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  @Override
-  public ColumnBuilder appendNull(int nullCount) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  @Override
-  public Column build() {
-    return new TimeColumn(0, positionCount, values);
-  }
-
-  @Override
-  public TSDataType getDataType() {
-    return TSDataType.INT64;
-  }
-
-  @Override
-  public long getRetainedSizeInBytes() {
-    return retainedSizeInBytes;
-  }
-
-  @Override
-  public ColumnBuilder newColumnBuilderLike(ColumnBuilderStatus columnBuilderStatus) {
-    return new TimeColumnBuilder(columnBuilderStatus, calculateBlockResetSize(positionCount));
-  }
-
-  public int getPositionCount() {
-    return positionCount;
-  }
-
-  public long getTime(int position) {
-    checkReadablePosition(position);
-    return values[position];
-  }
-
-  private void growCapacity() {
-    int newSize;
-    if (initialized) {
-      newSize = ColumnUtil.calculateNewArraySize(values.length);
-    } else {
-      newSize = initialEntryCount;
-      initialized = true;
-    }
-
-    values = Arrays.copyOf(values, newSize);
-    updateDataSize();
-  }
-
-  private void updateDataSize() {
-    retainedSizeInBytes = INSTANCE_SIZE + sizeOf(values);
-    if (columnBuilderStatus != null) {
-      retainedSizeInBytes += ColumnBuilderStatus.INSTANCE_SIZE;
-    }
-  }
-
-  private void checkReadablePosition(int position) {
-    if (position < 0 || position >= getPositionCount()) {
-      throw new IllegalArgumentException("position is not valid");
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TsBlockSerde.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TsBlockSerde.java
deleted file mode 100644
index 2faf4d0..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TsBlockSerde.java
+++ /dev/null
@@ -1,127 +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.column;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-public class TsBlockSerde {
-
-  /**
-   * Deserialize a tsblock.
-   *
-   * @param byteBuffer serialized tsblock.
-   * @return Deserialized tsblock.
-   */
-  public TsBlock deserialize(ByteBuffer byteBuffer) {
-
-    // Serialized tsblock:
-    //    +-------------+---------------+---------+------------+-----------+----------+
-    //    | val col cnt | val col types | pos cnt | encodings  | time col  | val col  |
-    //    +-------------+---------------+---------+------------+-----------+----------+
-    //    | int32       | list[byte]    | int32   | list[byte] |  bytes    | byte     |
-    //    +-------------+---------------+---------+------------+-----------+----------+
-
-    // Value column count.
-    int valueColumnCount = byteBuffer.getInt();
-
-    // Value column data types.
-    List<TSDataType> valueColumnDataTypes = new ArrayList<>(valueColumnCount);
-    for (int i = 0; i < valueColumnCount; i++) {
-      valueColumnDataTypes.add(TSDataType.deserializeFrom(byteBuffer));
-    }
-
-    // Position count.
-    int positionCount = byteBuffer.getInt();
-
-    // Column encodings.
-    List<ColumnEncoding> columnEncodings = new ArrayList<>(valueColumnCount + 1);
-    for (int i = 0; i < valueColumnCount + 1; i++) {
-      columnEncodings.add(ColumnEncoding.deserializeFrom(byteBuffer));
-    }
-
-    // Time column.
-    TimeColumn timeColumn =
-        ColumnEncoderFactory.get(columnEncodings.get(0)).readTimeColumn(byteBuffer, positionCount);
-
-    // Value columns
-    Column[] valueColumns = new Column[valueColumnCount];
-    for (int i = 0; i < valueColumnCount; i++) {
-      // Value column.
-      valueColumns[i] =
-          ColumnEncoderFactory.get(columnEncodings.get(1 + i))
-              .readColumn(byteBuffer, valueColumnDataTypes.get(i), positionCount);
-    }
-
-    return new TsBlock(positionCount, timeColumn, valueColumns);
-  }
-
-  /**
-   * Serialize a tsblock.
-   *
-   * @param tsBlock The tsblock to serialize.
-   * @return Serialized tsblock.
-   */
-  public ByteBuffer serialize(TsBlock tsBlock) throws IOException {
-    if (tsBlock.getRetainedSizeInBytes() > Integer.MAX_VALUE) {
-      throw new IllegalStateException(
-          "TsBlock should not be that large: " + tsBlock.getRetainedSizeInBytes());
-    }
-    ByteArrayOutputStream byteArrayOutputStream =
-        new ByteArrayOutputStream((int) tsBlock.getRetainedSizeInBytes());
-    DataOutputStream dataOutputStream = new DataOutputStream(byteArrayOutputStream);
-
-    // Value column count.
-    dataOutputStream.writeInt(tsBlock.getValueColumnCount());
-
-    // Value column data types.
-    for (int i = 0; i < tsBlock.getValueColumnCount(); i++) {
-      tsBlock.getColumn(i).getDataType().serializeTo(dataOutputStream);
-    }
-
-    // Position count.
-    dataOutputStream.writeInt(tsBlock.getPositionCount());
-
-    // Column encodings.
-    tsBlock.getTimeColumn().getEncoding().serializeTo(dataOutputStream);
-    for (int i = 0; i < tsBlock.getValueColumnCount(); i++) {
-      tsBlock.getColumn(i).getEncoding().serializeTo(dataOutputStream);
-    }
-
-    // Time column.
-    ColumnEncoder columnEncoder = ColumnEncoderFactory.get(tsBlock.getTimeColumn().getEncoding());
-    columnEncoder.writeColumn(dataOutputStream, tsBlock.getTimeColumn());
-
-    for (int i = 0; i < tsBlock.getValueColumnCount(); i++) {
-      // Value column.
-      columnEncoder = ColumnEncoderFactory.get(tsBlock.getColumn(i).getEncoding());
-      columnEncoder.writeColumn(dataOutputStream, tsBlock.getColumn(i));
-    }
-
-    return ByteBuffer.wrap(byteArrayOutputStream.toByteArray());
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathNodesGenerator.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathNodesGenerator.java
deleted file mode 100644
index 7d62a62..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathNodesGenerator.java
+++ /dev/null
@@ -1,100 +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.parser;
-
-import org.apache.iotdb.tsfile.exception.PathParseException;
-
-import org.antlr.v4.runtime.CharStream;
-import org.antlr.v4.runtime.CharStreams;
-import org.antlr.v4.runtime.CommonTokenStream;
-import org.antlr.v4.runtime.atn.PredictionMode;
-import org.antlr.v4.runtime.misc.ParseCancellationException;
-import org.antlr.v4.runtime.tree.ParseTree;
-import org.apache.tsfile.parser.PathLexer;
-import org.apache.tsfile.parser.PathParser;
-
-/** convert String path to String[] nodes * */
-public class PathNodesGenerator {
-
-  private PathNodesGenerator() {
-    // forbidding instantiation
-  }
-
-  private static final PathVisitor pathVisitor = new PathVisitor();
-
-  public static String[] splitPathToNodes(String path) throws PathParseException {
-    try {
-      return invokeParser(path);
-    } catch (ParseCancellationException e) {
-      throw new PathParseException(path);
-    }
-  }
-
-  /** throw exception if path is illegal. */
-  public static void checkPath(String path) throws PathParseException {
-    try {
-      invokeParser(path);
-    } catch (ParseCancellationException e) {
-      throw new PathParseException(path);
-    }
-  }
-
-  private static String[] invokeParser(String path) {
-
-    CharStream charStream1 = CharStreams.fromString(path);
-
-    PathLexer lexer1 = new PathLexer(charStream1);
-    lexer1.removeErrorListeners();
-    lexer1.addErrorListener(PathParseError.INSTANCE);
-
-    CommonTokenStream tokens1 = new CommonTokenStream(lexer1);
-
-    PathParser pathParser1 = new PathParser(tokens1);
-    pathParser1.getInterpreter().setPredictionMode(PredictionMode.SLL);
-    pathParser1.removeErrorListeners();
-    pathParser1.addErrorListener(PathParseError.INSTANCE);
-
-    ParseTree tree;
-    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(*)
-    } catch (Exception ex) {
-      CharStream charStream2 = CharStreams.fromString(path);
-
-      PathLexer lexer2 = new PathLexer(charStream2);
-      lexer2.removeErrorListeners();
-      lexer2.addErrorListener(PathParseError.INSTANCE);
-
-      CommonTokenStream tokens2 = new CommonTokenStream(lexer2);
-
-      PathParser pathParser2 = new PathParser(tokens2);
-      pathParser2.getInterpreter().setPredictionMode(PredictionMode.LL);
-      pathParser2.removeErrorListeners();
-      pathParser2.addErrorListener(PathParseError.INSTANCE);
-
-      // STAGE 2: parser with full LL(*)
-      tree = pathParser2.path();
-      // if we get here, it's LL not SLL
-    }
-    return pathVisitor.visit(tree);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathParseError.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathParseError.java
deleted file mode 100644
index f99912d..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathParseError.java
+++ /dev/null
@@ -1,63 +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.parser;
-
-import org.antlr.v4.runtime.BaseErrorListener;
-import org.antlr.v4.runtime.Parser;
-import org.antlr.v4.runtime.RecognitionException;
-import org.antlr.v4.runtime.Recognizer;
-import org.antlr.v4.runtime.misc.IntervalSet;
-import org.antlr.v4.runtime.misc.ParseCancellationException;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-public class PathParseError extends BaseErrorListener {
-  public static final PathParseError INSTANCE = new PathParseError();
-
-  @Override
-  public void syntaxError(
-      Recognizer<?, ?> recognizer,
-      Object offendingSymbol,
-      int line,
-      int charPositionInLine,
-      String msg,
-      RecognitionException e) {
-    // make msg clearer
-    if (recognizer instanceof Parser) {
-      IntervalSet expectedTokens = ((Parser) recognizer).getExpectedTokens();
-      String expectedTokensString = expectedTokens.toString(recognizer.getVocabulary());
-      String trimmed = expectedTokensString.replace(" ", "");
-      Set<String> expectedTokenNames =
-          new HashSet<>(Arrays.asList(trimmed.substring(1, trimmed.length() - 1).split(",")));
-
-      if (expectedTokenNames.contains("ID") && expectedTokenNames.contains("QUOTED_ID")) {
-        // node name
-        if (expectedTokenNames.contains("*") && expectedTokenNames.contains("**")) {
-          msg = msg.replace(expectedTokensString, "{ID, QUOTED_ID, *, **}");
-        } else {
-          msg = msg.replace(expectedTokensString, "{ID, QUOTED_ID}");
-        }
-      }
-    }
-    throw new ParseCancellationException("line " + line + ":" + charPositionInLine + " " + msg);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathVisitor.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathVisitor.java
deleted file mode 100644
index 0c36f7a..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/parser/PathVisitor.java
+++ /dev/null
@@ -1,105 +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.parser;
-
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-
-import org.apache.commons.lang3.math.NumberUtils;
-import org.apache.tsfile.parser.PathParser;
-import org.apache.tsfile.parser.PathParser.NodeNameContext;
-import org.apache.tsfile.parser.PathParserBaseVisitor;
-
-import java.util.List;
-
-public class PathVisitor extends PathParserBaseVisitor<String[]> {
-
-  @Override
-  public String[] visitPath(PathParser.PathContext ctx) {
-    if (ctx.prefixPath() != null) {
-      return visitPrefixPath(ctx.prefixPath());
-    } else {
-      return visitSuffixPath(ctx.suffixPath());
-    }
-  }
-
-  @Override
-  public String[] visitPrefixPath(PathParser.PrefixPathContext ctx) {
-    List<NodeNameContext> nodeNames = ctx.nodeName();
-    String[] path = new String[nodeNames.size() + 1];
-    path[0] = ctx.ROOT().getText();
-    for (int i = 0; i < nodeNames.size(); i++) {
-      path[i + 1] = parseNodeName(nodeNames.get(i));
-    }
-    return path;
-  }
-
-  @Override
-  public String[] visitSuffixPath(PathParser.SuffixPathContext ctx) {
-    List<NodeNameContext> nodeNames = ctx.nodeName();
-    String[] path = new String[nodeNames.size()];
-    for (int i = 0; i < nodeNames.size(); i++) {
-      path[i] = parseNodeName(nodeNames.get(i));
-    }
-    return path;
-  }
-
-  private String parseNodeName(PathParser.NodeNameContext ctx) {
-    String nodeName = ctx.getText();
-    if (nodeName.startsWith(TsFileConstant.BACK_QUOTE_STRING)
-        && nodeName.endsWith(TsFileConstant.BACK_QUOTE_STRING)) {
-      String unWrapped = nodeName.substring(1, nodeName.length() - 1);
-      if (isRealNumber(unWrapped)
-          || !TsFileConstant.IDENTIFIER_PATTERN.matcher(unWrapped).matches()) {
-        return nodeName;
-      }
-      return unWrapped;
-    }
-    return nodeName;
-  }
-
-  /** Return true if the str is a real number. Examples: 1.0; +1.0; -1.0; 0011; 011e3; +23e-3 */
-  public static boolean isRealNumber(String str) {
-    if (str.startsWith("+") || str.startsWith("-")) {
-      String removeSign = str.substring(1);
-      if (removeSign.startsWith("+") || removeSign.startsWith("-")) {
-        return false;
-      } else {
-        str = removeSign;
-      }
-    }
-    int index = 0;
-    // remove zeros
-    for (int i = 0, n = str.length(); i < n; i++) {
-      if (str.charAt(i) != '0') {
-        index = i;
-        break;
-      }
-    }
-    if (index > 0 && (str.charAt(index) == 'e' || str.charAt(index) == 'E')) {
-      // first char encountered is e/E means the number is like: "000e38".(all leading zeros before
-      // e/E)
-      return NumberUtils.isCreatable(str.substring(index - 1));
-    } else {
-      // parse the str after removing the leading zeros
-      // Numbers like 0000 and 00.12 can also be handled by this branch
-      return NumberUtils.isCreatable(str.substring(index));
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/BinaryType.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/BinaryType.java
deleted file mode 100644
index d249a94..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/BinaryType.java
+++ /dev/null
@@ -1,55 +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.type;
-
-import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-
-public class BinaryType implements Type {
-  private static final BinaryType INSTANCE = new BinaryType();
-
-  private BinaryType() {}
-
-  @Override
-  public Binary getBinary(Column c, int position) {
-    return c.getBinary(position);
-  }
-
-  @Override
-  public void writeBinary(ColumnBuilder builder, Binary value) {
-    builder.writeBinary(value);
-  }
-
-  @Override
-  public ColumnBuilder createColumnBuilder(int expectedEntries) {
-    return new BinaryColumnBuilder(null, expectedEntries);
-  }
-
-  @Override
-  public TypeEnum getTypeEnum() {
-    return TypeEnum.BINARY;
-  }
-
-  public static BinaryType getInstance() {
-    return INSTANCE;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/BooleanType.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/BooleanType.java
deleted file mode 100644
index 1f48a3f..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/BooleanType.java
+++ /dev/null
@@ -1,55 +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.type;
-
-import org.apache.iotdb.tsfile.read.common.block.column.BooleanColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-
-public class BooleanType implements Type {
-
-  private static final BooleanType INSTANCE = new BooleanType();
-
-  private BooleanType() {}
-
-  @Override
-  public boolean getBoolean(Column c, int position) {
-    return c.getBoolean(position);
-  }
-
-  @Override
-  public void writeBoolean(ColumnBuilder builder, boolean value) {
-    builder.writeBoolean(value);
-  }
-
-  @Override
-  public ColumnBuilder createColumnBuilder(int expectedEntries) {
-    return new BooleanColumnBuilder(null, expectedEntries);
-  }
-
-  @Override
-  public TypeEnum getTypeEnum() {
-    return TypeEnum.BOOLEAN;
-  }
-
-  public static BooleanType getInstance() {
-    return INSTANCE;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/DoubleType.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/DoubleType.java
deleted file mode 100644
index eca8626..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/DoubleType.java
+++ /dev/null
@@ -1,85 +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.type;
-
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.DoubleColumnBuilder;
-
-public class DoubleType implements Type {
-
-  private static final DoubleType INSTANCE = new DoubleType();
-
-  private DoubleType() {}
-
-  @Override
-  public int getInt(Column c, int position) {
-    return (int) c.getDouble(position);
-  }
-
-  @Override
-  public long getLong(Column c, int position) {
-    return (long) c.getDouble(position);
-  }
-
-  @Override
-  public float getFloat(Column c, int position) {
-    return (float) c.getDouble(position);
-  }
-
-  @Override
-  public double getDouble(Column c, int position) {
-    return c.getDouble(position);
-  }
-
-  @Override
-  public void writeInt(ColumnBuilder builder, int value) {
-    builder.writeDouble(value);
-  }
-
-  @Override
-  public void writeLong(ColumnBuilder builder, long value) {
-    builder.writeDouble(value);
-  }
-
-  @Override
-  public void writeFloat(ColumnBuilder builder, float value) {
-    builder.writeDouble(value);
-  }
-
-  @Override
-  public void writeDouble(ColumnBuilder builder, double value) {
-    builder.writeDouble(value);
-  }
-
-  @Override
-  public ColumnBuilder createColumnBuilder(int expectedEntries) {
-    return new DoubleColumnBuilder(null, expectedEntries);
-  }
-
-  @Override
-  public TypeEnum getTypeEnum() {
-    return TypeEnum.DOUBLE;
-  }
-
-  public static DoubleType getInstance() {
-    return INSTANCE;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/FloatType.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/FloatType.java
deleted file mode 100644
index 5f93fb5..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/FloatType.java
+++ /dev/null
@@ -1,85 +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.type;
-
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.FloatColumnBuilder;
-
-public class FloatType implements Type {
-
-  private static final FloatType INSTANCE = new FloatType();
-
-  private FloatType() {}
-
-  @Override
-  public int getInt(Column c, int position) {
-    return (int) c.getFloat(position);
-  }
-
-  @Override
-  public long getLong(Column c, int position) {
-    return (long) c.getFloat(position);
-  }
-
-  @Override
-  public float getFloat(Column c, int position) {
-    return c.getFloat(position);
-  }
-
-  @Override
-  public double getDouble(Column c, int position) {
-    return c.getFloat(position);
-  }
-
-  @Override
-  public void writeInt(ColumnBuilder builder, int value) {
-    builder.writeFloat(value);
-  }
-
-  @Override
-  public void writeLong(ColumnBuilder builder, long value) {
-    builder.writeFloat(value);
-  }
-
-  @Override
-  public void writeFloat(ColumnBuilder builder, float value) {
-    builder.writeFloat(value);
-  }
-
-  @Override
-  public void writeDouble(ColumnBuilder builder, double value) {
-    builder.writeFloat((float) value);
-  }
-
-  @Override
-  public ColumnBuilder createColumnBuilder(int expectedEntries) {
-    return new FloatColumnBuilder(null, expectedEntries);
-  }
-
-  @Override
-  public TypeEnum getTypeEnum() {
-    return TypeEnum.FLOAT;
-  }
-
-  public static FloatType getInstance() {
-    return INSTANCE;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/IntType.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/IntType.java
deleted file mode 100644
index 0b90092..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/IntType.java
+++ /dev/null
@@ -1,85 +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.type;
-
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.IntColumnBuilder;
-
-public class IntType implements Type {
-
-  private static final IntType INSTANCE = new IntType();
-
-  private IntType() {}
-
-  @Override
-  public int getInt(Column c, int position) {
-    return c.getInt(position);
-  }
-
-  @Override
-  public long getLong(Column c, int position) {
-    return c.getInt(position);
-  }
-
-  @Override
-  public float getFloat(Column c, int position) {
-    return c.getInt(position);
-  }
-
-  @Override
-  public double getDouble(Column c, int position) {
-    return c.getInt(position);
-  }
-
-  @Override
-  public void writeInt(ColumnBuilder builder, int value) {
-    builder.writeInt(value);
-  }
-
-  @Override
-  public void writeLong(ColumnBuilder builder, long value) {
-    builder.writeInt((int) value);
-  }
-
-  @Override
-  public void writeFloat(ColumnBuilder builder, float value) {
-    builder.writeInt((int) value);
-  }
-
-  @Override
-  public void writeDouble(ColumnBuilder builder, double value) {
-    builder.writeInt((int) value);
-  }
-
-  @Override
-  public ColumnBuilder createColumnBuilder(int expectedEntries) {
-    return new IntColumnBuilder(null, expectedEntries);
-  }
-
-  @Override
-  public TypeEnum getTypeEnum() {
-    return TypeEnum.INT32;
-  }
-
-  public static IntType getInstance() {
-    return INSTANCE;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/LongType.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/LongType.java
deleted file mode 100644
index 451bd0f..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/LongType.java
+++ /dev/null
@@ -1,85 +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.type;
-
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.LongColumnBuilder;
-
-public class LongType implements Type {
-
-  private static final LongType INSTANCE = new LongType();
-
-  private LongType() {}
-
-  @Override
-  public int getInt(Column c, int position) {
-    return (int) c.getLong(position);
-  }
-
-  @Override
-  public long getLong(Column c, int position) {
-    return c.getLong(position);
-  }
-
-  @Override
-  public float getFloat(Column c, int position) {
-    return c.getLong(position);
-  }
-
-  @Override
-  public double getDouble(Column c, int position) {
-    return c.getLong(position);
-  }
-
-  @Override
-  public void writeInt(ColumnBuilder builder, int value) {
-    builder.writeLong(value);
-  }
-
-  @Override
-  public void writeLong(ColumnBuilder builder, long value) {
-    builder.writeLong(value);
-  }
-
-  @Override
-  public void writeFloat(ColumnBuilder builder, float value) {
-    builder.writeLong((long) value);
-  }
-
-  @Override
-  public void writeDouble(ColumnBuilder builder, double value) {
-    builder.writeLong((long) value);
-  }
-
-  @Override
-  public ColumnBuilder createColumnBuilder(int expectedEntries) {
-    return new LongColumnBuilder(null, expectedEntries);
-  }
-
-  @Override
-  public TypeEnum getTypeEnum() {
-    return TypeEnum.INT64;
-  }
-
-  public static LongType getInstance() {
-    return INSTANCE;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/Type.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/Type.java
deleted file mode 100644
index e2e6a5a..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/Type.java
+++ /dev/null
@@ -1,104 +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.type;
-
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
-
-public interface Type {
-
-  /** Gets a boolean at {@code position}. */
-  default boolean getBoolean(Column c, int position) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Gets a little endian int at {@code position}. */
-  default int getInt(Column c, int position) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Gets a little endian long at {@code position}. */
-  default long getLong(Column c, int position) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Gets a float at {@code position}. */
-  default float getFloat(Column c, int position) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Gets a double at {@code position}. */
-  default double getDouble(Column c, int position) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Gets a Binary at {@code position}. */
-  default Binary getBinary(Column c, int position) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-  /** Gets a Object at {@code position}. */
-  default Object getObject(Column c, int position) {
-    return c.getObject(position);
-  }
-
-  /** Write a boolean to the current entry; */
-  default void writeBoolean(ColumnBuilder builder, boolean value) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Write an int to the current entry; */
-  default void writeInt(ColumnBuilder builder, int value) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Write a long to the current entry; */
-  default void writeLong(ColumnBuilder builder, long value) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Write a float to the current entry; */
-  default void writeFloat(ColumnBuilder builder, float value) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Write a double to the current entry; */
-  default void writeDouble(ColumnBuilder builder, double value) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Write a Binary to the current entry; */
-  default void writeBinary(ColumnBuilder builder, Binary value) {
-    throw new UnsupportedOperationException(getClass().getName());
-  }
-
-  /** Write a Object to the current entry; */
-  default void writeObject(ColumnBuilder builder, Object value) {
-    builder.writeObject(value);
-  }
-
-  /**
-   * Creates the preferred column builder for this type. This is the builder used to store values
-   * after an expression projection within the read.
-   */
-  ColumnBuilder createColumnBuilder(int expectedEntries);
-
-  TypeEnum getTypeEnum();
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/TypeEnum.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/TypeEnum.java
deleted file mode 100644
index 83b9149..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/TypeEnum.java
+++ /dev/null
@@ -1,34 +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.type;
-
-public enum TypeEnum {
-  INT32,
-
-  INT64,
-
-  FLOAT,
-
-  DOUBLE,
-
-  BOOLEAN,
-
-  BINARY
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/TypeFactory.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/TypeFactory.java
deleted file mode 100644
index ed52a9f..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/type/TypeFactory.java
+++ /dev/null
@@ -1,49 +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.type;
-
-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:
-        return IntType.getInstance();
-      case INT64:
-        return LongType.getInstance();
-      case FLOAT:
-        return FloatType.getInstance();
-      case DOUBLE:
-        return DoubleType.getInstance();
-      case BOOLEAN:
-        return BooleanType.getInstance();
-      case TEXT:
-        return BinaryType.getInstance();
-      default:
-        throw new UnsupportedOperationException(
-            String.format("Invalid TSDataType for TypeFactory: %s", tsDataType));
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/CachedChunkLoaderImpl.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/CachedChunkLoaderImpl.java
deleted file mode 100644
index 15c5be7..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/CachedChunkLoaderImpl.java
+++ /dev/null
@@ -1,144 +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.controller;
-
-import org.apache.iotdb.tsfile.common.cache.LRUCache;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.reader.IChunkReader;
-import org.apache.iotdb.tsfile.read.reader.chunk.ChunkReader;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.List;
-import java.util.Objects;
-
-/** Read one Chunk and cache it into a LRUCache, only used in tsfile module. */
-public class CachedChunkLoaderImpl implements IChunkLoader {
-
-  private static final int DEFAULT_CHUNK_CACHE_SIZE = 1000;
-  private TsFileSequenceReader reader;
-  private LRUCache<ChunkCacheKey, Chunk> chunkCache;
-
-  public CachedChunkLoaderImpl(TsFileSequenceReader fileSequenceReader) {
-    this(fileSequenceReader, DEFAULT_CHUNK_CACHE_SIZE);
-  }
-
-  /**
-   * constructor of ChunkLoaderImpl.
-   *
-   * @param fileSequenceReader file sequence reader
-   * @param cacheSize cache size
-   */
-  public CachedChunkLoaderImpl(TsFileSequenceReader fileSequenceReader, int cacheSize) {
-
-    this.reader = fileSequenceReader;
-
-    chunkCache =
-        new LRUCache<ChunkCacheKey, Chunk>(cacheSize) {
-
-          @Override
-          protected Chunk loadObjectByKey(ChunkCacheKey chunkCacheKey) throws IOException {
-            return reader.readMemChunk(chunkCacheKey);
-          }
-        };
-  }
-
-  @Override
-  public Chunk loadChunk(ChunkMetadata chunkMetaData) throws IOException {
-    Chunk chunk = chunkCache.get(new ChunkCacheKey(chunkMetaData));
-    return new Chunk(
-        chunk.getHeader(),
-        chunk.getData().duplicate(),
-        chunkMetaData.getDeleteIntervalList(),
-        chunkMetaData.getStatistics());
-  }
-
-  @Override
-  public void close() throws IOException {
-    reader.close();
-  }
-
-  @Override
-  public IChunkReader getChunkReader(IChunkMetadata chunkMetaData, Filter globalTimeFilter)
-      throws IOException {
-    Chunk chunk = chunkCache.get(new ChunkCacheKey((ChunkMetadata) chunkMetaData));
-    return new ChunkReader(
-        new Chunk(
-            chunk.getHeader(),
-            chunk.getData().duplicate(),
-            chunkMetaData.getDeleteIntervalList(),
-            chunkMetaData.getStatistics()),
-        globalTimeFilter);
-  }
-
-  public static class ChunkCacheKey {
-
-    private final Long offsetOfChunkHeader;
-    private final String measurementUid;
-    private final List<TimeRange> deleteIntervalList;
-    private final Statistics<? extends Serializable> statistics;
-
-    public ChunkCacheKey(ChunkMetadata chunkMetadata) {
-      offsetOfChunkHeader = chunkMetadata.getOffsetOfChunkHeader();
-      measurementUid = chunkMetadata.getMeasurementUid();
-      deleteIntervalList = chunkMetadata.getDeleteIntervalList();
-      statistics = chunkMetadata.getStatistics();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-      if (this == o) {
-        return true;
-      }
-      if (o == null || getClass() != o.getClass()) {
-        return false;
-      }
-      ChunkCacheKey that = (ChunkCacheKey) o;
-      return Objects.equals(offsetOfChunkHeader, that.offsetOfChunkHeader);
-    }
-
-    @Override
-    public int hashCode() {
-      return Objects.hash(offsetOfChunkHeader);
-    }
-
-    public Long getOffsetOfChunkHeader() {
-      return offsetOfChunkHeader;
-    }
-
-    public String getMeasurementUid() {
-      return measurementUid;
-    }
-
-    public List<TimeRange> getDeleteIntervalList() {
-      return deleteIntervalList;
-    }
-
-    public Statistics<? extends Serializable> getStatistics() {
-      return statistics;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IChunkLoader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IChunkLoader.java
deleted file mode 100644
index be8da07..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IChunkLoader.java
+++ /dev/null
@@ -1,40 +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.controller;
-
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.reader.IChunkReader;
-
-import java.io.IOException;
-
-public interface IChunkLoader {
-
-  /** read all content of any chunk. */
-  Chunk loadChunk(ChunkMetadata chunkMetaData) throws IOException;
-
-  /** close the file reader. */
-  void close() throws IOException;
-
-  IChunkReader getChunkReader(IChunkMetadata chunkMetaData, Filter globalTimeFilter)
-      throws IOException;
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IChunkMetadataLoader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IChunkMetadataLoader.java
deleted file mode 100644
index 5a43921..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IChunkMetadataLoader.java
+++ /dev/null
@@ -1,31 +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.controller;
-
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata;
-
-import java.util.List;
-
-public interface IChunkMetadataLoader {
-
-  /** read all chunk metadata of one time series in one file. */
-  List<IChunkMetadata> loadChunkMetadataList(ITimeSeriesMetadata timeSeriesMetadata);
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IMetadataQuerier.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IMetadataQuerier.java
deleted file mode 100644
index d3f1c9c..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/IMetadataQuerier.java
+++ /dev/null
@@ -1,68 +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.controller;
-
-import org.apache.iotdb.tsfile.exception.write.NoMeasurementException;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-
-public interface IMetadataQuerier {
-
-  List<IChunkMetadata> getChunkMetaDataList(Path path) throws IOException;
-
-  Map<Path, List<IChunkMetadata>> getChunkMetaDataMap(List<Path> paths) throws IOException;
-
-  TsFileMetadata getWholeFileMetadata();
-
-  /**
-   * this will load all chunk metadata of given paths into cache.
-   *
-   * <p>call this method before calling getChunkMetaDataList() will accelerate the reading of chunk
-   * metadata, which will only read TsMetaData once
-   */
-  void loadChunkMetaDatas(List<Path> paths) throws IOException;
-
-  /**
-   * @return the corresponding data type.
-   * @throws NoMeasurementException if the measurement not exists.
-   */
-  TSDataType getDataType(Path path) throws NoMeasurementException, IOException;
-
-  /**
-   * Convert the space partition constraint to the time partition constraint.
-   *
-   * @param paths selected paths in a query expression
-   * @param spacePartitionStartPos the start position of the space partition
-   * @param spacePartitionEndPos the end position of the space partition
-   * @return the converted time partition constraint
-   */
-  List<TimeRange> convertSpace2TimePartition(
-      List<Path> paths, long spacePartitionStartPos, long spacePartitionEndPos) throws IOException;
-
-  /** clear caches (if used) to release memory. */
-  void clear();
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/MetadataQuerierByFileImpl.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/MetadataQuerierByFileImpl.java
deleted file mode 100644
index c50470a..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/MetadataQuerierByFileImpl.java
+++ /dev/null
@@ -1,258 +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.controller;
-
-import org.apache.iotdb.tsfile.common.cache.LRUCache;
-import org.apache.iotdb.tsfile.file.metadata.AlignedTimeSeriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader.LocateStatus;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.TreeMap;
-
-public class MetadataQuerierByFileImpl implements IMetadataQuerier {
-
-  // number of cache entries (path -> List<ChunkMetadata>)
-  private static final int CACHED_ENTRY_NUMBER = 1000;
-
-  private TsFileMetadata fileMetaData;
-
-  // TimeseriesPath -> List<IChunkMetadata>
-  private LRUCache<Path, List<IChunkMetadata>> chunkMetaDataCache;
-
-  private TsFileSequenceReader tsFileReader;
-
-  /** Constructor of MetadataQuerierByFileImpl. */
-  public MetadataQuerierByFileImpl(TsFileSequenceReader tsFileReader) throws IOException {
-    this.tsFileReader = tsFileReader;
-    this.fileMetaData = tsFileReader.readFileMetadata();
-    chunkMetaDataCache =
-        new LRUCache<Path, List<IChunkMetadata>>(CACHED_ENTRY_NUMBER) {
-          @Override
-          public List<IChunkMetadata> loadObjectByKey(Path key) throws IOException {
-            return loadChunkMetadata(key);
-          }
-        };
-  }
-
-  @Override
-  public List<IChunkMetadata> getChunkMetaDataList(Path timeseriesPath) throws IOException {
-    return new ArrayList<>(chunkMetaDataCache.get(timeseriesPath));
-  }
-
-  @Override
-  public Map<Path, List<IChunkMetadata>> getChunkMetaDataMap(List<Path> paths) throws IOException {
-    Map<Path, List<IChunkMetadata>> chunkMetaDatas = new HashMap<>();
-    for (Path path : paths) {
-      if (!chunkMetaDatas.containsKey(path)) {
-        chunkMetaDatas.put(path, new ArrayList<>());
-      }
-      chunkMetaDatas.get(path).addAll(getChunkMetaDataList(path));
-    }
-    return chunkMetaDatas;
-  }
-
-  @Override
-  public TsFileMetadata getWholeFileMetadata() {
-    return fileMetaData;
-  }
-
-  @Override
-  @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning
-  public void loadChunkMetaDatas(List<Path> paths) throws IOException {
-    // group measurements by device
-    TreeMap<IDeviceID, Set<String>> deviceMeasurementsMap = new TreeMap<>();
-    for (Path path : paths) {
-      if (!deviceMeasurementsMap.containsKey(path.getIDeviceID())) {
-        deviceMeasurementsMap.put(path.getIDeviceID(), new HashSet<>());
-      }
-      deviceMeasurementsMap.get(path.getIDeviceID()).add(path.getMeasurement());
-    }
-    int count = 0;
-    boolean enough = false;
-    for (Map.Entry<IDeviceID, Set<String>> deviceMeasurements : deviceMeasurementsMap.entrySet()) {
-      if (enough) {
-        break;
-      }
-      IDeviceID selectedDevice = deviceMeasurements.getKey();
-      Set<String> selectedMeasurements = deviceMeasurements.getValue();
-      List<IDeviceID> devices = this.tsFileReader.getAllDevices();
-      IDeviceID[] deviceNames = devices.toArray(new IDeviceID[0]);
-      if (Arrays.binarySearch(deviceNames, selectedDevice) < 0) {
-        continue;
-      }
-
-      List<ITimeSeriesMetadata> timeseriesMetaDataList =
-          tsFileReader.readITimeseriesMetadata(selectedDevice, selectedMeasurements);
-      for (ITimeSeriesMetadata timeseriesMetadata : timeseriesMetaDataList) {
-        List<IChunkMetadata> chunkMetadataList =
-            tsFileReader.readIChunkMetaDataList(timeseriesMetadata);
-        String measurementId;
-        if (timeseriesMetadata instanceof AlignedTimeSeriesMetadata) {
-          measurementId =
-              ((AlignedTimeSeriesMetadata) timeseriesMetadata)
-                  .getValueTimeseriesMetadataList()
-                  .get(0)
-                  .getMeasurementId();
-        } else {
-          measurementId = ((TimeseriesMetadata) timeseriesMetadata).getMeasurementId();
-        }
-        this.chunkMetaDataCache.put(
-            new Path(selectedDevice, measurementId, true), chunkMetadataList);
-        count += chunkMetadataList.size();
-        if (count == CACHED_ENTRY_NUMBER) {
-          enough = true;
-          break;
-        }
-      }
-    }
-  }
-
-  @Override
-  public TSDataType getDataType(Path path) throws IOException {
-    if (tsFileReader.getChunkMetadataList(path) == null
-        || tsFileReader.getChunkMetadataList(path).isEmpty()) {
-      return null;
-    }
-    return tsFileReader.getChunkMetadataList(path).get(0).getDataType();
-  }
-
-  private List<IChunkMetadata> loadChunkMetadata(Path path) throws IOException {
-    return tsFileReader.getIChunkMetadataList(path);
-  }
-
-  @Override
-  @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning
-  public List<TimeRange> convertSpace2TimePartition(
-      List<Path> paths, long spacePartitionStartPos, long spacePartitionEndPos) throws IOException {
-    if (spacePartitionStartPos > spacePartitionEndPos) {
-      throw new IllegalArgumentException(
-          "'spacePartitionStartPos' should not be larger than 'spacePartitionEndPos'.");
-    }
-
-    // (1) get timeRangesInCandidates and timeRangesBeforeCandidates by iterating
-    // through the metadata
-    ArrayList<TimeRange> timeRangesInCandidates = new ArrayList<>();
-    ArrayList<TimeRange> timeRangesBeforeCandidates = new ArrayList<>();
-
-    // group measurements by device
-
-    TreeMap<IDeviceID, Set<String>> deviceMeasurementsMap = new TreeMap<>();
-    for (Path path : paths) {
-      deviceMeasurementsMap
-          .computeIfAbsent(path.getIDeviceID(), key -> new HashSet<>())
-          .add(path.getMeasurement());
-    }
-    for (Map.Entry<IDeviceID, Set<String>> deviceMeasurements : deviceMeasurementsMap.entrySet()) {
-      IDeviceID selectedDevice = deviceMeasurements.getKey();
-      Set<String> selectedMeasurements = deviceMeasurements.getValue();
-
-      // measurement -> ChunkMetadata list
-      Map<String, List<ChunkMetadata>> seriesMetadatas =
-          tsFileReader.readChunkMetadataInDevice(selectedDevice);
-
-      for (Entry<String, List<ChunkMetadata>> seriesMetadata : seriesMetadatas.entrySet()) {
-
-        if (!selectedMeasurements.contains(seriesMetadata.getKey())) {
-          continue;
-        }
-
-        for (IChunkMetadata chunkMetadata : seriesMetadata.getValue()) {
-          LocateStatus location =
-              checkLocateStatus(chunkMetadata, spacePartitionStartPos, spacePartitionEndPos);
-          if (location == LocateStatus.AFTER) {
-            break;
-          }
-
-          if (location == LocateStatus.IN) {
-            timeRangesInCandidates.add(
-                new TimeRange(chunkMetadata.getStartTime(), chunkMetadata.getEndTime()));
-          } else {
-            timeRangesBeforeCandidates.add(
-                new TimeRange(chunkMetadata.getStartTime(), chunkMetadata.getEndTime()));
-          }
-        }
-      }
-    }
-
-    // (2) sort and merge the timeRangesInCandidates
-    ArrayList<TimeRange> timeRangesIn =
-        new ArrayList<>(TimeRange.sortAndMerge(timeRangesInCandidates));
-    if (timeRangesIn.isEmpty()) {
-      return Collections.emptyList(); // return an empty list
-    }
-
-    // (3) sort and merge the timeRangesBeforeCandidates
-    ArrayList<TimeRange> timeRangesBefore =
-        new ArrayList<>(TimeRange.sortAndMerge(timeRangesBeforeCandidates));
-
-    // (4) calculate the remaining time ranges
-    List<TimeRange> resTimeRanges = new ArrayList<>();
-    for (TimeRange in : timeRangesIn) {
-      ArrayList<TimeRange> remains = new ArrayList<>(in.getRemains(timeRangesBefore));
-      resTimeRanges.addAll(remains);
-    }
-
-    return resTimeRanges;
-  }
-
-  /**
-   * Check the location of a given chunkGroupMetaData with respect to a space partition constraint.
-   *
-   * @param chunkMetaData the given chunkMetaData
-   * @param spacePartitionStartPos the start position of the space partition
-   * @param spacePartitionEndPos the end position of the space partition
-   * @return LocateStatus
-   */
-  public static LocateStatus checkLocateStatus(
-      IChunkMetadata chunkMetaData, long spacePartitionStartPos, long spacePartitionEndPos) {
-    long startOffsetOfChunk = chunkMetaData.getOffsetOfChunkHeader();
-    if (spacePartitionStartPos <= startOffsetOfChunk && startOffsetOfChunk < spacePartitionEndPos) {
-      return LocateStatus.IN;
-    } else if (startOffsetOfChunk < spacePartitionStartPos) {
-      return LocateStatus.BEFORE;
-    } else {
-      return LocateStatus.AFTER;
-    }
-  }
-
-  @Override
-  public void clear() {
-    chunkMetaDataCache.clear();
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/ExpressionType.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/ExpressionType.java
deleted file mode 100644
index ad4ef2c..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/ExpressionType.java
+++ /dev/null
@@ -1,48 +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;
-
-public enum ExpressionType {
-
-  /** Represent the relationship between the left expression and the right expression is AND */
-  AND,
-
-  /** Represent the relationship between the left expression and the right expression is OR */
-  OR,
-
-  /**
-   * Represents that the expression is a leaf node in the expression tree and the type is value
-   * filtering
-   */
-  SERIES,
-
-  /**
-   * Represents that the expression is a leaf node in the expression tree and the type is time
-   * filtering
-   */
-  GLOBAL_TIME,
-
-  /**
-   * This type is used in the pruning process of expression tree in the distributed reading process.
-   * When pruning a expression tree for a data group, leaf nodes belonging to other data groups will
-   * be set to that type.
-   */
-  TRUE
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IBinaryExpression.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IBinaryExpression.java
deleted file mode 100644
index a1198a6..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IBinaryExpression.java
+++ /dev/null
@@ -1,31 +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;
-
-public interface IBinaryExpression extends IExpression {
-
-  IExpression getLeft();
-
-  IExpression getRight();
-
-  void setLeft(IExpression leftExpression);
-
-  void setRight(IExpression rightExpression);
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IExpression.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IExpression.java
deleted file mode 100644
index 6cfd381..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IExpression.java
+++ /dev/null
@@ -1,32 +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;
-
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-
-public interface IExpression extends Serializable {
-
-  ExpressionType getType();
-
-  IExpression clone();
-
-  void serialize(ByteBuffer byteBuffer);
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IUnaryExpression.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IUnaryExpression.java
deleted file mode 100644
index e206e79..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/IUnaryExpression.java
+++ /dev/null
@@ -1,29 +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;
-
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-
-public interface IUnaryExpression extends IExpression {
-
-  Filter getFilter();
-
-  void setFilter(Filter filter);
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/QueryExpression.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/QueryExpression.java
deleted file mode 100644
index 8f64792..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/QueryExpression.java
+++ /dev/null
@@ -1,103 +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;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Path;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-public class QueryExpression implements Serializable {
-
-  private List<Path> selectedSeries;
-  private List<TSDataType> dataTypes;
-  private IExpression expression;
-  private boolean hasQueryFilter;
-
-  private QueryExpression() {
-    selectedSeries = new ArrayList<>();
-    hasQueryFilter = false;
-  }
-
-  public static QueryExpression create() {
-    return new QueryExpression();
-  }
-
-  public static QueryExpression create(List<Path> selectedSeries, IExpression expression) {
-    QueryExpression ret = new QueryExpression();
-    ret.selectedSeries = selectedSeries;
-    ret.expression = expression;
-    ret.hasQueryFilter = expression != null;
-    return ret;
-  }
-
-  public QueryExpression addSelectedPath(Path path) {
-    this.selectedSeries.add(path);
-    return this;
-  }
-
-  public QueryExpression setSelectSeries(List<Path> selectedSeries) {
-    this.selectedSeries = selectedSeries;
-    return this;
-  }
-
-  public IExpression getExpression() {
-    return expression;
-  }
-
-  public QueryExpression setExpression(IExpression expression) {
-    if (expression != null) {
-      this.expression = expression;
-      hasQueryFilter = true;
-    }
-    return this;
-  }
-
-  public List<Path> getSelectedSeries() {
-    return selectedSeries;
-  }
-
-  @Override
-  public String toString() {
-    StringBuilder stringBuilder =
-        new StringBuilder("\n\t[Selected Series]:")
-            .append(selectedSeries)
-            .append("\n\t[TSDataType]:")
-            .append(dataTypes)
-            .append("\n\t[expression]:")
-            .append(expression);
-    return stringBuilder.toString();
-  }
-
-  public boolean hasQueryFilter() {
-    return hasQueryFilter;
-  }
-
-  public List<TSDataType> getDataTypes() {
-    return dataTypes;
-  }
-
-  public QueryExpression setDataTypes(List<TSDataType> dataTypes) {
-    this.dataTypes = dataTypes;
-    return this;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/BinaryExpression.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/BinaryExpression.java
deleted file mode 100644
index d98fcab..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/BinaryExpression.java
+++ /dev/null
@@ -1,189 +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.impl;
-
-import org.apache.iotdb.tsfile.read.expression.ExpressionType;
-import org.apache.iotdb.tsfile.read.expression.IBinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.util.Objects;
-
-public abstract class BinaryExpression implements IBinaryExpression, Serializable {
-
-  private static final long serialVersionUID = -711801318534904452L;
-
-  public static AndExpression and(IExpression left, IExpression right) {
-    return new AndExpression(left, right);
-  }
-
-  public static OrExpression or(IExpression left, IExpression right) {
-    return new OrExpression(left, right);
-  }
-
-  @Override
-  public abstract IExpression clone();
-
-  protected static class AndExpression extends BinaryExpression {
-
-    private IExpression left;
-    private IExpression right;
-
-    public AndExpression(IExpression left, IExpression right) {
-      this.left = left;
-      this.right = right;
-    }
-
-    @Override
-    public IExpression getLeft() {
-      return left;
-    }
-
-    @Override
-    public IExpression getRight() {
-      return right;
-    }
-
-    @Override
-    public void setLeft(IExpression leftExpression) {
-      this.left = leftExpression;
-    }
-
-    @Override
-    public void setRight(IExpression rightExpression) {
-      this.right = rightExpression;
-    }
-
-    @Override
-    public ExpressionType getType() {
-      return ExpressionType.AND;
-    }
-
-    @Override
-    public IExpression clone() {
-      return new AndExpression(left.clone(), right.clone());
-    }
-
-    @Override
-    public void serialize(ByteBuffer byteBuffer) {
-      ReadWriteIOUtils.write((byte) getType().ordinal(), byteBuffer);
-      left.serialize(byteBuffer);
-      right.serialize(byteBuffer);
-    }
-
-    @Override
-    public String toString() {
-      return "[" + left + " && " + right + "]";
-    }
-
-    @Override
-    public boolean equals(Object o) {
-      if (this == o) {
-        return true;
-      }
-
-      if (o == null || getClass() != o.getClass()) {
-        return false;
-      }
-
-      AndExpression that = (AndExpression) o;
-      return Objects.equals(toString(), that.toString());
-    }
-
-    @Override
-    public int hashCode() {
-      return Objects.hash(toString());
-    }
-  }
-
-  protected static class OrExpression extends BinaryExpression {
-
-    private IExpression left;
-    private IExpression right;
-
-    public OrExpression(IExpression left, IExpression right) {
-      this.left = left;
-      this.right = right;
-    }
-
-    @Override
-    public IExpression getLeft() {
-      return left;
-    }
-
-    @Override
-    public IExpression getRight() {
-      return right;
-    }
-
-    @Override
-    public void setLeft(IExpression leftExpression) {
-      this.left = leftExpression;
-    }
-
-    @Override
-    public void setRight(IExpression rightExpression) {
-      this.right = rightExpression;
-    }
-
-    @Override
-    public ExpressionType getType() {
-      return ExpressionType.OR;
-    }
-
-    @Override
-    public IExpression clone() {
-      return new OrExpression(left.clone(), right.clone());
-    }
-
-    @Override
-    public void serialize(ByteBuffer byteBuffer) {
-      ReadWriteIOUtils.write((byte) getType().ordinal(), byteBuffer);
-      left.serialize(byteBuffer);
-      right.serialize(byteBuffer);
-    }
-
-    @Override
-    public String toString() {
-      return "[" + left + " || " + right + "]";
-    }
-
-    @Override
-    public boolean equals(Object o) {
-      if (this == o) {
-        return true;
-      }
-
-      if (o == null || getClass() != o.getClass()) {
-        return false;
-      }
-
-      OrExpression that = (OrExpression) o;
-      return Objects.equals(toString(), that.toString());
-    }
-
-    @Override
-    public int hashCode() {
-      return Objects.hash(toString());
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/GlobalTimeExpression.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/GlobalTimeExpression.java
deleted file mode 100644
index 63853da..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/GlobalTimeExpression.java
+++ /dev/null
@@ -1,99 +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.impl;
-
-import org.apache.iotdb.tsfile.read.expression.ExpressionType;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.IUnaryExpression;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.util.Objects;
-
-public class GlobalTimeExpression implements IUnaryExpression, Serializable {
-
-  private static final long serialVersionUID = 1146132942359113670L;
-  private Filter filter;
-
-  public GlobalTimeExpression(Filter filter) {
-    this.filter = filter;
-  }
-
-  @Override
-  public Filter getFilter() {
-    return filter;
-  }
-
-  @Override
-  public void setFilter(Filter filter) {
-    this.filter = filter;
-  }
-
-  @Override
-  public ExpressionType getType() {
-    return ExpressionType.GLOBAL_TIME;
-  }
-
-  @Override
-  public IExpression clone() {
-    return new GlobalTimeExpression(filter.copy());
-  }
-
-  @Override
-  public void serialize(ByteBuffer byteBuffer) {
-    try {
-      ReadWriteIOUtils.write((byte) getType().ordinal(), byteBuffer);
-      filter.serialize(byteBuffer);
-    } catch (IOException e) {
-      // ignored
-    }
-  }
-
-  public static GlobalTimeExpression deserialize(ByteBuffer byteBuffer) {
-    return new GlobalTimeExpression(Filter.deserialize(byteBuffer));
-  }
-
-  @Override
-  public String toString() {
-    return "[" + this.filter + "]";
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-
-    GlobalTimeExpression that = (GlobalTimeExpression) o;
-    return Objects.equals(toString(), that.toString());
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(toString());
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/SingleSeriesExpression.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/SingleSeriesExpression.java
deleted file mode 100644
index 2bdb2f9..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/impl/SingleSeriesExpression.java
+++ /dev/null
@@ -1,107 +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.impl;
-
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.expression.ExpressionType;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.IUnaryExpression;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.util.Objects;
-
-public class SingleSeriesExpression implements IUnaryExpression, Serializable {
-
-  private static final long serialVersionUID = 7131207370394865228L;
-  private Path seriesPath;
-  private Filter filter;
-
-  public SingleSeriesExpression(Path seriesDescriptor, Filter filter) {
-    this.seriesPath = seriesDescriptor;
-    this.filter = filter;
-  }
-
-  @Override
-  public ExpressionType getType() {
-    return ExpressionType.SERIES;
-  }
-
-  @Override
-  public IExpression clone() {
-    return new SingleSeriesExpression(seriesPath.clone(), filter.copy());
-  }
-
-  @Override
-  public void serialize(ByteBuffer byteBuffer) {
-    try {
-      ReadWriteIOUtils.write((byte) getType().ordinal(), byteBuffer);
-      seriesPath.serialize(byteBuffer);
-      filter.serialize(byteBuffer);
-    } catch (IOException e) {
-      // ignored
-    }
-  }
-
-  @Override
-  public Filter getFilter() {
-    return filter;
-  }
-
-  @Override
-  public void setFilter(Filter filter) {
-    this.filter = filter;
-  }
-
-  @Override
-  public String toString() {
-    return "[" + seriesPath + ":" + filter + "]";
-  }
-
-  public Path getSeriesPath() {
-    return this.seriesPath;
-  }
-
-  public void setSeriesPath(Path seriesPath) {
-    this.seriesPath = seriesPath;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-
-    SingleSeriesExpression that = (SingleSeriesExpression) o;
-    return Objects.equals(toString(), that.toString());
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(toString());
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/util/ExpressionOptimizer.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/util/ExpressionOptimizer.java
deleted file mode 100644
index accd871..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/expression/util/ExpressionOptimizer.java
+++ /dev/null
@@ -1,240 +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.exception.filter.QueryFilterOptimizationException;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.expression.ExpressionType;
-import org.apache.iotdb.tsfile.read.expression.IBinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.IUnaryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-
-import java.util.List;
-
-public class ExpressionOptimizer {
-
-  private ExpressionOptimizer() {}
-
-  public static ExpressionOptimizer getInstance() {
-    return QueryFilterOptimizerHelper.INSTANCE;
-  }
-
-  /**
-   * try to remove GlobalTimeExpression.
-   *
-   * @param expression IExpression to be transferred
-   * @param selectedSeries selected series
-   * @return an executable query filter, whether a GlobalTimeExpression or All leaf nodes are
-   *     SingleSeriesExpression
-   */
-  public IExpression optimize(IExpression expression, List<Path> selectedSeries)
-      throws QueryFilterOptimizationException {
-    if (expression instanceof IUnaryExpression) {
-      return expression;
-    } else if (expression instanceof IBinaryExpression) {
-      ExpressionType relation = expression.getType();
-      IExpression left = ((IBinaryExpression) expression).getLeft();
-      IExpression right = ((IBinaryExpression) expression).getRight();
-      if (left.getType() == ExpressionType.GLOBAL_TIME
-          && right.getType() == ExpressionType.GLOBAL_TIME) {
-        return combineTwoGlobalTimeFilter(
-            (GlobalTimeExpression) left, (GlobalTimeExpression) right, expression.getType());
-      } else if (left.getType() == ExpressionType.GLOBAL_TIME
-          && right.getType() != ExpressionType.GLOBAL_TIME) {
-        return handleOneGlobalTimeFilter(
-            (GlobalTimeExpression) left, right, selectedSeries, relation);
-      } else if (left.getType() != ExpressionType.GLOBAL_TIME
-          && right.getType() == ExpressionType.GLOBAL_TIME) {
-        return handleOneGlobalTimeFilter(
-            (GlobalTimeExpression) right, left, selectedSeries, relation);
-      } else if (left.getType() != ExpressionType.GLOBAL_TIME
-          && right.getType() != ExpressionType.GLOBAL_TIME) {
-        try {
-          IExpression regularLeft = optimize(left, selectedSeries);
-          IExpression regularRight = optimize(right, selectedSeries);
-          IBinaryExpression midRet = null;
-          if (relation == ExpressionType.AND) {
-            midRet = BinaryExpression.and(regularLeft, regularRight);
-          } else if (relation == ExpressionType.OR) {
-            midRet = BinaryExpression.or(regularLeft, regularRight);
-          } else {
-            throw new UnsupportedOperationException("unsupported IExpression type: " + relation);
-          }
-          if (midRet.getLeft().getType() == ExpressionType.GLOBAL_TIME
-              || midRet.getRight().getType() == ExpressionType.GLOBAL_TIME) {
-            return optimize(midRet, selectedSeries);
-          } else {
-            return midRet;
-          }
-        } catch (StackOverflowError stackOverflowError) {
-          throw new QueryFilterOptimizationException("StackOverflowError is encountered.");
-        }
-      }
-    }
-    throw new UnsupportedOperationException(
-        "unknown IExpression type: " + expression.getClass().getName());
-  }
-
-  private IExpression handleOneGlobalTimeFilter(
-      GlobalTimeExpression globalTimeExpression,
-      IExpression expression,
-      List<Path> selectedSeries,
-      ExpressionType relation)
-      throws QueryFilterOptimizationException {
-    IExpression regularRightIExpression = optimize(expression, selectedSeries);
-    if (regularRightIExpression instanceof GlobalTimeExpression) {
-      return combineTwoGlobalTimeFilter(
-          globalTimeExpression, (GlobalTimeExpression) regularRightIExpression, relation);
-    }
-    if (relation == ExpressionType.AND) {
-      addTimeFilterToQueryFilter((globalTimeExpression).getFilter(), regularRightIExpression);
-      return regularRightIExpression;
-    } else if (relation == ExpressionType.OR) {
-      IExpression afterTransform =
-          pushGlobalTimeFilterToAllSeries(globalTimeExpression, selectedSeries);
-      return mergeSecondTreeToFirstTree(afterTransform, regularRightIExpression);
-    }
-    throw new QueryFilterOptimizationException("unknown relation in IExpression:" + relation);
-  }
-
-  /**
-   * This method merge the second input, which is of tree structure, to the first parameter. It
-   * visits all leaf nodes, which are SingleSeriesExpressions, or AndExpression in right Expression,
-   * merge them to the right position in leftExpression.
-   *
-   * @param leftExpression The IExpression transformed from GlobalTimeExpression, which might have
-   *     already be updated and merged.
-   * @param rightExpression The IExpression to be merged into the first IExpression
-   * @return a merged IExpression, which is initially based on the input leftExpression
-   */
-  private IExpression mergeSecondTreeToFirstTree(
-      IExpression leftExpression, IExpression rightExpression) {
-    if (rightExpression.getType() == ExpressionType.SERIES) {
-      SingleSeriesExpression leaf = (SingleSeriesExpression) rightExpression;
-      updateFilterWithOr(leftExpression, leaf.getFilter(), leaf.getSeriesPath());
-      return leftExpression;
-    } else if (rightExpression.getType() == ExpressionType.OR) {
-      IExpression leftChild = ((BinaryExpression) rightExpression).getLeft();
-      IExpression rightChild = ((BinaryExpression) rightExpression).getRight();
-      leftExpression = mergeSecondTreeToFirstTree(leftExpression, leftChild);
-      leftExpression = mergeSecondTreeToFirstTree(leftExpression, rightChild);
-      return leftExpression;
-    } else {
-      return BinaryExpression.or(leftExpression, rightExpression);
-    }
-  }
-
-  /**
-   * This method search the node in the input expression, whose path is identical to the input path,
-   * then merges its filter and the input filter with relation OR.
-   *
-   * @return true if the input filter is merged.
-   */
-  private boolean updateFilterWithOr(IExpression expression, Filter filter, Path path) {
-    if (expression.getType() == ExpressionType.SERIES
-        && ((SingleSeriesExpression) expression).getSeriesPath().equals(path)) {
-      Filter nodeFilter = ((SingleSeriesExpression) expression).getFilter();
-      nodeFilter = FilterFactory.or(nodeFilter, filter);
-      ((SingleSeriesExpression) expression).setFilter(nodeFilter);
-      return true;
-    } else if (expression.getType() == ExpressionType.OR) {
-      assert expression instanceof BinaryExpression;
-      IExpression left = ((BinaryExpression) expression).getLeft();
-      IExpression right = ((BinaryExpression) expression).getRight();
-      return updateFilterWithOr(left, filter, path) || updateFilterWithOr(right, filter, path);
-    } else {
-      return false;
-    }
-  }
-
-  /**
-   * Combine GlobalTimeExpression with all selected series. example: input:
-   * GlobalTimeExpression(timeFilter) Selected Series: path1, path2, path3 output: QueryFilterOR(
-   * QueryFilterOR( SingleSeriesExpression(path1, timeFilter), SingleSeriesExpression(path2,
-   * timeFilter) ), SingleSeriesExpression(path3, timeFilter) )
-   *
-   * @return a DNF query filter without GlobalTimeExpression
-   */
-  private IExpression pushGlobalTimeFilterToAllSeries(
-      GlobalTimeExpression timeFilter, List<Path> selectedSeries)
-      throws QueryFilterOptimizationException {
-    if (selectedSeries.isEmpty()) {
-      throw new QueryFilterOptimizationException("size of selectSeries could not be 0");
-    }
-    IExpression expression =
-        new SingleSeriesExpression(selectedSeries.get(0), timeFilter.getFilter());
-    for (int i = 1; i < selectedSeries.size(); i++) {
-      expression =
-          BinaryExpression.or(
-              expression,
-              new SingleSeriesExpression(selectedSeries.get(i), timeFilter.getFilter()));
-    }
-    return expression;
-  }
-
-  /** Combine TimeFilter with all SeriesFilters in the expression. */
-  private void addTimeFilterToQueryFilter(Filter timeFilter, IExpression expression) {
-    if (expression instanceof SingleSeriesExpression) {
-      addTimeFilterToSeriesFilter(timeFilter, (SingleSeriesExpression) expression);
-    } else if (expression instanceof BinaryExpression) {
-      addTimeFilterToQueryFilter(timeFilter, ((BinaryExpression) expression).getLeft());
-      addTimeFilterToQueryFilter(timeFilter, ((BinaryExpression) expression).getRight());
-    } else {
-      throw new UnsupportedOperationException(
-          "IExpression should contains only SingleSeriesExpression but other type is found:"
-              + expression.getClass().getName());
-    }
-  }
-
-  /**
-   * Merge the timeFilter with the filter in SingleSeriesExpression with AndExpression. example:
-   * input: timeFilter SingleSeriesExpression(path, filter) output: SingleSeriesExpression( path,
-   * AndExpression(filter, timeFilter) )
-   */
-  private void addTimeFilterToSeriesFilter(
-      Filter timeFilter, SingleSeriesExpression singleSeriesExp) {
-    singleSeriesExp.setFilter(FilterFactory.and(singleSeriesExp.getFilter(), timeFilter));
-  }
-
-  /**
-   * combine two GlobalTimeExpression by merge the TimeFilter in each GlobalTimeExpression. example:
-   * input: QueryFilterAnd/OR( GlobalTimeExpression(timeFilter1), GlobalTimeExpression(timeFilter2)
-   * ) output: GlobalTimeExpression( AndExpression/OR(timeFilter1, timeFilter2) )
-   */
-  private GlobalTimeExpression combineTwoGlobalTimeFilter(
-      GlobalTimeExpression left, GlobalTimeExpression right, ExpressionType type) {
-    if (type == ExpressionType.AND) {
-      return new GlobalTimeExpression(FilterFactory.and(left.getFilter(), right.getFilter()));
-    } else if (type == ExpressionType.OR) {
-      return new GlobalTimeExpression(FilterFactory.or(left.getFilter(), right.getFilter()));
-    }
-    throw new UnsupportedOperationException("unrecognized QueryFilterOperatorType :" + type);
-  }
-
-  private static class QueryFilterOptimizerHelper {
-
-    private static final ExpressionOptimizer INSTANCE = new ExpressionOptimizer();
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/PredicateRemoveNotRewriter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/PredicateRemoveNotRewriter.java
deleted file mode 100644
index 107f697..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/PredicateRemoveNotRewriter.java
+++ /dev/null
@@ -1,50 +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.filter;
-
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.operator.And;
-import org.apache.iotdb.tsfile.read.filter.operator.Not;
-import org.apache.iotdb.tsfile.read.filter.operator.Or;
-
-public class PredicateRemoveNotRewriter {
-
-  private PredicateRemoveNotRewriter() {
-    // forbidden construction
-  }
-
-  public static Filter rewrite(Filter filter) {
-    return removeNot(filter);
-  }
-
-  private static Filter removeNot(Filter filter) {
-    if (filter instanceof And) {
-      return FilterFactory.and(
-          removeNot(((And) filter).getLeft()), removeNot(((And) filter).getRight()));
-    } else if (filter instanceof Or) {
-      return FilterFactory.or(
-          removeNot(((Or) filter).getLeft()), removeNot(((Or) filter).getRight()));
-    } else if (filter instanceof Not) {
-      return ((Not) filter).getFilter().reverse();
-    }
-    return filter;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/BinaryLogicalFilter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/BinaryLogicalFilter.java
deleted file mode 100644
index 8a94740..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/BinaryLogicalFilter.java
+++ /dev/null
@@ -1,68 +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.filter.basic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.Objects;
-
-/* base class for And, Or */
-public abstract class BinaryLogicalFilter extends Filter {
-
-  protected final Filter left;
-  protected final Filter right;
-
-  protected BinaryLogicalFilter(Filter left, Filter right) {
-    this.left = Objects.requireNonNull(left, "left cannot be null");
-    this.right = Objects.requireNonNull(right, "right cannot be null");
-  }
-
-  public Filter getLeft() {
-    return left;
-  }
-
-  public Filter getRight() {
-    return right;
-  }
-
-  @Override
-  public void serialize(DataOutputStream outputStream) throws IOException {
-    super.serialize(outputStream);
-    left.serialize(outputStream);
-    right.serialize(outputStream);
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    BinaryLogicalFilter that = (BinaryLogicalFilter) o;
-    return left.equals(that.left) && right.equals(that.right);
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(left, right);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/DisableStatisticsTimeFilter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/DisableStatisticsTimeFilter.java
deleted file mode 100644
index 7877115..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/DisableStatisticsTimeFilter.java
+++ /dev/null
@@ -1,33 +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.filter.basic;
-
-public abstract class DisableStatisticsTimeFilter extends TimeFilter {
-
-  @Override
-  public boolean satisfyStartEndTime(long startTime, long endTime) {
-    return true;
-  }
-
-  @Override
-  public boolean containStartEndTime(long startTime, long endTime) {
-    return false;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/DisableStatisticsValueFilter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/DisableStatisticsValueFilter.java
deleted file mode 100644
index 74e10b0..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/DisableStatisticsValueFilter.java
+++ /dev/null
@@ -1,46 +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.filter.basic;
-
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-
-public abstract class DisableStatisticsValueFilter extends ValueFilter {
-
-  protected DisableStatisticsValueFilter(int measurementIndex) {
-    super(measurementIndex);
-  }
-
-  protected DisableStatisticsValueFilter(ByteBuffer buffer) {
-    super(buffer);
-  }
-
-  @Override
-  protected boolean canSkip(Statistics<? extends Serializable> statistics) {
-    return false;
-  }
-
-  @Override
-  protected boolean allSatisfy(Statistics<? extends Serializable> statistics) {
-    return false;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/Filter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/Filter.java
deleted file mode 100755
index afa7cee..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/Filter.java
+++ /dev/null
@@ -1,233 +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.filter.basic;
-
-import org.apache.iotdb.tsfile.file.metadata.IMetadata;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.read.filter.operator.And;
-import org.apache.iotdb.tsfile.read.filter.operator.GroupByFilter;
-import org.apache.iotdb.tsfile.read.filter.operator.GroupByMonthFilter;
-import org.apache.iotdb.tsfile.read.filter.operator.Not;
-import org.apache.iotdb.tsfile.read.filter.operator.Or;
-import org.apache.iotdb.tsfile.read.filter.operator.TimeFilterOperators;
-import org.apache.iotdb.tsfile.read.filter.operator.ValueFilterOperators;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.List;
-
-/**
- * A Filter is an executable expression tree describing the criteria for which records to keep when
- * loading data from a TsFile.
- *
- * <p>Currently, they are applied to all File/Chunk/Page when scanning to see if we can drop them
- * entirely, and then they are applied during column assembly to drop individual records that are
- * not wanted.
- *
- * <p>See {@link TimeFilterOperators}/{@link ValueFilterOperators} for the implementation of the
- * operator tokens,
- *
- * <p>and {@link TimeFilterApi}/{@link ValueFilterApi}/{@link FilterFactory} for the dsl functions
- * for constructing an expression tree.
- */
-public abstract class Filter {
-
-  /**
-   * To examine whether the single point(with time and value) is satisfied with the filter.
-   *
-   * @param time single point time
-   * @param value single point value
-   * @return true if the single point is satisfied with the filter, false otherwise
-   */
-  public abstract boolean satisfy(long time, Object value);
-
-  /**
-   * To examine whether the row(with time and values) is satisfied with the filter.
-   *
-   * @param time row time
-   * @param values row values
-   * @return true if the row is satisfied with the filter, false otherwise
-   */
-  public abstract boolean satisfyRow(long time, Object[] values);
-
-  /**
-   * To examine whether the page(with many rows) is satisfied with the filter.
-   *
-   * @param tsBlock page data
-   * @return for each row, true if the row is satisfied with the filter, false otherwise
-   */
-  public abstract boolean[] satisfyTsBlock(TsBlock tsBlock);
-
-  /**
-   * To examine whether the block can be skipped.
-   *
-   * @param metadata the metadata of the block (including the min-max statistics)
-   * @return true if the block can be skipped, false otherwise
-   */
-  public abstract boolean canSkip(IMetadata metadata);
-
-  /**
-   * To examine whether the block all satisfied with the filter.
-   *
-   * @param metadata the metadata of the block (including the min-max statistics)
-   * @return true if the block all satisfied with the filter, false otherwise
-   */
-  public abstract boolean allSatisfy(IMetadata metadata);
-
-  /**
-   * To examine whether the min time and max time are satisfied with the filter.
-   *
-   * <p>Note: only implemented by {@link TimeFilterApi}
-   *
-   * @param startTime start time of a page, series or device
-   * @param endTime end time of a page, series or device
-   * @return false if [startTime, endTime] is not satisfied with the filter
-   */
-  public abstract boolean satisfyStartEndTime(long startTime, long endTime);
-
-  /**
-   * To examine whether the partition [startTime, endTime] is subsets of filter.
-   *
-   * <p>Note: only implemented by {@link TimeFilter}
-   *
-   * @param startTime start time of a partition
-   * @param endTime end time of a partition
-   * @return true if the partition [startTime, endTime] is subsets of filter
-   */
-  public abstract boolean containStartEndTime(long startTime, long endTime);
-
-  /**
-   * Return the time ranges which satisfying the filter.
-   *
-   * <p>Note: only implemented by {@link TimeFilter}
-   */
-  public abstract List<TimeRange> getTimeRanges();
-
-  /**
-   * Reverse the filter.
-   *
-   * @return the logical inverse filter
-   */
-  public abstract Filter reverse();
-
-  /**
-   * Copy the filter.
-   *
-   * <p>When the filter is <b>stateless</b>, we can return the filter itself.
-   *
-   * @return a copy of the filter
-   */
-  public Filter copy() {
-    return this;
-  }
-
-  /////////////////////////////////////////////////////////////////////////////////////////////////
-  // serialize & deserialize related methods
-  /////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public abstract OperatorType getOperatorType();
-
-  public void serialize(DataOutputStream outputStream) throws IOException {
-    ReadWriteIOUtils.write(getOperatorType().ordinal(), outputStream);
-
-    // serialize more fields in subclasses
-  }
-
-  public void serialize(ByteBuffer buffer) throws IOException {
-    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-    DataOutputStream dataOutputStream = new DataOutputStream(byteArrayOutputStream);
-    this.serialize(dataOutputStream);
-    buffer.put(byteArrayOutputStream.toByteArray());
-  }
-
-  public static Filter deserialize(ByteBuffer buffer) {
-    OperatorType type = OperatorType.values()[ReadWriteIOUtils.readInt(buffer)];
-
-    switch (type) {
-      case TIME_EQ:
-        return new TimeFilterOperators.TimeEq(buffer);
-      case TIME_NEQ:
-        return new TimeFilterOperators.TimeNotEq(buffer);
-      case TIME_GT:
-        return new TimeFilterOperators.TimeGt(buffer);
-      case TIME_GTEQ:
-        return new TimeFilterOperators.TimeGtEq(buffer);
-      case TIME_LT:
-        return new TimeFilterOperators.TimeLt(buffer);
-      case TIME_LTEQ:
-        return new TimeFilterOperators.TimeLtEq(buffer);
-      case TIME_IN:
-        return new TimeFilterOperators.TimeIn(buffer);
-      case TIME_NOT_IN:
-        return new TimeFilterOperators.TimeNotIn(buffer);
-      case TIME_BETWEEN_AND:
-        return new TimeFilterOperators.TimeBetweenAnd(buffer);
-      case TIME_NOT_BETWEEN_AND:
-        return new TimeFilterOperators.TimeNotBetweenAnd(buffer);
-      case VALUE_EQ:
-        return new ValueFilterOperators.ValueEq<>(buffer);
-      case VALUE_NEQ:
-        return new ValueFilterOperators.ValueNotEq<>(buffer);
-      case VALUE_GT:
-        return new ValueFilterOperators.ValueGt<>(buffer);
-      case VALUE_GTEQ:
-        return new ValueFilterOperators.ValueGtEq<>(buffer);
-      case VALUE_LT:
-        return new ValueFilterOperators.ValueLt<>(buffer);
-      case VALUE_LTEQ:
-        return new ValueFilterOperators.ValueLtEq<>(buffer);
-      case VALUE_IN:
-        return new ValueFilterOperators.ValueIn<>(buffer);
-      case VALUE_NOT_IN:
-        return new ValueFilterOperators.ValueNotIn<>(buffer);
-      case VALUE_BETWEEN_AND:
-        return new ValueFilterOperators.ValueBetweenAnd<>(buffer);
-      case VALUE_NOT_BETWEEN_AND:
-        return new ValueFilterOperators.ValueNotBetweenAnd<>(buffer);
-      case VALUE_REGEXP:
-        return new ValueFilterOperators.ValueRegexp(buffer);
-      case VALUE_NOT_REGEXP:
-        return new ValueFilterOperators.ValueNotRegexp(buffer);
-      case GROUP_BY_TIME:
-        return new GroupByFilter(buffer);
-      case GROUP_BY_MONTH:
-        return new GroupByMonthFilter(buffer);
-      case AND:
-        return new And(buffer);
-      case OR:
-        return new Or(buffer);
-      case NOT:
-        return new Not(buffer);
-      case VALUE_IS_NULL:
-        return new ValueFilterOperators.ValueIsNull(buffer);
-      case VALUE_IS_NOT_NULL:
-        return new ValueFilterOperators.ValueIsNotNull(buffer);
-      default:
-        throw new UnsupportedOperationException("Unsupported operator type:" + type);
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/OperatorType.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/OperatorType.java
deleted file mode 100644
index 1a85faf..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/OperatorType.java
+++ /dev/null
@@ -1,75 +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.filter.basic;
-
-public enum OperatorType {
-  // comparison
-  TIME_EQ("="),
-  VALUE_EQ("="),
-  TIME_NEQ("!="),
-  VALUE_NEQ("!="),
-  TIME_GT(">"),
-  VALUE_GT(">"),
-  TIME_GTEQ(">="),
-  VALUE_GTEQ(">="),
-  TIME_LT("<"),
-  VALUE_LT("<"),
-  TIME_LTEQ("<="),
-  VALUE_LTEQ("<="),
-
-  // logical
-  NOT("NOT"),
-  AND("&&"),
-  OR("||"),
-
-  // range
-  TIME_BETWEEN_AND("BETWEEN"),
-  VALUE_BETWEEN_AND("BETWEEN"),
-  TIME_NOT_BETWEEN_AND("NOT BETWEEN"),
-  VALUE_NOT_BETWEEN_AND("NOT BETWEEN"),
-
-  // set
-  TIME_IN("IN"),
-  VALUE_IN("IN"),
-  TIME_NOT_IN("NOT IN"),
-  VALUE_NOT_IN("NOT IN"),
-
-  // pattern match
-  VALUE_REGEXP("MATCH"),
-  VALUE_NOT_REGEXP("NOT MATCH"),
-
-  // group by
-  GROUP_BY_TIME("GROUP BY TIME"),
-  GROUP_BY_MONTH("GROUP BY MONTH"),
-
-  // is null
-  VALUE_IS_NULL("IS NULL"),
-  VALUE_IS_NOT_NULL("IS NOT NULL");
-
-  private final String symbol;
-
-  OperatorType(String symbol) {
-    this.symbol = symbol;
-  }
-
-  public String getSymbol() {
-    return symbol;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/TimeFilter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/TimeFilter.java
deleted file mode 100644
index 2ec7a58..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/TimeFilter.java
+++ /dev/null
@@ -1,68 +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.filter.basic;
-
-import org.apache.iotdb.tsfile.file.metadata.IMetadata;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-
-import java.io.Serializable;
-
-public abstract class TimeFilter extends Filter {
-
-  protected TimeFilter() {
-    // do nothing
-  }
-
-  @Override
-  public boolean satisfy(long time, Object value) {
-    // only use time to filter
-    return timeSatisfy(time);
-  }
-
-  @Override
-  public boolean satisfyRow(long time, Object[] values) {
-    // only use time to filter
-    return timeSatisfy(time);
-  }
-
-  @Override
-  public boolean[] satisfyTsBlock(TsBlock tsBlock) {
-    boolean[] satisfyInfo = new boolean[tsBlock.getPositionCount()];
-    for (int i = 0; i < tsBlock.getPositionCount(); i++) {
-      satisfyInfo[i] = timeSatisfy(tsBlock.getTimeByIndex(i));
-    }
-    return satisfyInfo;
-  }
-
-  protected abstract boolean timeSatisfy(long time);
-
-  @Override
-  public boolean canSkip(IMetadata metadata) {
-    Statistics<? extends Serializable> timeStatistics = metadata.getTimeStatistics();
-    return !satisfyStartEndTime(timeStatistics.getStartTime(), timeStatistics.getEndTime());
-  }
-
-  @Override
-  public boolean allSatisfy(IMetadata metadata) {
-    Statistics<? extends Serializable> timeStatistics = metadata.getTimeStatistics();
-    return containStartEndTime(timeStatistics.getStartTime(), timeStatistics.getEndTime());
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/ValueFilter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/ValueFilter.java
deleted file mode 100644
index 5dc18dd..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/ValueFilter.java
+++ /dev/null
@@ -1,141 +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.filter.basic;
-
-import org.apache.iotdb.tsfile.file.metadata.IMetadata;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-
-public abstract class ValueFilter extends Filter {
-
-  protected int measurementIndex;
-
-  protected ValueFilter(int measurementIndex) {
-    this.measurementIndex = measurementIndex;
-  }
-
-  protected ValueFilter(ByteBuffer buffer) {
-    this.measurementIndex = ReadWriteIOUtils.readInt(buffer);
-  }
-
-  @Override
-  public boolean satisfy(long time, Object value) {
-    if (value == null) {
-      // null not satisfy any filter, except IS NULL
-      return false;
-    }
-    return valueSatisfy(value);
-  }
-
-  @Override
-  public boolean satisfyRow(long time, Object[] values) {
-    return satisfy(time, values[measurementIndex]);
-  }
-
-  @Override
-  public boolean[] satisfyTsBlock(TsBlock tsBlock) {
-    Column valueColumn = tsBlock.getValueColumns()[measurementIndex];
-    boolean[] satisfyInfo = new boolean[tsBlock.getPositionCount()];
-    for (int i = 0; i < tsBlock.getPositionCount(); i++) {
-      if (valueColumn.isNull(i)) {
-        // null not satisfy any filter, except IS NULL
-        satisfyInfo[i] = false;
-      } else {
-        satisfyInfo[i] = valueSatisfy(valueColumn.getObject(i));
-      }
-    }
-    return satisfyInfo;
-  }
-
-  protected abstract boolean valueSatisfy(Object value);
-
-  @Override
-  public boolean canSkip(IMetadata metadata) {
-    Optional<Statistics<? extends Serializable>> statistics =
-        metadata.getMeasurementStatistics(measurementIndex);
-    return statistics.map(this::canSkip).orElse(true);
-  }
-
-  protected abstract boolean canSkip(Statistics<? extends Serializable> statistics);
-
-  @Override
-  public boolean allSatisfy(IMetadata metadata) {
-    if (metadata.hasNullValue(measurementIndex)) {
-      // null not satisfy any filter, except IS NULL
-      return false;
-    }
-    Optional<Statistics<? extends Serializable>> statistics =
-        metadata.getMeasurementStatistics(measurementIndex);
-    return statistics.map(this::allSatisfy).orElse(false);
-  }
-
-  protected abstract boolean allSatisfy(Statistics<? extends Serializable> statistics);
-
-  @Override
-  public boolean satisfyStartEndTime(long startTime, long endTime) {
-    return true;
-  }
-
-  @Override
-  public boolean containStartEndTime(long startTime, long endTime) {
-    return false;
-  }
-
-  @Override
-  public List<TimeRange> getTimeRanges() {
-    throw new UnsupportedOperationException("Value filter does not support getTimeRanges()");
-  }
-
-  @Override
-  public void serialize(DataOutputStream outputStream) throws IOException {
-    super.serialize(outputStream);
-    ReadWriteIOUtils.write(measurementIndex, outputStream);
-
-    // serialize more fields in subclasses
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    ValueFilter that = (ValueFilter) o;
-    return measurementIndex == that.measurementIndex;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(measurementIndex);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/factory/FilterFactory.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/factory/FilterFactory.java
deleted file mode 100644
index 2354676..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/factory/FilterFactory.java
+++ /dev/null
@@ -1,61 +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.filter.factory;
-
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.operator.And;
-import org.apache.iotdb.tsfile.read.filter.operator.Not;
-import org.apache.iotdb.tsfile.read.filter.operator.Or;
-
-import static org.apache.iotdb.tsfile.utils.Preconditions.checkArgument;
-
-public class FilterFactory {
-
-  private FilterFactory() {
-    // forbidden construction
-  }
-
-  public static Filter and(Filter left, Filter right) {
-    if (left == null && right == null) {
-      return null;
-    } else if (left == null) {
-      return right;
-    } else if (right == null) {
-      return left;
-    }
-    return new And(left, right);
-  }
-
-  public static Filter or(Filter left, Filter right) {
-    if (left == null && right == null) {
-      return null;
-    } else if (left == null) {
-      return right;
-    } else if (right == null) {
-      return left;
-    }
-    return new Or(left, right);
-  }
-
-  public static Not not(Filter filter) {
-    checkArgument(filter != null, "filter cannot be null");
-    return new Not(filter);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/factory/TimeFilterApi.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/factory/TimeFilterApi.java
deleted file mode 100644
index 1ab46a9..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/factory/TimeFilterApi.java
+++ /dev/null
@@ -1,101 +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.filter.factory;
-
-import org.apache.iotdb.tsfile.read.filter.operator.GroupByFilter;
-import org.apache.iotdb.tsfile.read.filter.operator.GroupByMonthFilter;
-import org.apache.iotdb.tsfile.read.filter.operator.TimeFilterOperators.TimeBetweenAnd;
-import org.apache.iotdb.tsfile.read.filter.operator.TimeFilterOperators.TimeEq;
-import org.apache.iotdb.tsfile.read.filter.operator.TimeFilterOperators.TimeGt;
-import org.apache.iotdb.tsfile.read.filter.operator.TimeFilterOperators.TimeGtEq;
-import org.apache.iotdb.tsfile.read.filter.operator.TimeFilterOperators.TimeIn;
-import org.apache.iotdb.tsfile.read.filter.operator.TimeFilterOperators.TimeLt;
-import org.apache.iotdb.tsfile.read.filter.operator.TimeFilterOperators.TimeLtEq;
-import org.apache.iotdb.tsfile.read.filter.operator.TimeFilterOperators.TimeNotBetweenAnd;
-import org.apache.iotdb.tsfile.read.filter.operator.TimeFilterOperators.TimeNotEq;
-import org.apache.iotdb.tsfile.read.filter.operator.TimeFilterOperators.TimeNotIn;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
-
-import java.util.Set;
-import java.util.TimeZone;
-import java.util.concurrent.TimeUnit;
-
-public class TimeFilterApi {
-
-  private TimeFilterApi() {
-    // forbidden construction
-  }
-
-  public static TimeGt gt(long value) {
-    return new TimeGt(value);
-  }
-
-  public static TimeGtEq gtEq(long value) {
-    return new TimeGtEq(value);
-  }
-
-  public static TimeLt lt(long value) {
-    return new TimeLt(value);
-  }
-
-  public static TimeLtEq ltEq(long value) {
-    return new TimeLtEq(value);
-  }
-
-  public static TimeEq eq(long value) {
-    return new TimeEq(value);
-  }
-
-  public static TimeNotEq notEq(long value) {
-    return new TimeNotEq(value);
-  }
-
-  public static TimeBetweenAnd between(long value1, long value2) {
-    return new TimeBetweenAnd(value1, value2);
-  }
-
-  public static TimeNotBetweenAnd notBetween(long value1, long value2) {
-    return new TimeNotBetweenAnd(value1, value2);
-  }
-
-  public static TimeIn in(Set<Long> values) {
-    return new TimeIn(values);
-  }
-
-  public static TimeNotIn notIn(Set<Long> values) {
-    return new TimeNotIn(values);
-  }
-
-  public static GroupByFilter groupBy(
-      long startTime, long endTime, long interval, long slidingStep) {
-    return new GroupByFilter(startTime, endTime, interval, slidingStep);
-  }
-
-  public static GroupByMonthFilter groupByMonth(
-      long startTime,
-      long endTime,
-      TimeDuration interval,
-      TimeDuration slidingStep,
-      TimeZone timeZone,
-      TimeUnit currPrecision) {
-    return new GroupByMonthFilter(
-        startTime, endTime, interval, slidingStep, timeZone, currPrecision);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/factory/ValueFilterApi.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/factory/ValueFilterApi.java
deleted file mode 100644
index 716465b..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/factory/ValueFilterApi.java
+++ /dev/null
@@ -1,194 +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.filter.factory;
-
-import org.apache.iotdb.tsfile.read.filter.operator.ValueFilterOperators.ValueBetweenAnd;
-import org.apache.iotdb.tsfile.read.filter.operator.ValueFilterOperators.ValueEq;
-import org.apache.iotdb.tsfile.read.filter.operator.ValueFilterOperators.ValueGt;
-import org.apache.iotdb.tsfile.read.filter.operator.ValueFilterOperators.ValueGtEq;
-import org.apache.iotdb.tsfile.read.filter.operator.ValueFilterOperators.ValueIn;
-import org.apache.iotdb.tsfile.read.filter.operator.ValueFilterOperators.ValueIsNotNull;
-import org.apache.iotdb.tsfile.read.filter.operator.ValueFilterOperators.ValueIsNull;
-import org.apache.iotdb.tsfile.read.filter.operator.ValueFilterOperators.ValueLt;
-import org.apache.iotdb.tsfile.read.filter.operator.ValueFilterOperators.ValueLtEq;
-import org.apache.iotdb.tsfile.read.filter.operator.ValueFilterOperators.ValueNotBetweenAnd;
-import org.apache.iotdb.tsfile.read.filter.operator.ValueFilterOperators.ValueNotEq;
-import org.apache.iotdb.tsfile.read.filter.operator.ValueFilterOperators.ValueNotIn;
-import org.apache.iotdb.tsfile.read.filter.operator.ValueFilterOperators.ValueNotRegexp;
-import org.apache.iotdb.tsfile.read.filter.operator.ValueFilterOperators.ValueRegexp;
-import org.apache.iotdb.tsfile.utils.RegexUtils;
-
-import java.util.Set;
-import java.util.regex.Pattern;
-
-public class ValueFilterApi {
-
-  private ValueFilterApi() {
-    // forbidden construction
-  }
-
-  private static final int DEFAULT_MEASUREMENT_INDEX = 0;
-
-  public static <T extends Comparable<T>> ValueGt<T> gt(T value) {
-    return new ValueGt<>(DEFAULT_MEASUREMENT_INDEX, value);
-  }
-
-  public static <T extends Comparable<T>> ValueGt<T> gt(int measurementIndex, T value) {
-    return new ValueGt<>(measurementIndex, value);
-  }
-
-  public static <T extends Comparable<T>> ValueGtEq<T> gtEq(T value) {
-    return new ValueGtEq<>(DEFAULT_MEASUREMENT_INDEX, value);
-  }
-
-  public static <T extends Comparable<T>> ValueGtEq<T> gtEq(int measurementIndex, T value) {
-    return new ValueGtEq<>(measurementIndex, value);
-  }
-
-  public static <T extends Comparable<T>> ValueLt<T> lt(T value) {
-    return new ValueLt<>(DEFAULT_MEASUREMENT_INDEX, value);
-  }
-
-  public static <T extends Comparable<T>> ValueLt<T> lt(int measurementIndex, T value) {
-    return new ValueLt<>(measurementIndex, value);
-  }
-
-  public static <T extends Comparable<T>> ValueLtEq<T> ltEq(T value) {
-    return new ValueLtEq<>(DEFAULT_MEASUREMENT_INDEX, value);
-  }
-
-  public static <T extends Comparable<T>> ValueLtEq<T> ltEq(int measurementIndex, T value) {
-    return new ValueLtEq<>(measurementIndex, value);
-  }
-
-  public static <T extends Comparable<T>> ValueEq<T> eq(T value) {
-    return new ValueEq<>(DEFAULT_MEASUREMENT_INDEX, value);
-  }
-
-  public static <T extends Comparable<T>> ValueEq<T> eq(int measurementIndex, T value) {
-    return new ValueEq<>(measurementIndex, value);
-  }
-
-  public static <T extends Comparable<T>> ValueNotEq<T> notEq(T value) {
-    return new ValueNotEq<>(DEFAULT_MEASUREMENT_INDEX, value);
-  }
-
-  public static <T extends Comparable<T>> ValueNotEq<T> notEq(int measurementIndex, T value) {
-    return new ValueNotEq<>(measurementIndex, value);
-  }
-
-  public static ValueIsNull isNull() {
-    return new ValueIsNull(DEFAULT_MEASUREMENT_INDEX);
-  }
-
-  public static ValueIsNull isNull(int measurementIndex) {
-    return new ValueIsNull(measurementIndex);
-  }
-
-  public static ValueIsNotNull isNotNull() {
-    return new ValueIsNotNull(DEFAULT_MEASUREMENT_INDEX);
-  }
-
-  public static ValueIsNotNull isNotNull(int measurementIndex) {
-    return new ValueIsNotNull(measurementIndex);
-  }
-
-  public static <T extends Comparable<T>> ValueBetweenAnd<T> between(T value1, T value2) {
-    return new ValueBetweenAnd<>(DEFAULT_MEASUREMENT_INDEX, value1, value2);
-  }
-
-  public static <T extends Comparable<T>> ValueBetweenAnd<T> between(
-      int measurementIndex, T value1, T value2) {
-    return new ValueBetweenAnd<>(measurementIndex, value1, value2);
-  }
-
-  public static <T extends Comparable<T>> ValueNotBetweenAnd<T> notBetween(T value1, T value2) {
-    return new ValueNotBetweenAnd<>(DEFAULT_MEASUREMENT_INDEX, value1, value2);
-  }
-
-  public static <T extends Comparable<T>> ValueNotBetweenAnd<T> notBetween(
-      int measurementIndex, T value1, T value2) {
-    return new ValueNotBetweenAnd<>(measurementIndex, value1, value2);
-  }
-
-  public static ValueRegexp like(String likePattern) {
-    return regexp(DEFAULT_MEASUREMENT_INDEX, RegexUtils.parseLikePatternToRegex(likePattern));
-  }
-
-  public static ValueRegexp like(int measurementIndex, String likePattern) {
-    return regexp(measurementIndex, RegexUtils.parseLikePatternToRegex(likePattern));
-  }
-
-  public static ValueRegexp like(int measurementIndex, Pattern pattern) {
-    return regexp(measurementIndex, pattern);
-  }
-
-  public static ValueNotRegexp notLike(String likePattern) {
-    return notRegexp(DEFAULT_MEASUREMENT_INDEX, RegexUtils.parseLikePatternToRegex(likePattern));
-  }
-
-  public static ValueNotRegexp notLike(int measurementIndex, String likePattern) {
-    return notRegexp(measurementIndex, RegexUtils.parseLikePatternToRegex(likePattern));
-  }
-
-  public static ValueNotRegexp notLike(int measurementIndex, Pattern pattern) {
-    return notRegexp(measurementIndex, pattern);
-  }
-
-  public static ValueRegexp regexp(String regex) {
-    return new ValueRegexp(DEFAULT_MEASUREMENT_INDEX, RegexUtils.compileRegex(regex));
-  }
-
-  public static ValueRegexp regexp(int measurementIndex, String regex) {
-    return new ValueRegexp(measurementIndex, RegexUtils.compileRegex(regex));
-  }
-
-  public static ValueRegexp regexp(int measurementIndex, Pattern pattern) {
-    return new ValueRegexp(measurementIndex, pattern);
-  }
-
-  public static ValueNotRegexp notRegexp(String regex) {
-    return new ValueNotRegexp(DEFAULT_MEASUREMENT_INDEX, RegexUtils.compileRegex(regex));
-  }
-
-  public static ValueNotRegexp notRegexp(int measurementIndex, String regex) {
-    return new ValueNotRegexp(measurementIndex, RegexUtils.compileRegex(regex));
-  }
-
-  public static ValueNotRegexp notRegexp(int measurementIndex, Pattern pattern) {
-    return new ValueNotRegexp(measurementIndex, pattern);
-  }
-
-  public static <T extends Comparable<T>> ValueIn<T> in(Set<T> values) {
-    return new ValueIn<>(DEFAULT_MEASUREMENT_INDEX, values);
-  }
-
-  public static <T extends Comparable<T>> ValueIn<T> in(int measurementIndex, Set<T> values) {
-    return new ValueIn<>(measurementIndex, values);
-  }
-
-  public static <T extends Comparable<T>> ValueNotIn<T> notIn(Set<T> values) {
-    return new ValueNotIn<>(DEFAULT_MEASUREMENT_INDEX, values);
-  }
-
-  public static <T extends Comparable<T>> ValueNotIn<T> notIn(int measurementIndex, Set<T> values) {
-    return new ValueNotIn<>(measurementIndex, values);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/And.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/And.java
deleted file mode 100644
index 64a1831..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/And.java
+++ /dev/null
@@ -1,137 +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.filter.operator;
-
-import org.apache.iotdb.tsfile.file.metadata.IMetadata;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.filter.basic.BinaryLogicalFilter;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.basic.OperatorType;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-public class And extends BinaryLogicalFilter {
-
-  public And(Filter left, Filter right) {
-    super(left, right);
-  }
-
-  public And(ByteBuffer buffer) {
-    super(Filter.deserialize(buffer), Filter.deserialize(buffer));
-  }
-
-  @Override
-  public boolean satisfy(long time, Object value) {
-    return left.satisfy(time, value) && right.satisfy(time, value);
-  }
-
-  @Override
-  public boolean satisfyRow(long time, Object[] values) {
-    return left.satisfyRow(time, values) && right.satisfyRow(time, values);
-  }
-
-  @Override
-  public boolean[] satisfyTsBlock(TsBlock tsBlock) {
-    boolean[] leftResult = left.satisfyTsBlock(tsBlock);
-    boolean[] rightResult = right.satisfyTsBlock(tsBlock);
-    for (int i = 0; i < leftResult.length; i++) {
-      leftResult[i] = leftResult[i] && rightResult[i];
-    }
-    return leftResult;
-  }
-
-  @Override
-  public boolean canSkip(IMetadata metadata) {
-    // we can drop a chunk of records if we know that either the left or the right predicate agrees
-    // that no matter what we don't need this chunk.
-    return left.canSkip(metadata) || right.canSkip(metadata);
-  }
-
-  @Override
-  public boolean allSatisfy(IMetadata metadata) {
-    return left.allSatisfy(metadata) && right.allSatisfy(metadata);
-  }
-
-  @Override
-  public boolean satisfyStartEndTime(long startTime, long endTime) {
-    return left.satisfyStartEndTime(startTime, endTime)
-        && right.satisfyStartEndTime(startTime, endTime);
-  }
-
-  @Override
-  public boolean containStartEndTime(long startTime, long endTime) {
-    return left.containStartEndTime(startTime, endTime)
-        && right.containStartEndTime(startTime, endTime);
-  }
-
-  @Override
-  public List<TimeRange> getTimeRanges() {
-    List<TimeRange> result = new ArrayList<>();
-    List<TimeRange> leftTimeRanges = left.getTimeRanges();
-    List<TimeRange> rightTimeRanges = right.getTimeRanges();
-
-    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);
-
-      if (leftRange.getMax() < rightRange.getMin()) {
-        leftIndex++;
-      } else if (rightRange.getMax() < leftRange.getMin()) {
-        rightIndex++;
-      } else {
-        TimeRange intersection =
-            new TimeRange(
-                Math.max(leftRange.getMin(), rightRange.getMin()),
-                Math.min(leftRange.getMax(), rightRange.getMax()));
-        result.add(intersection);
-        if (leftRange.getMax() <= intersection.getMax()) {
-          leftIndex++;
-        }
-        if (rightRange.getMax() <= intersection.getMax()) {
-          rightIndex++;
-        }
-      }
-    }
-
-    return result;
-  }
-
-  @Override
-  public Filter reverse() {
-    return new Or(left.reverse(), right.reverse());
-  }
-
-  @Override
-  public OperatorType getOperatorType() {
-    return OperatorType.AND;
-  }
-
-  @Override
-  public String toString() {
-    return "(" + left + " && " + right + ")";
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GroupByFilter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GroupByFilter.java
deleted file mode 100644
index 81bb393..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GroupByFilter.java
+++ /dev/null
@@ -1,155 +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.filter.operator;
-
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.basic.OperatorType;
-import org.apache.iotdb.tsfile.read.filter.basic.TimeFilter;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-
-public class GroupByFilter extends TimeFilter {
-
-  // [startTime, endTime]
-  protected long startTime;
-  protected long endTime;
-
-  protected long interval;
-  protected long slidingStep;
-
-  public GroupByFilter(long startTime, long endTime, long interval, long slidingStep) {
-    this.startTime = startTime;
-    this.endTime = endTime;
-    this.interval = interval;
-    this.slidingStep = slidingStep;
-  }
-
-  protected GroupByFilter(long startTime, long endTime) {
-    this.startTime = startTime;
-    this.endTime = endTime;
-  }
-
-  public GroupByFilter(ByteBuffer buffer) {
-    this.startTime = ReadWriteIOUtils.readLong(buffer);
-    this.endTime = ReadWriteIOUtils.readLong(buffer);
-    this.interval = ReadWriteIOUtils.readLong(buffer);
-    this.slidingStep = ReadWriteIOUtils.readLong(buffer);
-  }
-
-  @Override
-  public boolean timeSatisfy(long time) {
-    if (time < startTime || time >= endTime) {
-      return false;
-    } else {
-      return (time - startTime) % slidingStep < interval;
-    }
-  }
-
-  @Override
-  public boolean satisfyStartEndTime(long startTime, long endTime) {
-    if (endTime < this.startTime || startTime >= this.endTime) {
-      return false;
-    } else if (startTime <= this.startTime) {
-      return true;
-    } else {
-      long minTime = startTime - this.startTime;
-      long count = minTime / slidingStep;
-      if (minTime <= interval + count * slidingStep) {
-        return true;
-      } else {
-        if (this.endTime <= (count + 1) * slidingStep + this.startTime) {
-          return false;
-        } else {
-          return endTime >= (count + 1) * slidingStep + this.startTime;
-        }
-      }
-    }
-  }
-
-  @Override
-  public boolean containStartEndTime(long startTime, long endTime) {
-    if (startTime >= this.startTime && endTime <= this.endTime) {
-      long minTime = startTime - this.startTime;
-      long maxTime = endTime - this.startTime;
-      long count = minTime / slidingStep;
-      return minTime <= interval + count * slidingStep && maxTime <= interval + count * slidingStep;
-    }
-    return false;
-  }
-
-  @Override
-  public String toString() {
-    return String.format(
-        "GroupByFilter{[%d, %d], %d, %d}", startTime, endTime, interval, slidingStep);
-  }
-
-  @Override
-  public List<TimeRange> getTimeRanges() {
-    return startTime >= endTime
-        ? Collections.emptyList()
-        : Collections.singletonList(new TimeRange(startTime, endTime - 1));
-  }
-
-  @Override
-  public Filter reverse() {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public OperatorType getOperatorType() {
-    return OperatorType.GROUP_BY_TIME;
-  }
-
-  @Override
-  public void serialize(DataOutputStream outputStream) throws IOException {
-    super.serialize(outputStream);
-    ReadWriteIOUtils.write(startTime, outputStream);
-    ReadWriteIOUtils.write(endTime, outputStream);
-    ReadWriteIOUtils.write(interval, outputStream);
-    ReadWriteIOUtils.write(slidingStep, outputStream);
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    GroupByFilter that = (GroupByFilter) o;
-    return interval == that.interval
-        && slidingStep == that.slidingStep
-        && startTime == that.startTime
-        && endTime == that.endTime;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(interval, slidingStep, startTime, endTime);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GroupByMonthFilter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GroupByMonthFilter.java
deleted file mode 100644
index 58cda98..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GroupByMonthFilter.java
+++ /dev/null
@@ -1,270 +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.filter.operator;
-
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.basic.OperatorType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Objects;
-import java.util.TimeZone;
-import java.util.concurrent.TimeUnit;
-
-import static org.apache.iotdb.tsfile.utils.TimeDuration.calcPositiveIntervalByMonth;
-import static org.apache.iotdb.tsfile.utils.TimeDuration.getConsecutiveTimesIntervalByMonth;
-
-/**
- * GroupByMonthFilter is used to handle natural month slidingStep and interval by generating
- * dynamically. Attention: it's only supported to access in ascending order now.
- */
-public class GroupByMonthFilter extends GroupByFilter {
-  private final Calendar calendar = Calendar.getInstance();
-
-  private final TimeDuration originalSlidingStep;
-  private final TimeDuration originalInterval;
-
-  // These fields will be serialized to remote nodes, as other fields may be updated during process
-  private TimeZone timeZone;
-  private final long originalStartTime;
-  private final long originalEndTime;
-
-  private final TimeUnit currPrecision;
-
-  private long[] startTimes;
-
-  public GroupByMonthFilter(
-      long startTime,
-      long endTime,
-      TimeDuration interval,
-      TimeDuration slidingStep,
-      TimeZone timeZone,
-      TimeUnit currPrecision) {
-    super(startTime, endTime);
-    this.originalStartTime = startTime;
-    this.originalEndTime = endTime;
-    this.originalInterval = interval;
-    this.originalSlidingStep = slidingStep;
-    if (!interval.containsMonth()) {
-      this.interval = interval.nonMonthDuration;
-    }
-    if (!slidingStep.containsMonth()) {
-      this.slidingStep = slidingStep.nonMonthDuration;
-    }
-    this.currPrecision = currPrecision;
-    initMonthGroupByParameters(timeZone);
-  }
-
-  public GroupByMonthFilter(ByteBuffer buffer) {
-    this(
-        ReadWriteIOUtils.readLong(buffer),
-        ReadWriteIOUtils.readLong(buffer),
-        TimeDuration.deserialize(buffer),
-        TimeDuration.deserialize(buffer),
-        TimeZone.getTimeZone(ReadWriteIOUtils.readString(buffer)),
-        TimeUnit.values()[ReadWriteIOUtils.readInt(buffer)]);
-  }
-
-  @Override
-  public boolean timeSatisfy(long time) {
-    if (time < originalStartTime || time >= endTime) {
-      return false;
-    } else if (time >= startTime && time < startTime + slidingStep) {
-      return time - startTime < interval;
-    } else {
-      int count = getTimePointPosition(time);
-      getNthTimeInterval(count);
-      return time - startTime < interval;
-    }
-  }
-
-  @Override
-  public boolean satisfyStartEndTime(long startTime, long endTime) {
-    if (satisfyCurrentInterval(startTime, endTime)) {
-      return true;
-    } else {
-      // get the interval which contains the start time
-      int count = getTimePointPosition(startTime);
-      getNthTimeInterval(count);
-      // judge two adjacent intervals
-      if (satisfyCurrentInterval(startTime, endTime)) {
-        return true;
-      } else {
-        getNthTimeInterval(count + 1);
-        return satisfyCurrentInterval(startTime, endTime);
-      }
-    }
-  }
-
-  private boolean satisfyCurrentInterval(long startTime, long endTime) {
-    if (endTime < this.startTime || startTime >= this.endTime) {
-      return false;
-    } else {
-      return startTime - this.startTime < interval;
-    }
-  }
-
-  @Override
-  public boolean containStartEndTime(long startTime, long endTime) {
-    if (isContainedByCurrentInterval(startTime, endTime)) {
-      return true;
-    } else {
-      // get the interval which contains the start time
-      int count = getTimePointPosition(startTime);
-      getNthTimeInterval(count);
-      // judge single interval that contains start time
-      return isContainedByCurrentInterval(startTime, endTime);
-    }
-  }
-
-  private boolean isContainedByCurrentInterval(long startTime, long endTime) {
-    if (startTime < this.startTime || endTime > this.endTime) {
-      return false;
-    } else {
-      return startTime - this.startTime < interval && endTime - this.startTime < interval;
-    }
-  }
-
-  private void initMonthGroupByParameters(TimeZone timeZone) {
-    calendar.setTimeZone(timeZone);
-    this.timeZone = timeZone;
-    calendar.setTimeInMillis(startTime);
-    if (originalSlidingStep.containsMonth()) {
-      startTimes =
-          getConsecutiveTimesIntervalByMonth(
-              startTime,
-              originalSlidingStep,
-              (int)
-                  Math.ceil(
-                      ((originalEndTime - originalStartTime)
-                          / (double) originalSlidingStep.getMinTotalDuration(currPrecision))),
-              timeZone,
-              currPrecision);
-    }
-    getNthTimeInterval(0);
-  }
-
-  /** Get the interval that @param time belongs to. */
-  private int getTimePointPosition(long time) {
-    if (originalSlidingStep.containsMonth()) {
-      int searchResult = Arrays.binarySearch(startTimes, time);
-      return searchResult >= 0 ? searchResult : Math.max(0, Math.abs(searchResult) - 2);
-    } else {
-      return (int) ((time - originalStartTime) / slidingStep);
-    }
-  }
-
-  /** get the Nth time interval. */
-  private void getNthTimeInterval(int n) {
-    // get interval and sliding step
-    if (originalSlidingStep.containsMonth()) {
-      if (n < 0 || n > startTimes.length - 1) {
-        this.interval = -1;
-        return;
-      }
-      this.startTime = startTimes[n];
-      this.slidingStep =
-          calcPositiveIntervalByMonth(
-                  originalStartTime, originalSlidingStep.multiple(n + 1), timeZone, currPrecision)
-              - startTime;
-    } else {
-      this.startTime = originalStartTime + n * slidingStep;
-    }
-    if (originalInterval.containsMonth()) {
-      this.interval =
-          calcPositiveIntervalByMonth(
-                  originalStartTime,
-                  originalSlidingStep.multiple(n).merge(originalInterval),
-                  timeZone,
-                  currPrecision)
-              - startTime;
-    }
-  }
-
-  @Override
-  public OperatorType getOperatorType() {
-    return OperatorType.GROUP_BY_MONTH;
-  }
-
-  @Override
-  public void serialize(DataOutputStream outputStream) throws IOException {
-    ReadWriteIOUtils.write(getOperatorType().ordinal(), outputStream);
-    ReadWriteIOUtils.write(originalStartTime, outputStream);
-    ReadWriteIOUtils.write(originalEndTime, outputStream);
-    originalInterval.serialize(outputStream);
-    originalSlidingStep.serialize(outputStream);
-    ReadWriteIOUtils.write(timeZone.getID(), outputStream);
-    ReadWriteIOUtils.write(currPrecision.ordinal(), outputStream);
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    if (!super.equals(o)) {
-      return false;
-    }
-    GroupByMonthFilter that = (GroupByMonthFilter) o;
-    return originalStartTime == that.originalStartTime
-        && originalEndTime == that.originalEndTime
-        && originalSlidingStep.equals(that.originalSlidingStep)
-        && originalInterval.equals(that.originalInterval)
-        && timeZone.equals(that.timeZone)
-        && currPrecision == that.currPrecision
-        && Arrays.equals(startTimes, that.startTimes);
-  }
-
-  @Override
-  public int hashCode() {
-    int result =
-        Objects.hash(
-            super.hashCode(),
-            originalSlidingStep,
-            originalInterval,
-            timeZone,
-            originalStartTime,
-            originalEndTime,
-            currPrecision);
-    result = 31 * result + Arrays.hashCode(startTimes);
-    return result;
-  }
-
-  @Override
-  public Filter copy() {
-    // A stateful filter must implement copy() method
-    // to make sure that each filter has its own state.
-    return new GroupByMonthFilter(
-        originalStartTime,
-        originalEndTime,
-        originalInterval,
-        originalSlidingStep,
-        timeZone,
-        currPrecision);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Not.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Not.java
deleted file mode 100644
index 71349ba..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Not.java
+++ /dev/null
@@ -1,159 +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.filter.operator;
-
-import org.apache.iotdb.tsfile.file.metadata.IMetadata;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.basic.OperatorType;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-public class Not extends Filter {
-
-  private final Filter filter;
-
-  public static final String CONTAIN_NOT_ERR_MSG =
-      "This predicate contains a not! "
-          + "Did you forget to run this predicate through PredicateRemoveNotRewriter? ";
-
-  public Not(Filter filter) {
-    this.filter = Objects.requireNonNull(filter, "filter cannot be null");
-  }
-
-  public Not(ByteBuffer buffer) {
-    this.filter = Objects.requireNonNull(Filter.deserialize(buffer), "filter cannot be null");
-  }
-
-  @Override
-  public boolean satisfy(long time, Object value) {
-    return !filter.satisfy(time, value);
-  }
-
-  @Override
-  public boolean satisfyRow(long time, Object[] values) {
-    return !filter.satisfyRow(time, values);
-  }
-
-  @Override
-  public boolean[] satisfyTsBlock(TsBlock tsBlock) {
-    boolean[] result = filter.satisfyTsBlock(tsBlock);
-    for (int i = 0; i < result.length; i++) {
-      result[i] = !result[i];
-    }
-    return result;
-  }
-
-  @Override
-  public boolean canSkip(IMetadata metadata) {
-    // [not filter.canSkip(block)] is not equivalent to [notFilter.canSkip(block)]
-    // e.g. block min = 5, max = 15, filter = [value > 10], notFilter = [value <= 10)]
-    //  not filter.canSkip(block) = true (expected false), notFilter.canSkip(block) = false
-    throw new IllegalArgumentException(CONTAIN_NOT_ERR_MSG + this);
-  }
-
-  @Override
-  public boolean allSatisfy(IMetadata metadata) {
-    // same as canSkip
-    throw new IllegalArgumentException(CONTAIN_NOT_ERR_MSG + this);
-  }
-
-  @Override
-  public boolean satisfyStartEndTime(long startTime, long endTime) {
-    throw new IllegalArgumentException(CONTAIN_NOT_ERR_MSG + this);
-  }
-
-  @Override
-  public boolean containStartEndTime(long startTime, long endTime) {
-    throw new IllegalArgumentException(CONTAIN_NOT_ERR_MSG + this);
-  }
-
-  public Filter getFilter() {
-    return this.filter;
-  }
-
-  @Override
-  public List<TimeRange> getTimeRanges() {
-    List<TimeRange> list = filter.getTimeRanges();
-    if (list.isEmpty()) {
-      return list;
-    }
-    List<TimeRange> res = new ArrayList<>();
-    if (list.get(0).getMin() != Long.MIN_VALUE) {
-      res.add(new TimeRange(Long.MIN_VALUE, list.get(0).getMin() - 1));
-    }
-    for (int i = 1, size = list.size(); i < size; i++) {
-      long left = list.get(i - 1).getMax() + 1;
-      long right = list.get(i).getMin() - 1;
-      if (left <= right) {
-        res.add(new TimeRange(left, right));
-      }
-    }
-
-    if (list.get(list.size() - 1).getMax() != Long.MAX_VALUE) {
-      res.add(new TimeRange(list.get(list.size() - 1).getMax() + 1, Long.MAX_VALUE));
-    }
-    return res;
-  }
-
-  @Override
-  public Filter reverse() {
-    return filter;
-  }
-
-  @Override
-  public OperatorType getOperatorType() {
-    return OperatorType.NOT;
-  }
-
-  @Override
-  public void serialize(DataOutputStream outputStream) throws IOException {
-    super.serialize(outputStream);
-    filter.serialize(outputStream);
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    Not not = (Not) o;
-    return filter.equals(not.filter);
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(filter);
-  }
-
-  @Override
-  public String toString() {
-    return "not(" + filter + ")";
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Or.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Or.java
deleted file mode 100644
index 7bea06b..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Or.java
+++ /dev/null
@@ -1,185 +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.filter.operator;
-
-import org.apache.iotdb.tsfile.file.metadata.IMetadata;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.filter.basic.BinaryLogicalFilter;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.basic.OperatorType;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-public class Or extends BinaryLogicalFilter {
-
-  public Or(Filter left, Filter right) {
-    super(left, right);
-  }
-
-  public Or(ByteBuffer buffer) {
-    super(Filter.deserialize(buffer), Filter.deserialize(buffer));
-  }
-
-  @Override
-  public boolean satisfy(long time, Object value) {
-    return left.satisfy(time, value) || right.satisfy(time, value);
-  }
-
-  @Override
-  public boolean satisfyRow(long time, Object[] values) {
-    return left.satisfyRow(time, values) || right.satisfyRow(time, values);
-  }
-
-  @Override
-  public boolean[] satisfyTsBlock(TsBlock tsBlock) {
-    boolean[] leftResult = left.satisfyTsBlock(tsBlock);
-    boolean[] rightResult = right.satisfyTsBlock(tsBlock);
-    for (int i = 0; i < leftResult.length; i++) {
-      leftResult[i] = leftResult[i] || rightResult[i];
-    }
-    return leftResult;
-  }
-
-  @Override
-  public boolean canSkip(IMetadata metadata) {
-    // we can only drop a chunk of records if we know that both the left and right predicates agree
-    // that no matter what we don't need this chunk.
-    return left.canSkip(metadata) && right.canSkip(metadata);
-  }
-
-  @Override
-  public boolean allSatisfy(IMetadata metadata) {
-    return left.allSatisfy(metadata) || right.allSatisfy(metadata);
-  }
-
-  @Override
-  public boolean satisfyStartEndTime(long startTime, long endTime) {
-    return left.satisfyStartEndTime(startTime, endTime)
-        || right.satisfyStartEndTime(startTime, endTime);
-  }
-
-  @Override
-  public boolean containStartEndTime(long startTime, long endTime) {
-    return left.containStartEndTime(startTime, endTime)
-        || right.containStartEndTime(startTime, endTime);
-  }
-
-  @Override
-  public List<TimeRange> getTimeRanges() {
-    List<TimeRange> result = new ArrayList<>();
-    List<TimeRange> leftTimeRanges = left.getTimeRanges();
-    List<TimeRange> rightTimeRanges = right.getTimeRanges();
-
-    // Check for empty lists
-    if (leftTimeRanges.isEmpty()) {
-      return rightTimeRanges;
-    } else if (rightTimeRanges.isEmpty()) {
-      return leftTimeRanges;
-    }
-
-    Index leftIndex = new Index();
-    Index rightIndex = new Index();
-
-    // Initialize the current range
-    TimeRange range = chooseNextRange(leftTimeRanges, rightTimeRanges, leftIndex, rightIndex);
-
-    // Merge overlapping ranges
-    while (leftIndex.getCurrent() < leftTimeRanges.size()
-        || rightIndex.getCurrent() < rightTimeRanges.size()) {
-      TimeRange chosenRange =
-          chooseNextRange(leftTimeRanges, rightTimeRanges, leftIndex, rightIndex);
-
-      // Merge or add the non-overlapping range
-      if (chosenRange.getMin() > range.getMax()) {
-        result.add(range);
-        range = chosenRange;
-      } else {
-        range.setMax(Math.max(range.getMax(), chosenRange.getMax()));
-      }
-    }
-
-    // Add the last range
-    result.add(range);
-
-    return result;
-  }
-
-  private TimeRange chooseNextRange(
-      List<TimeRange> leftTimeRanges,
-      List<TimeRange> rightTimeRanges,
-      Index leftIndex,
-      Index rightIndex) {
-    int leftCurrentIndex = leftIndex.getCurrent();
-    int rightCurrentIndex = rightIndex.getCurrent();
-    if (leftCurrentIndex < leftTimeRanges.size() && rightCurrentIndex < rightTimeRanges.size()) {
-      TimeRange leftRange = leftTimeRanges.get(leftCurrentIndex);
-      TimeRange rightRange = rightTimeRanges.get(rightCurrentIndex);
-
-      // Choose the range with the smaller minimum start time
-      if (leftRange.getMin() <= rightRange.getMin()) {
-        leftIndex.increment();
-        return leftRange;
-      } else {
-        rightIndex.increment();
-        return rightRange;
-      }
-    } else if (leftCurrentIndex < leftTimeRanges.size()) {
-      leftIndex.increment();
-      return leftTimeRanges.get(leftCurrentIndex);
-    } else {
-      rightIndex.increment();
-      return rightTimeRanges.get(rightCurrentIndex);
-    }
-  }
-
-  private static class Index {
-    private int current;
-
-    public Index() {
-      this.current = 0;
-    }
-
-    public void increment() {
-      this.current++;
-    }
-
-    public int getCurrent() {
-      return this.current;
-    }
-  }
-
-  @Override
-  public Filter reverse() {
-    return new And(left.reverse(), right.reverse());
-  }
-
-  @Override
-  public OperatorType getOperatorType() {
-    return OperatorType.OR;
-  }
-
-  @Override
-  public String toString() {
-    return "(" + left + " || " + right + ")";
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/TimeFilterOperators.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/TimeFilterOperators.java
deleted file mode 100644
index 47f8533..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/TimeFilterOperators.java
+++ /dev/null
@@ -1,601 +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.filter.operator;
-
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.filter.basic.DisableStatisticsTimeFilter;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.basic.OperatorType;
-import org.apache.iotdb.tsfile.read.filter.basic.TimeFilter;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-
-/**
- * These are the time column operators in a filter predicate expression tree. They are constructed
- * by using the methods in {@link TimeFilterApi}
- */
-public final class TimeFilterOperators {
-
-  private TimeFilterOperators() {
-    // forbidden construction
-  }
-
-  private static final String OPERATOR_TO_STRING_FORMAT = "time %s %s";
-
-  // base class for TimeEq, TimeNotEq, TimeLt, TimeGt, TimeLtEq, TimeGtEq
-  abstract static class TimeColumnCompareFilter extends TimeFilter {
-
-    protected final long constant;
-
-    // constant cannot be null
-    protected TimeColumnCompareFilter(long constant) {
-      this.constant = constant;
-    }
-
-    protected TimeColumnCompareFilter(ByteBuffer buffer) {
-      this.constant = ReadWriteIOUtils.readLong(buffer);
-    }
-
-    @Override
-    public void serialize(DataOutputStream outputStream) throws IOException {
-      super.serialize(outputStream);
-      ReadWriteIOUtils.write(constant, outputStream);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-      if (this == o) {
-        return true;
-      }
-      if (o == null || getClass() != o.getClass()) {
-        return false;
-      }
-      TimeColumnCompareFilter that = (TimeColumnCompareFilter) o;
-      return constant == that.constant;
-    }
-
-    @Override
-    public int hashCode() {
-      return Objects.hash(constant);
-    }
-
-    @Override
-    public String toString() {
-      return String.format(OPERATOR_TO_STRING_FORMAT, getOperatorType().getSymbol(), constant);
-    }
-  }
-
-  public static final class TimeEq extends TimeColumnCompareFilter {
-
-    public TimeEq(long constant) {
-      super(constant);
-    }
-
-    public TimeEq(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    public boolean timeSatisfy(long time) {
-      return constant == time;
-    }
-
-    @Override
-    public boolean satisfyStartEndTime(long startTime, long endTime) {
-      return constant <= endTime && constant >= startTime;
-    }
-
-    @Override
-    public boolean containStartEndTime(long startTime, long endTime) {
-      return constant == startTime && constant == endTime;
-    }
-
-    @Override
-    public List<TimeRange> getTimeRanges() {
-      return Collections.singletonList(new TimeRange(constant, constant));
-    }
-
-    @Override
-    public Filter reverse() {
-      return new TimeNotEq(constant);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.TIME_EQ;
-    }
-  }
-
-  public static final class TimeNotEq extends TimeColumnCompareFilter {
-
-    public TimeNotEq(long constant) {
-      super(constant);
-    }
-
-    public TimeNotEq(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    public boolean timeSatisfy(long time) {
-      return constant != time;
-    }
-
-    @Override
-    public boolean satisfyStartEndTime(long startTime, long endTime) {
-      return constant != startTime || constant != endTime;
-    }
-
-    @Override
-    public boolean containStartEndTime(long startTime, long endTime) {
-      return constant < startTime || constant > endTime;
-    }
-
-    @Override
-    public List<TimeRange> getTimeRanges() {
-      long time = constant;
-      if (time == Long.MIN_VALUE) {
-        return Collections.singletonList(new TimeRange(time + 1, Long.MAX_VALUE));
-      } else if (time == Long.MAX_VALUE) {
-        return Collections.singletonList(new TimeRange(Long.MIN_VALUE, time - 1));
-      } else {
-        return Arrays.asList(
-            new TimeRange(Long.MIN_VALUE, time - 1), new TimeRange(time + 1, Long.MAX_VALUE));
-      }
-    }
-
-    @Override
-    public Filter reverse() {
-      return new TimeEq(constant);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.TIME_NEQ;
-    }
-  }
-
-  public static final class TimeLt extends TimeColumnCompareFilter {
-
-    public TimeLt(long constant) {
-      super(constant);
-    }
-
-    public TimeLt(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    public boolean timeSatisfy(long time) {
-      return time < constant;
-    }
-
-    @Override
-    public boolean satisfyStartEndTime(long startTime, long endTime) {
-      return startTime < constant;
-    }
-
-    @Override
-    public boolean containStartEndTime(long startTime, long endTime) {
-      return endTime < constant;
-    }
-
-    @Override
-    public List<TimeRange> getTimeRanges() {
-      long right = constant;
-      if (right != Long.MIN_VALUE) {
-        return Collections.singletonList(new TimeRange(Long.MIN_VALUE, right - 1));
-      } else {
-        return Collections.emptyList();
-      }
-    }
-
-    @Override
-    public Filter reverse() {
-      return new TimeGtEq(constant);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.TIME_LT;
-    }
-  }
-
-  public static final class TimeLtEq extends TimeColumnCompareFilter {
-
-    public TimeLtEq(long constant) {
-      super(constant);
-    }
-
-    public TimeLtEq(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    public boolean timeSatisfy(long time) {
-      return time <= constant;
-    }
-
-    @Override
-    public boolean satisfyStartEndTime(long startTime, long endTime) {
-      return constant >= startTime;
-    }
-
-    @Override
-    public boolean containStartEndTime(long startTime, long endTime) {
-      return endTime <= constant;
-    }
-
-    @Override
-    public List<TimeRange> getTimeRanges() {
-      return Collections.singletonList(new TimeRange(Long.MIN_VALUE, constant));
-    }
-
-    @Override
-    public Filter reverse() {
-      return new TimeGt(constant);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.TIME_LTEQ;
-    }
-  }
-
-  public static final class TimeGt extends TimeColumnCompareFilter {
-
-    public TimeGt(long constant) {
-      super(constant);
-    }
-
-    public TimeGt(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    public boolean timeSatisfy(long time) {
-      return time > constant;
-    }
-
-    @Override
-    public boolean satisfyStartEndTime(long startTime, long endTime) {
-      return constant < endTime;
-    }
-
-    @Override
-    public boolean containStartEndTime(long startTime, long endTime) {
-      return startTime > constant;
-    }
-
-    @Override
-    public List<TimeRange> getTimeRanges() {
-      long left = constant;
-      if (left != Long.MAX_VALUE) {
-        return Collections.singletonList(new TimeRange(left + 1, Long.MAX_VALUE));
-      } else {
-        return Collections.emptyList();
-      }
-    }
-
-    @Override
-    public Filter reverse() {
-      return new TimeLtEq(constant);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.TIME_GT;
-    }
-  }
-
-  public static final class TimeGtEq extends TimeColumnCompareFilter {
-
-    public TimeGtEq(long constant) {
-      super(constant);
-    }
-
-    public TimeGtEq(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    public boolean timeSatisfy(long time) {
-      return time >= constant;
-    }
-
-    @Override
-    public boolean satisfyStartEndTime(long startTime, long endTime) {
-      return constant <= endTime;
-    }
-
-    @Override
-    public boolean containStartEndTime(long startTime, long endTime) {
-      return startTime >= constant;
-    }
-
-    @Override
-    public List<TimeRange> getTimeRanges() {
-      return Collections.singletonList(new TimeRange(constant, Long.MAX_VALUE));
-    }
-
-    @Override
-    public Filter reverse() {
-      return new TimeLt(constant);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.TIME_GTEQ;
-    }
-  }
-
-  // base class for TimeBetweenAnd, TimeNotBetweenAnd
-  abstract static class TimeColumnRangeFilter extends TimeFilter {
-
-    protected final long min;
-    protected final long max;
-
-    protected TimeColumnRangeFilter(long min, long max) {
-      this.min = min;
-      this.max = max;
-    }
-
-    protected TimeColumnRangeFilter(ByteBuffer buffer) {
-      this.min = ReadWriteIOUtils.readLong(buffer);
-      this.max = ReadWriteIOUtils.readLong(buffer);
-    }
-
-    @Override
-    public void serialize(DataOutputStream outputStream) throws IOException {
-      super.serialize(outputStream);
-      ReadWriteIOUtils.write(min, outputStream);
-      ReadWriteIOUtils.write(max, outputStream);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-      if (this == o) {
-        return true;
-      }
-      if (o == null || getClass() != o.getClass()) {
-        return false;
-      }
-      TimeColumnRangeFilter that = (TimeColumnRangeFilter) o;
-      return min == that.min && max == that.max;
-    }
-
-    @Override
-    public int hashCode() {
-      return Objects.hash(min, max);
-    }
-
-    @Override
-    public String toString() {
-      return String.format("time %s %s AND %s", getOperatorType().getSymbol(), min, max);
-    }
-  }
-
-  public static final class TimeBetweenAnd extends TimeColumnRangeFilter {
-
-    public TimeBetweenAnd(long min, long max) {
-      super(min, max);
-    }
-
-    public TimeBetweenAnd(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    public boolean timeSatisfy(long time) {
-      return time >= min && time <= max;
-    }
-
-    @Override
-    public boolean satisfyStartEndTime(long startTime, long endTime) {
-      return startTime <= max && endTime >= min;
-    }
-
-    @Override
-    public boolean containStartEndTime(long startTime, long endTime) {
-      return startTime >= min && endTime <= max;
-    }
-
-    @Override
-    public List<TimeRange> getTimeRanges() {
-      return Collections.singletonList(new TimeRange(min, max));
-    }
-
-    @Override
-    public Filter reverse() {
-      return new TimeNotBetweenAnd(min, max);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.TIME_BETWEEN_AND;
-    }
-  }
-
-  public static final class TimeNotBetweenAnd extends TimeColumnRangeFilter {
-
-    public TimeNotBetweenAnd(Long min, Long max) {
-      super(min, max);
-    }
-
-    public TimeNotBetweenAnd(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    public boolean timeSatisfy(long time) {
-      return time < min || time > max;
-    }
-
-    @Override
-    public boolean satisfyStartEndTime(long startTime, long endTime) {
-      return startTime < min || endTime > max;
-    }
-
-    @Override
-    public boolean containStartEndTime(long startTime, long endTime) {
-      return startTime > max || endTime < min;
-    }
-
-    @Override
-    public List<TimeRange> getTimeRanges() {
-      List<TimeRange> res = new ArrayList<>();
-      if (min != Long.MIN_VALUE) {
-        res.add(new TimeRange(Long.MIN_VALUE, min - 1));
-      }
-      if (max != Long.MAX_VALUE) {
-        res.add(new TimeRange(max + 1, Long.MAX_VALUE));
-      }
-      return res;
-    }
-
-    @Override
-    public Filter reverse() {
-      return new TimeBetweenAnd(min, max);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.TIME_NOT_BETWEEN_AND;
-    }
-  }
-
-  // base class for TimeIn, TimeNotIn
-  abstract static class TimeColumnSetFilter extends DisableStatisticsTimeFilter {
-
-    protected final Set<Long> candidates;
-
-    protected TimeColumnSetFilter(Set<Long> candidates) {
-      this.candidates = Objects.requireNonNull(candidates, "candidates cannot be null");
-    }
-
-    protected TimeColumnSetFilter(ByteBuffer buffer) {
-      this.candidates = ReadWriteIOUtils.readLongSet(buffer);
-    }
-
-    @Override
-    public void serialize(DataOutputStream outputStream) throws IOException {
-      super.serialize(outputStream);
-      ReadWriteIOUtils.writeLongSet(candidates, outputStream);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-      if (this == o) {
-        return true;
-      }
-      if (o == null || getClass() != o.getClass()) {
-        return false;
-      }
-      TimeColumnSetFilter that = (TimeColumnSetFilter) o;
-      return candidates.equals(that.candidates);
-    }
-
-    @Override
-    public int hashCode() {
-      return Objects.hash(candidates);
-    }
-
-    @Override
-    public String toString() {
-      return String.format(OPERATOR_TO_STRING_FORMAT, getOperatorType().getSymbol(), candidates);
-    }
-  }
-
-  public static final class TimeIn extends TimeColumnSetFilter {
-
-    public TimeIn(Set<Long> candidates) {
-      super(candidates);
-    }
-
-    public TimeIn(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    public boolean timeSatisfy(long time) {
-      return candidates.contains(time);
-    }
-
-    @Override
-    public List<TimeRange> getTimeRanges() {
-      List<TimeRange> res = new ArrayList<>();
-      for (long time : candidates) {
-        res.add(new TimeRange(time, time));
-      }
-      return res;
-    }
-
-    @Override
-    public Filter reverse() {
-      return new TimeNotIn(candidates);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.TIME_IN;
-    }
-  }
-
-  public static final class TimeNotIn extends TimeColumnSetFilter {
-
-    public TimeNotIn(Set<Long> candidates) {
-      super(candidates);
-    }
-
-    public TimeNotIn(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    public boolean timeSatisfy(long time) {
-      return !candidates.contains(time);
-    }
-
-    @Override
-    public List<TimeRange> getTimeRanges() {
-      return Collections.singletonList(new TimeRange(Long.MIN_VALUE, Long.MAX_VALUE));
-    }
-
-    @Override
-    public Filter reverse() {
-      return new TimeIn(candidates);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.TIME_NOT_IN;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/ValueFilterOperators.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/ValueFilterOperators.java
deleted file mode 100644
index e2d6d40..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/ValueFilterOperators.java
+++ /dev/null
@@ -1,954 +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.filter.operator;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.NotImplementedException;
-import org.apache.iotdb.tsfile.file.metadata.IMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.filter.basic.DisableStatisticsValueFilter;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.basic.OperatorType;
-import org.apache.iotdb.tsfile.read.filter.basic.ValueFilter;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-/**
- * These are the value column operators in a filter predicate expression tree. They are constructed
- * by using the methods in {@link ValueFilterApi}
- */
-public final class ValueFilterOperators {
-
-  private ValueFilterOperators() {
-    // forbidden construction
-  }
-
-  private static final String CONSTANT_CANNOT_BE_NULL_MSG = "constant cannot be null";
-  public static final String CANNOT_PUSH_DOWN_MSG = " operator can not be pushed down.";
-
-  private static final String OPERATOR_TO_STRING_FORMAT = "measurements[%s] %s %s";
-
-  // base class for ValueEq, ValueNotEq, ValueLt, ValueGt, ValueLtEq, ValueGtEq
-  abstract static class ValueColumnCompareFilter<T extends Comparable<T>> extends ValueFilter {
-
-    protected final T constant;
-
-    protected ValueColumnCompareFilter(int measurementIndex, T constant) {
-      super(measurementIndex);
-      this.constant = Objects.requireNonNull(constant, CONSTANT_CANNOT_BE_NULL_MSG);
-    }
-
-    @SuppressWarnings("unchecked")
-    protected ValueColumnCompareFilter(ByteBuffer buffer) {
-      super(buffer);
-      this.constant =
-          Objects.requireNonNull(
-              (T) ReadWriteIOUtils.readObject(buffer), CONSTANT_CANNOT_BE_NULL_MSG);
-    }
-
-    @Override
-    public void serialize(DataOutputStream outputStream) throws IOException {
-      super.serialize(outputStream);
-      ReadWriteIOUtils.writeObject(constant, outputStream);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-      if (this == o) {
-        return true;
-      }
-      if (o == null || getClass() != o.getClass()) {
-        return false;
-      }
-      if (!super.equals(o)) {
-        return false;
-      }
-      ValueColumnCompareFilter<?> that = (ValueColumnCompareFilter<?>) o;
-      return Objects.equals(constant, that.constant);
-    }
-
-    @Override
-    public int hashCode() {
-      return Objects.hash(super.hashCode(), constant);
-    }
-
-    @Override
-    public String toString() {
-      return String.format(
-          OPERATOR_TO_STRING_FORMAT, measurementIndex, getOperatorType().getSymbol(), constant);
-    }
-  }
-
-  public static final class ValueEq<T extends Comparable<T>> extends ValueColumnCompareFilter<T> {
-
-    public ValueEq(int measurementIndex, T constant) {
-      super(measurementIndex, constant);
-    }
-
-    public ValueEq(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    public boolean valueSatisfy(Object value) {
-      return constant.equals(value);
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean canSkip(Statistics<? extends Serializable> statistics) {
-      if (statisticsNotAvailable(statistics)) {
-        return false;
-      }
-
-      // drop if value < min || value > max
-      return constant.compareTo((T) statistics.getMinValue()) < 0
-          || constant.compareTo((T) statistics.getMaxValue()) > 0;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean allSatisfy(Statistics<? extends Serializable> statistics) {
-      if (statisticsNotAvailable(statistics)) {
-        return false;
-      }
-
-      return constant.compareTo((T) statistics.getMinValue()) == 0
-          && constant.compareTo((T) statistics.getMaxValue()) == 0;
-    }
-
-    @Override
-    public Filter reverse() {
-      return new ValueNotEq<>(measurementIndex, constant);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.VALUE_EQ;
-    }
-  }
-
-  public static final class ValueNotEq<T extends Comparable<T>>
-      extends ValueColumnCompareFilter<T> {
-
-    public ValueNotEq(int measurementIndex, T constant) {
-      super(measurementIndex, constant);
-    }
-
-    public ValueNotEq(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    public boolean valueSatisfy(Object value) {
-      return !constant.equals(value);
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean canSkip(Statistics<? extends Serializable> statistics) {
-      if (statisticsNotAvailable(statistics)) {
-        return false;
-      }
-
-      // drop if this is a column where min = max = value
-      return constant.compareTo((T) statistics.getMinValue()) == 0
-          && constant.compareTo((T) statistics.getMaxValue()) == 0;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean allSatisfy(Statistics<? extends Serializable> statistics) {
-      if (statisticsNotAvailable(statistics)) {
-        return false;
-      }
-
-      return constant.compareTo((T) statistics.getMinValue()) < 0
-          || constant.compareTo((T) statistics.getMaxValue()) > 0;
-    }
-
-    @Override
-    public Filter reverse() {
-      return new ValueEq<>(measurementIndex, constant);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.VALUE_NEQ;
-    }
-  }
-
-  public static final class ValueLt<T extends Comparable<T>> extends ValueColumnCompareFilter<T> {
-
-    public ValueLt(int measurementIndex, T constant) {
-      super(measurementIndex, constant);
-    }
-
-    public ValueLt(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean valueSatisfy(Object value) {
-      return constant.compareTo((T) value) > 0;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean canSkip(Statistics<? extends Serializable> statistics) {
-      if (statisticsNotAvailable(statistics)) {
-        return false;
-      }
-
-      // drop if value <= min
-      return constant.compareTo((T) statistics.getMinValue()) <= 0;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean allSatisfy(Statistics<? extends Serializable> statistics) {
-      if (statisticsNotAvailable(statistics)) {
-        return false;
-      }
-
-      return constant.compareTo((T) statistics.getMaxValue()) > 0;
-    }
-
-    @Override
-    public Filter reverse() {
-      return new ValueGtEq<>(measurementIndex, constant);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.VALUE_LT;
-    }
-  }
-
-  public static final class ValueLtEq<T extends Comparable<T>> extends ValueColumnCompareFilter<T> {
-
-    public ValueLtEq(int measurementIndex, T constant) {
-      super(measurementIndex, constant);
-    }
-
-    public ValueLtEq(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean valueSatisfy(Object value) {
-      return constant.compareTo((T) value) >= 0;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean canSkip(Statistics<? extends Serializable> statistics) {
-      if (statisticsNotAvailable(statistics)) {
-        return false;
-      }
-
-      // drop if value < min
-      return constant.compareTo((T) statistics.getMinValue()) < 0;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean allSatisfy(Statistics<? extends Serializable> statistics) {
-      if (statisticsNotAvailable(statistics)) {
-        return false;
-      }
-
-      return constant.compareTo((T) statistics.getMaxValue()) >= 0;
-    }
-
-    @Override
-    public Filter reverse() {
-      return new ValueGt<>(measurementIndex, constant);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.VALUE_LTEQ;
-    }
-  }
-
-  public static final class ValueGt<T extends Comparable<T>> extends ValueColumnCompareFilter<T> {
-
-    public ValueGt(int measurementIndex, T constant) {
-      super(measurementIndex, constant);
-    }
-
-    public ValueGt(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean valueSatisfy(Object value) {
-      return constant.compareTo((T) value) < 0;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean canSkip(Statistics<? extends Serializable> statistics) {
-      if (statisticsNotAvailable(statistics)) {
-        return false;
-      }
-
-      // drop if value >= max
-      return constant.compareTo((T) statistics.getMaxValue()) >= 0;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean allSatisfy(Statistics<? extends Serializable> statistics) {
-      if (statisticsNotAvailable(statistics)) {
-        return false;
-      }
-
-      return constant.compareTo((T) statistics.getMinValue()) < 0;
-    }
-
-    @Override
-    public Filter reverse() {
-      return new ValueLtEq<>(measurementIndex, constant);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.VALUE_GT;
-    }
-  }
-
-  public static final class ValueGtEq<T extends Comparable<T>> extends ValueColumnCompareFilter<T> {
-
-    public ValueGtEq(int measurementIndex, T constant) {
-      super(measurementIndex, constant);
-    }
-
-    public ValueGtEq(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean valueSatisfy(Object value) {
-      return constant.compareTo((T) value) <= 0;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean canSkip(Statistics<? extends Serializable> statistics) {
-      if (statisticsNotAvailable(statistics)) {
-        return false;
-      }
-
-      // drop if value > max
-      return constant.compareTo((T) statistics.getMaxValue()) > 0;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean allSatisfy(Statistics<? extends Serializable> statistics) {
-      if (statisticsNotAvailable(statistics)) {
-        return false;
-      }
-
-      return constant.compareTo((T) statistics.getMinValue()) <= 0;
-    }
-
-    @Override
-    public Filter reverse() {
-      return new ValueLt<>(measurementIndex, constant);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.VALUE_GTEQ;
-    }
-  }
-
-  // base class for ValueBetweenAnd, ValueNotBetweenAnd
-  abstract static class ValueColumnRangeFilter<T extends Comparable<T>> extends ValueFilter {
-
-    protected final T min;
-    protected final T max;
-
-    protected ValueColumnRangeFilter(int measurementIndex, T min, T max) {
-      super(measurementIndex);
-      this.min = Objects.requireNonNull(min, "min cannot be null");
-      this.max = Objects.requireNonNull(max, "max cannot be null");
-    }
-
-    @SuppressWarnings("unchecked")
-    protected ValueColumnRangeFilter(ByteBuffer buffer) {
-      super(buffer);
-      this.min =
-          Objects.requireNonNull((T) ReadWriteIOUtils.readObject(buffer), "min cannot be null");
-      this.max =
-          Objects.requireNonNull((T) ReadWriteIOUtils.readObject(buffer), "max cannot be null");
-    }
-
-    @Override
-    public void serialize(DataOutputStream outputStream) throws IOException {
-      super.serialize(outputStream);
-      ReadWriteIOUtils.writeObject(min, outputStream);
-      ReadWriteIOUtils.writeObject(max, outputStream);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-      if (this == o) {
-        return true;
-      }
-      if (o == null || getClass() != o.getClass()) {
-        return false;
-      }
-      if (!super.equals(o)) {
-        return false;
-      }
-      ValueColumnRangeFilter<?> that = (ValueColumnRangeFilter<?>) o;
-      return min.equals(that.min) && max.equals(that.max);
-    }
-
-    @Override
-    public int hashCode() {
-      return Objects.hash(super.hashCode(), min, max);
-    }
-
-    @Override
-    public String toString() {
-      return String.format(
-          "measurements[%s] %s %s AND %s",
-          measurementIndex, getOperatorType().getSymbol(), min, max);
-    }
-  }
-
-  public static final class ValueBetweenAnd<T extends Comparable<T>>
-      extends ValueColumnRangeFilter<T> {
-
-    public ValueBetweenAnd(int measurementIndex, T min, T max) {
-      super(measurementIndex, min, max);
-    }
-
-    public ValueBetweenAnd(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean valueSatisfy(Object value) {
-      return min.compareTo((T) value) <= 0 && max.compareTo((T) value) >= 0;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean canSkip(Statistics<? extends Serializable> statistics) {
-      if (statisticsNotAvailable(statistics)) {
-        return false;
-      }
-
-      return ((T) statistics.getMaxValue()).compareTo(min) < 0
-          || ((T) statistics.getMinValue()).compareTo(max) > 0;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean allSatisfy(Statistics<? extends Serializable> statistics) {
-      if (statisticsNotAvailable(statistics)) {
-        return false;
-      }
-
-      return ((T) statistics.getMinValue()).compareTo(min) >= 0
-          && ((T) statistics.getMaxValue()).compareTo(max) <= 0;
-    }
-
-    @Override
-    public Filter reverse() {
-      return new ValueNotBetweenAnd<>(measurementIndex, min, max);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.VALUE_BETWEEN_AND;
-    }
-  }
-
-  public static final class ValueNotBetweenAnd<T extends Comparable<T>>
-      extends ValueColumnRangeFilter<T> {
-
-    public ValueNotBetweenAnd(int measurementIndex, T min, T max) {
-      super(measurementIndex, min, max);
-    }
-
-    public ValueNotBetweenAnd(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean valueSatisfy(Object value) {
-      return min.compareTo((T) value) > 0 || max.compareTo((T) value) < 0;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean canSkip(Statistics<? extends Serializable> statistics) {
-      if (statisticsNotAvailable(statistics)) {
-        return false;
-      }
-
-      return ((T) statistics.getMinValue()).compareTo(min) >= 0
-          && ((T) statistics.getMaxValue()).compareTo(max) <= 0;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public boolean allSatisfy(Statistics<? extends Serializable> statistics) {
-      if (statisticsNotAvailable(statistics)) {
-        return false;
-      }
-
-      return ((T) statistics.getMinValue()).compareTo(max) > 0
-          || ((T) statistics.getMaxValue()).compareTo(min) < 0;
-    }
-
-    @Override
-    public Filter reverse() {
-      return new ValueBetweenAnd<>(measurementIndex, min, max);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.VALUE_NOT_BETWEEN_AND;
-    }
-  }
-
-  // we have no statistics available, we cannot drop any blocks
-  private static boolean statisticsNotAvailable(Statistics<?> statistics) {
-    return statistics.getType() == TSDataType.TEXT
-        || statistics.getType() == TSDataType.BOOLEAN
-        || statistics.isEmpty();
-  }
-
-  // base class for ValueIsNull and ValueIsNotNull
-  abstract static class ValueCompareNullFilter extends ValueFilter {
-
-    protected ValueCompareNullFilter(int measurementIndex) {
-      super(measurementIndex);
-    }
-
-    protected ValueCompareNullFilter(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    public String toString() {
-      return String.format("measurements[%s] %s", measurementIndex, getOperatorType().getSymbol());
-    }
-  }
-
-  // ValueIsNull can not be pushed down
-  public static final class ValueIsNull extends ValueCompareNullFilter {
-
-    public ValueIsNull(int measurementIndex) {
-      super(measurementIndex);
-    }
-
-    public ValueIsNull(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    public boolean satisfy(long time, Object value) {
-      throw new IllegalArgumentException(getOperatorType().getSymbol() + CANNOT_PUSH_DOWN_MSG);
-    }
-
-    @Override
-    public boolean satisfyRow(long time, Object[] values) {
-      throw new IllegalArgumentException(getOperatorType().getSymbol() + CANNOT_PUSH_DOWN_MSG);
-    }
-
-    @Override
-    public boolean valueSatisfy(Object value) {
-      throw new IllegalArgumentException(getOperatorType().getSymbol() + CANNOT_PUSH_DOWN_MSG);
-    }
-
-    @Override
-    public boolean canSkip(IMetadata metadata) {
-      throw new IllegalArgumentException(getOperatorType().getSymbol() + CANNOT_PUSH_DOWN_MSG);
-    }
-
-    @Override
-    public boolean canSkip(Statistics<? extends Serializable> statistics) {
-      throw new IllegalArgumentException(getOperatorType().getSymbol() + CANNOT_PUSH_DOWN_MSG);
-    }
-
-    @Override
-    public boolean allSatisfy(Statistics<? extends Serializable> statistics) {
-      throw new IllegalArgumentException(getOperatorType().getSymbol() + CANNOT_PUSH_DOWN_MSG);
-    }
-
-    @Override
-    public boolean allSatisfy(IMetadata metadata) {
-      throw new IllegalArgumentException(getOperatorType().getSymbol() + CANNOT_PUSH_DOWN_MSG);
-    }
-
-    @Override
-    public Filter reverse() {
-      return new ValueIsNotNull(measurementIndex);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.VALUE_IS_NULL;
-    }
-  }
-
-  // ValueIsNotNull are only used in ValueFilter
-  public static final class ValueIsNotNull extends ValueCompareNullFilter {
-
-    public ValueIsNotNull(int measurementIndex) {
-      super(measurementIndex);
-    }
-
-    public ValueIsNotNull(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    public boolean valueSatisfy(Object value) {
-      return value != null;
-    }
-
-    @Override
-    public boolean canSkip(IMetadata metadata) {
-      Optional<Statistics<? extends Serializable>> statistics =
-          metadata.getMeasurementStatistics(measurementIndex);
-
-      if (!statistics.isPresent()) {
-        // the measurement isn't in this block so all values are null.
-        // null is always equal to null
-        return true;
-      }
-
-      // we are looking for records where v notEq(null)
-      // so, if this is a column of all nulls, we can drop it
-      return isAllNulls(statistics.get());
-    }
-
-    @Override
-    public boolean canSkip(Statistics<? extends Serializable> statistics) {
-      throw new NotImplementedException();
-    }
-
-    @Override
-    public boolean allSatisfy(IMetadata metadata) {
-      Optional<Statistics<? extends Serializable>> statistics =
-          metadata.getMeasurementStatistics(measurementIndex);
-
-      if (!statistics.isPresent()) {
-        // block cannot match
-        return false;
-      }
-
-      return !metadata.hasNullValue(measurementIndex);
-    }
-
-    @Override
-    public boolean allSatisfy(Statistics<? extends Serializable> statistics) {
-      throw new NotImplementedException();
-    }
-
-    @Override
-    public Filter reverse() {
-      return new ValueIsNull(measurementIndex);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.VALUE_IS_NOT_NULL;
-    }
-
-    private boolean isAllNulls(Statistics<? extends Serializable> statistics) {
-      return statistics.getCount() == 0;
-    }
-  }
-
-  // base class for ValueIn, ValueNotIn
-  abstract static class ValueColumnSetFilter<T> extends DisableStatisticsValueFilter {
-
-    protected final Set<T> candidates;
-
-    protected ValueColumnSetFilter(int measurementIndex, Set<T> candidates) {
-      super(measurementIndex);
-      this.candidates = Objects.requireNonNull(candidates, "candidates cannot be null");
-    }
-
-    protected ValueColumnSetFilter(ByteBuffer buffer) {
-      super(buffer);
-      candidates = ReadWriteIOUtils.readObjectSet(buffer);
-    }
-
-    @Override
-    public void serialize(DataOutputStream outputStream) throws IOException {
-      super.serialize(outputStream);
-      ReadWriteIOUtils.writeObjectSet(candidates, outputStream);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-      if (this == o) {
-        return true;
-      }
-      if (o == null || getClass() != o.getClass()) {
-        return false;
-      }
-      if (!super.equals(o)) {
-        return false;
-      }
-      ValueColumnSetFilter<?> that = (ValueColumnSetFilter<?>) o;
-      return candidates.equals(that.candidates);
-    }
-
-    @Override
-    public int hashCode() {
-      return Objects.hash(super.hashCode(), candidates);
-    }
-
-    @Override
-    public String toString() {
-      return String.format(
-          OPERATOR_TO_STRING_FORMAT, measurementIndex, getOperatorType().getSymbol(), candidates);
-    }
-  }
-
-  public static final class ValueIn<T> extends ValueColumnSetFilter<T> {
-
-    public ValueIn(int measurementIndex, Set<T> candidates) {
-      super(measurementIndex, candidates);
-    }
-
-    public ValueIn(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    public boolean valueSatisfy(Object value) {
-      return candidates.contains(value);
-    }
-
-    @Override
-    public Filter reverse() {
-      return new ValueNotIn<>(measurementIndex, candidates);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.VALUE_IN;
-    }
-  }
-
-  public static final class ValueNotIn<T> extends ValueColumnSetFilter<T> {
-
-    public ValueNotIn(int measurementIndex, Set<T> candidates) {
-      super(measurementIndex, candidates);
-    }
-
-    public ValueNotIn(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    public boolean valueSatisfy(Object value) {
-      return !candidates.contains(value);
-    }
-
-    @Override
-    public Filter reverse() {
-      return new ValueIn<>(measurementIndex, candidates);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.VALUE_NOT_IN;
-    }
-  }
-
-  // base class for ValueRegex, ValueNotRegex
-  abstract static class ValueColumnPatternMatchFilter extends DisableStatisticsValueFilter {
-
-    protected final Pattern pattern;
-
-    protected ValueColumnPatternMatchFilter(int measurementIndex, Pattern pattern) {
-      super(measurementIndex);
-      this.pattern = Objects.requireNonNull(pattern, "pattern cannot be null");
-    }
-
-    protected ValueColumnPatternMatchFilter(ByteBuffer buffer) {
-      super(buffer);
-      this.pattern =
-          Pattern.compile(
-              Objects.requireNonNull(
-                  ReadWriteIOUtils.readString(buffer), "pattern cannot be null"));
-    }
-
-    @Override
-    public void serialize(DataOutputStream outputStream) throws IOException {
-      super.serialize(outputStream);
-      ReadWriteIOUtils.write(pattern.pattern(), outputStream);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-      if (this == o) {
-        return true;
-      }
-      if (o == null || getClass() != o.getClass()) {
-        return false;
-      }
-      if (!super.equals(o)) {
-        return false;
-      }
-      ValueColumnPatternMatchFilter that = (ValueColumnPatternMatchFilter) o;
-      return pattern.pattern().equals(that.pattern.pattern());
-    }
-
-    @Override
-    public int hashCode() {
-      return Objects.hash(super.hashCode(), pattern.pattern());
-    }
-
-    @Override
-    public String toString() {
-      return String.format(
-          OPERATOR_TO_STRING_FORMAT, measurementIndex, getOperatorType().getSymbol(), pattern);
-    }
-  }
-
-  public static final class ValueRegexp extends ValueColumnPatternMatchFilter {
-
-    public ValueRegexp(int measurementIndex, Pattern pattern) {
-      super(measurementIndex, pattern);
-    }
-
-    public ValueRegexp(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    public boolean valueSatisfy(Object value) {
-      return pattern.matcher(new MatcherInput(value.toString(), new AccessCount())).find();
-    }
-
-    @Override
-    public Filter reverse() {
-      return new ValueNotRegexp(measurementIndex, pattern);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.VALUE_REGEXP;
-    }
-  }
-
-  public static final class ValueNotRegexp extends ValueColumnPatternMatchFilter {
-
-    public ValueNotRegexp(int measurementIndex, Pattern pattern) {
-      super(measurementIndex, pattern);
-    }
-
-    public ValueNotRegexp(ByteBuffer buffer) {
-      super(buffer);
-    }
-
-    @Override
-    public boolean valueSatisfy(Object value) {
-      return !pattern.matcher(new MatcherInput(value.toString(), new AccessCount())).find();
-    }
-
-    @Override
-    public Filter reverse() {
-      return new ValueRegexp(measurementIndex, pattern);
-    }
-
-    @Override
-    public OperatorType getOperatorType() {
-      return OperatorType.VALUE_NOT_REGEXP;
-    }
-  }
-
-  private static class AccessCount {
-    private int count;
-    private final int accessThreshold =
-        TSFileDescriptor.getInstance().getConfig().getPatternMatchingThreshold();
-
-    public void check() throws IllegalStateException {
-      if (this.count++ > accessThreshold) {
-        throw new IllegalStateException("Pattern access threshold exceeded");
-      }
-    }
-  }
-
-  private static class MatcherInput implements CharSequence {
-
-    private final CharSequence value;
-
-    private final AccessCount access;
-
-    public MatcherInput(CharSequence value, AccessCount access) {
-      this.value = value;
-      this.access = access;
-    }
-
-    @Override
-    public char charAt(int index) {
-      this.access.check();
-      return this.value.charAt(index);
-    }
-
-    @Override
-    public CharSequence subSequence(int start, int end) {
-      return new MatcherInput(this.value.subSequence(start, end), this.access);
-    }
-
-    @Override
-    public int length() {
-      return this.value.length();
-    }
-
-    @Override
-    public String toString() {
-      return this.value.toString();
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/DataSetWithTimeGenerator.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/DataSetWithTimeGenerator.java
deleted file mode 100644
index d9addd6..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/DataSetWithTimeGenerator.java
+++ /dev/null
@@ -1,100 +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.query.dataset;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.query.timegenerator.TimeGenerator;
-import org.apache.iotdb.tsfile.read.reader.series.FileSeriesReaderByTimestamp;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.io.IOException;
-import java.util.List;
-
-/**
- * query processing: (1) generate time by series that has filter (2) get value of series that does
- * not have filter (3) construct RowRecord.
- */
-public class DataSetWithTimeGenerator extends QueryDataSet {
-
-  private TimeGenerator timeGenerator;
-  private List<FileSeriesReaderByTimestamp> readers;
-  private List<Boolean> cached;
-
-  /**
-   * constructor of DataSetWithTimeGenerator.
-   *
-   * @param paths paths in List structure
-   * @param cached cached boolean in List(boolean) structure
-   * @param dataTypes TSDataTypes in List structure
-   * @param timeGenerator TimeGenerator object
-   * @param readers readers in List(FileSeriesReaderByTimestamp) structure
-   */
-  public DataSetWithTimeGenerator(
-      List<Path> paths,
-      List<Boolean> cached,
-      List<TSDataType> dataTypes,
-      TimeGenerator timeGenerator,
-      List<FileSeriesReaderByTimestamp> readers) {
-    super(paths, dataTypes);
-    this.cached = cached;
-    this.timeGenerator = timeGenerator;
-    this.readers = readers;
-  }
-
-  @Override
-  public boolean hasNextWithoutConstraint() throws IOException {
-    return timeGenerator.hasNext();
-  }
-
-  @Override
-  public RowRecord nextWithoutConstraint() throws IOException {
-    long timestamp = timeGenerator.next();
-    RowRecord rowRecord = new RowRecord(timestamp);
-
-    for (int i = 0; i < paths.size(); i++) {
-
-      // get value from readers in time generator
-      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];
-          rowRecord.addField(v.getValue(), v.getDataType());
-        } else {
-          rowRecord.addField(value, dataTypes.get(i));
-        }
-        continue;
-      }
-
-      // get value from series reader without filter
-      FileSeriesReaderByTimestamp fileSeriesReaderByTimestamp = readers.get(i);
-      Object value = fileSeriesReaderByTimestamp.getValueInTimestamp(timestamp);
-      if (dataTypes.get(i) == TSDataType.VECTOR) {
-        TsPrimitiveType v = ((TsPrimitiveType[]) value)[0];
-        rowRecord.addField(v.getValue(), v.getDataType());
-      } else {
-        rowRecord.addField(value, dataTypes.get(i));
-      }
-    }
-
-    return rowRecord;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/DataSetWithoutTimeGenerator.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/DataSetWithoutTimeGenerator.java
deleted file mode 100644
index 6132d59..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/DataSetWithoutTimeGenerator.java
+++ /dev/null
@@ -1,188 +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.query.dataset;
-
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.reader.series.AbstractFileSeriesReader;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.PriorityQueue;
-import java.util.Set;
-
-/** multi-way merging data set, no need to use TimeGenerator. */
-public class DataSetWithoutTimeGenerator extends QueryDataSet {
-
-  private final List<AbstractFileSeriesReader> readers;
-
-  private List<BatchData> batchDataList;
-
-  private List<Boolean> hasDataRemaining;
-
-  /** heap only need to store time. */
-  private PriorityQueue<Long> timeHeap;
-
-  private Set<Long> timeSet;
-
-  /**
-   * constructor of DataSetWithoutTimeGenerator.
-   *
-   * @param paths paths in List structure
-   * @param dataTypes TSDataTypes in List structure
-   * @param readers readers in List(FileSeriesReaderByTimestamp) structure
-   * @throws IOException IOException
-   */
-  public DataSetWithoutTimeGenerator(
-      List<Path> paths, List<TSDataType> dataTypes, List<AbstractFileSeriesReader> readers)
-      throws IOException {
-    super(paths, dataTypes);
-    this.readers = readers;
-    initHeap();
-  }
-
-  private void initHeap() throws IOException {
-    hasDataRemaining = new ArrayList<>();
-    batchDataList = new ArrayList<>();
-    timeHeap = new PriorityQueue<>();
-    timeSet = new HashSet<>();
-
-    for (int i = 0; i < paths.size(); i++) {
-      AbstractFileSeriesReader reader = readers.get(i);
-      if (!reader.hasNextBatch()) {
-        batchDataList.add(new BatchData());
-        hasDataRemaining.add(false);
-      } else {
-        batchDataList.add(reader.nextBatch());
-        hasDataRemaining.add(true);
-      }
-    }
-
-    for (BatchData data : batchDataList) {
-      if (data.hasCurrent()) {
-        timeHeapPut(data.currentTime());
-      }
-    }
-  }
-
-  @Override
-  public boolean hasNextWithoutConstraint() {
-    return !timeHeap.isEmpty();
-  }
-
-  @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning
-  @Override
-  public RowRecord nextWithoutConstraint() throws IOException {
-    long minTime = timeHeapGet();
-
-    RowRecord rowRecord = new RowRecord(minTime);
-
-    for (int i = 0; i < paths.size(); i++) {
-      if (Boolean.FALSE.equals(hasDataRemaining.get(i))) {
-        rowRecord.addField(null);
-        continue;
-      }
-
-      BatchData data = batchDataList.get(i);
-
-      if (data.hasCurrent() && data.currentTime() == minTime) {
-        Field field = putValueToField(data);
-        data.next();
-
-        if (!data.hasCurrent()) {
-          AbstractFileSeriesReader reader = readers.get(i);
-          if (reader.hasNextBatch()) {
-            data = reader.nextBatch();
-            if (data.hasCurrent()) {
-              batchDataList.set(i, data);
-              timeHeapPut(data.currentTime());
-            } else {
-              hasDataRemaining.set(i, false);
-            }
-          } else {
-            hasDataRemaining.set(i, false);
-          }
-        } else {
-          timeHeapPut(data.currentTime());
-        }
-        rowRecord.addField(field);
-      } else {
-        rowRecord.addField(null);
-      }
-    }
-    return rowRecord;
-  }
-
-  /** keep heap from storing duplicate time. */
-  private void timeHeapPut(long time) {
-    if (!timeSet.contains(time)) {
-      timeSet.add(time);
-      timeHeap.add(time);
-    }
-  }
-
-  private Long timeHeapGet() {
-    Long t = timeHeap.poll();
-    timeSet.remove(t);
-    return t;
-  }
-
-  private Field putValueToField(BatchData col) {
-    TSDataType type = col.getDataType();
-    Field field;
-    if (type == TSDataType.VECTOR) {
-      field = new Field((col.getVector())[0].getDataType());
-    } else {
-      field = new Field(col.getDataType());
-    }
-    switch (col.getDataType()) {
-      case BOOLEAN:
-        field.setBoolV(col.getBoolean());
-        break;
-      case INT32:
-        field.setIntV(col.getInt());
-        break;
-      case INT64:
-        field.setLongV(col.getLong());
-        break;
-      case FLOAT:
-        field.setFloatV(col.getFloat());
-        break;
-      case DOUBLE:
-        field.setDoubleV(col.getDouble());
-        break;
-      case TEXT:
-        field.setBinaryV(col.getBinary());
-        break;
-      case VECTOR:
-        Field.setTsPrimitiveValue((col.getVector())[0], field);
-        break;
-      default:
-        throw new UnSupportedDataTypeException("UnSupported" + col.getDataType());
-    }
-    return field;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/QueryDataSet.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/QueryDataSet.java
deleted file mode 100644
index e1d8365..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/dataset/QueryDataSet.java
+++ /dev/null
@@ -1,266 +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.query.dataset;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Set;
-
-public abstract class QueryDataSet {
-
-  protected List<Path> paths;
-  protected List<TSDataType> dataTypes;
-
-  protected int rowLimit = 0; // rowLimit > 0 means the LIMIT constraint exists
-  protected int rowOffset = 0;
-  protected int alreadyReturnedRowNum = 0;
-  protected int fetchSize = 10000;
-  protected boolean ascending;
-  /*
-   *  whether current data group has data for query.
-   *  If not null(must be in cluster mode),
-   *  we need to redirect the query to any data group which has some data to speed up query.
-   */
-  protected EndPoint endPoint = null;
-
-  /** if any column is null, we don't need that row */
-  protected boolean withoutAnyNull;
-
-  /** Only if all columns are null, we don't need that row */
-  protected boolean withoutAllNull;
-
-  /** index set that withoutNullColumns for output data columns */
-  protected Set<Integer> withoutNullColumnsIndex;
-
-  protected int columnNum;
-
-  /** For redirect query. Need keep consistent with EndPoint in rpc.thrift. */
-  public static class EndPoint {
-    private String ip = null;
-    private int port = 0;
-
-    public EndPoint(String ip, int port) {
-      this.ip = ip;
-      this.port = port;
-    }
-
-    public EndPoint() {}
-
-    public String getIp() {
-      return ip;
-    }
-
-    public void setIp(String ip) {
-      this.ip = ip;
-    }
-
-    public int getPort() {
-      return port;
-    }
-
-    public void setPort(int port) {
-      this.port = port;
-    }
-
-    @Override
-    public String toString() {
-      return "ip:port=" + ip + ":" + port;
-    }
-  }
-
-  protected QueryDataSet() {}
-
-  protected QueryDataSet(List<Path> paths, List<TSDataType> dataTypes) {
-    initQueryDataSetFields(paths, dataTypes, true);
-  }
-
-  protected QueryDataSet(List<Path> paths, List<TSDataType> dataTypes, boolean ascending) {
-    initQueryDataSetFields(paths, dataTypes, ascending);
-  }
-
-  protected void initQueryDataSetFields(
-      List<Path> paths, List<TSDataType> dataTypes, boolean ascending) {
-    this.paths = paths;
-    this.dataTypes = dataTypes;
-    this.ascending = ascending;
-    this.columnNum = 0;
-    if (paths != null) {
-      for (Path p : paths) {
-        columnNum += p.getColumnNum();
-      }
-    }
-  }
-
-  public Set<Integer> getWithoutNullColumnsIndex() {
-    return withoutNullColumnsIndex;
-  }
-
-  public void setWithoutNullColumnsIndex(Set<Integer> withoutNullColumnsIndex) {
-    this.withoutNullColumnsIndex = withoutNullColumnsIndex;
-  }
-
-  public boolean hasNext() throws IOException {
-    // proceed to the OFFSET row by skipping rows
-    while (rowOffset > 0) {
-      if (hasNextWithoutConstraint()) {
-        RowRecord rowRecord = nextWithoutConstraint(); // DO NOT use next()
-        // filter rows whose columns are null according to the rule
-        if (withoutNullFilter(rowRecord)) {
-          continue;
-        }
-        rowOffset--;
-      } else {
-        return false;
-      }
-    }
-
-    // make sure within the LIMIT constraint if exists
-    if (rowLimit > 0 && alreadyReturnedRowNum >= rowLimit) {
-      return false;
-    }
-
-    return hasNextWithoutConstraint();
-  }
-
-  /**
-   * check rowRecord whether satisfy without null condition
-   *
-   * @param rowRecord rowRecord
-   * @return true satisfy false don't satisfy
-   */
-  public boolean withoutNullFilter(RowRecord rowRecord) {
-    boolean anyNullFlag =
-        (withoutNullColumnsIndex == null)
-            ? rowRecord.hasNullField()
-            : (withoutNullColumnsIndex.isEmpty() && rowRecord.hasNullField());
-    boolean allNullFlag = (withoutNullColumnsIndex != null) || rowRecord.isAllNull();
-
-    if (withoutNullColumnsIndex != null) {
-      for (int index : withoutNullColumnsIndex) {
-        Field field = rowRecord.getFields().get(index);
-        if (field == null || field.getDataType() == null) {
-          anyNullFlag = true;
-          if (withoutAnyNull) {
-            break;
-          }
-        } else {
-          allNullFlag = false;
-          if (withoutAllNull) {
-            break;
-          }
-        }
-      }
-    }
-
-    if (withoutNullColumnsIndex != null && withoutNullColumnsIndex.isEmpty()) {
-      allNullFlag = rowRecord.isAllNull();
-    }
-    return (withoutAllNull && allNullFlag) || (withoutAnyNull && anyNullFlag);
-  }
-
-  public abstract boolean hasNextWithoutConstraint() throws IOException;
-
-  /** This method is used for batch query, return RowRecord. */
-  public RowRecord next() throws IOException {
-    if (rowLimit > 0) {
-      alreadyReturnedRowNum++;
-    }
-    return nextWithoutConstraint();
-  }
-
-  public void setFetchSize(int fetchSize) {
-    this.fetchSize = fetchSize;
-  }
-
-  public abstract RowRecord nextWithoutConstraint() throws IOException;
-
-  public List<Path> getPaths() {
-    return paths;
-  }
-
-  public List<TSDataType> getDataTypes() {
-    return dataTypes;
-  }
-
-  public void setDataTypes(List<TSDataType> dataTypes) {
-    this.dataTypes = dataTypes;
-  }
-
-  public int getRowLimit() {
-    return rowLimit;
-  }
-
-  public void setRowLimit(int rowLimit) {
-    this.rowLimit = rowLimit;
-  }
-
-  public int getRowOffset() {
-    return rowOffset;
-  }
-
-  public void setRowOffset(int rowOffset) {
-    this.rowOffset = rowOffset;
-  }
-
-  public boolean hasLimit() {
-    return rowLimit > 0;
-  }
-
-  public EndPoint getEndPoint() {
-    return endPoint;
-  }
-
-  public void setEndPoint(EndPoint endPoint) {
-    this.endPoint = endPoint;
-  }
-
-  public boolean isWithoutAnyNull() {
-    return withoutAnyNull;
-  }
-
-  public void setWithoutAnyNull(boolean withoutAnyNull) {
-    this.withoutAnyNull = withoutAnyNull;
-  }
-
-  public boolean isWithoutAllNull() {
-    return withoutAllNull;
-  }
-
-  public void setWithoutAllNull(boolean withoutAllNull) {
-    this.withoutAllNull = withoutAllNull;
-  }
-
-  public void decreaseAlreadyReturnedRowNum() {
-    alreadyReturnedRowNum--;
-  }
-
-  public int getColumnNum() {
-    return columnNum;
-  }
-
-  public void setColumnNum(int columnNum) {
-    this.columnNum = columnNum;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/ExecutorWithTimeGenerator.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/ExecutorWithTimeGenerator.java
deleted file mode 100644
index d0c5b62..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/ExecutorWithTimeGenerator.java
+++ /dev/null
@@ -1,128 +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.query.executor;
-
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
-import org.apache.iotdb.tsfile.read.controller.IMetadataQuerier;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.query.dataset.DataSetWithTimeGenerator;
-import org.apache.iotdb.tsfile.read.query.timegenerator.TimeGenerator;
-import org.apache.iotdb.tsfile.read.query.timegenerator.TsFileTimeGenerator;
-import org.apache.iotdb.tsfile.read.reader.series.FileSeriesReaderByTimestamp;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-
-public class ExecutorWithTimeGenerator implements QueryExecutor {
-
-  private IMetadataQuerier metadataQuerier;
-  private IChunkLoader chunkLoader;
-
-  public ExecutorWithTimeGenerator(IMetadataQuerier metadataQuerier, IChunkLoader chunkLoader) {
-    this.metadataQuerier = metadataQuerier;
-    this.chunkLoader = chunkLoader;
-  }
-
-  /**
-   * All leaf nodes of queryFilter in queryExpression are SeriesFilters, We use a TimeGenerator to
-   * control query processing. for more information, see DataSetWithTimeGenerator
-   *
-   * @return DataSet with TimeGenerator
-   */
-  @Override
-  public DataSetWithTimeGenerator execute(QueryExpression queryExpression) throws IOException {
-
-    IExpression expression = queryExpression.getExpression();
-    List<Path> selectedPathList = queryExpression.getSelectedSeries();
-
-    // get TimeGenerator by IExpression
-    TimeGenerator timeGenerator = new TsFileTimeGenerator(expression, chunkLoader, metadataQuerier);
-
-    // the size of hasFilter is equal to selectedPathList, if a series has a filter, it is true,
-    // otherwise false
-    List<Boolean> cached =
-        markFilterdPaths(expression, selectedPathList, timeGenerator.hasOrNode());
-    List<FileSeriesReaderByTimestamp> readersOfSelectedSeries = new ArrayList<>();
-    List<TSDataType> dataTypes = new ArrayList<>();
-
-    Iterator<Boolean> cachedIterator = cached.iterator();
-    Iterator<Path> selectedPathIterator = selectedPathList.iterator();
-    while (cachedIterator.hasNext()) {
-      boolean cachedValue = cachedIterator.next();
-      Path selectedPath = selectedPathIterator.next();
-
-      List<IChunkMetadata> chunkMetadataList = metadataQuerier.getChunkMetaDataList(selectedPath);
-      if (!chunkMetadataList.isEmpty()) {
-        dataTypes.add(chunkMetadataList.get(0).getDataType());
-        if (cachedValue) {
-          readersOfSelectedSeries.add(null);
-          continue;
-        }
-        FileSeriesReaderByTimestamp seriesReader =
-            new FileSeriesReaderByTimestamp(chunkLoader, chunkMetadataList);
-        readersOfSelectedSeries.add(seriesReader);
-      } else {
-        selectedPathIterator.remove();
-        cachedIterator.remove();
-      }
-    }
-
-    return new DataSetWithTimeGenerator(
-        selectedPathList, cached, dataTypes, timeGenerator, readersOfSelectedSeries);
-  }
-
-  public static List<Boolean> markFilterdPaths(
-      IExpression expression, List<Path> selectedPaths, boolean hasOrNode) {
-    List<Boolean> cached = new ArrayList<>();
-    if (hasOrNode) {
-      for (int i = 0; i < selectedPaths.size(); i++) {
-        cached.add(false);
-      }
-      return cached;
-    }
-
-    HashSet<Path> filteredPaths = new HashSet<>();
-    getAllFilteredPaths(expression, filteredPaths);
-
-    for (Path selectedPath : selectedPaths) {
-      cached.add(filteredPaths.contains(selectedPath));
-    }
-
-    return cached;
-  }
-
-  private static void getAllFilteredPaths(IExpression expression, HashSet<Path> paths) {
-    if (expression instanceof BinaryExpression) {
-      getAllFilteredPaths(((BinaryExpression) expression).getLeft(), paths);
-      getAllFilteredPaths(((BinaryExpression) expression).getRight(), paths);
-    } else if (expression instanceof SingleSeriesExpression) {
-      paths.add(((SingleSeriesExpression) expression).getSeriesPath());
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/QueryExecutor.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/QueryExecutor.java
deleted file mode 100644
index 24e07c2..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/QueryExecutor.java
+++ /dev/null
@@ -1,30 +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.query.executor;
-
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-
-import java.io.IOException;
-
-public interface QueryExecutor {
-
-  QueryDataSet execute(QueryExpression queryExpression) throws IOException;
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/TsFileExecutor.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/TsFileExecutor.java
deleted file mode 100644
index 08160ef..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/executor/TsFileExecutor.java
+++ /dev/null
@@ -1,198 +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.query.executor;
-
-import org.apache.iotdb.tsfile.exception.filter.QueryFilterOptimizationException;
-import org.apache.iotdb.tsfile.exception.write.NoMeasurementException;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
-import org.apache.iotdb.tsfile.read.controller.IMetadataQuerier;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression;
-import org.apache.iotdb.tsfile.read.expression.util.ExpressionOptimizer;
-import org.apache.iotdb.tsfile.read.query.dataset.DataSetWithoutTimeGenerator;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.read.reader.series.AbstractFileSeriesReader;
-import org.apache.iotdb.tsfile.read.reader.series.EmptyFileSeriesReader;
-import org.apache.iotdb.tsfile.read.reader.series.FileSeriesReader;
-import org.apache.iotdb.tsfile.utils.BloomFilter;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-public class TsFileExecutor implements QueryExecutor {
-
-  private IMetadataQuerier metadataQuerier;
-  private IChunkLoader chunkLoader;
-
-  public TsFileExecutor(IMetadataQuerier metadataQuerier, IChunkLoader chunkLoader) {
-    this.metadataQuerier = metadataQuerier;
-    this.chunkLoader = chunkLoader;
-  }
-
-  @Override
-  public QueryDataSet execute(QueryExpression queryExpression) throws IOException {
-    // bloom filter
-    BloomFilter bloomFilter = metadataQuerier.getWholeFileMetadata().getBloomFilter();
-    List<Path> filteredSeriesPath = new ArrayList<>();
-    if (bloomFilter != null) {
-      for (Path path : queryExpression.getSelectedSeries()) {
-        if (bloomFilter.contains(path.getFullPath())) {
-          filteredSeriesPath.add(path);
-        }
-      }
-      queryExpression.setSelectSeries(filteredSeriesPath);
-    }
-
-    metadataQuerier.loadChunkMetaDatas(queryExpression.getSelectedSeries());
-    if (queryExpression.hasQueryFilter()) {
-      try {
-        IExpression expression = queryExpression.getExpression();
-        IExpression regularIExpression =
-            ExpressionOptimizer.getInstance()
-                .optimize(expression, queryExpression.getSelectedSeries());
-        queryExpression.setExpression(regularIExpression);
-
-        if (regularIExpression instanceof GlobalTimeExpression) {
-          return execute(
-              queryExpression.getSelectedSeries(), (GlobalTimeExpression) regularIExpression);
-        } else {
-          return new ExecutorWithTimeGenerator(metadataQuerier, chunkLoader)
-              .execute(queryExpression);
-        }
-      } catch (QueryFilterOptimizationException | NoMeasurementException e) {
-        throw new IOException(e);
-      }
-    } else {
-      try {
-        return execute(queryExpression.getSelectedSeries());
-      } catch (NoMeasurementException e) {
-        throw new IOException(e);
-      }
-    }
-  }
-
-  /**
-   * Query with the space partition constraint.
-   *
-   * @param queryExpression query expression
-   * @param spacePartitionStartPos the start position of the space partition
-   * @param spacePartitionEndPos the end position of the space partition
-   * @return QueryDataSet
-   */
-  public QueryDataSet execute(
-      QueryExpression queryExpression, long spacePartitionStartPos, long spacePartitionEndPos)
-      throws IOException {
-    // convert the space partition constraint to the time partition constraint
-    ArrayList<TimeRange> resTimeRanges =
-        new ArrayList<>(
-            metadataQuerier.convertSpace2TimePartition(
-                queryExpression.getSelectedSeries(), spacePartitionStartPos, spacePartitionEndPos));
-
-    // check if resTimeRanges is empty
-    if (resTimeRanges.isEmpty()) {
-      return new DataSetWithoutTimeGenerator(
-          Collections.emptyList(),
-          Collections.emptyList(),
-          Collections.emptyList()); // return an empty QueryDataSet
-    }
-
-    // construct an additional time filter based on the time partition constraint
-    IExpression addTimeExpression = resTimeRanges.get(0).getExpression();
-    for (int i = 1; i < resTimeRanges.size(); i++) {
-      addTimeExpression =
-          BinaryExpression.or(addTimeExpression, resTimeRanges.get(i).getExpression());
-    }
-
-    // combine the original query expression and the additional time filter
-    if (queryExpression.hasQueryFilter()) {
-      IExpression combinedExpression =
-          BinaryExpression.and(queryExpression.getExpression(), addTimeExpression);
-      queryExpression.setExpression(combinedExpression);
-    } else {
-      queryExpression.setExpression(addTimeExpression);
-    }
-
-    // Having converted the space partition constraint to an additional time filter, we can now
-    // query as normal.
-    return execute(queryExpression);
-  }
-
-  /**
-   * no filter, can use multi-way merge.
-   *
-   * @param selectedPathList all selected paths
-   * @return DataSet without TimeGenerator
-   */
-  private QueryDataSet execute(List<Path> selectedPathList)
-      throws IOException, NoMeasurementException {
-    return executeMayAttachTimeFiler(selectedPathList, null);
-  }
-
-  /**
-   * has a GlobalTimeExpression, can use multi-way merge.
-   *
-   * @param selectedPathList all selected paths
-   * @param timeFilter GlobalTimeExpression that takes effect to all selected paths
-   * @return DataSet without TimeGenerator
-   */
-  private QueryDataSet execute(List<Path> selectedPathList, GlobalTimeExpression timeFilter)
-      throws IOException, NoMeasurementException {
-    return executeMayAttachTimeFiler(selectedPathList, timeFilter);
-  }
-
-  /**
-   * @param selectedPathList completed path
-   * @param timeExpression a GlobalTimeExpression or null
-   * @return DataSetWithoutTimeGenerator
-   */
-  private QueryDataSet executeMayAttachTimeFiler(
-      List<Path> selectedPathList, GlobalTimeExpression timeExpression)
-      throws IOException, NoMeasurementException {
-    List<AbstractFileSeriesReader> readersOfSelectedSeries = new ArrayList<>();
-    List<TSDataType> dataTypes = new ArrayList<>();
-
-    for (Path path : selectedPathList) {
-      List<IChunkMetadata> chunkMetadataList = metadataQuerier.getChunkMetaDataList(path);
-      AbstractFileSeriesReader seriesReader;
-      if (chunkMetadataList.isEmpty()) {
-        seriesReader = new EmptyFileSeriesReader();
-        dataTypes.add(metadataQuerier.getDataType(path));
-      } else {
-        if (timeExpression == null) {
-          seriesReader = new FileSeriesReader(chunkLoader, chunkMetadataList, null);
-        } else {
-          seriesReader =
-              new FileSeriesReader(chunkLoader, chunkMetadataList, timeExpression.getFilter());
-        }
-        dataTypes.add(chunkMetadataList.get(0).getDataType());
-      }
-      readersOfSelectedSeries.add(seriesReader);
-    }
-    return new DataSetWithoutTimeGenerator(selectedPathList, dataTypes, readersOfSelectedSeries);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/TimeGenerator.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/TimeGenerator.java
deleted file mode 100644
index 8e50c36..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/TimeGenerator.java
+++ /dev/null
@@ -1,139 +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.query.timegenerator;
-
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.expression.ExpressionType;
-import org.apache.iotdb.tsfile.read.expression.IBinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.query.timegenerator.node.AndNode;
-import org.apache.iotdb.tsfile.read.query.timegenerator.node.LeafNode;
-import org.apache.iotdb.tsfile.read.query.timegenerator.node.Node;
-import org.apache.iotdb.tsfile.read.query.timegenerator.node.OrNode;
-import org.apache.iotdb.tsfile.read.reader.IBatchReader;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-/**
- * All SingleSeriesExpression involved in a IExpression will be transferred to a TimeGenerator tree
- * whose leaf nodes are all SeriesReaders, The TimeGenerator tree can generate the next timestamp
- * that satisfies the filter condition. Then we use this timestamp to get values in other series
- * that are not included in IExpression
- */
-public abstract class TimeGenerator {
-
-  private HashMap<Path, List<LeafNode>> leafNodeCache = new HashMap<>();
-  private HashMap<Path, List<Object>> leafValuesCache;
-  protected Node operatorNode;
-  private boolean hasOrNode;
-
-  public boolean hasNext() throws IOException {
-    return operatorNode.hasNext();
-  }
-
-  public long next() throws IOException {
-    if (!hasOrNode) {
-      if (leafValuesCache == null) {
-        leafValuesCache = new HashMap<>();
-      }
-      leafNodeCache.forEach(
-          (path, nodes) ->
-              leafValuesCache
-                  .computeIfAbsent(path, k -> new ArrayList<>())
-                  .add(nodes.get(0).currentValue()));
-    }
-    return operatorNode.next();
-  }
-
-  /** ATTENTION: this method should only be used when there is no `OR` node */
-  public Object[] getValues(Path path) throws IOException {
-    if (hasOrNode) {
-      throw new IOException(
-          "getValues() method should not be invoked when there is OR operator in where clause");
-    }
-    if (leafValuesCache.get(path) == null) {
-      throw new IOException(
-          "getValues() method should not be invoked by non-existent path in where clause");
-    }
-    return leafValuesCache.remove(path).toArray();
-  }
-
-  /** ATTENTION: this method should only be used when there is no `OR` node */
-  public Object getValue(Path path) throws IOException {
-    if (hasOrNode) {
-      throw new IOException(
-          "getValue() method should not be invoked when there is OR operator in where clause");
-    }
-    if (leafValuesCache.get(path) == null) {
-      throw new IOException(
-          "getValue() method should not be invoked by non-existent path in where clause");
-    }
-    return leafValuesCache.get(path).remove(0);
-  }
-
-  public void constructNode(IExpression expression) throws IOException {
-    operatorNode = construct(expression);
-  }
-
-  /** construct the tree that generate timestamp. */
-  protected Node construct(IExpression expression) throws IOException {
-
-    if (expression.getType() == ExpressionType.SERIES) {
-      SingleSeriesExpression singleSeriesExp = (SingleSeriesExpression) expression;
-      IBatchReader seriesReader = generateNewBatchReader(singleSeriesExp);
-      Path path = singleSeriesExp.getSeriesPath();
-
-      // put the current reader to valueCache
-      LeafNode leafNode = new LeafNode(seriesReader);
-      leafNodeCache.computeIfAbsent(path, p -> new ArrayList<>()).add(leafNode);
-
-      return leafNode;
-    } else {
-      Node leftChild = construct(((IBinaryExpression) expression).getLeft());
-      Node rightChild = construct(((IBinaryExpression) expression).getRight());
-
-      if (expression.getType() == ExpressionType.OR) {
-        hasOrNode = true;
-        return new OrNode(leftChild, rightChild, isAscending());
-      } else if (expression.getType() == ExpressionType.AND) {
-        return new AndNode(leftChild, rightChild, isAscending());
-      }
-      throw new UnSupportedDataTypeException(
-          "Unsupported ExpressionType when construct OperatorNode: " + expression.getType());
-    }
-  }
-
-  protected abstract IBatchReader generateNewBatchReader(SingleSeriesExpression expression)
-      throws IOException;
-
-  public boolean hasOrNode() {
-    return hasOrNode;
-  }
-
-  protected abstract boolean isAscending();
-
-  public abstract Filter getTimeFilter();
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/TsFileTimeGenerator.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/TsFileTimeGenerator.java
deleted file mode 100644
index 4022928..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/TsFileTimeGenerator.java
+++ /dev/null
@@ -1,65 +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.query.timegenerator;
-
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
-import org.apache.iotdb.tsfile.read.controller.IMetadataQuerier;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.reader.IBatchReader;
-import org.apache.iotdb.tsfile.read.reader.series.FileSeriesReader;
-
-import java.io.IOException;
-import java.util.List;
-
-public class TsFileTimeGenerator extends TimeGenerator {
-
-  private IChunkLoader chunkLoader;
-  private IMetadataQuerier metadataQuerier;
-
-  public TsFileTimeGenerator(
-      IExpression iexpression, IChunkLoader chunkLoader, IMetadataQuerier metadataQuerier)
-      throws IOException {
-    this.chunkLoader = chunkLoader;
-    this.metadataQuerier = metadataQuerier;
-
-    super.constructNode(iexpression);
-  }
-
-  @Override
-  protected IBatchReader generateNewBatchReader(SingleSeriesExpression expression)
-      throws IOException {
-    List<IChunkMetadata> chunkMetadataList =
-        metadataQuerier.getChunkMetaDataList(expression.getSeriesPath());
-    return new FileSeriesReader(chunkLoader, chunkMetadataList, expression.getFilter());
-  }
-
-  @Override
-  protected boolean isAscending() {
-    return true;
-  }
-
-  @Override
-  public Filter getTimeFilter() {
-    return null;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/AndNode.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/AndNode.java
deleted file mode 100644
index ca1a26d..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/AndNode.java
+++ /dev/null
@@ -1,106 +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.query.timegenerator.node;
-
-import java.io.IOException;
-import java.util.function.BiPredicate;
-
-public class AndNode implements Node {
-
-  private Node leftChild;
-  private Node rightChild;
-
-  private long cachedTime;
-  private boolean hasCachedTime;
-  private boolean ascending = true;
-
-  /**
-   * Constructor of AndNode.
-   *
-   * @param leftChild left child
-   * @param rightChild right child
-   */
-  public AndNode(Node leftChild, Node rightChild) {
-    this.leftChild = leftChild;
-    this.rightChild = rightChild;
-    this.hasCachedTime = false;
-  }
-
-  public AndNode(Node leftChild, Node rightChild, boolean ascending) {
-    this.leftChild = leftChild;
-    this.rightChild = rightChild;
-    this.hasCachedTime = false;
-    this.ascending = ascending;
-  }
-
-  @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning
-  @Override
-  public boolean hasNext() throws IOException {
-    if (hasCachedTime) {
-      return true;
-    }
-    if (leftChild.hasNext() && rightChild.hasNext()) {
-      if (ascending) {
-        return fillNextCache((l, r) -> l > r);
-      }
-      return fillNextCache((l, r) -> l < r);
-    }
-    return false;
-  }
-
-  private boolean fillNextCache(BiPredicate<Long, Long> seekRight) throws IOException {
-    long leftValue = leftChild.next();
-    long rightValue = rightChild.next();
-    while (true) {
-      if (leftValue == rightValue) {
-        this.hasCachedTime = true;
-        this.cachedTime = leftValue;
-        return true;
-      }
-      if (seekRight.test(leftValue, rightValue)) {
-        if (rightChild.hasNext()) {
-          rightValue = rightChild.next();
-        } else {
-          return false;
-        }
-      } else { // leftValue > rightValue
-        if (leftChild.hasNext()) {
-          leftValue = leftChild.next();
-        } else {
-          return false;
-        }
-      }
-    }
-  }
-
-  @Override
-  public long next() throws IOException {
-    if (hasNext()) {
-      hasCachedTime = false;
-      return cachedTime;
-    }
-    throw new IOException("no more data");
-  }
-
-  @Override
-  public NodeType getType() {
-    return NodeType.AND;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/LeafNode.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/LeafNode.java
deleted file mode 100644
index 46de8da..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/LeafNode.java
+++ /dev/null
@@ -1,93 +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.query.timegenerator.node;
-
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.reader.IBatchReader;
-
-import java.io.IOException;
-
-public class LeafNode implements Node {
-
-  private IBatchReader reader;
-
-  private BatchData cacheData;
-  private boolean hasCached;
-
-  private long cachedTime;
-  private Object cachedValue;
-
-  public LeafNode(IBatchReader reader) {
-    this.reader = reader;
-  }
-
-  @Override
-  public boolean hasNext() throws IOException {
-    if (hasCached) {
-      return true;
-    }
-    if (cacheData != null && cacheData.hasCurrent()) {
-      cachedTime = cacheData.currentTime();
-      cachedValue = cacheData.currentValue();
-      hasCached = true;
-      return true;
-    }
-    while (reader.hasNextBatch()) {
-      cacheData = reader.nextBatch();
-      if (cacheData.hasCurrent()) {
-        cachedTime = cacheData.currentTime();
-        cachedValue = cacheData.currentValue();
-        hasCached = true;
-        return true;
-      }
-    }
-    return false;
-  }
-
-  @Override
-  public long next() throws IOException {
-    if ((hasCached || hasNext())) {
-      hasCached = false;
-      cacheData.next();
-      return cachedTime;
-    }
-    throw new IOException("no more data");
-  }
-
-  /**
-   * Check whether the current time equals the given time.
-   *
-   * @param time the given time
-   * @return True if the current time equals the given time. False if not.
-   */
-  public boolean currentTimeIs(long time) {
-    return cachedTime == time;
-  }
-
-  /** Function for getting the value at the given time. */
-  public Object currentValue() {
-    return cachedValue;
-  }
-
-  @Override
-  public NodeType getType() {
-    return NodeType.LEAF;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/Node.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/Node.java
deleted file mode 100644
index ab27ccb..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/Node.java
+++ /dev/null
@@ -1,31 +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.query.timegenerator.node;
-
-import java.io.IOException;
-
-public interface Node {
-
-  boolean hasNext() throws IOException;
-
-  long next() throws IOException;
-
-  NodeType getType();
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/NodeType.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/NodeType.java
deleted file mode 100644
index d5f9a90..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/NodeType.java
+++ /dev/null
@@ -1,27 +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.query.timegenerator.node;
-
-/** Type of the node. */
-public enum NodeType {
-  AND,
-  OR,
-  LEAF
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/OrNode.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/OrNode.java
deleted file mode 100644
index 490768e..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/query/timegenerator/node/OrNode.java
+++ /dev/null
@@ -1,119 +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.query.timegenerator.node;
-
-import java.io.IOException;
-
-public class OrNode implements Node {
-
-  private Node leftChild;
-  private Node rightChild;
-
-  private boolean hasCachedLeftTime;
-  private long cachedLeftTime;
-  private boolean hasCachedRightTime;
-  private long cachedRightTime;
-  private boolean ascending = true;
-
-  public OrNode(Node leftChild, Node rightChild) {
-    this.leftChild = leftChild;
-    this.rightChild = rightChild;
-    this.hasCachedLeftTime = false;
-    this.hasCachedRightTime = false;
-  }
-
-  public OrNode(Node leftChild, Node rightChild, boolean ascending) {
-    this.leftChild = leftChild;
-    this.rightChild = rightChild;
-    this.hasCachedLeftTime = false;
-    this.hasCachedRightTime = false;
-    this.ascending = ascending;
-  }
-
-  @Override
-  public boolean hasNext() throws IOException {
-    if (hasCachedLeftTime || hasCachedRightTime) {
-      return true;
-    }
-    return leftChild.hasNext() || rightChild.hasNext();
-  }
-
-  private boolean hasLeftValue() throws IOException {
-    return hasCachedLeftTime || leftChild.hasNext();
-  }
-
-  private long getLeftValue() throws IOException {
-    if (hasCachedLeftTime) {
-      hasCachedLeftTime = false;
-      return cachedLeftTime;
-    }
-    return leftChild.next();
-  }
-
-  private boolean hasRightValue() throws IOException {
-    return hasCachedRightTime || rightChild.hasNext();
-  }
-
-  private long getRightValue() throws IOException {
-    if (hasCachedRightTime) {
-      hasCachedRightTime = false;
-      return cachedRightTime;
-    }
-    return rightChild.next();
-  }
-
-  @Override
-  public long next() throws IOException {
-    if (hasLeftValue() && !hasRightValue()) {
-      return getLeftValue();
-    } else if (!hasLeftValue() && hasRightValue()) {
-      return getRightValue();
-    } else if (hasLeftValue() && hasRightValue()) {
-      long leftValue = getLeftValue();
-      long rightValue = getRightValue();
-      if (ascending) {
-        return popAndFillNextCache(
-            leftValue < rightValue, leftValue > rightValue, leftValue, rightValue);
-      }
-      return popAndFillNextCache(
-          leftValue > rightValue, leftValue < rightValue, leftValue, rightValue);
-    }
-    throw new IOException("no more data");
-  }
-
-  private long popAndFillNextCache(boolean popLeft, boolean popRight, long left, long right) {
-    if (popLeft) {
-      hasCachedRightTime = true;
-      cachedRightTime = right;
-      return left;
-    } else if (popRight) {
-      hasCachedLeftTime = true;
-      cachedLeftTime = left;
-      return right;
-    } else {
-      return left;
-    }
-  }
-
-  @Override
-  public NodeType getType() {
-    return NodeType.OR;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IBatchReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IBatchReader.java
deleted file mode 100644
index 0af0d47..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IBatchReader.java
+++ /dev/null
@@ -1,33 +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.reader;
-
-import org.apache.iotdb.tsfile.read.common.BatchData;
-
-import java.io.IOException;
-
-public interface IBatchReader {
-
-  boolean hasNextBatch() throws IOException;
-
-  BatchData nextBatch() throws IOException;
-
-  void close() throws IOException;
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IChunkReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IChunkReader.java
deleted file mode 100644
index 7c0b144..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IChunkReader.java
+++ /dev/null
@@ -1,36 +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.reader;
-
-import org.apache.iotdb.tsfile.read.common.BatchData;
-
-import java.io.IOException;
-import java.util.List;
-
-public interface IChunkReader {
-
-  boolean hasNextSatisfiedPage() throws IOException;
-
-  BatchData nextPageData() throws IOException;
-
-  void close() throws IOException;
-
-  List<IPageReader> loadPageReaderList() throws IOException;
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IPageReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IPageReader.java
deleted file mode 100644
index 103a664..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IPageReader.java
+++ /dev/null
@@ -1,49 +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.reader;
-
-import org.apache.iotdb.tsfile.file.metadata.IMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.reader.series.PaginationController;
-
-import java.io.IOException;
-import java.util.List;
-
-public interface IPageReader extends IMetadata {
-
-  default BatchData getAllSatisfiedPageData() throws IOException {
-    return getAllSatisfiedPageData(true);
-  }
-
-  BatchData getAllSatisfiedPageData(boolean ascending) throws IOException;
-
-  TsBlock getAllSatisfiedData() throws IOException;
-
-  void addRecordFilter(Filter filter);
-
-  boolean isModified();
-
-  void initTsBlockBuilder(List<TSDataType> dataTypes);
-
-  void setLimitOffset(PaginationController paginationController);
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IPointReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IPointReader.java
deleted file mode 100644
index 31dcd12..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/IPointReader.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.reader;
-
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-
-import java.io.IOException;
-
-public interface IPointReader {
-
-  boolean hasNextTimeValuePair() throws IOException;
-
-  TimeValuePair nextTimeValuePair() throws IOException;
-
-  TimeValuePair currentTimeValuePair() throws IOException;
-
-  long getUsedMemorySize();
-
-  void close() throws IOException;
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/LocalTsFileInput.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/LocalTsFileInput.java
deleted file mode 100644
index 872230d..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/LocalTsFileInput.java
+++ /dev/null
@@ -1,124 +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.reader;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.ByteBuffer;
-import java.nio.channels.Channels;
-import java.nio.channels.ClosedByInterruptException;
-import java.nio.channels.FileChannel;
-import java.nio.file.Path;
-import java.nio.file.StandardOpenOption;
-
-public class LocalTsFileInput implements TsFileInput {
-
-  private static final Logger logger = LoggerFactory.getLogger(LocalTsFileInput.class);
-
-  private final FileChannel channel;
-  private final String filePath;
-
-  public LocalTsFileInput(Path file) throws IOException {
-    channel = FileChannel.open(file, StandardOpenOption.READ);
-    filePath = file.toString();
-  }
-
-  @Override
-  public long size() throws IOException {
-    try {
-      return channel.size();
-    } catch (IOException e) {
-      logger.warn("Error happened while getting {} size", filePath);
-      throw e;
-    }
-  }
-
-  @Override
-  public long position() throws IOException {
-    try {
-      return channel.position();
-    } catch (IOException e) {
-      logger.warn("Error happened while getting {} current position", filePath);
-      throw e;
-    }
-  }
-
-  @Override
-  public TsFileInput position(long newPosition) throws IOException {
-    try {
-      channel.position(newPosition);
-      return this;
-    } catch (IOException e) {
-      logger.warn("Error happened while changing {} position to {}", filePath, newPosition);
-      throw e;
-    }
-  }
-
-  @Override
-  public int read(ByteBuffer dst) throws IOException {
-    try {
-      return channel.read(dst);
-    } catch (ClosedByInterruptException e) {
-      logger.warn(
-          "Current thread is interrupted by another thread when it is blocked in an I/O operation upon a channel.");
-      return -1;
-    } catch (IOException e) {
-      logger.error("Error happened while reading {} from current position", filePath);
-      throw e;
-    }
-  }
-
-  @Override
-  public int read(ByteBuffer dst, long position) throws IOException {
-    try {
-      return channel.read(dst, position);
-    } catch (ClosedByInterruptException e) {
-      logger.warn(
-          "Current thread is interrupted by another thread when it is blocked in an I/O operation upon a channel.");
-      return -1;
-    } catch (IOException e) {
-      logger.error("Error happened while reading {} from position {}", filePath, position);
-      throw e;
-    }
-  }
-
-  @Override
-  public InputStream wrapAsInputStream() {
-    return Channels.newInputStream(channel);
-  }
-
-  @Override
-  public void close() throws IOException {
-    try {
-      channel.close();
-    } catch (IOException e) {
-      logger.error("Error happened while closing {}", filePath);
-      throw e;
-    }
-  }
-
-  @Override
-  public String getFilePath() {
-    return filePath;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/TsFileInput.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/TsFileInput.java
deleted file mode 100644
index 14e3848..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/TsFileInput.java
+++ /dev/null
@@ -1,134 +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.reader;
-
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.ByteBuffer;
-import java.nio.channels.AsynchronousCloseException;
-import java.nio.channels.ClosedByInterruptException;
-import java.nio.channels.ClosedChannelException;
-import java.nio.channels.ReadableByteChannel;
-
-public interface TsFileInput {
-
-  /**
-   * Returns the current size of this input.
-   *
-   * @return The current size of this input, measured in bytes
-   * @throws ClosedChannelException If this channel is closed
-   * @throws IOException If some other I/O error occurs
-   */
-  long size() throws IOException;
-
-  /**
-   * Returns this input's current position.
-   *
-   * @return This input's current position, a non-negative integer counting the number of bytes from
-   *     the beginning of the input to the current position
-   * @throws ClosedChannelException If this input is closed
-   * @throws IOException If some other I/O error occurs
-   */
-  long position() throws IOException;
-
-  /**
-   * Sets this input's position.
-   *
-   * <p>Setting the position to a value that is greater than the input's current size is legal but
-   * does not change the size of the TsFileInput. A later attempt to read bytes at such a position
-   * will immediately return an end-of-file indication.
-   *
-   * @param newPosition The new position, a non-negative integer counting the number of bytes from
-   *     the beginning of the TsFileInput
-   * @return This TsFileInput
-   * @throws ClosedChannelException If this TsFileInput is closed
-   * @throws IllegalArgumentException If the new position is negative
-   * @throws IOException If some other I/O error occurs
-   */
-  TsFileInput position(long newPosition) throws IOException;
-
-  /**
-   * Reads a sequence of bytes from this TsFileInput into the given buffer.
-   *
-   * <p>Bytes are read starting at this TsFileInput's current position, and then the position is
-   * updated with the number of bytes actually read. Otherwise this method behaves exactly as
-   * specified in the {@link ReadableByteChannel} interface.
-   */
-  int read(ByteBuffer dst) throws IOException;
-
-  /**
-   * Reads a sequence of bytes from this TsFileInput into the given buffer, starting at the given
-   * position.
-   *
-   * <p>This method works in the same manner as the {@link #read(ByteBuffer)} method, except that
-   * bytes are read starting at the given position rather than at the TsFileInput's current
-   * position. This method does not modify this TsFileInput's position. If the given position is
-   * greater than the TsFileInput's current size then no bytes are read.
-   *
-   * @param dst The buffer into which bytes are to be transferred
-   * @param position The position at which the transfer is to begin; must be non-negative
-   * @return The number of bytes read, possibly zero, or <tt>-1</tt> if the given position is
-   *     greater than or equal to the file's current size
-   * @throws IllegalArgumentException If the position is negative
-   * @throws ClosedChannelException If this TsFileInput is closed
-   * @throws AsynchronousCloseException If another thread closes this TsFileInput while the read
-   *     operation is in progress
-   * @throws ClosedByInterruptException If another thread interrupts the current thread while the
-   *     read operation is in progress, thereby closing the channel and setting the current thread's
-   *     interrupt status
-   * @throws IOException If some other I/O error occurs
-   */
-  int read(ByteBuffer dst, long position) throws IOException;
-
-  InputStream wrapAsInputStream() throws IOException;
-
-  /**
-   * Closes this channel.
-   *
-   * <p>If the channel has already been closed then this method returns immediately.
-   *
-   * @throws IOException If an I/O error occurs
-   */
-  void close() throws IOException;
-
-  /** read a string from the Input at the given position */
-  default String readVarIntString(long offset) throws IOException {
-    ByteBuffer byteBuffer = ByteBuffer.allocate(5);
-    read(byteBuffer, offset);
-    byteBuffer.flip();
-    int strLength = ReadWriteForEncodingUtils.readVarInt(byteBuffer);
-    if (strLength < 0) {
-      return null;
-    } else if (strLength == 0) {
-      return "";
-    }
-    ByteBuffer strBuffer = ByteBuffer.allocate(strLength);
-    int varIntLength = ReadWriteForEncodingUtils.varIntSize(strLength);
-    byte[] bytes = new byte[strLength];
-    read(strBuffer, offset + varIntLength);
-    strBuffer.flip();
-    strBuffer.get(bytes, 0, strLength);
-    return new String(bytes, 0, strLength);
-  }
-
-  String getFilePath();
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AbstractChunkReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AbstractChunkReader.java
deleted file mode 100644
index bb05150..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AbstractChunkReader.java
+++ /dev/null
@@ -1,83 +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.reader.chunk;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.reader.IChunkReader;
-import org.apache.iotdb.tsfile.read.reader.IPageReader;
-
-import java.io.IOException;
-import java.util.LinkedList;
-import java.util.List;
-
-public abstract class AbstractChunkReader implements IChunkReader {
-
-  protected final Decoder defaultTimeDecoder =
-      Decoder.getDecoderByType(
-          TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder()),
-          TSDataType.INT64);
-
-  protected final long readStopTime;
-
-  // any filter, no matter value filter or time filter
-  protected final Filter queryFilter;
-
-  protected final List<IPageReader> pageReaderList = new LinkedList<>();
-
-  protected AbstractChunkReader(long readStopTime, Filter filter) {
-    this.readStopTime = readStopTime;
-    this.queryFilter = filter;
-  }
-
-  /** judge if has next page whose page header satisfies the filter. */
-  @Override
-  public boolean hasNextSatisfiedPage() {
-    return !pageReaderList.isEmpty();
-  }
-
-  /**
-   * get next data batch.
-   *
-   * @return next data batch
-   * @throws IOException IOException
-   */
-  @Override
-  public BatchData nextPageData() throws IOException {
-    if (pageReaderList.isEmpty()) {
-      throw new IOException("No more page");
-    }
-    return pageReaderList.remove(0).getAllSatisfiedPageData();
-  }
-
-  @Override
-  public void close() {
-    // do nothing
-  }
-
-  @Override
-  public List<IPageReader> loadPageReaderList() {
-    return pageReaderList;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AlignedChunkReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AlignedChunkReader.java
deleted file mode 100644
index 373187ed..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AlignedChunkReader.java
+++ /dev/null
@@ -1,261 +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.reader.chunk;
-
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.reader.page.AlignedPageReader;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-public class AlignedChunkReader extends AbstractChunkReader {
-
-  // chunk header of the time column
-  private final ChunkHeader timeChunkHeader;
-  // chunk data of the time column
-  private final ByteBuffer timeChunkDataBuffer;
-
-  // chunk headers of all the sub sensors
-  private final List<ChunkHeader> valueChunkHeaderList = new ArrayList<>();
-  // chunk data of all the sub sensors
-  private final List<ByteBuffer> valueChunkDataBufferList = new ArrayList<>();
-  // deleted intervals of all the sub sensors
-  private final List<List<TimeRange>> valueDeleteIntervalsList = new ArrayList<>();
-
-  @SuppressWarnings("unchecked")
-  public AlignedChunkReader(
-      Chunk timeChunk, List<Chunk> valueChunkList, long readStopTime, Filter queryFilter)
-      throws IOException {
-    super(readStopTime, queryFilter);
-    this.timeChunkHeader = timeChunk.getHeader();
-    this.timeChunkDataBuffer = timeChunk.getData();
-
-    List<Statistics<? extends Serializable>> valueChunkStatisticsList = new ArrayList<>();
-    valueChunkList.forEach(
-        chunk -> {
-          this.valueChunkHeaderList.add(chunk == null ? null : chunk.getHeader());
-          this.valueChunkDataBufferList.add(chunk == null ? null : chunk.getData());
-          this.valueDeleteIntervalsList.add(chunk == null ? null : chunk.getDeleteIntervalList());
-
-          valueChunkStatisticsList.add(chunk == null ? null : chunk.getChunkStatistic());
-        });
-
-    initAllPageReaders(timeChunk.getChunkStatistic(), valueChunkStatisticsList);
-  }
-
-  public AlignedChunkReader(Chunk timeChunk, List<Chunk> valueChunkList) throws IOException {
-    this(timeChunk, valueChunkList, Long.MIN_VALUE, null);
-  }
-
-  public AlignedChunkReader(Chunk timeChunk, List<Chunk> valueChunkList, Filter queryFilter)
-      throws IOException {
-    this(timeChunk, valueChunkList, Long.MIN_VALUE, queryFilter);
-  }
-
-  /**
-   * Constructor of ChunkReader by timestamp. This constructor is used to accelerate queries by
-   * filtering out pages whose endTime is less than current timestamp.
-   */
-  public AlignedChunkReader(Chunk timeChunk, List<Chunk> valueChunkList, long readStopTime)
-      throws IOException {
-    this(timeChunk, valueChunkList, readStopTime, null);
-  }
-
-  /** construct all the page readers in this chunk */
-  private void initAllPageReaders(
-      Statistics<? extends Serializable> timeChunkStatistics,
-      List<Statistics<? extends Serializable>> valueChunkStatisticsList)
-      throws IOException {
-    // construct next satisfied page header
-    while (timeChunkDataBuffer.remaining() > 0) {
-      // deserialize PageHeader from chunkDataBuffer
-      AlignedPageReader alignedPageReader =
-          isSinglePageChunk()
-              ? deserializeFromSinglePageChunk(timeChunkStatistics, valueChunkStatisticsList)
-              : deserializeFromMultiPageChunk();
-      if (alignedPageReader != null) {
-        pageReaderList.add(alignedPageReader);
-      }
-    }
-  }
-
-  private boolean isSinglePageChunk() {
-    return (timeChunkHeader.getChunkType() & 0x3F) == MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER;
-  }
-
-  private AlignedPageReader deserializeFromSinglePageChunk(
-      Statistics<? extends Serializable> timeChunkStatistics,
-      List<Statistics<? extends Serializable>> valueChunkStatisticsList)
-      throws IOException {
-    PageHeader timePageHeader =
-        PageHeader.deserializeFrom(timeChunkDataBuffer, timeChunkStatistics);
-    List<PageHeader> valuePageHeaderList = new ArrayList<>();
-
-    boolean isAllNull = true;
-    for (int i = 0; i < valueChunkDataBufferList.size(); i++) {
-      if (valueChunkDataBufferList.get(i) != null) {
-        isAllNull = false;
-        valuePageHeaderList.add(
-            PageHeader.deserializeFrom(
-                valueChunkDataBufferList.get(i), valueChunkStatisticsList.get(i)));
-      } else {
-        valuePageHeaderList.add(null);
-      }
-    }
-
-    if (isAllNull || timePageHeader.getEndTime() < readStopTime) {
-      // when there is only one page in the chunk, the page statistic is the same as the chunk, so
-      // we needn't filter the page again
-      skipCurrentPage(timePageHeader, valuePageHeaderList);
-      return null;
-    }
-    return constructAlignedPageReader(timePageHeader, valuePageHeaderList);
-  }
-
-  private AlignedPageReader deserializeFromMultiPageChunk() throws IOException {
-    PageHeader timePageHeader =
-        PageHeader.deserializeFrom(timeChunkDataBuffer, timeChunkHeader.getDataType());
-    List<PageHeader> valuePageHeaderList = new ArrayList<>();
-
-    boolean isAllNull = true;
-    for (int i = 0; i < valueChunkDataBufferList.size(); i++) {
-      if (valueChunkDataBufferList.get(i) != null) {
-        isAllNull = false;
-        valuePageHeaderList.add(
-            PageHeader.deserializeFrom(
-                valueChunkDataBufferList.get(i), valueChunkHeaderList.get(i).getDataType()));
-      } else {
-        valuePageHeaderList.add(null);
-      }
-    }
-
-    if (isAllNull || timePageHeader.getEndTime() < readStopTime || pageCanSkip(timePageHeader)) {
-      skipCurrentPage(timePageHeader, valuePageHeaderList);
-      return null;
-    }
-    return constructAlignedPageReader(timePageHeader, valuePageHeaderList);
-  }
-
-  private boolean pageCanSkip(PageHeader pageHeader) {
-    return queryFilter != null
-        && !queryFilter.satisfyStartEndTime(pageHeader.getStartTime(), pageHeader.getEndTime());
-  }
-
-  private void skipCurrentPage(PageHeader timePageHeader, List<PageHeader> valuePageHeader) {
-    timeChunkDataBuffer.position(
-        timeChunkDataBuffer.position() + timePageHeader.getCompressedSize());
-    for (int i = 0; i < valuePageHeader.size(); i++) {
-      if (valuePageHeader.get(i) != null) {
-        valueChunkDataBufferList
-            .get(i)
-            .position(
-                valueChunkDataBufferList.get(i).position()
-                    + valuePageHeader.get(i).getCompressedSize());
-      }
-    }
-  }
-
-  private AlignedPageReader constructAlignedPageReader(
-      PageHeader timePageHeader, List<PageHeader> rawValuePageHeaderList) throws IOException {
-    ByteBuffer timePageData =
-        ChunkReader.deserializePageData(timePageHeader, timeChunkDataBuffer, timeChunkHeader);
-
-    List<PageHeader> valuePageHeaderList = new ArrayList<>();
-    List<ByteBuffer> valuePageDataList = new ArrayList<>();
-    List<TSDataType> valueDataTypeList = new ArrayList<>();
-    List<Decoder> valueDecoderList = new ArrayList<>();
-
-    boolean isAllNull = true;
-    for (int i = 0; i < rawValuePageHeaderList.size(); i++) {
-      PageHeader valuePageHeader = rawValuePageHeaderList.get(i);
-
-      if (valuePageHeader == null || valuePageHeader.getUncompressedSize() == 0) {
-        // Empty Page
-        valuePageHeaderList.add(null);
-        valuePageDataList.add(null);
-        valueDataTypeList.add(null);
-        valueDecoderList.add(null);
-      } else if (pageDeleted(valuePageHeader, valueDeleteIntervalsList.get(i))) {
-        valueChunkDataBufferList
-            .get(i)
-            .position(
-                valueChunkDataBufferList.get(i).position() + valuePageHeader.getCompressedSize());
-        valuePageHeaderList.add(null);
-        valuePageDataList.add(null);
-        valueDataTypeList.add(null);
-        valueDecoderList.add(null);
-      } else {
-        ChunkHeader valueChunkHeader = valueChunkHeaderList.get(i);
-        valuePageHeaderList.add(valuePageHeader);
-        valuePageDataList.add(
-            ChunkReader.deserializePageData(
-                valuePageHeader, valueChunkDataBufferList.get(i), valueChunkHeader));
-        valueDataTypeList.add(valueChunkHeader.getDataType());
-        valueDecoderList.add(
-            Decoder.getDecoderByType(
-                valueChunkHeader.getEncodingType(), valueChunkHeader.getDataType()));
-        isAllNull = false;
-      }
-    }
-    if (isAllNull) {
-      return null;
-    }
-    AlignedPageReader alignedPageReader =
-        new AlignedPageReader(
-            timePageHeader,
-            timePageData,
-            defaultTimeDecoder,
-            valuePageHeaderList,
-            valuePageDataList,
-            valueDataTypeList,
-            valueDecoderList,
-            queryFilter);
-    alignedPageReader.setDeleteIntervalList(valueDeleteIntervalsList);
-    return alignedPageReader;
-  }
-
-  private boolean pageDeleted(PageHeader pageHeader, List<TimeRange> deleteIntervals) {
-    if (pageHeader.getEndTime() < readStopTime) {
-      return true;
-    }
-    if (deleteIntervals != null) {
-      for (TimeRange range : deleteIntervals) {
-        if (range.contains(pageHeader.getStartTime(), pageHeader.getEndTime())) {
-          return true;
-        }
-        if (range.overlaps(new TimeRange(pageHeader.getStartTime(), pageHeader.getEndTime()))) {
-          pageHeader.setModified(true);
-        }
-      }
-    }
-    return false;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/ChunkReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/ChunkReader.java
deleted file mode 100644
index dfd1787..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/ChunkReader.java
+++ /dev/null
@@ -1,191 +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.reader.chunk;
-
-import org.apache.iotdb.tsfile.compress.IUnCompressor;
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.reader.page.PageReader;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.util.List;
-
-public class ChunkReader extends AbstractChunkReader {
-
-  private final ChunkHeader chunkHeader;
-  private final ByteBuffer chunkDataBuffer;
-  private final List<TimeRange> deleteIntervalList;
-
-  @SuppressWarnings("unchecked")
-  public ChunkReader(Chunk chunk, long readStopTime, Filter queryFilter) throws IOException {
-    super(readStopTime, queryFilter);
-    this.chunkHeader = chunk.getHeader();
-    this.chunkDataBuffer = chunk.getData();
-    this.deleteIntervalList = chunk.getDeleteIntervalList();
-
-    initAllPageReaders(chunk.getChunkStatistic());
-  }
-
-  public ChunkReader(Chunk chunk) throws IOException {
-    this(chunk, Long.MIN_VALUE, null);
-  }
-
-  public ChunkReader(Chunk chunk, Filter queryFilter) throws IOException {
-    this(chunk, Long.MIN_VALUE, queryFilter);
-  }
-
-  /**
-   * Constructor of ChunkReader by timestamp. This constructor is used to accelerate queries by
-   * filtering out pages whose endTime is less than current timestamp.
-   *
-   * @throws IOException exception when initAllPageReaders
-   */
-  public ChunkReader(Chunk chunk, long readStopTime) throws IOException {
-    this(chunk, readStopTime, null);
-  }
-
-  private void initAllPageReaders(Statistics<? extends Serializable> chunkStatistic)
-      throws IOException {
-    // construct next satisfied page header
-    while (chunkDataBuffer.remaining() > 0) {
-      // deserialize a PageHeader from chunkDataBuffer
-      PageHeader pageHeader;
-      if (((byte) (chunkHeader.getChunkType() & 0x3F)) == MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER) {
-        pageHeader = PageHeader.deserializeFrom(chunkDataBuffer, chunkStatistic);
-        // when there is only one page in the chunk, the page statistic is the same as the chunk, so
-        // we needn't filter the page again
-      } else {
-        pageHeader = PageHeader.deserializeFrom(chunkDataBuffer, chunkHeader.getDataType());
-        // if the current page satisfies
-        if (pageCanSkip(pageHeader)) {
-          skipCurrentPage(pageHeader);
-          continue;
-        }
-      }
-
-      if (pageDeleted(pageHeader)) {
-        skipCurrentPage(pageHeader);
-      } else {
-        pageReaderList.add(constructPageReader(pageHeader));
-      }
-    }
-  }
-
-  private boolean pageCanSkip(PageHeader pageHeader) {
-    return queryFilter != null
-        && !queryFilter.satisfyStartEndTime(pageHeader.getStartTime(), pageHeader.getEndTime());
-  }
-
-  private boolean pageDeleted(PageHeader pageHeader) {
-    if (readStopTime > pageHeader.getEndTime()) {
-      // used for chunk reader by timestamp
-      return true;
-    }
-
-    long startTime = pageHeader.getStartTime();
-    long endTime = pageHeader.getEndTime();
-    if (deleteIntervalList != null) {
-      for (TimeRange range : deleteIntervalList) {
-        if (range.contains(startTime, endTime)) {
-          return true;
-        }
-        if (range.overlaps(new TimeRange(startTime, endTime))) {
-          pageHeader.setModified(true);
-        }
-      }
-    }
-    return false;
-  }
-
-  private void skipCurrentPage(PageHeader pageHeader) {
-    chunkDataBuffer.position(chunkDataBuffer.position() + pageHeader.getCompressedSize());
-  }
-
-  private PageReader constructPageReader(PageHeader pageHeader) throws IOException {
-    ByteBuffer pageData = deserializePageData(pageHeader, chunkDataBuffer, chunkHeader);
-    PageReader reader =
-        new PageReader(
-            pageHeader,
-            pageData,
-            chunkHeader.getDataType(),
-            Decoder.getDecoderByType(chunkHeader.getEncodingType(), chunkHeader.getDataType()),
-            defaultTimeDecoder,
-            queryFilter);
-    reader.setDeleteIntervalList(deleteIntervalList);
-    return reader;
-  }
-
-  /////////////////////////////////////////////////////////////////////////////////////////////////
-  // util methods
-  /////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public static ByteBuffer readCompressedPageData(PageHeader pageHeader, ByteBuffer chunkBuffer)
-      throws IOException {
-    int compressedPageBodyLength = pageHeader.getCompressedSize();
-    byte[] compressedPageBody = new byte[compressedPageBodyLength];
-    // doesn't have a complete page body
-    if (compressedPageBodyLength > chunkBuffer.remaining()) {
-      throw new IOException(
-          "do not has a complete page body. Expected:"
-              + compressedPageBodyLength
-              + ". Actual:"
-              + chunkBuffer.remaining());
-    }
-    chunkBuffer.get(compressedPageBody);
-    return ByteBuffer.wrap(compressedPageBody);
-  }
-
-  public static ByteBuffer uncompressPageData(
-      PageHeader pageHeader, IUnCompressor unCompressor, ByteBuffer compressedPageData)
-      throws IOException {
-    int compressedPageBodyLength = pageHeader.getCompressedSize();
-    byte[] uncompressedPageData = new byte[pageHeader.getUncompressedSize()];
-    try {
-      unCompressor.uncompress(
-          compressedPageData.array(), 0, compressedPageBodyLength, uncompressedPageData, 0);
-    } catch (Exception e) {
-      throw new IOException(
-          "Uncompress error! uncompress size: "
-              + pageHeader.getUncompressedSize()
-              + "compressed size: "
-              + pageHeader.getCompressedSize()
-              + "page header: "
-              + pageHeader
-              + e.getMessage());
-    }
-
-    return ByteBuffer.wrap(uncompressedPageData);
-  }
-
-  public static ByteBuffer deserializePageData(
-      PageHeader pageHeader, ByteBuffer chunkBuffer, ChunkHeader chunkHeader) throws IOException {
-    IUnCompressor unCompressor = IUnCompressor.getUnCompressor(chunkHeader.getCompressionType());
-    ByteBuffer compressedPageBody = readCompressedPageData(pageHeader, chunkBuffer);
-    return uncompressPageData(pageHeader, unCompressor, compressedPageBody);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/AlignedPageReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/AlignedPageReader.java
deleted file mode 100644
index c24b767..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/AlignedPageReader.java
+++ /dev/null
@@ -1,437 +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.reader.page;
-
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.BatchDataFactory;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockUtil;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.reader.IPageReader;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.read.reader.series.PaginationController;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-
-import static org.apache.iotdb.tsfile.read.reader.series.PaginationController.UNLIMITED_PAGINATION_CONTROLLER;
-
-public class AlignedPageReader implements IPageReader {
-
-  private final TimePageReader timePageReader;
-  private final List<ValuePageReader> valuePageReaderList;
-  private final int valueCount;
-
-  private final Filter globalTimeFilter;
-  private Filter pushDownFilter;
-  private PaginationController paginationController = UNLIMITED_PAGINATION_CONTROLLER;
-
-  private boolean isModified;
-  private TsBlockBuilder builder;
-
-  private static final int MASK = 0x80;
-
-  @SuppressWarnings("squid:S107")
-  public AlignedPageReader(
-      PageHeader timePageHeader,
-      ByteBuffer timePageData,
-      Decoder timeDecoder,
-      List<PageHeader> valuePageHeaderList,
-      List<ByteBuffer> valuePageDataList,
-      List<TSDataType> valueDataTypeList,
-      List<Decoder> valueDecoderList,
-      Filter globalTimeFilter) {
-    timePageReader = new TimePageReader(timePageHeader, timePageData, timeDecoder);
-    isModified = timePageReader.isModified();
-    valuePageReaderList = new ArrayList<>(valuePageHeaderList.size());
-    for (int i = 0; i < valuePageHeaderList.size(); i++) {
-      if (valuePageHeaderList.get(i) != null) {
-        ValuePageReader valuePageReader =
-            new ValuePageReader(
-                valuePageHeaderList.get(i),
-                valuePageDataList.get(i),
-                valueDataTypeList.get(i),
-                valueDecoderList.get(i));
-        valuePageReaderList.add(valuePageReader);
-        isModified = isModified || valuePageReader.isModified();
-      } else {
-        valuePageReaderList.add(null);
-      }
-    }
-    this.globalTimeFilter = globalTimeFilter;
-    this.valueCount = valuePageReaderList.size();
-  }
-
-  @Override
-  public BatchData getAllSatisfiedPageData(boolean ascending) throws IOException {
-    BatchData pageData = BatchDataFactory.createBatchData(TSDataType.VECTOR, ascending, false);
-    int timeIndex = -1;
-    Object[] rowValues = new Object[valueCount];
-    while (timePageReader.hasNextTime()) {
-      long timestamp = timePageReader.nextTime();
-      timeIndex++;
-
-      TsPrimitiveType[] v = new TsPrimitiveType[valueCount];
-      // if all the sub sensors' value are null in current row, just discard it
-      boolean hasNotNullValues = false;
-      for (int i = 0; i < valueCount; i++) {
-        ValuePageReader pageReader = valuePageReaderList.get(i);
-        if (pageReader != null) {
-          v[i] = pageReader.nextValue(timestamp, timeIndex);
-          rowValues[i] = (v[i] == null) ? null : v[i].getValue();
-        } else {
-          v[i] = null;
-          rowValues[i] = null;
-        }
-        if (rowValues[i] != null) {
-          hasNotNullValues = true;
-        }
-      }
-
-      if (hasNotNullValues && satisfyRecordFilter(timestamp, rowValues)) {
-        pageData.putVector(timestamp, v);
-      }
-    }
-    return pageData.flip();
-  }
-
-  private boolean satisfyRecordFilter(long timestamp, Object[] rowValues) {
-    return (globalTimeFilter == null || globalTimeFilter.satisfyRow(timestamp, rowValues))
-        && (pushDownFilter == null || pushDownFilter.satisfyRow(timestamp, rowValues));
-  }
-
-  @Override
-  public boolean timeAllSelected() {
-    for (int index = 0; index < getMeasurementCount(); index++) {
-      if (!hasNullValue(index)) {
-        // When there is any value page point number that is the same as the time page,
-        // it means that all timestamps in time page will be selected.
-        return true;
-      }
-    }
-    return false;
-  }
-
-  @Override
-  public int getMeasurementCount() {
-    return valueCount;
-  }
-
-  public IPointReader getLazyPointReader() throws IOException {
-    return new LazyLoadAlignedPagePointReader(timePageReader, valuePageReaderList);
-  }
-
-  private boolean allPageDataSatisfy() {
-    return !isModified
-        && timeAllSelected()
-        && globalTimeFilterAllSatisfy()
-        && pushDownFilterAllSatisfy();
-  }
-
-  private boolean globalTimeFilterAllSatisfy() {
-    return globalTimeFilter == null || globalTimeFilter.allSatisfy(this);
-  }
-
-  private boolean pushDownFilterAllSatisfy() {
-    return pushDownFilter == null || pushDownFilter.allSatisfy(this);
-  }
-
-  @Override
-  public TsBlock getAllSatisfiedData() throws IOException {
-    long[] timeBatch = timePageReader.getNextTimeBatch();
-
-    if (allPageDataSatisfy()) {
-      buildResultWithoutAnyFilterAndDelete(timeBatch);
-      return builder.build();
-    }
-
-    // if all the sub sensors' value are null in current row, just discard it
-    // if !filter.satisfy, discard this row
-    boolean[] keepCurrentRow = new boolean[timeBatch.length];
-    boolean globalTimeFilterAllSatisfy = globalTimeFilterAllSatisfy();
-    if (globalTimeFilterAllSatisfy) {
-      Arrays.fill(keepCurrentRow, true);
-    } else {
-      updateKeepCurrentRowThroughGlobalTimeFilter(keepCurrentRow, timeBatch);
-    }
-
-    boolean[][] isDeleted = null;
-    if ((isModified || !timeAllSelected()) && valueCount != 0) {
-      // using bitMap in valuePageReaders to indicate whether columns of current row are all null.
-      byte[] bitmask = new byte[(timeBatch.length - 1) / 8 + 1];
-      Arrays.fill(bitmask, (byte) 0x00);
-      isDeleted = new boolean[valueCount][timeBatch.length];
-
-      fillIsDeletedAndBitMask(timeBatch, isDeleted, bitmask);
-
-      updateKeepCurrentRowThroughBitmask(keepCurrentRow, bitmask);
-    }
-
-    boolean pushDownFilterAllSatisfy = pushDownFilterAllSatisfy();
-
-    // construct time column
-    // when pushDownFilterAllSatisfy = true, we can skip rows by OFFSET & LIMIT
-    int readEndIndex = buildTimeColumn(timeBatch, keepCurrentRow, pushDownFilterAllSatisfy);
-
-    // construct value columns
-    buildValueColumns(readEndIndex, keepCurrentRow, isDeleted);
-
-    TsBlock unFilteredBlock = builder.build();
-    if (pushDownFilterAllSatisfy) {
-      // OFFSET & LIMIT has been consumed in buildTimeColumn
-      return unFilteredBlock;
-    }
-    builder.reset();
-    return TsBlockUtil.applyFilterAndLimitOffsetToTsBlock(
-        unFilteredBlock, builder, pushDownFilter, paginationController);
-  }
-
-  private void buildResultWithoutAnyFilterAndDelete(long[] timeBatch) {
-    if (paginationController.hasCurOffset(timeBatch.length)) {
-      paginationController.consumeOffset(timeBatch.length);
-    } else {
-      int readStartIndex = 0;
-      if (paginationController.hasCurOffset()) {
-        readStartIndex = (int) paginationController.getCurOffset();
-        // consume the remaining offset
-        paginationController.consumeOffset(readStartIndex);
-      }
-
-      // not included
-      int readEndIndex = timeBatch.length;
-      if (paginationController.hasCurLimit() && paginationController.getCurLimit() > 0) {
-        readEndIndex =
-            Math.min(readEndIndex, readStartIndex + (int) paginationController.getCurLimit());
-        paginationController.consumeLimit((long) readEndIndex - readStartIndex);
-      }
-
-      // construct time column
-      for (int i = readStartIndex; i < readEndIndex; i++) {
-        builder.getTimeColumnBuilder().writeLong(timeBatch[i]);
-        builder.declarePosition();
-      }
-
-      // construct value columns
-      for (int i = 0; i < valueCount; i++) {
-        ValuePageReader pageReader = valuePageReaderList.get(i);
-        if (pageReader != null) {
-          pageReader.writeColumnBuilderWithNextBatch(
-              readStartIndex, readEndIndex, builder.getColumnBuilder(i));
-        } else {
-          builder.getColumnBuilder(i).appendNull(readEndIndex - readStartIndex);
-        }
-      }
-    }
-  }
-
-  private int buildTimeColumn(
-      long[] timeBatch, boolean[] keepCurrentRow, boolean pushDownFilterAllSatisfy) {
-    if (pushDownFilterAllSatisfy) {
-      return buildTimeColumnWithPagination(timeBatch, keepCurrentRow);
-    } else {
-      return buildTimeColumnWithoutPagination(timeBatch, keepCurrentRow);
-    }
-  }
-
-  private int buildTimeColumnWithPagination(long[] timeBatch, boolean[] keepCurrentRow) {
-    int readEndIndex = timeBatch.length;
-    for (int rowIndex = 0; rowIndex < timeBatch.length; rowIndex++) {
-      if (keepCurrentRow[rowIndex]) {
-        if (paginationController.hasCurOffset()) {
-          paginationController.consumeOffset();
-          keepCurrentRow[rowIndex] = false;
-        } else if (paginationController.hasCurLimit()) {
-          builder.getTimeColumnBuilder().writeLong(timeBatch[rowIndex]);
-          builder.declarePosition();
-          paginationController.consumeLimit();
-        } else {
-          readEndIndex = rowIndex;
-          break;
-        }
-      }
-    }
-    return readEndIndex;
-  }
-
-  private int buildTimeColumnWithoutPagination(long[] timeBatch, boolean[] keepCurrentRow) {
-    int readEndIndex = 0;
-    for (int i = 0; i < timeBatch.length; i++) {
-      if (keepCurrentRow[i]) {
-        builder.getTimeColumnBuilder().writeLong(timeBatch[i]);
-        builder.declarePosition();
-        readEndIndex = i;
-      }
-    }
-    return readEndIndex + 1;
-  }
-
-  private void buildValueColumns(
-      int readEndIndex, boolean[] keepCurrentRow, boolean[][] isDeleted) {
-    for (int i = 0; i < valueCount; i++) {
-      ValuePageReader pageReader = valuePageReaderList.get(i);
-      if (pageReader != null) {
-        if (pageReader.isModified()) {
-          pageReader.writeColumnBuilderWithNextBatch(
-              readEndIndex,
-              builder.getColumnBuilder(i),
-              keepCurrentRow,
-              Objects.requireNonNull(isDeleted)[i]);
-        } else {
-          pageReader.writeColumnBuilderWithNextBatch(
-              readEndIndex, builder.getColumnBuilder(i), keepCurrentRow);
-        }
-      } else {
-        for (int j = 0; j < readEndIndex; j++) {
-          if (keepCurrentRow[j]) {
-            builder.getColumnBuilder(i).appendNull();
-          }
-        }
-      }
-    }
-  }
-
-  private void fillIsDeletedAndBitMask(long[] timeBatch, boolean[][] isDeleted, byte[] bitmask) {
-    for (int columnIndex = 0; columnIndex < valueCount; columnIndex++) {
-      ValuePageReader pageReader = valuePageReaderList.get(columnIndex);
-      if (pageReader != null) {
-        byte[] bitmap = pageReader.getBitmap();
-
-        if (pageReader.isModified()) {
-          pageReader.fillIsDeleted(timeBatch, isDeleted[columnIndex]);
-          updateBitmapThroughIsDeleted(bitmap, isDeleted[columnIndex]);
-        }
-
-        for (int i = 0, n = bitmask.length; i < n; i++) {
-          bitmask[i] = (byte) (bitmap[i] | bitmask[i]);
-        }
-      }
-    }
-  }
-
-  private void updateBitmapThroughIsDeleted(byte[] bitmap, boolean[] isDeleted) {
-    for (int i = 0, n = isDeleted.length; i < n; i++) {
-      if (isDeleted[i]) {
-        int shift = i % 8;
-        bitmap[i / 8] = (byte) (bitmap[i / 8] & (~(MASK >>> shift)));
-      }
-    }
-  }
-
-  private void updateKeepCurrentRowThroughGlobalTimeFilter(
-      boolean[] keepCurrentRow, long[] timeBatch) {
-    for (int i = 0, n = timeBatch.length; i < n; i++) {
-      keepCurrentRow[i] = globalTimeFilter.satisfy(timeBatch[i], null);
-    }
-  }
-
-  private void updateKeepCurrentRowThroughBitmask(boolean[] keepCurrentRow, byte[] bitmask) {
-    for (int i = 0, n = bitmask.length; i < n; i++) {
-      if (bitmask[i] == (byte) 0xFF) {
-        // 8 rows are not all null, do nothing
-      } else if (bitmask[i] == (byte) 0x00) {
-        Arrays.fill(keepCurrentRow, i * 8, Math.min(i * 8 + 8, keepCurrentRow.length), false);
-      } else {
-        for (int j = 0; j < 8 && (i * 8 + j < keepCurrentRow.length); j++) {
-          if (((bitmask[i] & 0xFF) & (MASK >>> j)) == 0) {
-            keepCurrentRow[i * 8 + j] = false;
-          }
-        }
-      }
-    }
-  }
-
-  public void setDeleteIntervalList(List<List<TimeRange>> list) {
-    for (int i = 0; i < valueCount; i++) {
-      if (valuePageReaderList.get(i) != null) {
-        valuePageReaderList.get(i).setDeleteIntervalList(list.get(i));
-      }
-    }
-  }
-
-  @Override
-  public Statistics<? extends Serializable> getStatistics() {
-    return valuePageReaderList.size() == 1 && valuePageReaderList.get(0) != null
-        ? valuePageReaderList.get(0).getStatistics()
-        : timePageReader.getStatistics();
-  }
-
-  @Override
-  public Statistics<? extends Serializable> getTimeStatistics() {
-    return timePageReader.getStatistics();
-  }
-
-  @Override
-  public Optional<Statistics<? extends Serializable>> getMeasurementStatistics(
-      int measurementIndex) {
-    ValuePageReader valuePageReader = valuePageReaderList.get(measurementIndex);
-    return Optional.ofNullable(valuePageReader == null ? null : valuePageReader.getStatistics());
-  }
-
-  @Override
-  public boolean hasNullValue(int measurementIndex) {
-    long rowCount = getTimeStatistics().getCount();
-    Optional<Statistics<? extends Serializable>> statistics =
-        getMeasurementStatistics(measurementIndex);
-    return statistics.map(stat -> stat.hasNullValue(rowCount)).orElse(true);
-  }
-
-  @Override
-  public void addRecordFilter(Filter filter) {
-    this.pushDownFilter = filter;
-  }
-
-  @Override
-  public void setLimitOffset(PaginationController paginationController) {
-    this.paginationController = paginationController;
-  }
-
-  @Override
-  public boolean isModified() {
-    return isModified;
-  }
-
-  @Override
-  public void initTsBlockBuilder(List<TSDataType> dataTypes) {
-    if (paginationController.hasCurLimit()) {
-      builder =
-          new TsBlockBuilder(
-              (int)
-                  Math.min(
-                      paginationController.getCurLimit(),
-                      timePageReader.getStatistics().getCount()),
-              dataTypes);
-    } else {
-      builder = new TsBlockBuilder((int) timePageReader.getStatistics().getCount(), dataTypes);
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/LazyLoadAlignedPagePointReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/LazyLoadAlignedPagePointReader.java
deleted file mode 100644
index 4636b52..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/LazyLoadAlignedPagePointReader.java
+++ /dev/null
@@ -1,105 +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.reader.page;
-
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.io.IOException;
-import java.util.List;
-
-/**
- * This class is used to read data of aligned-series row by row. It won't deserialize all data point
- * of one page in memory. In contrast, it constructs row one by one as needed
- */
-public class LazyLoadAlignedPagePointReader implements IPointReader {
-
-  private final TimePageReader timeReader;
-  private final List<ValuePageReader> valueReaders;
-
-  private boolean hasNextRow = false;
-
-  private int timeIndex;
-  private long currentTime;
-  private TsPrimitiveType currentRow;
-
-  public LazyLoadAlignedPagePointReader(
-      TimePageReader timeReader, List<ValuePageReader> valueReaders) throws IOException {
-    this.timeIndex = -1;
-    this.timeReader = timeReader;
-    this.valueReaders = valueReaders;
-    prepareNextRow();
-  }
-
-  private void prepareNextRow() throws IOException {
-    while (true) {
-      if (!timeReader.hasNextTime()) {
-        hasNextRow = false;
-        return;
-      }
-      currentTime = timeReader.nextTime();
-      timeIndex++;
-      boolean someValueNotNull = false;
-      TsPrimitiveType[] valuesInThisRow = new TsPrimitiveType[valueReaders.size()];
-      for (int i = 0; i < valueReaders.size(); i++) {
-        TsPrimitiveType value =
-            valueReaders.get(i) == null
-                ? null
-                : valueReaders.get(i).nextValue(currentTime, timeIndex);
-        someValueNotNull = someValueNotNull || (value != null);
-        valuesInThisRow[i] = value;
-      }
-      if (someValueNotNull) {
-        currentRow = new TsPrimitiveType.TsVector(valuesInThisRow);
-        hasNextRow = true;
-        break;
-      }
-    }
-  }
-
-  @Override
-  public boolean hasNextTimeValuePair() throws IOException {
-    return hasNextRow;
-  }
-
-  @Override
-  public TimeValuePair nextTimeValuePair() throws IOException {
-    TimeValuePair ret = currentTimeValuePair();
-    prepareNextRow();
-    return ret;
-  }
-
-  @Override
-  public TimeValuePair currentTimeValuePair() throws IOException {
-    return new TimeValuePair(currentTime, currentRow);
-  }
-
-  @Override
-  public long getUsedMemorySize() {
-    // not used
-    return 0;
-  }
-
-  @Override
-  public void close() throws IOException {
-    // do nothing
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/PageReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/PageReader.java
deleted file mode 100644
index f190a43..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/PageReader.java
+++ /dev/null
@@ -1,383 +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.reader.page;
-
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.BatchDataFactory;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.reader.IPageReader;
-import org.apache.iotdb.tsfile.read.reader.series.PaginationController;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
-import static org.apache.iotdb.tsfile.read.reader.series.PaginationController.UNLIMITED_PAGINATION_CONTROLLER;
-import static org.apache.iotdb.tsfile.utils.Preconditions.checkArgument;
-
-public class PageReader implements IPageReader {
-
-  private final PageHeader pageHeader;
-
-  private final TSDataType dataType;
-
-  /** decoder for value column */
-  private final Decoder valueDecoder;
-
-  /** decoder for time column */
-  private final Decoder timeDecoder;
-
-  /** time column in memory */
-  private ByteBuffer timeBuffer;
-
-  /** value column in memory */
-  private ByteBuffer valueBuffer;
-
-  private Filter recordFilter;
-  private PaginationController paginationController = UNLIMITED_PAGINATION_CONTROLLER;
-
-  /** A list of deleted intervals. */
-  private List<TimeRange> deleteIntervalList;
-
-  private int deleteCursor = 0;
-
-  public PageReader(
-      ByteBuffer pageData, TSDataType dataType, Decoder valueDecoder, Decoder timeDecoder) {
-    this(null, pageData, dataType, valueDecoder, timeDecoder, null);
-  }
-
-  public PageReader(
-      PageHeader pageHeader,
-      ByteBuffer pageData,
-      TSDataType dataType,
-      Decoder valueDecoder,
-      Decoder timeDecoder) {
-    this(pageHeader, pageData, dataType, valueDecoder, timeDecoder, null);
-  }
-
-  public PageReader(
-      PageHeader pageHeader,
-      ByteBuffer pageData,
-      TSDataType dataType,
-      Decoder valueDecoder,
-      Decoder timeDecoder,
-      Filter recordFilter) {
-    this.dataType = dataType;
-    this.valueDecoder = valueDecoder;
-    this.timeDecoder = timeDecoder;
-    this.recordFilter = recordFilter;
-    this.pageHeader = pageHeader;
-    splitDataToTimeStampAndValue(pageData);
-  }
-
-  /**
-   * split pageContent into two stream: time and value
-   *
-   * @param pageData uncompressed bytes size of time column, time column, value column
-   */
-  private void splitDataToTimeStampAndValue(ByteBuffer pageData) {
-    int timeBufferLength = ReadWriteForEncodingUtils.readUnsignedVarInt(pageData);
-
-    timeBuffer = pageData.slice();
-    timeBuffer.limit(timeBufferLength);
-
-    valueBuffer = pageData.slice();
-    valueBuffer.position(timeBufferLength);
-  }
-
-  /** @return the returned BatchData may be empty, but never be null */
-  @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning
-  @Override
-  public BatchData getAllSatisfiedPageData(boolean ascending) throws IOException {
-    BatchData pageData = BatchDataFactory.createBatchData(dataType, ascending, false);
-    boolean allSatisfy = recordFilter == null || recordFilter.allSatisfy(this);
-    while (timeDecoder.hasNext(timeBuffer)) {
-      long timestamp = timeDecoder.readLong(timeBuffer);
-      switch (dataType) {
-        case BOOLEAN:
-          boolean aBoolean = valueDecoder.readBoolean(valueBuffer);
-          if (!isDeleted(timestamp) && (allSatisfy || recordFilter.satisfy(timestamp, aBoolean))) {
-            pageData.putBoolean(timestamp, aBoolean);
-          }
-          break;
-        case INT32:
-          int anInt = valueDecoder.readInt(valueBuffer);
-          if (!isDeleted(timestamp) && (allSatisfy || recordFilter.satisfy(timestamp, anInt))) {
-            pageData.putInt(timestamp, anInt);
-          }
-          break;
-        case INT64:
-          long aLong = valueDecoder.readLong(valueBuffer);
-          if (!isDeleted(timestamp) && (allSatisfy || recordFilter.satisfy(timestamp, aLong))) {
-            pageData.putLong(timestamp, aLong);
-          }
-          break;
-        case FLOAT:
-          float aFloat = valueDecoder.readFloat(valueBuffer);
-          if (!isDeleted(timestamp) && (allSatisfy || recordFilter.satisfy(timestamp, aFloat))) {
-            pageData.putFloat(timestamp, aFloat);
-          }
-          break;
-        case DOUBLE:
-          double aDouble = valueDecoder.readDouble(valueBuffer);
-          if (!isDeleted(timestamp) && (allSatisfy || recordFilter.satisfy(timestamp, aDouble))) {
-            pageData.putDouble(timestamp, aDouble);
-          }
-          break;
-        case TEXT:
-          Binary aBinary = valueDecoder.readBinary(valueBuffer);
-          if (!isDeleted(timestamp) && (allSatisfy || recordFilter.satisfy(timestamp, aBinary))) {
-            pageData.putBinary(timestamp, aBinary);
-          }
-          break;
-        default:
-          throw new UnSupportedDataTypeException(String.valueOf(dataType));
-      }
-    }
-    return pageData.flip();
-  }
-
-  @Override
-  public TsBlock getAllSatisfiedData() throws IOException {
-    TsBlockBuilder builder;
-    int initialExpectedEntries = (int) pageHeader.getStatistics().getCount();
-    if (paginationController.hasCurLimit()) {
-      initialExpectedEntries =
-          (int) Math.min(initialExpectedEntries, paginationController.getCurLimit());
-    }
-    builder = new TsBlockBuilder(initialExpectedEntries, Collections.singletonList(dataType));
-
-    TimeColumnBuilder timeBuilder = builder.getTimeColumnBuilder();
-    ColumnBuilder valueBuilder = builder.getColumnBuilder(0);
-    boolean allSatisfy = recordFilter == null || recordFilter.allSatisfy(this);
-    switch (dataType) {
-      case BOOLEAN:
-        while (timeDecoder.hasNext(timeBuffer)) {
-          long timestamp = timeDecoder.readLong(timeBuffer);
-          boolean aBoolean = valueDecoder.readBoolean(valueBuffer);
-          if (isDeleted(timestamp) || (!allSatisfy && !recordFilter.satisfy(timestamp, aBoolean))) {
-            continue;
-          }
-          if (paginationController.hasCurOffset()) {
-            paginationController.consumeOffset();
-            continue;
-          }
-          if (paginationController.hasCurLimit()) {
-            timeBuilder.writeLong(timestamp);
-            valueBuilder.writeBoolean(aBoolean);
-            builder.declarePosition();
-            paginationController.consumeLimit();
-          } else {
-            break;
-          }
-        }
-        break;
-      case INT32:
-        while (timeDecoder.hasNext(timeBuffer)) {
-          long timestamp = timeDecoder.readLong(timeBuffer);
-          int anInt = valueDecoder.readInt(valueBuffer);
-          if (isDeleted(timestamp) || (!allSatisfy && !recordFilter.satisfy(timestamp, anInt))) {
-            continue;
-          }
-          if (paginationController.hasCurOffset()) {
-            paginationController.consumeOffset();
-            continue;
-          }
-          if (paginationController.hasCurLimit()) {
-            timeBuilder.writeLong(timestamp);
-            valueBuilder.writeInt(anInt);
-            builder.declarePosition();
-            paginationController.consumeLimit();
-          } else {
-            break;
-          }
-        }
-        break;
-      case INT64:
-        while (timeDecoder.hasNext(timeBuffer)) {
-          long timestamp = timeDecoder.readLong(timeBuffer);
-          long aLong = valueDecoder.readLong(valueBuffer);
-          if (isDeleted(timestamp) || (!allSatisfy && !recordFilter.satisfy(timestamp, aLong))) {
-            continue;
-          }
-          if (paginationController.hasCurOffset()) {
-            paginationController.consumeOffset();
-            continue;
-          }
-          if (paginationController.hasCurLimit()) {
-            timeBuilder.writeLong(timestamp);
-            valueBuilder.writeLong(aLong);
-            builder.declarePosition();
-            paginationController.consumeLimit();
-          } else {
-            break;
-          }
-        }
-        break;
-      case FLOAT:
-        while (timeDecoder.hasNext(timeBuffer)) {
-          long timestamp = timeDecoder.readLong(timeBuffer);
-          float aFloat = valueDecoder.readFloat(valueBuffer);
-          if (isDeleted(timestamp) || (!allSatisfy && !recordFilter.satisfy(timestamp, aFloat))) {
-            continue;
-          }
-          if (paginationController.hasCurOffset()) {
-            paginationController.consumeOffset();
-            continue;
-          }
-          if (paginationController.hasCurLimit()) {
-            timeBuilder.writeLong(timestamp);
-            valueBuilder.writeFloat(aFloat);
-            builder.declarePosition();
-            paginationController.consumeLimit();
-          } else {
-            break;
-          }
-        }
-        break;
-      case DOUBLE:
-        while (timeDecoder.hasNext(timeBuffer)) {
-          long timestamp = timeDecoder.readLong(timeBuffer);
-          double aDouble = valueDecoder.readDouble(valueBuffer);
-          if (isDeleted(timestamp) || (!allSatisfy && !recordFilter.satisfy(timestamp, aDouble))) {
-            continue;
-          }
-          if (paginationController.hasCurOffset()) {
-            paginationController.consumeOffset();
-            continue;
-          }
-          if (paginationController.hasCurLimit()) {
-            timeBuilder.writeLong(timestamp);
-            valueBuilder.writeDouble(aDouble);
-            builder.declarePosition();
-            paginationController.consumeLimit();
-          } else {
-            break;
-          }
-        }
-        break;
-      case TEXT:
-        while (timeDecoder.hasNext(timeBuffer)) {
-          long timestamp = timeDecoder.readLong(timeBuffer);
-          Binary aBinary = valueDecoder.readBinary(valueBuffer);
-          if (isDeleted(timestamp) || (!allSatisfy && !recordFilter.satisfy(timestamp, aBinary))) {
-            continue;
-          }
-          if (paginationController.hasCurOffset()) {
-            paginationController.consumeOffset();
-            continue;
-          }
-          if (paginationController.hasCurLimit()) {
-            timeBuilder.writeLong(timestamp);
-            valueBuilder.writeBinary(aBinary);
-            builder.declarePosition();
-            paginationController.consumeLimit();
-          } else {
-            break;
-          }
-        }
-        break;
-      default:
-        throw new UnSupportedDataTypeException(String.valueOf(dataType));
-    }
-    return builder.build();
-  }
-
-  @Override
-  public Statistics<? extends Serializable> getStatistics() {
-    return pageHeader.getStatistics();
-  }
-
-  @Override
-  public Statistics<? extends Serializable> getTimeStatistics() {
-    return getStatistics();
-  }
-
-  @Override
-  public Optional<Statistics<? extends Serializable>> getMeasurementStatistics(
-      int measurementIndex) {
-    checkArgument(
-        measurementIndex == 0,
-        "Non-aligned page only has one measurement, but measurementIndex is " + measurementIndex);
-    return Optional.ofNullable(getStatistics());
-  }
-
-  @Override
-  public boolean hasNullValue(int measurementIndex) {
-    return false;
-  }
-
-  @Override
-  public void addRecordFilter(Filter filter) {
-    this.recordFilter = FilterFactory.and(recordFilter, filter);
-  }
-
-  @Override
-  public void setLimitOffset(PaginationController paginationController) {
-    this.paginationController = paginationController;
-  }
-
-  public void setDeleteIntervalList(List<TimeRange> list) {
-    this.deleteIntervalList = list;
-  }
-
-  public List<TimeRange> getDeleteIntervalList() {
-    return deleteIntervalList;
-  }
-
-  @Override
-  public boolean isModified() {
-    return pageHeader.isModified();
-  }
-
-  @Override
-  public void initTsBlockBuilder(List<TSDataType> dataTypes) {
-    // do nothing
-  }
-
-  protected boolean isDeleted(long timestamp) {
-    while (deleteIntervalList != null && deleteCursor < deleteIntervalList.size()) {
-      if (deleteIntervalList.get(deleteCursor).contains(timestamp)) {
-        return true;
-      } else if (deleteIntervalList.get(deleteCursor).getMax() < timestamp) {
-        deleteCursor++;
-      } else {
-        return false;
-      }
-    }
-    return false;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/TimePageReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/TimePageReader.java
deleted file mode 100644
index daa7cfa..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/TimePageReader.java
+++ /dev/null
@@ -1,118 +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.reader.page;
-
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.statistics.TimeStatistics;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-public class TimePageReader {
-
-  private final PageHeader pageHeader;
-
-  /** decoder for time column */
-  protected Decoder timeDecoder;
-
-  /** time column in memory */
-  protected ByteBuffer timeBuffer;
-
-  /** A list of deleted intervals. */
-  private List<TimeRange> deleteIntervalList;
-
-  private int deleteCursor = 0;
-
-  public TimePageReader(ByteBuffer pageData, Decoder timeDecoder) {
-    this(null, pageData, timeDecoder);
-  }
-
-  public TimePageReader(PageHeader pageHeader, ByteBuffer pageData, Decoder timeDecoder) {
-    this.timeDecoder = timeDecoder;
-    this.pageHeader = pageHeader;
-    this.timeBuffer = pageData;
-  }
-
-  public boolean hasNextTime() throws IOException {
-    return timeDecoder.hasNext(timeBuffer);
-  }
-
-  public long nextTime() {
-    return timeDecoder.readLong(timeBuffer);
-  }
-
-  public long[] nextTimeBatch() throws IOException {
-    long[] timeBatch = new long[(int) pageHeader.getStatistics().getCount()];
-    int index = 0;
-    while (timeDecoder.hasNext(timeBuffer)) {
-      timeBatch[index++] = timeDecoder.readLong(timeBuffer);
-    }
-    return timeBatch;
-  }
-
-  /**
-   * In case that we use sequence read, and the page doesn't have statistics, so we won't know time
-   * array's length at first
-   */
-  public long[] getNextTimeBatch() throws IOException {
-    if (pageHeader.getStatistics() != null) {
-      return nextTimeBatch();
-    } else {
-      List<Long> timeList = new ArrayList<>();
-      while (timeDecoder.hasNext(timeBuffer)) {
-        timeList.add(timeDecoder.readLong(timeBuffer));
-      }
-      return timeList.stream().mapToLong(t -> t).toArray();
-    }
-  }
-
-  public TimeStatistics getStatistics() {
-    return (TimeStatistics) pageHeader.getStatistics();
-  }
-
-  public void setDeleteIntervalList(List<TimeRange> list) {
-    this.deleteIntervalList = list;
-  }
-
-  public List<TimeRange> getDeleteIntervalList() {
-    return deleteIntervalList;
-  }
-
-  public boolean isModified() {
-    return pageHeader.isModified();
-  }
-
-  protected boolean isDeleted(long timestamp) {
-    while (deleteIntervalList != null && deleteCursor < deleteIntervalList.size()) {
-      if (deleteIntervalList.get(deleteCursor).contains(timestamp)) {
-        return true;
-      } else if (deleteIntervalList.get(deleteCursor).getMax() < timestamp) {
-        deleteCursor++;
-      } else {
-        return false;
-      }
-    }
-    return false;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/ValuePageReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/ValuePageReader.java
deleted file mode 100644
index d18818c..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/ValuePageReader.java
+++ /dev/null
@@ -1,556 +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.reader.page;
-
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.BatchDataFactory;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import java.util.List;
-
-public class ValuePageReader {
-
-  private static final int MASK = 0x80;
-
-  private final PageHeader pageHeader;
-
-  private final TSDataType dataType;
-
-  /** decoder for value column */
-  private final Decoder valueDecoder;
-
-  private byte[] bitmap;
-
-  private int size;
-
-  /** value column in memory */
-  protected ByteBuffer valueBuffer;
-
-  /** A list of deleted intervals. */
-  private List<TimeRange> deleteIntervalList;
-
-  private int deleteCursor = 0;
-
-  public ValuePageReader(
-      PageHeader pageHeader, ByteBuffer pageData, TSDataType dataType, Decoder valueDecoder) {
-    this.dataType = dataType;
-    this.valueDecoder = valueDecoder;
-    this.pageHeader = pageHeader;
-    if (pageData != null) {
-      splitDataToBitmapAndValue(pageData);
-    }
-    this.valueBuffer = pageData;
-  }
-
-  private void splitDataToBitmapAndValue(ByteBuffer pageData) {
-    if (!pageData.hasRemaining()) { // Empty Page
-      return;
-    }
-    this.size = ReadWriteIOUtils.readInt(pageData);
-    this.bitmap = new byte[(size + 7) / 8];
-    pageData.get(bitmap);
-    this.valueBuffer = pageData.slice();
-  }
-
-  /**
-   * return a BatchData with the corresponding timeBatch, the BatchData's dataType is same as this
-   * sub sensor
-   */
-  public BatchData nextBatch(long[] timeBatch, boolean ascending, Filter filter) {
-    BatchData pageData = BatchDataFactory.createBatchData(dataType, ascending, false);
-    for (int i = 0; i < timeBatch.length; i++) {
-      if (((bitmap[i / 8] & 0xFF) & (MASK >>> (i % 8))) == 0) {
-        continue;
-      }
-      long timestamp = timeBatch[i];
-      switch (dataType) {
-        case BOOLEAN:
-          boolean aBoolean = valueDecoder.readBoolean(valueBuffer);
-          if (!isDeleted(timestamp) && (filter == null || filter.satisfy(timestamp, aBoolean))) {
-            pageData.putBoolean(timestamp, aBoolean);
-          }
-          break;
-        case INT32:
-          int anInt = valueDecoder.readInt(valueBuffer);
-          if (!isDeleted(timestamp) && (filter == null || filter.satisfy(timestamp, anInt))) {
-            pageData.putInt(timestamp, anInt);
-          }
-          break;
-        case INT64:
-          long aLong = valueDecoder.readLong(valueBuffer);
-          if (!isDeleted(timestamp) && (filter == null || filter.satisfy(timestamp, aLong))) {
-            pageData.putLong(timestamp, aLong);
-          }
-          break;
-        case FLOAT:
-          float aFloat = valueDecoder.readFloat(valueBuffer);
-          if (!isDeleted(timestamp) && (filter == null || filter.satisfy(timestamp, aFloat))) {
-            pageData.putFloat(timestamp, aFloat);
-          }
-          break;
-        case DOUBLE:
-          double aDouble = valueDecoder.readDouble(valueBuffer);
-          if (!isDeleted(timestamp) && (filter == null || filter.satisfy(timestamp, aDouble))) {
-            pageData.putDouble(timestamp, aDouble);
-          }
-          break;
-        case TEXT:
-          Binary aBinary = valueDecoder.readBinary(valueBuffer);
-          if (!isDeleted(timestamp) && (filter == null || filter.satisfy(timestamp, aBinary))) {
-            pageData.putBinary(timestamp, aBinary);
-          }
-          break;
-        default:
-          throw new UnSupportedDataTypeException(String.valueOf(dataType));
-      }
-    }
-    return pageData.flip();
-  }
-
-  public TsPrimitiveType nextValue(long timestamp, int timeIndex) {
-    TsPrimitiveType resultValue = null;
-    if (valueBuffer == null || ((bitmap[timeIndex / 8] & 0xFF) & (MASK >>> (timeIndex % 8))) == 0) {
-      return null;
-    }
-    switch (dataType) {
-      case BOOLEAN:
-        boolean aBoolean = valueDecoder.readBoolean(valueBuffer);
-        if (!isDeleted(timestamp)) {
-          resultValue = new TsPrimitiveType.TsBoolean(aBoolean);
-        }
-        break;
-      case INT32:
-        int anInt = valueDecoder.readInt(valueBuffer);
-        if (!isDeleted(timestamp)) {
-          resultValue = new TsPrimitiveType.TsInt(anInt);
-        }
-        break;
-      case INT64:
-        long aLong = valueDecoder.readLong(valueBuffer);
-        if (!isDeleted(timestamp)) {
-          resultValue = new TsPrimitiveType.TsLong(aLong);
-        }
-        break;
-      case FLOAT:
-        float aFloat = valueDecoder.readFloat(valueBuffer);
-        if (!isDeleted(timestamp)) {
-          resultValue = new TsPrimitiveType.TsFloat(aFloat);
-        }
-        break;
-      case DOUBLE:
-        double aDouble = valueDecoder.readDouble(valueBuffer);
-        if (!isDeleted(timestamp)) {
-          resultValue = new TsPrimitiveType.TsDouble(aDouble);
-        }
-        break;
-      case TEXT:
-        Binary aBinary = valueDecoder.readBinary(valueBuffer);
-        if (!isDeleted(timestamp)) {
-          resultValue = new TsPrimitiveType.TsBinary(aBinary);
-        }
-        break;
-      default:
-        throw new UnSupportedDataTypeException(String.valueOf(dataType));
-    }
-
-    return resultValue;
-  }
-
-  /**
-   * return the value array of the corresponding time, if this sub sensor don't have a value in a
-   * time, just fill it with null
-   */
-  public TsPrimitiveType[] nextValueBatch(long[] timeBatch) {
-    TsPrimitiveType[] valueBatch = new TsPrimitiveType[size];
-    if (valueBuffer == null) {
-      return valueBatch;
-    }
-    for (int i = 0; i < size; i++) {
-      if (((bitmap[i / 8] & 0xFF) & (MASK >>> (i % 8))) == 0) {
-        continue;
-      }
-      switch (dataType) {
-        case BOOLEAN:
-          boolean aBoolean = valueDecoder.readBoolean(valueBuffer);
-          if (!isDeleted(timeBatch[i])) {
-            valueBatch[i] = new TsPrimitiveType.TsBoolean(aBoolean);
-          }
-          break;
-        case INT32:
-          int anInt = valueDecoder.readInt(valueBuffer);
-          if (!isDeleted(timeBatch[i])) {
-            valueBatch[i] = new TsPrimitiveType.TsInt(anInt);
-          }
-          break;
-        case INT64:
-          long aLong = valueDecoder.readLong(valueBuffer);
-          if (!isDeleted(timeBatch[i])) {
-            valueBatch[i] = new TsPrimitiveType.TsLong(aLong);
-          }
-          break;
-        case FLOAT:
-          float aFloat = valueDecoder.readFloat(valueBuffer);
-          if (!isDeleted(timeBatch[i])) {
-            valueBatch[i] = new TsPrimitiveType.TsFloat(aFloat);
-          }
-          break;
-        case DOUBLE:
-          double aDouble = valueDecoder.readDouble(valueBuffer);
-          if (!isDeleted(timeBatch[i])) {
-            valueBatch[i] = new TsPrimitiveType.TsDouble(aDouble);
-          }
-          break;
-        case TEXT:
-          Binary aBinary = valueDecoder.readBinary(valueBuffer);
-          if (!isDeleted(timeBatch[i])) {
-            valueBatch[i] = new TsPrimitiveType.TsBinary(aBinary);
-          }
-          break;
-        default:
-          throw new UnSupportedDataTypeException(String.valueOf(dataType));
-      }
-    }
-    return valueBatch;
-  }
-
-  public void writeColumnBuilderWithNextBatch(
-      int readEndIndex,
-      ColumnBuilder columnBuilder,
-      boolean[] keepCurrentRow,
-      boolean[] isDeleted) {
-    if (valueBuffer == null) {
-      for (int i = 0; i < readEndIndex; i++) {
-        if (keepCurrentRow[i]) {
-          columnBuilder.appendNull();
-        }
-      }
-      return;
-    }
-    for (int i = 0; i < readEndIndex; i++) {
-      if (((bitmap[i / 8] & 0xFF) & (MASK >>> (i % 8))) == 0) {
-        if (keepCurrentRow[i]) {
-          columnBuilder.appendNull();
-        }
-        continue;
-      }
-      switch (dataType) {
-        case BOOLEAN:
-          boolean aBoolean = valueDecoder.readBoolean(valueBuffer);
-          if (keepCurrentRow[i]) {
-            if (isDeleted[i]) {
-              columnBuilder.appendNull();
-            } else {
-              columnBuilder.writeBoolean(aBoolean);
-            }
-          }
-          break;
-        case INT32:
-          int anInt = valueDecoder.readInt(valueBuffer);
-          if (keepCurrentRow[i]) {
-            if (isDeleted[i]) {
-              columnBuilder.appendNull();
-            } else {
-              columnBuilder.writeInt(anInt);
-            }
-          }
-          break;
-        case INT64:
-          long aLong = valueDecoder.readLong(valueBuffer);
-          if (keepCurrentRow[i]) {
-            if (isDeleted[i]) {
-              columnBuilder.appendNull();
-            } else {
-              columnBuilder.writeLong(aLong);
-            }
-          }
-          break;
-        case FLOAT:
-          float aFloat = valueDecoder.readFloat(valueBuffer);
-          if (keepCurrentRow[i]) {
-            if (isDeleted[i]) {
-              columnBuilder.appendNull();
-            } else {
-              columnBuilder.writeFloat(aFloat);
-            }
-          }
-          break;
-        case DOUBLE:
-          double aDouble = valueDecoder.readDouble(valueBuffer);
-          if (keepCurrentRow[i]) {
-            if (isDeleted[i]) {
-              columnBuilder.appendNull();
-            } else {
-              columnBuilder.writeDouble(aDouble);
-            }
-          }
-          break;
-        case TEXT:
-          Binary aBinary = valueDecoder.readBinary(valueBuffer);
-          if (keepCurrentRow[i]) {
-            if (isDeleted[i]) {
-              columnBuilder.appendNull();
-            } else {
-              columnBuilder.writeBinary(aBinary);
-            }
-          }
-          break;
-        default:
-          throw new UnSupportedDataTypeException(String.valueOf(dataType));
-      }
-    }
-  }
-
-  public void writeColumnBuilderWithNextBatch(
-      int readEndIndex, ColumnBuilder columnBuilder, boolean[] keepCurrentRow) {
-    if (valueBuffer == null) {
-      for (int i = 0; i < readEndIndex; i++) {
-        if (keepCurrentRow[i]) {
-          columnBuilder.appendNull();
-        }
-      }
-      return;
-    }
-    for (int i = 0; i < readEndIndex; i++) {
-      if (((bitmap[i / 8] & 0xFF) & (MASK >>> (i % 8))) == 0) {
-        if (keepCurrentRow[i]) {
-          columnBuilder.appendNull();
-        }
-        continue;
-      }
-      switch (dataType) {
-        case BOOLEAN:
-          boolean aBoolean = valueDecoder.readBoolean(valueBuffer);
-          if (keepCurrentRow[i]) {
-            columnBuilder.writeBoolean(aBoolean);
-          }
-          break;
-        case INT32:
-          int anInt = valueDecoder.readInt(valueBuffer);
-          if (keepCurrentRow[i]) {
-            columnBuilder.writeInt(anInt);
-          }
-          break;
-        case INT64:
-          long aLong = valueDecoder.readLong(valueBuffer);
-          if (keepCurrentRow[i]) {
-            columnBuilder.writeLong(aLong);
-          }
-          break;
-        case FLOAT:
-          float aFloat = valueDecoder.readFloat(valueBuffer);
-          if (keepCurrentRow[i]) {
-            columnBuilder.writeFloat(aFloat);
-          }
-          break;
-        case DOUBLE:
-          double aDouble = valueDecoder.readDouble(valueBuffer);
-          if (keepCurrentRow[i]) {
-            columnBuilder.writeDouble(aDouble);
-          }
-          break;
-        case TEXT:
-          Binary aBinary = valueDecoder.readBinary(valueBuffer);
-          if (keepCurrentRow[i]) {
-            columnBuilder.writeBinary(aBinary);
-          }
-          break;
-        default:
-          throw new UnSupportedDataTypeException(String.valueOf(dataType));
-      }
-    }
-  }
-
-  public void writeColumnBuilderWithNextBatch(
-      int readStartIndex, int readEndIndex, ColumnBuilder columnBuilder) {
-    if (valueBuffer == null) {
-      columnBuilder.appendNull(readEndIndex - readStartIndex);
-      return;
-    }
-
-    switch (dataType) {
-      case BOOLEAN:
-        // skip useless data
-        for (int i = 0; i < readStartIndex; i++) {
-          if (((bitmap[i / 8] & 0xFF) & (MASK >>> (i % 8))) == 0) {
-            continue;
-          }
-          valueDecoder.readBoolean(valueBuffer);
-        }
-
-        for (int i = readStartIndex; i < readEndIndex; i++) {
-          if (((bitmap[i / 8] & 0xFF) & (MASK >>> (i % 8))) == 0) {
-            columnBuilder.appendNull();
-            continue;
-          }
-          boolean aBoolean = valueDecoder.readBoolean(valueBuffer);
-          columnBuilder.writeBoolean(aBoolean);
-        }
-        break;
-      case INT32:
-        // skip useless data
-        for (int i = 0; i < readStartIndex; i++) {
-          if (((bitmap[i / 8] & 0xFF) & (MASK >>> (i % 8))) == 0) {
-            continue;
-          }
-          valueDecoder.readInt(valueBuffer);
-        }
-
-        for (int i = readStartIndex; i < readEndIndex; i++) {
-          if (((bitmap[i / 8] & 0xFF) & (MASK >>> (i % 8))) == 0) {
-            columnBuilder.appendNull();
-            continue;
-          }
-          int aInt = valueDecoder.readInt(valueBuffer);
-          columnBuilder.writeInt(aInt);
-        }
-        break;
-      case INT64:
-        // skip useless data
-        for (int i = 0; i < readStartIndex; i++) {
-          if (((bitmap[i / 8] & 0xFF) & (MASK >>> (i % 8))) == 0) {
-            continue;
-          }
-          valueDecoder.readLong(valueBuffer);
-        }
-
-        for (int i = readStartIndex; i < readEndIndex; i++) {
-          if (((bitmap[i / 8] & 0xFF) & (MASK >>> (i % 8))) == 0) {
-            columnBuilder.appendNull();
-            continue;
-          }
-          long aLong = valueDecoder.readLong(valueBuffer);
-          columnBuilder.writeLong(aLong);
-        }
-        break;
-      case FLOAT:
-        // skip useless data
-        for (int i = 0; i < readStartIndex; i++) {
-          if (((bitmap[i / 8] & 0xFF) & (MASK >>> (i % 8))) == 0) {
-            continue;
-          }
-          valueDecoder.readFloat(valueBuffer);
-        }
-
-        for (int i = readStartIndex; i < readEndIndex; i++) {
-          if (((bitmap[i / 8] & 0xFF) & (MASK >>> (i % 8))) == 0) {
-            columnBuilder.appendNull();
-            continue;
-          }
-          float aFloat = valueDecoder.readFloat(valueBuffer);
-          columnBuilder.writeFloat(aFloat);
-        }
-        break;
-      case DOUBLE:
-        // skip useless data
-        for (int i = 0; i < readStartIndex; i++) {
-          if (((bitmap[i / 8] & 0xFF) & (MASK >>> (i % 8))) == 0) {
-            continue;
-          }
-          valueDecoder.readDouble(valueBuffer);
-        }
-
-        for (int i = readStartIndex; i < readEndIndex; i++) {
-          if (((bitmap[i / 8] & 0xFF) & (MASK >>> (i % 8))) == 0) {
-            columnBuilder.appendNull();
-            continue;
-          }
-          double aDouble = valueDecoder.readDouble(valueBuffer);
-          columnBuilder.writeDouble(aDouble);
-        }
-        break;
-      case TEXT:
-        // skip useless data
-        for (int i = 0; i < readStartIndex; i++) {
-          if (((bitmap[i / 8] & 0xFF) & (MASK >>> (i % 8))) == 0) {
-            continue;
-          }
-          valueDecoder.readBinary(valueBuffer);
-        }
-
-        for (int i = readStartIndex; i < readEndIndex; i++) {
-          if (((bitmap[i / 8] & 0xFF) & (MASK >>> (i % 8))) == 0) {
-            columnBuilder.appendNull();
-            continue;
-          }
-          Binary aBinary = valueDecoder.readBinary(valueBuffer);
-          columnBuilder.writeBinary(aBinary);
-        }
-        break;
-      default:
-        throw new UnSupportedDataTypeException(String.valueOf(dataType));
-    }
-  }
-
-  public Statistics<? extends Serializable> getStatistics() {
-    return pageHeader.getStatistics();
-  }
-
-  public void setDeleteIntervalList(List<TimeRange> list) {
-    this.deleteIntervalList = list;
-  }
-
-  public List<TimeRange> getDeleteIntervalList() {
-    return deleteIntervalList;
-  }
-
-  public boolean isModified() {
-    return pageHeader.isModified();
-  }
-
-  protected boolean isDeleted(long timestamp) {
-    while (deleteIntervalList != null && deleteCursor < deleteIntervalList.size()) {
-      if (deleteIntervalList.get(deleteCursor).contains(timestamp)) {
-        return true;
-      } else if (deleteIntervalList.get(deleteCursor).getMax() < timestamp) {
-        deleteCursor++;
-      } else {
-        return false;
-      }
-    }
-    return false;
-  }
-
-  public void fillIsDeleted(long[] timestamp, boolean[] isDeleted) {
-    for (int i = 0, n = timestamp.length; i < n; i++) {
-      isDeleted[i] = isDeleted(timestamp[i]);
-    }
-  }
-
-  public TSDataType getDataType() {
-    return dataType;
-  }
-
-  public byte[] getBitmap() {
-    return Arrays.copyOf(bitmap, bitmap.length);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/AbstractFileSeriesReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/AbstractFileSeriesReader.java
deleted file mode 100644
index 648e0a6..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/AbstractFileSeriesReader.java
+++ /dev/null
@@ -1,94 +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.reader.series;
-
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.reader.IBatchReader;
-import org.apache.iotdb.tsfile.read.reader.IChunkReader;
-
-import java.io.IOException;
-import java.util.List;
-
-/** Series reader is used to query one series of one tsfile. */
-public abstract class AbstractFileSeriesReader implements IBatchReader {
-
-  protected IChunkLoader chunkLoader;
-  protected List<IChunkMetadata> chunkMetadataList;
-  protected IChunkReader chunkReader;
-  private int chunkToRead;
-
-  protected Filter filter;
-
-  /** constructor of FileSeriesReader. */
-  protected AbstractFileSeriesReader(
-      IChunkLoader chunkLoader, List<IChunkMetadata> chunkMetadataList, Filter filter) {
-    this.chunkLoader = chunkLoader;
-    this.chunkMetadataList = chunkMetadataList;
-    this.filter = filter;
-    this.chunkToRead = 0;
-  }
-
-  @Override
-  public boolean hasNextBatch() throws IOException {
-
-    // current chunk has additional batch
-    if (chunkReader != null && chunkReader.hasNextSatisfiedPage()) {
-      return true;
-    }
-
-    // current chunk does not have additional batch, init new chunk reader
-    while (chunkToRead < chunkMetadataList.size()) {
-
-      IChunkMetadata chunkMetaData = nextChunkMeta();
-      if (chunkCanSkip(chunkMetaData)) {
-        continue;
-      }
-
-      // chunk metadata satisfy the condition
-      initChunkReader(chunkMetaData);
-
-      if (chunkReader.hasNextSatisfiedPage()) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  @Override
-  public BatchData nextBatch() throws IOException {
-    return chunkReader.nextPageData();
-  }
-
-  protected abstract void initChunkReader(IChunkMetadata chunkMetaData) throws IOException;
-
-  protected abstract boolean chunkCanSkip(IChunkMetadata chunkMetaData);
-
-  @Override
-  public void close() throws IOException {
-    chunkLoader.close();
-  }
-
-  private IChunkMetadata nextChunkMeta() {
-    return chunkMetadataList.get(chunkToRead++);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/EmptyFileSeriesReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/EmptyFileSeriesReader.java
deleted file mode 100644
index ed3bda8..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/EmptyFileSeriesReader.java
+++ /dev/null
@@ -1,57 +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.reader.series;
-
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-
-/** this is for those series which has no data points */
-public class EmptyFileSeriesReader extends AbstractFileSeriesReader {
-  BatchData data = new BatchData();
-
-  public EmptyFileSeriesReader() {
-    super(null, null, null);
-  }
-
-  @Override
-  protected void initChunkReader(IChunkMetadata chunkMetaData) {
-    // do nothing
-  }
-
-  @Override
-  protected boolean chunkCanSkip(IChunkMetadata chunkMetaData) {
-    return true;
-  }
-
-  @Override
-  public boolean hasNextBatch() {
-    return false;
-  }
-
-  @Override
-  public BatchData nextBatch() {
-    return data;
-  }
-
-  @Override
-  public void close() {
-    data = null;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/FileSeriesReader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/FileSeriesReader.java
deleted file mode 100644
index 1c2a98a..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/FileSeriesReader.java
+++ /dev/null
@@ -1,67 +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.reader.series;
-
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.reader.chunk.AlignedChunkReader;
-import org.apache.iotdb.tsfile.read.reader.chunk.ChunkReader;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Series reader is used to query one series of one TsFile, and this reader has a filter operating
- * on the same series.
- */
-public class FileSeriesReader extends AbstractFileSeriesReader {
-
-  public FileSeriesReader(
-      IChunkLoader chunkLoader, List<IChunkMetadata> chunkMetadataList, Filter filter) {
-    super(chunkLoader, chunkMetadataList, filter);
-  }
-
-  @Override
-  protected void initChunkReader(IChunkMetadata chunkMetaData) throws IOException {
-    if (chunkMetaData instanceof ChunkMetadata) {
-      Chunk chunk = chunkLoader.loadChunk((ChunkMetadata) chunkMetaData);
-      this.chunkReader = new ChunkReader(chunk, filter);
-    } else {
-      AlignedChunkMetadata alignedChunkMetadata = (AlignedChunkMetadata) chunkMetaData;
-      Chunk timeChunk =
-          chunkLoader.loadChunk((ChunkMetadata) (alignedChunkMetadata.getTimeChunkMetadata()));
-      List<Chunk> valueChunkList = new ArrayList<>();
-      for (IChunkMetadata metadata : alignedChunkMetadata.getValueChunkMetadataList()) {
-        valueChunkList.add(chunkLoader.loadChunk((ChunkMetadata) metadata));
-      }
-      this.chunkReader = new AlignedChunkReader(timeChunk, valueChunkList, filter);
-    }
-  }
-
-  @Override
-  protected boolean chunkCanSkip(IChunkMetadata chunkMetaData) {
-    return filter != null && filter.canSkip(chunkMetaData);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/FileSeriesReaderByTimestamp.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/FileSeriesReaderByTimestamp.java
deleted file mode 100644
index f236fcf..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/FileSeriesReaderByTimestamp.java
+++ /dev/null
@@ -1,169 +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.reader.series;
-
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
-import org.apache.iotdb.tsfile.read.reader.IChunkReader;
-import org.apache.iotdb.tsfile.read.reader.chunk.AlignedChunkReader;
-import org.apache.iotdb.tsfile.read.reader.chunk.ChunkReader;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Series reader is used to query one series of one tsfile, using this reader to query the value of
- * a series with given timestamps.
- */
-public class FileSeriesReaderByTimestamp {
-
-  protected IChunkLoader chunkLoader;
-  protected List<IChunkMetadata> chunkMetadataList;
-  private int currentChunkIndex = 0;
-
-  private IChunkReader chunkReader;
-  private long currentTimestamp;
-  private BatchData data = null; // current batch data
-
-  /** init with chunkLoader and chunkMetaDataList. */
-  public FileSeriesReaderByTimestamp(
-      IChunkLoader chunkLoader, List<IChunkMetadata> chunkMetadataList) {
-    this.chunkLoader = chunkLoader;
-    this.chunkMetadataList = chunkMetadataList;
-    currentTimestamp = Long.MIN_VALUE;
-  }
-
-  public TSDataType getDataType() {
-    return chunkMetadataList.get(0).getDataType();
-  }
-
-  /** get value with time equals timestamp. If there is no such point, return null. */
-  @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning
-  public Object getValueInTimestamp(long timestamp) throws IOException {
-    this.currentTimestamp = timestamp;
-
-    // first initialization, only invoked in the first time
-    if (chunkReader == null) {
-      if (!constructNextSatisfiedChunkReader()) {
-        return null;
-      }
-
-      if (chunkReader.hasNextSatisfiedPage()) {
-        data = chunkReader.nextPageData();
-      } else {
-        return null;
-      }
-    }
-
-    while (data != null) {
-      while (data.hasCurrent()) {
-        if (data.currentTime() < timestamp) {
-          data.next();
-        } else {
-          break;
-        }
-      }
-
-      if (data.hasCurrent()) {
-        if (data.currentTime() == timestamp) {
-          Object value = data.currentValue();
-          data.next();
-          return value;
-        }
-        return null;
-      } else {
-        if (chunkReader.hasNextSatisfiedPage()) {
-          data = chunkReader.nextPageData();
-        } else if (!constructNextSatisfiedChunkReader()) {
-          return null;
-        }
-      }
-    }
-
-    return null;
-  }
-
-  /**
-   * Judge if the series reader has next time-value pair.
-   *
-   * @return true if has next, false if not.
-   */
-  @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning
-  public boolean hasNext() throws IOException {
-
-    if (chunkReader != null) {
-      if (data != null && data.hasCurrent()) {
-        return true;
-      }
-      while (chunkReader.hasNextSatisfiedPage()) {
-        data = chunkReader.nextPageData();
-        if (data != null && data.hasCurrent()) {
-          return true;
-        }
-      }
-    }
-    while (constructNextSatisfiedChunkReader()) {
-      while (chunkReader.hasNextSatisfiedPage()) {
-        data = chunkReader.nextPageData();
-        if (data != null && data.hasCurrent()) {
-          return true;
-        }
-      }
-    }
-    return false;
-  }
-
-  private boolean constructNextSatisfiedChunkReader() throws IOException {
-    while (currentChunkIndex < chunkMetadataList.size()) {
-      IChunkMetadata chunkMetaData = chunkMetadataList.get(currentChunkIndex++);
-      if (chunkSatisfied(chunkMetaData)) {
-        initChunkReader(chunkMetaData);
-        return true;
-      }
-    }
-    return false;
-  }
-
-  private void initChunkReader(IChunkMetadata chunkMetaData) throws IOException {
-    if (chunkMetaData instanceof ChunkMetadata) {
-      Chunk chunk = chunkLoader.loadChunk((ChunkMetadata) chunkMetaData);
-      this.chunkReader = new ChunkReader(chunk, currentTimestamp);
-    } else {
-      AlignedChunkMetadata alignedChunkMetadata = (AlignedChunkMetadata) chunkMetaData;
-      Chunk timeChunk =
-          chunkLoader.loadChunk((ChunkMetadata) (alignedChunkMetadata.getTimeChunkMetadata()));
-      List<Chunk> valueChunkList = new ArrayList<>();
-      for (IChunkMetadata metadata : alignedChunkMetadata.getValueChunkMetadataList()) {
-        valueChunkList.add(chunkLoader.loadChunk((ChunkMetadata) metadata));
-      }
-      this.chunkReader = new AlignedChunkReader(timeChunk, valueChunkList, currentTimestamp);
-    }
-  }
-
-  private boolean chunkSatisfied(IChunkMetadata chunkMetaData) {
-    return chunkMetaData.getEndTime() >= currentTimestamp;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/PaginationController.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/PaginationController.java
deleted file mode 100644
index 8e557bb..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/PaginationController.java
+++ /dev/null
@@ -1,97 +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.reader.series;
-
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-
-public class PaginationController {
-
-  public static final PaginationController UNLIMITED_PAGINATION_CONTROLLER =
-      new PaginationController(0L, 0L);
-
-  private final boolean hasLimit;
-
-  private long curLimit;
-  private long curOffset;
-
-  public PaginationController(long limit, long offset) {
-    // row limit for result set. The default value is 0, which means no limit
-    this.curLimit = limit;
-    this.hasLimit = limit > 0;
-
-    // row offset for result set. The default value is 0
-    this.curOffset = offset;
-  }
-
-  public boolean hasCurOffset() {
-    return curOffset > 0;
-  }
-
-  public boolean hasCurOffset(long rowCount) {
-    return curOffset >= rowCount;
-  }
-
-  public boolean hasCurLimit() {
-    return !hasLimit || curLimit > 0;
-  }
-
-  public void consumeOffset(long rowCount) {
-    curOffset -= rowCount;
-  }
-
-  public void consumeOffset() {
-    curOffset--;
-  }
-
-  public long getCurOffset() {
-    return curOffset;
-  }
-
-  public long getCurLimit() {
-    return curLimit;
-  }
-
-  public void consumeLimit() {
-    if (hasLimit) {
-      curLimit--;
-    }
-  }
-
-  public void consumeLimit(long rowCount) {
-    if (hasLimit) {
-      curLimit -= rowCount;
-    }
-  }
-
-  public TsBlock applyTsBlock(TsBlock resultTsBlock) {
-    int fromIndex = 0;
-    int length = resultTsBlock.getPositionCount();
-    if (hasCurOffset()) {
-      fromIndex = (int) Math.min(curOffset, length);
-      length -= fromIndex;
-      consumeOffset(fromIndex);
-    }
-    if (hasLimit && curLimit > 0) {
-      length = (int) Math.min(curLimit, length);
-      consumeLimit(length);
-    }
-    return resultTsBlock.getRegion(fromIndex, length);
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BloomFilter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BloomFilter.java
deleted file mode 100644
index 2c09795..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BloomFilter.java
+++ /dev/null
@@ -1,148 +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.utils;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-
-import java.util.BitSet;
-import java.util.Objects;
-
-import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfLongArray;
-
-public class BloomFilter {
-
-  private static final int INSTANCE_SIZE =
-      (int)
-          (RamUsageEstimator.shallowSizeOfInstance(BloomFilter.class)
-              + RamUsageEstimator.shallowSizeOfInstance(BitSet.class));
-
-  private static final int MINIMAL_SIZE = 256;
-  private static final int MAXIMAL_HASH_FUNCTION_SIZE = 8;
-  private static final int[] SEEDS = new int[] {5, 7, 11, 19, 31, 37, 43, 59};
-
-  private final int size;
-  private final int hashFunctionSize;
-  private final BitSet bits;
-
-  // do not try to initialize the filter by construction method
-  private BloomFilter(byte[] bytes, int size, int hashFunctionSize) {
-    this.size = size;
-    this.hashFunctionSize = hashFunctionSize;
-    bits = BitSet.valueOf(bytes);
-  }
-
-  private BloomFilter(int size, int hashFunctionSize) {
-    this.size = size;
-    this.hashFunctionSize = hashFunctionSize;
-    bits = new BitSet(size);
-  }
-
-  /**
-   * get empty bloom filter
-   *
-   * @param errorPercent the tolerant percent of error of the bloom filter
-   * @param numOfString the number of string want to store in the bloom filter
-   * @return empty bloom
-   */
-  public static BloomFilter getEmptyBloomFilter(double errorPercent, int numOfString) {
-    errorPercent = Math.max(errorPercent, TSFileConfig.MIN_BLOOM_FILTER_ERROR_RATE);
-    errorPercent = Math.min(errorPercent, TSFileConfig.MAX_BLOOM_FILTER_ERROR_RATE);
-
-    double ln2 = Math.log(2);
-    int size = (int) (-numOfString * Math.log(errorPercent) / ln2 / ln2) + 1;
-    int hashFunctionSize = (int) (-Math.log(errorPercent) / ln2) + 1;
-    return new BloomFilter(
-        Math.max(MINIMAL_SIZE, size), Math.min(MAXIMAL_HASH_FUNCTION_SIZE, hashFunctionSize));
-  }
-
-  /**
-   * build bloom filter by bytes
-   *
-   * @param bytes bytes of bits
-   * @return bloom filter
-   */
-  public static BloomFilter buildBloomFilter(byte[] bytes, int size, int hashFunctionSize) {
-    return new BloomFilter(bytes, size, Math.min(MAXIMAL_HASH_FUNCTION_SIZE, hashFunctionSize));
-  }
-
-  public int getHashFunctionSize() {
-    return hashFunctionSize;
-  }
-
-  public int getSize() {
-    return size;
-  }
-
-  public void add(String value) {
-    for (int i = 0; i < hashFunctionSize; i++) {
-      bits.set(hash(value, size, SEEDS[i]), true);
-    }
-  }
-
-  public boolean contains(String value) {
-    if (value == null) {
-      return false;
-    }
-    boolean ret = true;
-    int index = 0;
-    while (ret && index < hashFunctionSize) {
-      ret = bits.get(hash(value, size, SEEDS[index++]));
-    }
-
-    return ret;
-  }
-
-  public byte[] serialize() {
-    return bits.toByteArray();
-  }
-
-  public long getRetainedSizeInBytes() {
-    // calculated according to the implementation of BitSet, bits.size() returns words.length *
-    // BITS_PER_WORD and BITS_PER_WORD = (1 << 6) which is 64
-    return INSTANCE_SIZE + sizeOfLongArray(bits.size() / 64);
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    BloomFilter that = (BloomFilter) o;
-    return size == that.size
-        && hashFunctionSize == that.hashFunctionSize
-        && Objects.equals(bits, that.bits);
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(size, hashFunctionSize, bits);
-  }
-
-  private static int hash(String value, int cap, int seed) {
-    int res = Murmur128Hash.hash(value, seed);
-    if (res == Integer.MIN_VALUE) {
-      res = 0;
-    }
-
-    return Math.abs(res) % cap;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/ByteArrayList.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/ByteArrayList.java
deleted file mode 100644
index b3ffd4f..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/ByteArrayList.java
+++ /dev/null
@@ -1,135 +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.
- */
-
-/**
- * This class includes code modified from Eclipse Collections project.
- *
- * <p>Copyright: 2021 Goldman Sachs
- *
- * <p>Project page: https://www.eclipse.org/collections/
- *
- * <p>License: https://github.com/eclipse/eclipse-collections/blob/master/LICENSE-EDL-1.0.txt
- */
-package org.apache.iotdb.tsfile.utils;
-
-import java.util.Arrays;
-
-public class ByteArrayList {
-
-  private static final byte[] DEFAULT_SIZED_EMPTY_ARRAY = {};
-  private static final byte[] ZERO_SIZED_ARRAY = {};
-  private static final int MAXIMUM_ARRAY_SIZE = Integer.MAX_VALUE - 8;
-
-  protected int size;
-  protected transient byte[] items = DEFAULT_SIZED_EMPTY_ARRAY;
-
-  public ByteArrayList() {}
-
-  public ByteArrayList(int initialCapacity) {
-    this.items = initialCapacity == 0 ? ZERO_SIZED_ARRAY : new byte[initialCapacity];
-  }
-
-  private void ensureCapacityForAdd() {
-    if (this.items == DEFAULT_SIZED_EMPTY_ARRAY) {
-      this.items = new byte[10];
-    } else {
-      this.transferItemsToNewArrayWithCapacity(this.sizePlusFiftyPercent(this.size));
-    }
-  }
-
-  private int sizePlusFiftyPercent(int oldSize) {
-    int result = oldSize + (oldSize >> 1) + 1;
-    return result < oldSize ? MAXIMUM_ARRAY_SIZE : result;
-  }
-
-  private void transferItemsToNewArrayWithCapacity(int newCapacity) {
-    this.items = this.copyItemsWithNewCapacity(newCapacity);
-  }
-
-  private byte[] copyItemsWithNewCapacity(int newCapacity) {
-    byte[] newItems = new byte[newCapacity];
-    System.arraycopy(this.items, 0, newItems, 0, Math.min(this.size, newCapacity));
-    return newItems;
-  }
-
-  public boolean add(byte newItem) {
-    if (this.items.length == this.size) {
-      this.ensureCapacityForAdd();
-    }
-    this.items[this.size] = newItem;
-    this.size++;
-    return true;
-  }
-
-  public boolean addAll(byte... source) {
-    if (source.length < 1) {
-      return false;
-    }
-    this.copyItems(source.length, source);
-    return true;
-  }
-
-  private void copyItems(int sourceSize, byte[] source) {
-    int newSize = this.size + sourceSize;
-    this.ensureCapacity(newSize);
-    System.arraycopy(source, 0, this.items, this.size, sourceSize);
-    this.size = newSize;
-  }
-
-  public void ensureCapacity(int minCapacity) {
-    int oldCapacity = this.items.length;
-    if (minCapacity > oldCapacity) {
-      int newCapacity = Math.max(this.sizePlusFiftyPercent(oldCapacity), minCapacity);
-      this.transferItemsToNewArrayWithCapacity(newCapacity);
-    }
-  }
-
-  public byte[] toArray() {
-    byte[] newItems = new byte[this.size];
-    System.arraycopy(this.items, 0, newItems, 0, this.size);
-    return newItems;
-  }
-
-  public byte removeAtIndex(int index) {
-    byte previous = this.get(index);
-    int totalOffset = this.size - index - 1;
-    if (totalOffset > 0) {
-      System.arraycopy(this.items, index + 1, this.items, index, totalOffset);
-    }
-    --this.size;
-    this.items[this.size] = (byte) 0;
-    return previous;
-  }
-
-  public byte get(int index) {
-    if (index < this.size) {
-      return this.items[index];
-    }
-    throw new IndexOutOfBoundsException("Index: " + index + " Size: " + this.size);
-  }
-
-  public void clear() {
-    Arrays.fill(this.items, 0, size, (byte) 0);
-    this.size = 0;
-  }
-
-  public int size() {
-    return this.size;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BytesUtils.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BytesUtils.java
deleted file mode 100644
index c438323..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BytesUtils.java
+++ /dev/null
@@ -1,934 +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.utils;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-
-/**
- * BytesUtils is a utility class. It provides conversion among byte array and other type including
- * integer, long, float, boolean, double and string. <br>
- * It also provide other usable function as follows:<br>
- * reading function which receives InputStream. <br>
- * concat function to join a list of byte array to one.<br>
- * get and set one bit in a byte array.
- */
-public class BytesUtils {
-
-  private BytesUtils() {}
-
-  private static final Logger LOG = LoggerFactory.getLogger(BytesUtils.class);
-
-  /**
-   * integer convert to byte[4].
-   *
-   * @param i integer to convert
-   * @return byte[4] for integer
-   */
-  public static byte[] intToBytes(int i) {
-    return new byte[] {
-      (byte) ((i >> 24) & 0xFF),
-      (byte) ((i >> 16) & 0xFF),
-      (byte) ((i >> 8) & 0xFF),
-      (byte) (i & 0xFF)
-    };
-  }
-
-  /**
-   * integer convert to byte array, then write four bytes to parameter desc start from index:offset.
-   *
-   * @param i integer to convert
-   * @param desc byte array be written
-   * @param offset position in desc byte array that conversion result should start
-   * @return byte array
-   */
-  public static byte[] intToBytes(int i, byte[] desc, int offset) {
-    if (desc.length - offset < 4) {
-      throw new IllegalArgumentException("Invalid input: desc.length - offset < 4");
-    }
-    desc[0 + offset] = (byte) ((i >> 24) & 0xFF);
-    desc[1 + offset] = (byte) ((i >> 16) & 0xFF);
-    desc[2 + offset] = (byte) ((i >> 8) & 0xFF);
-    desc[3 + offset] = (byte) (i & 0xFF);
-    return desc;
-  }
-
-  /**
-   * convert an integer to a byte array which length is width, then copy this array to the parameter
-   * result from pos.
-   *
-   * @param srcNum input integer variable. All but the lowest {@code width} bits are 0.
-   * @param result byte array to convert
-   * @param pos start position
-   * @param width bit-width
-   */
-  public static void intToBytes(int srcNum, byte[] result, int pos, int width) {
-    int cnt = pos & 0x07;
-    int index = pos >> 3;
-    try {
-      while (width > 0) {
-        int m = width + cnt >= 8 ? 8 - cnt : width;
-        width -= m;
-        int mask = 1 << (8 - cnt);
-        cnt += m;
-        byte y = (byte) (srcNum >>> width);
-        y = (byte) (y << (8 - cnt));
-        mask = ~(mask - (1 << (8 - cnt)));
-        result[index] = (byte) (result[index] & mask | y);
-        srcNum = srcNum & ~(-1 << width);
-        if (cnt == 8) {
-          index++;
-          cnt = 0;
-        }
-      }
-    } catch (Exception e) {
-      LOG.error(
-          "tsfile-common BytesUtils: cannot convert an integer {} to a byte array, "
-              + "pos {}, width {}",
-          srcNum,
-          pos,
-          width,
-          e);
-    }
-  }
-
-  /**
-   * divide int to two bytes.
-   *
-   * @param i int
-   * @return two bytes in byte[] structure
-   */
-  public static byte[] intToTwoBytes(int i) {
-    if (i > 0xFFFF) {
-      throw new IllegalArgumentException("Invalid input: " + i + " > 0xFFFF");
-    }
-    byte[] ret = new byte[2];
-    ret[1] = (byte) (i & 0xFF);
-    ret[0] = (byte) ((i >> 8) & 0xFF);
-    return ret;
-  }
-
-  /**
-   * concatenate two bytes to int.
-   *
-   * @param ret byte[]
-   * @return int value
-   */
-  public static int twoBytesToInt(byte[] ret) {
-    if (ret.length != 2) {
-      throw new IllegalArgumentException("Invalid input: ret.length != 2");
-    }
-    int value = 0;
-    value |= ret[0];
-    value = value << 8;
-    value |= ret[1];
-    return value;
-  }
-
-  /**
-   * byte[4] convert to integer.
-   *
-   * @param bytes input byte[]
-   * @return integer
-   */
-  public static int bytesToInt(byte[] bytes) {
-    // compatible to long
-
-    int length = bytes.length;
-    long r = 0;
-    for (int i = 0; i < length; i++) {
-      r += ((bytes[length - 1 - i] & 0xFF) << (i * 8));
-    }
-
-    if (r > Integer.MAX_VALUE) {
-      throw new RuntimeException("Row count is larger than Integer.MAX_VALUE");
-    }
-
-    return (int) r;
-  }
-
-  /**
-   * convert four-bytes byte array cut from parameters to integer.
-   *
-   * @param bytes source bytes which length should be greater than 4
-   * @param offset position in parameter byte array that conversion result should start
-   * @return integer
-   */
-  public static int bytesToInt(byte[] bytes, int offset) {
-    if (bytes.length - offset < 4) {
-      throw new IllegalArgumentException("Invalid input: bytes.length - offset < 4");
-    }
-
-    int value = 0;
-    // high bit to low
-    for (int i = 0; i < 4; i++) {
-      int shift = (4 - 1 - i) * 8;
-      value += (bytes[offset + i] & 0x000000FF) << shift;
-    }
-    return value;
-  }
-
-  /**
-   * given a byte array, read width bits from specified position bits and convert it to an integer.
-   *
-   * @param result input byte array
-   * @param pos bit offset rather than byte offset
-   * @param width bit-width
-   * @return integer variable
-   */
-  public static int bytesToInt(byte[] result, int pos, int width) {
-    int ret = 0;
-    int cnt = pos & 0x07;
-    int index = pos >> 3;
-    while (width > 0) {
-      int m = width + cnt >= 8 ? 8 - cnt : width;
-      width -= m;
-      ret = ret << m;
-      byte y = (byte) (result[index] & (0xff >> cnt));
-      y = (byte) ((y & 0xff) >>> (8 - cnt - m));
-      ret = ret | (y & 0xff);
-      cnt += m;
-      if (cnt == 8) {
-        cnt = 0;
-        index++;
-      }
-    }
-    return ret;
-  }
-
-  /**
-   * convert float to byte array.
-   *
-   * @param x float
-   * @return byte[4]
-   */
-  public static byte[] floatToBytes(float x) {
-    byte[] b = new byte[4];
-    int l = Float.floatToIntBits(x);
-    for (int i = 3; i >= 0; i--) {
-      b[i] = (byte) l;
-      l = l >> 8;
-    }
-    return b;
-  }
-
-  /**
-   * float convert to boolean, then write four bytes to parameter desc start from index:offset.
-   *
-   * @param x float
-   * @param desc byte array be written
-   * @param offset position in desc byte array that conversion result should start
-   */
-  public static void floatToBytes(float x, byte[] desc, int offset) {
-    if (desc.length - offset < 4) {
-      throw new IllegalArgumentException("Invalid input: desc.length - offset < 4");
-    }
-    int l = Float.floatToIntBits(x);
-    for (int i = 3 + offset; i >= offset; i--) {
-      desc[i] = (byte) l;
-      l = l >> 8;
-    }
-  }
-
-  /**
-   * convert byte[4] to float.
-   *
-   * @param b byte[4]
-   * @return float
-   */
-  public static float bytesToFloat(byte[] b) {
-    if (b.length != 4) {
-      throw new IllegalArgumentException("Invalid input: b.length != 4");
-    }
-
-    int l;
-    l = b[3];
-    l &= 0xff;
-    l |= ((long) b[2] << 8);
-    l &= 0xffff;
-    l |= ((long) b[1] << 16);
-    l &= 0xffffff;
-    l |= ((long) b[0] << 24);
-    return Float.intBitsToFloat(l);
-  }
-
-  /**
-   * convert four-bytes byte array cut from parameters to float.
-   *
-   * @param b source bytes which length should be greater than 4
-   * @param offset position in parameter byte array that conversion result should start
-   * @return float
-   */
-  public static float bytesToFloat(byte[] b, int offset) {
-    if (b.length - offset < 4) {
-      throw new IllegalArgumentException("Invalid input: b.length - offset < 4");
-    }
-
-    int l;
-    l = b[offset + 3];
-    l &= 0xff;
-    l |= ((long) b[offset + 2] << 8);
-    l &= 0xffff;
-    l |= ((long) b[offset + 1] << 16);
-    l &= 0xffffff;
-    l |= ((long) b[offset] << 24);
-    return Float.intBitsToFloat(l);
-  }
-
-  /**
-   * convert double to byte array.
-   *
-   * @param data double
-   * @return byte[8]
-   */
-  public static byte[] doubleToBytes(double data) {
-    byte[] bytes = new byte[8];
-    long value = Double.doubleToLongBits(data);
-    for (int i = 7; i >= 0; i--) {
-      bytes[i] = (byte) value;
-      value = value >> 8;
-    }
-    return bytes;
-  }
-
-  /**
-   * convert double to byte into the given byte array started from offset.
-   *
-   * @param d input double
-   * @param bytes target byte[]
-   * @param offset start pos
-   */
-  public static void doubleToBytes(double d, byte[] bytes, int offset) {
-    if (bytes.length - offset < 8) {
-      throw new IllegalArgumentException("Invalid input: bytes.length - offset < 8");
-    }
-
-    long value = Double.doubleToLongBits(d);
-    for (int i = 7; i >= 0; i--) {
-      bytes[offset + i] = (byte) value;
-      value = value >> 8;
-    }
-  }
-
-  /**
-   * convert byte array to double.
-   *
-   * @param bytes byte[8]
-   * @return double
-   */
-  public static double bytesToDouble(byte[] bytes) {
-    long value = bytes[7];
-    value &= 0xff;
-    value |= ((long) bytes[6] << 8);
-    value &= 0xffff;
-    value |= ((long) bytes[5] << 16);
-    value &= 0xffffff;
-    value |= ((long) bytes[4] << 24);
-    value &= 0xffffffffL;
-    value |= ((long) bytes[3] << 32);
-    value &= 0xffffffffffL;
-    value |= ((long) bytes[2] << 40);
-    value &= 0xffffffffffffL;
-    value |= ((long) bytes[1] << 48);
-    value &= 0xffffffffffffffL;
-    value |= ((long) bytes[0] << 56);
-    return Double.longBitsToDouble(value);
-  }
-
-  /**
-   * convert eight-bytes byte array cut from parameters to double.
-   *
-   * @param bytes source bytes which length should be greater than 8
-   * @param offset position in parameter byte array that conversion result should start
-   * @return double
-   */
-  public static double bytesToDouble(byte[] bytes, int offset) {
-    if (bytes.length - offset < 8) {
-      throw new IllegalArgumentException("Invalid input: bytes.length - offset < 8");
-    }
-    long value = bytes[offset + 7];
-    value &= 0xff;
-    value |= ((long) bytes[offset + 6] << 8);
-    value &= 0xffff;
-    value |= ((long) bytes[offset + 5] << 16);
-    value &= 0xffffff;
-    value |= ((long) bytes[offset + 4] << 24);
-    value &= 0xffffffffL;
-    value |= ((long) bytes[offset + 3] << 32);
-    value &= 0xffffffffffL;
-    value |= ((long) bytes[offset + 2] << 40);
-    value &= 0xffffffffffffL;
-    value |= ((long) bytes[offset + 1] << 48);
-    value &= 0xffffffffffffffL;
-    value |= ((long) bytes[offset] << 56);
-    return Double.longBitsToDouble(value);
-  }
-
-  /**
-   * convert boolean to byte[1].
-   *
-   * @param x boolean
-   * @return byte[]
-   */
-  public static byte[] boolToBytes(boolean x) {
-    byte[] b = new byte[1];
-    if (x) {
-      b[0] = 1;
-    } else {
-      b[0] = 0;
-    }
-    return b;
-  }
-
-  public static byte boolToByte(boolean x) {
-    if (x) {
-      return 1;
-    } else {
-      return 0;
-    }
-  }
-
-  public static boolean byteToBool(byte b) {
-    return b == 1;
-  }
-
-  /**
-   * boolean convert to byte array, then write four bytes to parameter desc start from index:offset.
-   *
-   * @param x input boolean
-   * @param desc byte array be written
-   * @param offset position in desc byte array that conversion result should start
-   * @return byte[1]
-   */
-  public static byte[] boolToBytes(boolean x, byte[] desc, int offset) {
-    if (x) {
-      desc[offset] = 1;
-    } else {
-      desc[offset] = 0;
-    }
-    return desc;
-  }
-
-  /**
-   * byte array to boolean.
-   *
-   * @param b input byte[1]
-   * @return boolean
-   */
-  public static boolean bytesToBool(byte[] b) {
-    if (b.length != 1) {
-      throw new IllegalArgumentException("Invalid input: b.length != 1");
-    }
-
-    return b[0] != 0;
-  }
-
-  /**
-   * convert one-bytes byte array cut from parameters to boolean.
-   *
-   * @param b source bytes which length should be greater than 1
-   * @param offset position in parameter byte array that conversion result should start
-   * @return boolean
-   */
-  public static boolean bytesToBool(byte[] b, int offset) {
-    if (b.length - offset < 1) {
-      throw new IllegalArgumentException("Invalid input: b.length - offset < 1");
-    }
-    return b[offset] != 0;
-  }
-
-  /**
-   * long to byte array with default converting length 8. It means the length of result byte array
-   * is 8.
-   *
-   * @param num long variable to be converted
-   * @return byte[8]
-   */
-  public static byte[] longToBytes(long num) {
-    return longToBytes(num, 8);
-  }
-
-  /**
-   * specify the result array length. then, convert long to Big-Endian byte from low to high. <br>
-   * e.g.<br>
-   * the binary presentation of long number 1000L is {6 bytes equal 0000000} 00000011 11101000<br>
-   * if len = 2, it will return byte array :{00000011 11101000}(Big-Endian) if len = 1, it will
-   * return byte array :{11101000}.
-   *
-   * @param num long variable to be converted
-   * @param len length of result byte array
-   * @return byte array which length equals with parameter len
-   */
-  public static byte[] longToBytes(long num, int len) {
-    byte[] byteNum = new byte[len];
-    for (int ix = 0; ix < len; ix++) {
-      byteNum[len - ix - 1] = (byte) ((num >> ix * 8) & 0xFF);
-    }
-    return byteNum;
-  }
-
-  /**
-   * long convert to byte array, then write four bytes to parameter desc start from index:offset.
-   *
-   * @param num input long variable
-   * @param desc byte array be written
-   * @param offset position in desc byte array that conversion result should start
-   * @return byte array
-   */
-  public static byte[] longToBytes(long num, byte[] desc, int offset) {
-    for (int ix = 0; ix < 8; ++ix) {
-      int i = 64 - (ix + 1) * 8;
-      desc[ix + offset] = (byte) ((num >> i) & 0xff);
-    }
-    return desc;
-  }
-
-  /**
-   * convert a long to a byte array which length is width, then copy this array to the parameter
-   * result from pos.
-   *
-   * @param srcNum input long variable. All but the lowest {@code width} bits are 0.
-   * @param result byte array to convert
-   * @param pos start position
-   * @param width bit-width
-   */
-  public static void longToBytes(long srcNum, byte[] result, int pos, int width) {
-    int cnt = pos & 0x07;
-    int index = pos >> 3;
-    try {
-      while (width > 0) {
-        int m = width + cnt >= 8 ? 8 - cnt : width;
-        width -= m;
-        int mask = 1 << (8 - cnt);
-        cnt += m;
-        byte y = (byte) (srcNum >>> width);
-        y = (byte) (y << (8 - cnt));
-        mask = ~(mask - (1 << (8 - cnt)));
-        result[index] = (byte) (result[index] & mask | y);
-        srcNum = srcNum & ~(-1L << width);
-        if (cnt == 8) {
-          index++;
-          cnt = 0;
-        }
-      }
-    } catch (Exception e) {
-      LOG.error(
-          "tsfile-common BytesUtils: cannot convert a long {} to a byte array, "
-              + "pos {}, width {}",
-          srcNum,
-          pos,
-          width,
-          e);
-    }
-  }
-
-  /**
-   * convert byte array to long with default length 8. namely.
-   *
-   * @param byteNum input byte array
-   * @return long
-   */
-  public static long bytesToLong(byte[] byteNum) {
-    return bytesToLong(byteNum, byteNum.length);
-  }
-
-  /**
-   * specify the input byte array length. then, convert byte array to long value from low to high.
-   * <br>
-   * e.g.<br>
-   * the input byte array is {00000011 11101000}. if len = 2, return 1000 if len = 1, return
-   * 232(only calculate the low byte).
-   *
-   * @param byteNum byte array to be converted
-   * @param len length of input byte array to be converted
-   * @return long
-   */
-  public static long bytesToLong(byte[] byteNum, int len) {
-    long num = 0;
-    for (int ix = 0; ix < len; ix++) {
-      num <<= 8;
-      num |= (byteNum[ix] & 0xff);
-    }
-    return num;
-  }
-
-  /**
-   * given a byte array, read width bits from specified pos bits and convert it to an long.
-   *
-   * @param result input byte array
-   * @param pos bit offset rather than byte offset
-   * @param width bit-width
-   * @return long variable
-   */
-  public static long bytesToLong(byte[] result, int pos, int width) {
-    long ret = 0;
-    int cnt = pos & 0x07;
-    int index = pos >> 3;
-    while (width > 0) {
-      int m = width + cnt >= 8 ? 8 - cnt : width;
-      width -= m;
-      ret = ret << m;
-      byte y = (byte) (result[index] & (0xff >> cnt));
-      y = (byte) ((y & 0xff) >>> (8 - cnt - m));
-      ret = ret | (y & 0xff);
-      cnt += m;
-      if (cnt == 8) {
-        cnt = 0;
-        index++;
-      }
-    }
-    return ret;
-  }
-
-  /**
-   * convert eight-bytes byte array cut from parameters to long.
-   *
-   * @param byteNum source bytes which length should be greater than 8
-   * @param len length of input byte array to be converted
-   * @param offset position in parameter byte array that conversion result should start
-   * @return long
-   */
-  public static long bytesToLongFromOffset(byte[] byteNum, int len, int offset) {
-    if (byteNum.length - offset < len) {
-      throw new IllegalArgumentException("Invalid input: byteNum.length - offset < len");
-    }
-    long num = 0;
-    for (int ix = 0; ix < len; ix++) {
-      num <<= 8;
-      num |= (byteNum[offset + ix] & 0xff);
-    }
-    return num;
-  }
-
-  /**
-   * convert string to byte array using UTF-8 encoding.
-   *
-   * @param str input string
-   * @return byte array
-   */
-  public static byte[] stringToBytes(String str) {
-    return str.getBytes(TSFileConfig.STRING_CHARSET);
-  }
-
-  /**
-   * convert byte array to string using UTF-8 encoding.
-   *
-   * @param byteStr input byte array
-   * @return string
-   */
-  public static String bytesToString(byte[] byteStr) {
-    return new String(byteStr, TSFileConfig.STRING_CHARSET);
-  }
-
-  /**
-   * join two byte arrays to one.
-   *
-   * @param a one of byte array
-   * @param b another byte array
-   * @return byte array after joining
-   */
-  public static byte[] concatByteArray(byte[] a, byte[] b) {
-    byte[] c = new byte[a.length + b.length];
-    System.arraycopy(a, 0, c, 0, a.length);
-    System.arraycopy(b, 0, c, a.length, b.length);
-    return c;
-  }
-
-  /**
-   * join a list of byte arrays into one array.
-   *
-   * @param list a list of byte array to join
-   * @return byte array after joining
-   */
-  public static byte[] concatByteArrayList(List<byte[]> list) {
-    int size = list.size();
-    int len = 0;
-    for (byte[] cs : list) {
-      len += cs.length;
-    }
-    byte[] result = new byte[len];
-    int pos = 0;
-    for (int i = 0; i < size; i++) {
-      int l = list.get(i).length;
-      System.arraycopy(list.get(i), 0, result, pos, l);
-      pos += l;
-    }
-    return result;
-  }
-
-  /**
-   * Return the deepCopy of the given byte array.
-   *
-   * @param src input byte array
-   * @return byte array
-   */
-  public static byte[] deepCopy(byte[] src) {
-    return subBytes(src, 0, src.length);
-  }
-
-  /**
-   * cut out specified length byte array from parameter start from input byte array src and return.
-   *
-   * @param src input byte array
-   * @param start start index of src
-   * @param length cut off length
-   * @return byte array
-   */
-  public static byte[] subBytes(byte[] src, int start, int length) {
-    if ((start + length) > src.length) {
-      return new byte[0];
-    }
-    if (length <= 0) {
-      return new byte[0];
-    }
-    byte[] result = new byte[length];
-    System.arraycopy(src, start, result, 0, length);
-    return result;
-  }
-
-  /**
-   * get one bit in input integer. the offset is from low to high and start with 0<br>
-   * e.g.<br>
-   * data:1000(00000000 00000000 00000011 11101000), if offset is 4, return 0(111 "0" 1000) if
-   * offset is 9, return 1(00000 "1" 1 11101000).
-   *
-   * @param data input int variable
-   * @param offset bit offset
-   * @return 0 or 1
-   */
-  public static int getIntN(int data, int offset) {
-    offset %= 32;
-    if ((data & (1 << (offset))) != 0) {
-      return 1;
-    } else {
-      return 0;
-    }
-  }
-
-  /**
-   * set one bit in input integer. the offset is from low to high and start with index 0<br>
-   * e.g.<br>
-   * data:1000({00000000 00000000 00000011 11101000}), if offset is 4, value is 1, return
-   * 1016({00000000 00000000 00000011 111 "1" 1000}) if offset is 9, value is 0 return 488({00000000
-   * 00000000 000000 "0" 1 11101000}) if offset is 0, value is 0 return 1000(no change).
-   *
-   * @param data input int variable
-   * @param offset bit offset
-   * @param value value to set
-   * @return int variable
-   */
-  public static int setIntN(int data, int offset, int value) {
-    offset %= 32;
-    if (value == 1) {
-      return (data | (1 << (offset)));
-    } else {
-      return (data & ~(1 << (offset)));
-    }
-  }
-
-  /**
-   * get one bit in input byte. the offset is from high to low and start with 0<br>
-   * e.g.<br>
-   * data:16(00010000), if offset is 3, return 1(000 "1" 0000) if offset is 0, return 0("0"
-   * 0010000).
-   *
-   * @param data input byte variable
-   * @param offset bit offset
-   * @return 0/1
-   */
-  public static int getByteN(byte data, int offset) {
-    offset %= 8;
-    if (((0xff & data) & (1 << (7 - offset))) != 0) {
-      return 1;
-    } else {
-      return 0;
-    }
-  }
-
-  /**
-   * set one bit in input byte. the offset is from high to low and start with index 0<br>
-   * e.g.<br>
-   * data:16(00010000), if offset is 3, value is 0, return 0({000 "0" 0000}) if offset is 6, value
-   * is 1, return 18({00010010}) if offset is 0, value is 0, return 16(no change).
-   *
-   * @param data input byte variable
-   * @param offset bit offset
-   * @param value value to set
-   * @return byte variable
-   */
-  public static byte setByteN(byte data, int offset, int value) {
-    offset %= 8;
-    if (value == 1) {
-      return (byte) ((0xff & data) | (1 << (7 - offset)));
-    } else {
-      return (byte) ((0xff & data) & ~(1 << (7 - offset)));
-    }
-  }
-
-  /**
-   * get one bit in input long. the offset is from low to high and start with 0.
-   *
-   * @param data input long variable
-   * @param offset bit offset
-   * @return 0/1
-   */
-  public static int getLongN(long data, int offset) {
-    offset %= 64;
-    if ((data & (1L << (offset))) != 0) {
-      return 1;
-    } else {
-      return 0;
-    }
-  }
-
-  /**
-   * set one bit in input long. the offset is from low to high and start with index 0.
-   *
-   * @param data input long variable
-   * @param offset bit offset
-   * @param value value to set
-   * @return long variable
-   */
-  public static long setLongN(long data, int offset, int value) {
-    offset %= 64;
-    if (value == 1) {
-      return (data | (1L << (offset)));
-    } else {
-      return (data & ~(1L << (offset)));
-    }
-  }
-
-  /**
-   * read 8-byte array from an InputStream and convert it to a double number.
-   *
-   * @param in InputStream
-   * @return double
-   * @throws IOException cannot read double from InputStream
-   */
-  public static double readDouble(InputStream in) throws IOException {
-    byte[] b = safeReadInputStreamToBytes(8, in);
-    return BytesUtils.bytesToDouble(b);
-  }
-
-  /**
-   * read 4-byte array from an InputStream and convert it to a float number.
-   *
-   * @param in InputStream
-   * @return float
-   * @throws IOException cannot read float from InputStream
-   */
-  public static float readFloat(InputStream in) throws IOException {
-    byte[] b = safeReadInputStreamToBytes(4, in);
-    return BytesUtils.bytesToFloat(b);
-  }
-
-  /**
-   * read 1-byte array from an InputStream and convert it to a integer number.
-   *
-   * @param in InputStream
-   * @return boolean
-   * @throws IOException cannot read boolean from InputStream
-   */
-  public static boolean readBool(InputStream in) throws IOException {
-    byte[] b = safeReadInputStreamToBytes(1, in);
-    return BytesUtils.bytesToBool(b);
-  }
-
-  /**
-   * read 4-byte array from an InputStream and convert it to a integer number.
-   *
-   * @param in InputStream
-   * @return integer
-   * @throws IOException cannot read int from InputStream
-   */
-  public static int readInt(InputStream in) throws IOException {
-    byte[] b = safeReadInputStreamToBytes(4, in);
-    return BytesUtils.bytesToInt(b);
-  }
-
-  /**
-   * read 8-byte array from an InputStream and convert it to a long number.
-   *
-   * @param in InputStream
-   * @return long
-   * @throws IOException cannot read long from InputStream
-   */
-  public static long readLong(InputStream in) throws IOException {
-    byte[] b = safeReadInputStreamToBytes(8, in);
-    return BytesUtils.bytesToLong(b);
-  }
-
-  /**
-   * read bytes specified length from InputStream safely.
-   *
-   * @param count number of byte to read
-   * @param in InputStream
-   * @return byte array
-   * @throws IOException cannot read from InputStream
-   */
-  public static byte[] safeReadInputStreamToBytes(int count, InputStream in) throws IOException {
-    byte[] bytes = new byte[count];
-    int readCount = 0;
-    while (readCount < count) {
-      readCount += in.read(bytes, readCount, count - readCount);
-    }
-    return bytes;
-  }
-
-  /**
-   * we modify the order of serialization for fitting ByteBuffer.putShort()
-   *
-   * @param number input short number
-   * @return Bytes
-   */
-  public static byte[] shortToBytes(short number) {
-    int temp = number;
-    byte[] b = new byte[2];
-    for (int i = b.length - 1; i >= 0; i--) {
-      b[i] = (byte) temp;
-      temp = temp >> 8;
-    }
-
-    return b;
-  }
-
-  /**
-   * we modify the order of serialization for fitting ByteBuffer.getShort()
-   *
-   * @param b bytes
-   * @return short number
-   */
-  public static short bytesToShort(byte[] b) {
-    short s0 = (short) (b[1] & 0xff);
-    short s1 = (short) (b[0] & 0xff);
-    s1 <<= 8;
-    short s = (short) (s0 | s1);
-    return s;
-  }
-
-  public static Binary valueOf(String value) {
-    return new Binary(stringToBytes(value));
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/FSUtils.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/FSUtils.java
deleted file mode 100644
index bd74dcc..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/FSUtils.java
+++ /dev/null
@@ -1,153 +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.utils;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.fileSystem.FSPath;
-import org.apache.iotdb.tsfile.fileSystem.FSType;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Arrays;
-
-public class FSUtils {
-  private static final Logger logger = LoggerFactory.getLogger(FSUtils.class);
-  private static final TSFileConfig config = TSFileDescriptor.getInstance().getConfig();
-  private static final FSType[] fsTypes = {FSType.OBJECT_STORAGE, FSType.HDFS};
-  public static final int PATH_FROM_SEQUENCE_LEVEL = 5;
-  public static final int PATH_FROM_DATABASE_LEVEL = 4;
-  public static final String[] fsPrefix = {"os://", "hdfs://"};
-  public static final String OS_FILE_SEPARATOR = "/";
-  private static final String[] fsFileClassName = {
-    config.getObjectStorageFile(), config.getHdfsFile()
-  };
-
-  private static final boolean[] isSupported = new boolean[fsTypes.length];
-  private static final Class<?>[] fsFileClass = new Class[fsTypes.length];
-
-  private FSUtils() {}
-
-  static {
-    reload();
-  }
-
-  public static synchronized void reload() {
-    fsFileClassName[0] = config.getObjectStorageFile();
-    fsFileClassName[1] = config.getHdfsFile();
-    for (FSType fsType : config.getTSFileStorageFs()) {
-      if (fsType == FSType.OBJECT_STORAGE) {
-        isSupported[0] = true;
-      } else if (fsType == FSType.HDFS) {
-        isSupported[1] = true;
-      }
-    }
-
-    for (int i = 0; i < fsTypes.length; ++i) {
-      if (!isSupported[i]) {
-        continue;
-      }
-      try {
-        fsFileClass[i] = Class.forName(fsFileClassName[i]);
-      } catch (ClassNotFoundException e) {
-        logger.error(
-            "Failed to get "
-                + fsTypes[i].name()
-                + " file system. Please check your dependency of "
-                + fsTypes[i].name()
-                + " module.",
-            e);
-      }
-    }
-  }
-
-  public static FSType getFSType(File file) {
-    for (int i = 0; i < fsTypes.length; ++i) {
-      if (fsFileClass[i] != null && fsFileClass[i].isInstance(file)) {
-        return fsTypes[i];
-      }
-    }
-    return FSType.LOCAL;
-  }
-
-  public static FSType getFSType(String fsPath) {
-    for (int i = 0; i < fsTypes.length; ++i) {
-      if (fsPath.startsWith(fsPrefix[i])) {
-        return fsTypes[i];
-      }
-    }
-    return FSType.LOCAL;
-  }
-
-  public static String getPath(String fsPath) {
-    for (int i = 0; i < fsTypes.length; ++i) {
-      if (fsPath.startsWith(fsPrefix[i])) {
-        return fsPath.substring(fsPrefix[i].length());
-      }
-    }
-    return fsPath;
-  }
-
-  public static FSPath parse(String fsPath) {
-    FSType type = FSType.LOCAL;
-    String path = fsPath;
-    for (int i = 0; i < fsTypes.length; ++i) {
-      if (fsPath.startsWith(fsPrefix[i])) {
-        type = fsTypes[i];
-        break;
-      }
-    }
-    return new FSPath(type, path);
-  }
-
-  public static String getOSDefaultPath(String bucket, int dataNodeId) {
-    return new FSPath(FSType.OBJECT_STORAGE, fsPrefix[0] + bucket + OS_FILE_SEPARATOR + dataNodeId)
-        .getPath();
-  }
-
-  public static FSPath parseLocalTsFile2OSFile(File localFile, String bucket, int dataNodeId)
-      throws IOException {
-    return new FSPath(
-        FSType.OBJECT_STORAGE,
-        fsPrefix[0]
-            + bucket
-            + OS_FILE_SEPARATOR
-            + dataNodeId
-            + OS_FILE_SEPARATOR
-            + getLocalTsFileShortPath(localFile, PATH_FROM_SEQUENCE_LEVEL));
-  }
-
-  public static String getLocalTsFileShortPath(File localTsFile, int level) throws IOException {
-    String[] filePathSplits = FilePathUtils.splitTsFilePath(localTsFile.getCanonicalPath());
-    return String.join(
-        OS_FILE_SEPARATOR,
-        Arrays.copyOfRange(filePathSplits, filePathSplits.length - level, filePathSplits.length));
-  }
-
-  public static boolean isLocal(String fsPath) {
-    return getFSType(fsPath) == FSType.LOCAL;
-  }
-
-  public static boolean isLocal(File file) {
-    return getFSType(file) == FSType.LOCAL;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/FilePathUtils.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/FilePathUtils.java
deleted file mode 100644
index 3a4904f..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/FilePathUtils.java
+++ /dev/null
@@ -1,128 +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.utils;
-
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-
-import java.io.File;
-
-public class FilePathUtils {
-
-  private static final String LOCAL_PATH_SPLIT_STRING = "\\".equals(File.separator) ? "\\\\" : "/";
-  public static final String FILE_NAME_SEPARATOR = "-";
-
-  private FilePathUtils() {
-    // forbidding instantiation
-  }
-
-  /**
-   * Format file path to end with File.separator
-   *
-   * @param filePath origin file path
-   * @return Regularized Path
-   */
-  public static String regularizePath(String filePath) {
-    if (filePath.length() > 0 && filePath.charAt(filePath.length() - 1) != File.separatorChar) {
-      filePath = filePath + File.separatorChar;
-    }
-    return filePath;
-  }
-
-  /**
-   * IMPORTANT, when the path of TsFile changes, the following methods should be changed
-   * accordingly. The sequence TsFile is located at ${IOTDB_DATA_DIR}/data/sequence/. The unsequence
-   * TsFile is located at ${IOTDB_DATA_DIR}/data/unsequence/. Where different database's TsFile is
-   * located at <logicalStorageGroupName>/<virtualStorageGroupName>/<timePartitionId>/<fileName>.
-   * For example, one sequence TsFile may locate at
-   * /data/data/sequence/root.group_9/0/0/1611199237113-4-0.tsfile
-   *
-   * @param tsFileAbsolutePath the tsFile Absolute Path
-   */
-  public static String[] splitTsFilePath(String tsFileAbsolutePath) {
-    String separator = LOCAL_PATH_SPLIT_STRING;
-    if (!FSUtils.isLocal(tsFileAbsolutePath)) {
-      separator = "/";
-    }
-    return tsFileAbsolutePath.split(separator);
-  }
-
-  public static boolean isSequence(String tsFileAbsolutePath) {
-    String[] pathSegments = splitTsFilePath(tsFileAbsolutePath);
-    // If path is not a regular IoTDB TsFile path, then process it as an unsequence file
-    if (pathSegments.length < 5) {
-      return false;
-    }
-    return pathSegments[pathSegments.length - 5].equals("sequence");
-  }
-
-  public static String getLogicalStorageGroupName(String tsFileAbsolutePath) {
-    String[] pathSegments = splitTsFilePath(tsFileAbsolutePath);
-    return pathSegments[pathSegments.length - 4];
-  }
-
-  public static String getDataRegionId(String tsFileAbsolutePath) {
-    String[] pathSegments = splitTsFilePath(tsFileAbsolutePath);
-    return pathSegments[pathSegments.length - 3];
-  }
-
-  public static long getTimePartitionId(String tsFileAbsolutePath) {
-    String[] pathSegments = splitTsFilePath(tsFileAbsolutePath);
-    return Long.parseLong(pathSegments[pathSegments.length - 2]);
-  }
-
-  /**
-   * @param tsFileAbsolutePath the Remote TsFile Absolute Path
-   * @return the file in the snapshot is a hardlink, remove the hardlink suffix
-   */
-  public static String getTsFileNameWithoutHardLink(String tsFileAbsolutePath) {
-    String[] pathSegments = splitTsFilePath(tsFileAbsolutePath);
-    return pathSegments[pathSegments.length - 1].substring(
-        0, pathSegments[pathSegments.length - 1].lastIndexOf(TsFileConstant.PATH_SEPARATOR));
-  }
-
-  public static String getTsFilePrefixPath(String tsFileAbsolutePath) {
-    if (tsFileAbsolutePath == null) {
-      return null;
-    }
-    String[] pathSegments = splitTsFilePath(tsFileAbsolutePath);
-    int pathLength = pathSegments.length;
-    return pathSegments[pathLength - 4]
-        + File.separator
-        + pathSegments[pathLength - 3]
-        + File.separator
-        + pathSegments[pathLength - 2];
-  }
-
-  public static long splitAndGetTsFileVersion(String tsFileName) {
-    String[] names = tsFileName.split(FILE_NAME_SEPARATOR);
-    if (names.length != 4) {
-      return 0;
-    }
-    return Long.parseLong(names[1]);
-  }
-
-  public static Pair<String, Long> getLogicalSgNameAndTimePartitionIdPair(
-      String tsFileAbsolutePath) {
-    String[] pathSegments = splitTsFilePath(tsFileAbsolutePath);
-    return new Pair<>(
-        pathSegments[pathSegments.length - 4],
-        Long.parseLong(pathSegments[pathSegments.length - 2]));
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/Loader.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/Loader.java
deleted file mode 100644
index 65824a2..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/Loader.java
+++ /dev/null
@@ -1,59 +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.utils;
-
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.Set;
-
-public class Loader {
-  private Loader() {}
-
-  /** function for getting resources. */
-  public static Set<URI> getResources(String resource, ClassLoader classLoader)
-      throws IOException, URISyntaxException {
-    Set<URI> uriSet = new HashSet<>();
-    Enumeration<URL> urlEnum = classLoader.getResources(resource);
-    while (urlEnum.hasMoreElements()) {
-      uriSet.add(urlEnum.nextElement().toURI());
-    }
-    return uriSet;
-  }
-
-  public static URL getResource(String resource, ClassLoader classLoader) {
-    return classLoader.getResource(resource);
-  }
-
-  /** function for getting the class loader of the given object. */
-  public static ClassLoader getClassLoaderOfObject(Object o) {
-    if (o == null) {
-      throw new NullPointerException("Input object cannot be null");
-    }
-    return getClassLoaderOfClass(o.getClass());
-  }
-
-  public static ClassLoader getClassLoaderOfClass(final Class<?> clazz) {
-    ClassLoader classLoader = clazz.getClassLoader();
-    return classLoader == null ? ClassLoader.getSystemClassLoader() : classLoader;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/MeasurementGroup.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/MeasurementGroup.java
deleted file mode 100644
index 21cf4c8..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/MeasurementGroup.java
+++ /dev/null
@@ -1,65 +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.utils;
-
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class MeasurementGroup implements Serializable {
-  private boolean isAligned;
-  private Map<String, MeasurementSchema> measurementSchemaMap;
-
-  public MeasurementGroup(boolean isAligned) {
-    this.isAligned = isAligned;
-    measurementSchemaMap = new HashMap<>();
-  }
-
-  public MeasurementGroup(boolean isAligned, List<MeasurementSchema> measurementSchemas) {
-    this.isAligned = isAligned;
-    measurementSchemaMap = new HashMap<>();
-    for (MeasurementSchema schema : measurementSchemas) {
-      measurementSchemaMap.put(schema.getMeasurementId(), schema);
-    }
-  }
-
-  public MeasurementGroup(boolean isAligned, Map<String, MeasurementSchema> measurementSchemaMap) {
-    this.isAligned = isAligned;
-    this.measurementSchemaMap = measurementSchemaMap;
-  }
-
-  public boolean isAligned() {
-    return isAligned;
-  }
-
-  public void setAligned(boolean aligned) {
-    isAligned = aligned;
-  }
-
-  public Map<String, MeasurementSchema> getMeasurementSchemaMap() {
-    return measurementSchemaMap;
-  }
-
-  public void setMeasurementSchemaMap(Map<String, MeasurementSchema> measurementSchemaMap) {
-    this.measurementSchemaMap = measurementSchemaMap;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/Murmur128Hash.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/Murmur128Hash.java
deleted file mode 100644
index ee9d388..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/Murmur128Hash.java
+++ /dev/null
@@ -1,184 +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.utils;
-
-public class Murmur128Hash {
-
-  private Murmur128Hash() {
-    // util class
-  }
-
-  /**
-   * get hashcode of value by seed
-   *
-   * @param value value
-   * @param seed seed
-   * @return hashcode of value
-   */
-  public static int hash(String value, int seed) {
-    return (int) innerHash(value.getBytes(), 0, value.getBytes().length, seed);
-  }
-
-  /**
-   * get hashcode of two values by seed
-   *
-   * @param value1 the first value
-   * @param value2 the second value
-   * @param seed seed
-   * @return hashcode of value
-   */
-  public static int hash(String value1, long value2, int seed) {
-    return (int)
-        innerHash(
-            BytesUtils.concatByteArray(value1.getBytes(), BytesUtils.longToBytes(value2)),
-            0,
-            value1.length() + 8,
-            seed);
-  }
-
-  /** Methods to perform murmur 128 hash. */
-  private static long getBlock(byte[] key, int offset, int index) {
-    int i8 = index << 3;
-    int blockOffset = offset + i8;
-    return ((long) key[blockOffset] & 0xff)
-        + (((long) key[blockOffset + 1] & 0xff) << 8)
-        + (((long) key[blockOffset + 2] & 0xff) << 16)
-        + (((long) key[blockOffset + 3] & 0xff) << 24)
-        + (((long) key[blockOffset + 4] & 0xff) << 32)
-        + (((long) key[blockOffset + 5] & 0xff) << 40)
-        + (((long) key[blockOffset + 6] & 0xff) << 48)
-        + (((long) key[blockOffset + 7] & 0xff) << 56);
-  }
-
-  private static long rotl64(long v, int n) {
-    return ((v << n) | (v >>> (64 - n)));
-  }
-
-  private static long fmix(long k) {
-    k ^= k >>> 33;
-    k *= 0xff51afd7ed558ccdL;
-    k ^= k >>> 33;
-    k *= 0xc4ceb9fe1a85ec53L;
-    k ^= k >>> 33;
-    return k;
-  }
-
-  private static long innerHash(byte[] key, int offset, int length, long seed) {
-    final int nblocks = length >> 4; // Process as 128-bit blocks.
-    long h1 = seed;
-    long h2 = seed;
-    long c1 = 0x87c37b91114253d5L;
-    long c2 = 0x4cf5ad432745937fL;
-    // ----------
-    // body
-    for (int i = 0; i < nblocks; i++) {
-      long k1 = getBlock(key, offset, i * 2);
-      long k2 = getBlock(key, offset, i * 2 + 1);
-      k1 *= c1;
-      k1 = rotl64(k1, 31);
-      k1 *= c2;
-      h1 ^= k1;
-      h1 = rotl64(h1, 27);
-      h1 += h2;
-      h1 = h1 * 5 + 0x52dce729;
-      k2 *= c2;
-      k2 = rotl64(k2, 33);
-      k2 *= c1;
-      h2 ^= k2;
-      h2 = rotl64(h2, 31);
-      h2 += h1;
-      h2 = h2 * 5 + 0x38495ab5;
-    }
-    // ----------
-    // tail
-    // Advance offset to the unprocessed tail of the data.
-    offset += nblocks * 16;
-    long k1 = 0;
-    long k2 = 0;
-    switch (length & 15) {
-      case 15:
-        k2 ^= ((long) key[offset + 14]) << 48;
-        // fallthrough
-      case 14:
-        k2 ^= ((long) key[offset + 13]) << 40;
-        // fallthrough
-      case 13:
-        k2 ^= ((long) key[offset + 12]) << 32;
-        // fallthrough
-      case 12:
-        k2 ^= ((long) key[offset + 11]) << 24;
-        // fallthrough
-      case 11:
-        k2 ^= ((long) key[offset + 10]) << 16;
-        // fallthrough
-      case 10:
-        k2 ^= ((long) key[offset + 9]) << 8;
-        // fallthrough
-      case 9:
-        k2 ^= key[offset + 8];
-        k2 *= c2;
-        k2 = rotl64(k2, 33);
-        k2 *= c1;
-        h2 ^= k2;
-        // fallthrough
-      case 8:
-        k1 ^= ((long) key[offset + 7]) << 56;
-        // fallthrough
-      case 7:
-        k1 ^= ((long) key[offset + 6]) << 48;
-        // fallthrough
-      case 6:
-        k1 ^= ((long) key[offset + 5]) << 40;
-        // fallthrough
-      case 5:
-        k1 ^= ((long) key[offset + 4]) << 32;
-        // fallthrough
-      case 4:
-        k1 ^= ((long) key[offset + 3]) << 24;
-        // fallthrough
-      case 3:
-        k1 ^= ((long) key[offset + 2]) << 16;
-        // fallthrough
-      case 2:
-        k1 ^= ((long) key[offset + 1]) << 8;
-        // fallthrough
-      case 1:
-        k1 ^= (key[offset]);
-        k1 *= c1;
-        k1 = rotl64(k1, 31);
-        k1 *= c2;
-        h1 ^= k1;
-        break;
-      default: // 0
-        // do nothing
-
-    }
-    // ----------
-    // finalization
-    h1 ^= length;
-    h2 ^= length;
-    h1 += h2;
-    h2 += h1;
-    h1 = fmix(h1);
-    h2 = fmix(h2);
-    h1 += h2;
-    h2 += h1;
-    return h1 + h2;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/Pair.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/Pair.java
deleted file mode 100644
index b51a3b4..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/Pair.java
+++ /dev/null
@@ -1,99 +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.utils;
-
-import java.io.Serializable;
-
-/**
- * Pair is a template class to represent a couple of values. It also override the Object basic
- * methods like hasnCode, equals and toString.
- *
- * @param <L> L type
- * @param <R> R type
- */
-public class Pair<L, R> implements Serializable {
-
-  private static final long serialVersionUID = -1398609631703707002L;
-  public L left;
-  public R right;
-
-  public Pair(L l, R r) {
-    left = l;
-    right = r;
-  }
-
-  public void setLeft(L left) {
-    this.left = left;
-  }
-
-  public L getLeft() {
-    return left;
-  }
-
-  public void setRight(R right) {
-    this.right = right;
-  }
-
-  public R getRight() {
-    return right;
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = 1;
-    result = prime * result + ((left == null) ? 0 : left.hashCode());
-    result = prime * result + ((right == null) ? 0 : right.hashCode());
-    return result;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj) {
-      return true;
-    }
-    if (obj == null) {
-      return false;
-    }
-    if (getClass() != obj.getClass()) {
-      return false;
-    }
-    Pair<?, ?> other = (Pair<?, ?>) obj;
-    if (left == null) {
-      if (other.left != null) {
-        return false;
-      }
-    } else if (!left.equals(other.left)) {
-      return false;
-    }
-    if (right == null) {
-      if (other.right != null) {
-        return false;
-      }
-    } else if (!right.equals(other.right)) {
-      return false;
-    }
-    return true;
-  }
-
-  @Override
-  public String toString() {
-    return "<" + left + "," + right + ">";
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/Preconditions.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/Preconditions.java
deleted file mode 100644
index 9044303..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/Preconditions.java
+++ /dev/null
@@ -1,39 +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.utils;
-
-public class Preconditions {
-
-  private Preconditions() {
-    // private constructor for utility class
-  }
-
-  public static void checkArgument(boolean expression) {
-    if (!expression) {
-      throw new IllegalArgumentException();
-    }
-  }
-
-  public static void checkArgument(boolean expression, String errorMessage) {
-    if (!expression) {
-      throw new IllegalArgumentException(errorMessage);
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/PublicBAOS.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/PublicBAOS.java
deleted file mode 100644
index 62834a6..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/PublicBAOS.java
+++ /dev/null
@@ -1,160 +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.utils;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.util.Arrays;
-
-/**
- * A subclass extending <code>ByteArrayOutputStream</code>. It's used to return the byte array
- * directly. Note that the size of byte array is large than actual size of valid contents, thus it's
- * used cooperating with <code>size()</code> or <code>capacity = size</code> This class extends
- * ByteArrayOutputStream and intentionally remove the 'synchronized' keyword in write methods for
- * better performance. (Not thread safe)
- */
-public class PublicBAOS extends ByteArrayOutputStream {
-  private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
-
-  public PublicBAOS() {
-    super();
-  }
-
-  public PublicBAOS(int size) {
-    super(size);
-  }
-
-  private void ensureCapacity(int minCapacity) {
-    // overflow-conscious code
-    if (minCapacity - buf.length > 0) {
-      grow(minCapacity);
-    }
-  }
-
-  private void grow(int minCapacity) {
-    // overflow-conscious code
-    int oldCapacity = buf.length;
-    int newCapacity = oldCapacity << 1;
-    if (newCapacity - minCapacity < 0) {
-      newCapacity = minCapacity;
-    }
-    if (newCapacity - MAX_ARRAY_SIZE > 0) {
-      newCapacity = hugeCapacity(minCapacity);
-    }
-    buf = Arrays.copyOf(buf, newCapacity);
-  }
-
-  private static int hugeCapacity(int minCapacity) {
-    if (minCapacity < 0) {
-      // overflow
-      throw new OutOfMemoryError();
-    }
-    return (minCapacity > MAX_ARRAY_SIZE) ? Integer.MAX_VALUE : MAX_ARRAY_SIZE;
-  }
-
-  @Override
-  public void write(int b) {
-    ensureCapacity(count + 1);
-    buf[count] = (byte) b;
-    count += 1;
-  }
-
-  @Override
-  public void write(byte b[], int off, int len) {
-    if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) - b.length > 0)) {
-      throw new IndexOutOfBoundsException();
-    }
-    ensureCapacity(count + len);
-    System.arraycopy(b, off, buf, count, len);
-    count += len;
-  }
-
-  @Override
-  public byte[] toByteArray() {
-    return Arrays.copyOf(buf, count);
-  }
-
-  @Override
-  public String toString() {
-    return new String(buf, 0, count);
-  }
-
-  @Override
-  public String toString(String charsetName) throws UnsupportedEncodingException {
-    return new String(buf, 0, count, charsetName);
-  }
-
-  /**
-   * get current all bytes data
-   *
-   * @return all bytes data
-   */
-  public byte[] getBuf() {
-
-    return this.buf;
-  }
-
-  /**
-   * It's not a thread-safe method. Override the super class's implementation. Remove the
-   * synchronized key word, to save the synchronization overhead.
-   *
-   * <p>Writes the complete contents of this byte array output stream to the specified output stream
-   * argument, as if by calling the output stream's write method using <code>
-   * out.write(buf, 0, count)</code>.
-   *
-   * @param out the output stream to which to write the data.
-   * @exception IOException if an I/O error occurs.
-   */
-  @Override
-  @SuppressWarnings("squid:S3551")
-  public void writeTo(OutputStream out) throws IOException {
-    out.write(buf, 0, count);
-  }
-
-  /**
-   * It's not a thread-safe method. Override the super class's implementation. Remove the
-   * synchronized key word, to save the synchronization overhead.
-   *
-   * <p>Resets the <code>count</code> field of this byte array output stream to zero, so that all
-   * currently accumulated output in the output stream is discarded. The output stream can be used
-   * again, reusing the already allocated buffer space.
-   */
-  @Override
-  @SuppressWarnings("squid:S3551")
-  public void reset() {
-    count = 0;
-  }
-
-  /**
-   * The synchronized keyword in this function is intentionally removed. For details, see
-   * https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=173085039
-   */
-  @Override
-  @SuppressWarnings("squid:S3551")
-  public int size() {
-    return count;
-  }
-
-  public void truncate(int size) {
-    count = size;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/ReadWriteForEncodingUtils.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/ReadWriteForEncodingUtils.java
deleted file mode 100644
index b9d562b..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/ReadWriteForEncodingUtils.java
+++ /dev/null
@@ -1,341 +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.utils;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-import java.util.List;
-
-/** Utils to read/write stream. */
-public class ReadWriteForEncodingUtils {
-  private static final String TOO_LONG_BYTE_FORMAT =
-      "tsfile-common BytesUtils: encountered value (%d) that requires more than 4 bytes";
-
-  private ReadWriteForEncodingUtils() {}
-
-  /**
-   * check all number in a int list and find max bit width.
-   *
-   * @param list input list
-   * @return max bit width
-   */
-  public static int getIntMaxBitWidth(List<Integer> list) {
-    int max = 1;
-    for (int num : list) {
-      int bitWidth = 32 - Integer.numberOfLeadingZeros(num);
-      max = Math.max(bitWidth, max);
-    }
-    return max;
-  }
-
-  /**
-   * check all number in a long list and find max bit width.
-   *
-   * @param list input list
-   * @return max bit width
-   */
-  public static int getLongMaxBitWidth(List<Long> list) {
-    int max = 1;
-    for (long num : list) {
-      int bitWidth = 64 - Long.numberOfLeadingZeros(num);
-      max = Math.max(bitWidth, max);
-    }
-    return max;
-  }
-
-  /** transform an int var to byte[] format. */
-  public static byte[] getUnsignedVarInt(int value) {
-    int preValue = value;
-    int length = 0;
-    while ((value & 0xFFFFFF80) != 0L) {
-      length++;
-      value >>>= 7;
-    }
-    length++;
-
-    byte[] res = new byte[length];
-    value = preValue;
-    int i = 0;
-    while ((value & 0xFFFFFF80) != 0L) {
-      res[i] = (byte) ((value & 0x7F) | 0x80);
-      value >>>= 7;
-      i++;
-    }
-    res[i] = (byte) (value & 0x7F);
-    return res;
-  }
-
-  /**
-   * read an unsigned var int in stream and transform it to int format.
-   *
-   * @param in stream to read an unsigned var int
-   * @return integer value
-   * @throws IOException exception in IO
-   */
-  public static int readUnsignedVarInt(InputStream in) throws IOException {
-    int value = 0;
-    int i = 0;
-    int b = in.read();
-    while (b != -1 && (b & 0x80) != 0) {
-      value |= (b & 0x7F) << i;
-      i += 7;
-      b = in.read();
-    }
-    return value | (b << i);
-  }
-
-  public static int readVarInt(InputStream in) throws IOException {
-    int value = readUnsignedVarInt(in);
-    int x = value >>> 1;
-    if ((value & 1) != 0) {
-      x = ~x;
-    }
-    return x;
-  }
-
-  /**
-   * read an unsigned var int in stream and transform it to int format.
-   *
-   * @param buffer stream to read an unsigned var int
-   * @return integer value
-   */
-  public static int readUnsignedVarInt(ByteBuffer buffer) {
-    int value = 0;
-    int i = 0;
-    int b = 0;
-    while (buffer.hasRemaining() && ((b = buffer.get()) & 0x80) != 0) {
-      value |= (b & 0x7F) << i;
-      i += 7;
-    }
-    return value | (b << i);
-  }
-
-  public static int readVarInt(ByteBuffer buffer) {
-    int value = readUnsignedVarInt(buffer);
-    int x = value >>> 1;
-    if ((value & 1) != 0) {
-      x = ~x;
-    }
-    return x;
-  }
-
-  /**
-   * write a value to stream using unsigned var int format. for example, int 123456789 has its
-   * binary format 00000111-01011011-11001101-00010101 (if we omit the first 5 0, then it is
-   * 111010-1101111-0011010-0010101), function writeUnsignedVarInt will split every seven bits and
-   * write them to stream from low bit to high bit like: 1-0010101 1-0011010 1-1101111 0-0111010 1
-   * represents has next byte to write, 0 represents number end.
-   *
-   * @param value value to write into stream
-   * @param out output stream
-   * @return the number of bytes that the value consume.
-   */
-  public static int writeUnsignedVarInt(int value, ByteArrayOutputStream out) {
-    int position = 1;
-    while ((value & 0xFFFFFF80) != 0L) {
-      out.write((value & 0x7F) | 0x80);
-      value >>>= 7;
-      position++;
-    }
-    out.write(value & 0x7F);
-    return position;
-  }
-
-  public static int writeVarInt(int value, ByteArrayOutputStream out) {
-    int uValue = value << 1;
-    if (value < 0) {
-      uValue = ~uValue;
-    }
-    return writeUnsignedVarInt(uValue, out);
-  }
-
-  public static int writeUnsignedVarInt(int value, OutputStream out) throws IOException {
-    int position = 1;
-    while ((value & 0xFFFFFF80) != 0L) {
-      out.write((value & 0x7F) | 0x80);
-      value >>>= 7;
-      position++;
-    }
-    out.write(value & 0x7F);
-    return position;
-  }
-
-  public static int writeVarInt(int value, OutputStream out) throws IOException {
-    int uValue = value << 1;
-    if (value < 0) {
-      uValue = ~uValue;
-    }
-    return writeUnsignedVarInt(uValue, out);
-  }
-
-  /**
-   * write a value to stream using unsigned var int format. for example, int 123456789 has its
-   * binary format 111010-1101111-0011010-0010101, function writeUnsignedVarInt will split every
-   * seven bits and write them to stream from low bit to high bit like: 1-0010101 1-0011010
-   * 1-1101111 0-0111010 1 represents has next byte to write, 0 represents number end.
-   *
-   * @param value value to write into stream
-   * @param buffer where to store the result. buffer.remaining() needs to >= 32. Notice: (1) this
-   *     function does not check buffer's remaining(). (2) the position will be updated.
-   * @return the number of bytes that the value consume.
-   * @throws IOException exception in IO
-   */
-  public static int writeUnsignedVarInt(int value, ByteBuffer buffer) {
-    int position = 1;
-    while ((value & 0xFFFFFF80) != 0L) {
-      buffer.put((byte) ((value & 0x7F) | 0x80));
-      value >>>= 7;
-      position++;
-    }
-    buffer.put((byte) (value & 0x7F));
-    return position;
-  }
-
-  public static int writeVarInt(int value, ByteBuffer buffer) {
-    int uValue = value << 1;
-    if (value < 0) {
-      uValue = ~uValue;
-    }
-    return writeUnsignedVarInt(uValue, buffer);
-  }
-
-  /**
-   * Returns the encoding size in bytes of its input value.
-   *
-   * @param value the integer to be measured
-   * @return the encoding size in bytes of its input value
-   */
-  public static int varIntSize(int value) {
-    int uValue = value << 1;
-    if (value < 0) {
-      uValue = ~uValue;
-    }
-    int position = 1;
-    while ((uValue & 0xFFFFFF80) != 0L) {
-      uValue >>>= 7;
-      position++;
-    }
-    return position;
-  }
-
-  /**
-   * Returns the encoding size in bytes of its input value.
-   *
-   * @param value the unsigned integer to be measured
-   * @return the encoding size in bytes of its input value
-   */
-  public static int uVarIntSize(int value) {
-    int position = 1;
-    while ((value & 0xFFFFFF80) != 0L) {
-      value >>>= 7;
-      position++;
-    }
-    return position;
-  }
-
-  /**
-   * write integer value using special bit to output stream.
-   *
-   * @param value value to write to stream
-   * @param out output stream
-   * @param bitWidth bit length
-   * @throws IOException exception in IO
-   */
-  public static void writeIntLittleEndianPaddedOnBitWidth(int value, OutputStream out, int bitWidth)
-      throws IOException {
-    int paddedByteNum = (bitWidth + 7) / 8;
-    if (paddedByteNum > 4) {
-      throw new IOException(String.format(TOO_LONG_BYTE_FORMAT, paddedByteNum));
-    }
-    int offset = 0;
-    while (paddedByteNum > 0) {
-      out.write((value >>> offset) & 0xFF);
-      offset += 8;
-      paddedByteNum--;
-    }
-  }
-
-  /**
-   * write long value using special bit to output stream.
-   *
-   * @param value value to write to stream
-   * @param out output stream
-   * @param bitWidth bit length
-   * @throws IOException exception in IO
-   */
-  public static void writeLongLittleEndianPaddedOnBitWidth(
-      long value, OutputStream out, int bitWidth) throws IOException {
-    int paddedByteNum = (bitWidth + 7) / 8;
-    if (paddedByteNum > 8) {
-      throw new IOException(String.format(TOO_LONG_BYTE_FORMAT, paddedByteNum));
-    }
-    out.write(BytesUtils.longToBytes(value, paddedByteNum));
-  }
-
-  /**
-   * read integer value using special bit from input stream.
-   *
-   * @param buffer byte buffer
-   * @param bitWidth bit length
-   * @return integer value
-   * @throws IOException exception in IO
-   */
-  public static int readIntLittleEndianPaddedOnBitWidth(ByteBuffer buffer, int bitWidth)
-      throws IOException {
-    int paddedByteNum = (bitWidth + 7) / 8;
-    if (paddedByteNum > 4) {
-      throw new IOException(String.format(TOO_LONG_BYTE_FORMAT, paddedByteNum));
-    }
-    int result = 0;
-    int offset = 0;
-    while (paddedByteNum > 0) {
-      int ch = ReadWriteIOUtils.read(buffer);
-      result += ch << offset;
-      offset += 8;
-      paddedByteNum--;
-    }
-    return result;
-  }
-
-  /**
-   * read long value using special bit from input stream.
-   *
-   * @param buffer byte buffer
-   * @param bitWidth bit length
-   * @return long long value
-   * @throws IOException exception in IO
-   */
-  public static long readLongLittleEndianPaddedOnBitWidth(ByteBuffer buffer, int bitWidth)
-      throws IOException {
-    int paddedByteNum = (bitWidth + 7) / 8;
-    if (paddedByteNum > 8) {
-      throw new IOException(String.format(TOO_LONG_BYTE_FORMAT, paddedByteNum));
-    }
-    long result = 0;
-    for (int i = 0; i < paddedByteNum; i++) {
-      int ch = ReadWriteIOUtils.read(buffer);
-      result <<= 8;
-      result |= (ch & 0xff);
-    }
-    return result;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/ReadWriteIOUtils.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/ReadWriteIOUtils.java
deleted file mode 100644
index f40bb3d..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/ReadWriteIOUtils.java
+++ /dev/null
@@ -1,1175 +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.utils;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.reader.TsFileInput;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-import java.nio.charset.CharacterCodingException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import static org.apache.iotdb.tsfile.utils.ReadWriteIOUtils.ClassSerializeId.BINARY;
-import static org.apache.iotdb.tsfile.utils.ReadWriteIOUtils.ClassSerializeId.BOOLEAN;
-import static org.apache.iotdb.tsfile.utils.ReadWriteIOUtils.ClassSerializeId.DOUBLE;
-import static org.apache.iotdb.tsfile.utils.ReadWriteIOUtils.ClassSerializeId.FLOAT;
-import static org.apache.iotdb.tsfile.utils.ReadWriteIOUtils.ClassSerializeId.INTEGER;
-import static org.apache.iotdb.tsfile.utils.ReadWriteIOUtils.ClassSerializeId.LONG;
-import static org.apache.iotdb.tsfile.utils.ReadWriteIOUtils.ClassSerializeId.NULL;
-import static org.apache.iotdb.tsfile.utils.ReadWriteIOUtils.ClassSerializeId.STRING;
-
-/**
- * ConverterUtils is a utility class. It provides conversion between normal datatype and byte array.
- */
-public class ReadWriteIOUtils {
-
-  public static final int BOOLEAN_LEN = 1;
-  public static final int SHORT_LEN = 2;
-  public static final int INT_LEN = 4;
-  public static final int LONG_LEN = 8;
-  public static final int DOUBLE_LEN = 8;
-  public static final int FLOAT_LEN = 4;
-  public static final float BIT_LEN = 0.125F;
-
-  private static final int NO_BYTE_TO_READ = -1;
-
-  private static final byte[] magicStringBytes;
-
-  private static final String RETURN_ERROR = "Intend to read %d bytes but %d are actually returned";
-
-  static {
-    magicStringBytes = BytesUtils.stringToBytes(TSFileConfig.MAGIC_STRING);
-  }
-
-  private ReadWriteIOUtils() {}
-
-  /** read a bool from inputStream. */
-  public static boolean readBool(InputStream inputStream) throws IOException {
-    int flag = inputStream.read();
-    return flag == 1;
-  }
-
-  // used by generated code
-  @SuppressWarnings("unused")
-  public static boolean readBoolean(InputStream inputStream) throws IOException {
-    int flag = inputStream.read();
-    return flag == 1;
-  }
-
-  /** read a bool from byteBuffer. */
-  public static boolean readBool(ByteBuffer buffer) {
-    byte a = buffer.get();
-    return a == 1;
-  }
-
-  /** read a Boolean from byteBuffer. */
-  public static Boolean readBoolObject(ByteBuffer buffer) {
-    byte a = buffer.get();
-    if (a == 1) {
-      return true;
-    } else if (a == 0) {
-      return false;
-    }
-    return null;
-  }
-
-  /** Read a Boolean from byteBuffer. */
-  public static Boolean readBoolObject(InputStream inputStream) throws IOException {
-    int flag = inputStream.read();
-    if (flag == 1) {
-      return true;
-    } else if (flag == 0) {
-      return false;
-    }
-    return null;
-  }
-
-  /** Read a byte from byteBuffer. */
-  public static byte readByte(ByteBuffer buffer) {
-    return buffer.get();
-  }
-
-  /**
-   * Read bytes array in given size
-   *
-   * @param buffer buffer
-   * @param size size
-   * @return bytes array
-   */
-  public static byte[] readBytes(ByteBuffer buffer, int size) {
-    byte[] res = new byte[size];
-    buffer.get(res);
-    return res;
-  }
-
-  /** read a bool from byteBuffer. */
-  public static boolean readIsNull(InputStream inputStream) throws IOException {
-    return readBool(inputStream);
-  }
-
-  /** read a bool from byteBuffer. */
-  public static boolean readIsNull(ByteBuffer buffer) {
-    return readBool(buffer);
-  }
-
-  public static int write(Map<String, String> map, OutputStream stream) throws IOException {
-    if (map == null) {
-      return write(NO_BYTE_TO_READ, stream);
-    }
-
-    int length = 0;
-    length += write(map.size(), stream);
-    for (Entry<String, String> entry : map.entrySet()) {
-      length += write(entry.getKey(), stream);
-      length += write(entry.getValue(), stream);
-    }
-    return length;
-  }
-
-  public static void write(List<Map<String, String>> maps, OutputStream stream) throws IOException {
-    for (Map<String, String> map : maps) {
-      write(map, stream);
-    }
-  }
-
-  public static int write(Map<String, String> map, ByteBuffer buffer) {
-    if (map == null) {
-      return write(NO_BYTE_TO_READ, buffer);
-    }
-
-    int length = 0;
-    byte[] bytes;
-    buffer.putInt(map.size());
-    length += 4;
-    for (Entry<String, String> entry : map.entrySet()) {
-      if (entry.getKey() == null) {
-        buffer.putInt(-1);
-      } else {
-        bytes = entry.getKey().getBytes();
-        buffer.putInt(bytes.length);
-        buffer.put(bytes);
-        length += bytes.length;
-      }
-      length += 4;
-      if (entry.getValue() == null) {
-        buffer.putInt(-1);
-      } else {
-        bytes = entry.getValue().getBytes();
-        buffer.putInt(bytes.length);
-        buffer.put(bytes);
-        length += bytes.length;
-      }
-      length += 4;
-    }
-    return length;
-  }
-
-  public static void write(List<Map<String, String>> maps, ByteBuffer buffer) {
-    for (Map<String, String> map : maps) {
-      write(map, buffer);
-    }
-  }
-
-  /**
-   * write a int value to outputStream according to flag. If flag is true, write 1, else write 0.
-   */
-  public static int write(Boolean flag, OutputStream outputStream) throws IOException {
-    if (flag == null) {
-      outputStream.write(-1);
-    } else if (Boolean.TRUE.equals(flag)) {
-      outputStream.write(1);
-    } else {
-      outputStream.write(0);
-    }
-    return BOOLEAN_LEN;
-  }
-
-  /** write a byte to byteBuffer according to flag. If flag is true, write 1, else write 0. */
-  public static int write(Boolean flag, ByteBuffer buffer) {
-    byte a;
-    if (flag == null) {
-      a = -1;
-    } else if (Boolean.TRUE.equals(flag)) {
-      a = 1;
-    } else {
-      a = 0;
-    }
-
-    buffer.put(a);
-    return BOOLEAN_LEN;
-  }
-
-  /**
-   * write a byte n.
-   *
-   * @return The number of bytes used to represent a {@code byte} value in two's complement binary
-   *     form.
-   */
-  public static int write(byte n, OutputStream outputStream) throws IOException {
-    outputStream.write(n);
-    return Byte.BYTES;
-  }
-
-  /**
-   * write a short n.
-   *
-   * @return The number of bytes used to represent n.
-   */
-  public static int write(short n, OutputStream outputStream) throws IOException {
-    byte[] bytes = BytesUtils.shortToBytes(n);
-    outputStream.write(bytes);
-    return bytes.length;
-  }
-
-  /**
-   * write a byte n to byteBuffer.
-   *
-   * @return The number of bytes used to represent a {@code byte} value in two's complement binary
-   *     form.
-   */
-  public static int write(byte n, ByteBuffer buffer) {
-    buffer.put(n);
-    return Byte.BYTES;
-  }
-
-  /**
-   * write a short n to byteBuffer.
-   *
-   * @return The number of bytes used to represent n.
-   */
-  public static int write(short n, ByteBuffer buffer) {
-    buffer.putShort(n);
-    return SHORT_LEN;
-  }
-
-  /**
-   * write a short n to byteBuffer.
-   *
-   * @return The number of bytes used to represent n.
-   */
-  public static int write(Binary n, ByteBuffer buffer) {
-    buffer.putInt(n.getLength());
-    buffer.put(n.getValues());
-    return INT_LEN + n.getLength();
-  }
-
-  /**
-   * write a int n to outputStream.
-   *
-   * @return The number of bytes used to represent n.
-   */
-  public static int write(int n, OutputStream outputStream) throws IOException {
-    byte[] bytes = BytesUtils.intToBytes(n);
-    outputStream.write(bytes);
-    return INT_LEN;
-  }
-
-  /** write the size (int) of the binary and then the bytes in binary */
-  public static int write(Binary binary, OutputStream outputStream) throws IOException {
-    byte[] size = BytesUtils.intToBytes(binary.getValues().length);
-    outputStream.write(size);
-    outputStream.write(binary.getValues());
-    return size.length + binary.getValues().length;
-  }
-
-  /**
-   * write a int n to byteBuffer.
-   *
-   * @return The number of bytes used to represent n.
-   */
-  public static int write(int n, ByteBuffer buffer) {
-    buffer.putInt(n);
-    return INT_LEN;
-  }
-
-  /**
-   * Write a float n to outputStream.
-   *
-   * @return The number of bytes used to represent n.
-   */
-  public static int write(float n, OutputStream outputStream) throws IOException {
-    byte[] bytes = BytesUtils.floatToBytes(n);
-    outputStream.write(bytes);
-    return FLOAT_LEN;
-  }
-
-  /**
-   * Write a double n to outputStream.
-   *
-   * @return The number of bytes used to represent n.
-   */
-  public static int write(double n, OutputStream outputStream) throws IOException {
-    byte[] bytes = BytesUtils.doubleToBytes(n);
-    outputStream.write(bytes);
-    return DOUBLE_LEN;
-  }
-
-  /**
-   * write a long n to outputStream.
-   *
-   * @return The number of bytes used to represent n.
-   */
-  public static int write(long n, OutputStream outputStream) throws IOException {
-    byte[] bytes = BytesUtils.longToBytes(n);
-    outputStream.write(bytes);
-    return LONG_LEN;
-  }
-
-  /** write a long n to byteBuffer. */
-  public static int write(long n, ByteBuffer buffer) {
-    buffer.putLong(n);
-    return LONG_LEN;
-  }
-
-  /** write a float n to byteBuffer. */
-  public static int write(float n, ByteBuffer buffer) {
-    buffer.putFloat(n);
-    return FLOAT_LEN;
-  }
-
-  /** write a double n to byteBuffer. */
-  public static int write(double n, ByteBuffer buffer) {
-    buffer.putDouble(n);
-    return DOUBLE_LEN;
-  }
-
-  /**
-   * Write string to outputStream.
-   *
-   * @return the length of string represented by byte[].
-   */
-  public static int write(String s, OutputStream outputStream) throws IOException {
-    int len = 0;
-    if (s == null) {
-      len += write(NO_BYTE_TO_READ, outputStream);
-      return len;
-    }
-
-    byte[] bytes = s.getBytes();
-    len += write(bytes.length, outputStream);
-    outputStream.write(bytes);
-    len += bytes.length;
-    return len;
-  }
-
-  /**
-   * Write string to outputStream.
-   *
-   * @return the length of string represented by byte[].
-   */
-  public static int writeVar(String s, OutputStream outputStream) throws IOException {
-    int len = 0;
-    if (s == null) {
-      len += ReadWriteForEncodingUtils.writeVarInt(NO_BYTE_TO_READ, outputStream);
-      return len;
-    }
-
-    byte[] bytes = s.getBytes(TSFileConfig.STRING_CHARSET);
-    len += ReadWriteForEncodingUtils.writeVarInt(bytes.length, outputStream);
-    outputStream.write(bytes);
-    len += bytes.length;
-    return len;
-  }
-
-  /**
-   * write string to byteBuffer.
-   *
-   * @return the length of string represented by byte[].
-   */
-  public static int write(String s, ByteBuffer buffer) {
-    if (s == null) {
-      return write(NO_BYTE_TO_READ, buffer);
-    }
-    int len = 0;
-    byte[] bytes = s.getBytes();
-    len += write(bytes.length, buffer);
-    buffer.put(bytes);
-    len += bytes.length;
-    return len;
-  }
-
-  public static int writeVar(String s, ByteBuffer buffer) {
-    if (s == null) {
-      return ReadWriteForEncodingUtils.writeVarInt(NO_BYTE_TO_READ, buffer);
-    }
-    int len = 0;
-    byte[] bytes = s.getBytes();
-    len += ReadWriteForEncodingUtils.writeVarInt(bytes.length, buffer);
-    buffer.put(bytes);
-    len += bytes.length;
-    return len;
-  }
-
-  /** write byteBuffer.capacity and byteBuffer.array to outputStream. */
-  public static int write(ByteBuffer byteBuffer, OutputStream outputStream) throws IOException {
-    int len = 0;
-    len += write(byteBuffer.capacity(), outputStream);
-    byte[] bytes = byteBuffer.array();
-    outputStream.write(bytes);
-    len += bytes.length;
-    return len;
-  }
-
-  public static void writeWithoutSize(
-      ByteBuffer byteBuffer, int offset, int len, OutputStream outputStream) throws IOException {
-    byte[] bytes = byteBuffer.array();
-    outputStream.write(bytes, offset, len);
-  }
-
-  /** write byteBuffer.capacity and byteBuffer.array to byteBuffer. */
-  public static int write(ByteBuffer byteBuffer, ByteBuffer buffer) {
-    int len = 0;
-    len += write(byteBuffer.capacity(), buffer);
-    byte[] bytes = byteBuffer.array();
-    buffer.put(bytes);
-    len += bytes.length;
-    return len;
-  }
-
-  /** CompressionType. */
-  public static int write(CompressionType compressionType, OutputStream outputStream)
-      throws IOException {
-    byte n = compressionType.serialize();
-    return write(n, outputStream);
-  }
-
-  /** write compressionType to byteBuffer. */
-  public static int write(CompressionType compressionType, ByteBuffer buffer) {
-    byte n = compressionType.serialize();
-    return write(n, buffer);
-  }
-
-  /** TSDataType. */
-  public static int write(TSDataType dataType, OutputStream outputStream) throws IOException {
-    byte n = dataType.serialize();
-    return write(n, outputStream);
-  }
-
-  public static int write(TSDataType dataType, ByteBuffer buffer) {
-    byte n = dataType.serialize();
-    return write(n, buffer);
-  }
-
-  /** TSEncoding. */
-  public static int write(TSEncoding encoding, OutputStream outputStream) throws IOException {
-    byte n = encoding.serialize();
-    return write(n, outputStream);
-  }
-
-  public static int write(TSEncoding encoding, ByteBuffer buffer) {
-    byte n = encoding.serialize();
-    return write(n, buffer);
-  }
-
-  public static int sizeToWrite(Binary n) {
-    return INT_LEN + n.getLength();
-  }
-
-  public static int sizeToWrite(String s) {
-    if (s == null) {
-      return INT_LEN;
-    }
-    return INT_LEN + s.getBytes().length;
-  }
-
-  /** read a byte var from inputStream. */
-  public static byte readByte(InputStream inputStream) throws IOException {
-    return (byte) inputStream.read();
-  }
-
-  /** read a short var from inputStream. */
-  public static short readShort(InputStream inputStream) throws IOException {
-    byte[] bytes = new byte[SHORT_LEN];
-    int readLen = inputStream.read(bytes);
-    if (readLen != SHORT_LEN) {
-      throw new IOException(String.format(RETURN_ERROR, SHORT_LEN, readLen));
-    }
-    return BytesUtils.bytesToShort(bytes);
-  }
-
-  /** Read a short var from byteBuffer. */
-  public static short readShort(ByteBuffer buffer) {
-    return buffer.getShort();
-  }
-
-  /** Read a float var from inputStream. */
-  public static float readFloat(InputStream inputStream) throws IOException {
-    byte[] bytes = new byte[FLOAT_LEN];
-    int readLen = inputStream.read(bytes);
-    if (readLen != FLOAT_LEN) {
-      throw new IOException(String.format(RETURN_ERROR, FLOAT_LEN, readLen));
-    }
-    return BytesUtils.bytesToFloat(bytes);
-  }
-
-  /** Read a float var from byteBuffer. */
-  public static float readFloat(ByteBuffer byteBuffer) {
-    byte[] bytes = new byte[FLOAT_LEN];
-    byteBuffer.get(bytes);
-    return BytesUtils.bytesToFloat(bytes);
-  }
-
-  /** Read a double var from inputStream. */
-  public static double readDouble(InputStream inputStream) throws IOException {
-    byte[] bytes = new byte[DOUBLE_LEN];
-    int readLen = inputStream.read(bytes);
-    if (readLen != DOUBLE_LEN) {
-      throw new IOException(String.format(RETURN_ERROR, DOUBLE_LEN, readLen));
-    }
-    return BytesUtils.bytesToDouble(bytes);
-  }
-
-  /** Read a double var from byteBuffer. */
-  public static double readDouble(ByteBuffer byteBuffer) {
-    byte[] bytes = new byte[DOUBLE_LEN];
-    byteBuffer.get(bytes);
-    return BytesUtils.bytesToDouble(bytes);
-  }
-
-  /** Read an int var from inputStream. */
-  public static int readInt(InputStream inputStream) throws IOException {
-    byte[] bytes = new byte[INT_LEN];
-    int readLen = inputStream.read(bytes);
-    if (readLen != INT_LEN) {
-      throw new IOException(String.format(RETURN_ERROR, INT_LEN, readLen));
-    }
-    return BytesUtils.bytesToInt(bytes);
-  }
-
-  /** Read a int var from byteBuffer. */
-  public static int readInt(ByteBuffer buffer) {
-    return buffer.getInt();
-  }
-
-  /**
-   * Read an unsigned byte(0 ~ 255) as InputStream does.
-   *
-   * @return the byte or -1(means there is no byte to read)
-   */
-  public static int read(ByteBuffer buffer) {
-    if (!buffer.hasRemaining()) {
-      return NO_BYTE_TO_READ;
-    }
-    return buffer.get() & 0xFF;
-  }
-
-  /** Read a long var from inputStream. */
-  public static long readLong(InputStream inputStream) throws IOException {
-    byte[] bytes = new byte[LONG_LEN];
-    int readLen = inputStream.read(bytes);
-    if (readLen != LONG_LEN) {
-      throw new IOException(String.format(RETURN_ERROR, LONG_LEN, readLen));
-    }
-    return BytesUtils.bytesToLong(bytes);
-  }
-
-  /** Read a long var from byteBuffer. */
-  public static long readLong(ByteBuffer buffer) {
-    return buffer.getLong();
-  }
-
-  /** Read string from inputStream. */
-  public static String readString(InputStream inputStream) throws IOException {
-    int strLength = readInt(inputStream);
-    if (strLength <= 0) {
-      return null;
-    }
-    byte[] bytes = new byte[strLength];
-    int readLen = inputStream.read(bytes, 0, strLength);
-    if (readLen != strLength) {
-      throw new IOException(String.format(RETURN_ERROR, strLength, readLen));
-    }
-    return new String(bytes, 0, strLength);
-  }
-
-  /** String length's type is varInt */
-  public static String readVarIntString(InputStream inputStream) throws IOException {
-    int strLength = ReadWriteForEncodingUtils.readVarInt(inputStream);
-    if (strLength < 0) {
-      return null;
-    } else if (strLength == 0) {
-      return "";
-    }
-    byte[] bytes = new byte[strLength];
-    int readLen = inputStream.read(bytes, 0, strLength);
-    if (readLen != strLength) {
-      throw new IOException(String.format(RETURN_ERROR, strLength, readLen));
-    }
-    return new String(bytes, 0, strLength);
-  }
-
-  /** Read string from byteBuffer. */
-  public static String readString(ByteBuffer buffer) {
-    int strLength = readInt(buffer);
-    if (strLength < 0) {
-      return null;
-    } else if (strLength == 0) {
-      return "";
-    }
-    byte[] bytes = new byte[strLength];
-    buffer.get(bytes, 0, strLength);
-    return new String(bytes, 0, strLength);
-  }
-
-  /** String length's type is varInt */
-  public static String readVarIntString(ByteBuffer buffer) {
-    int strLength = ReadWriteForEncodingUtils.readVarInt(buffer);
-    if (strLength < 0) {
-      return null;
-    } else if (strLength == 0) {
-      return "";
-    }
-    byte[] bytes = new byte[strLength];
-    buffer.get(bytes, 0, strLength);
-    return new String(bytes, 0, strLength);
-  }
-
-  /** Read string from byteBuffer with user define length. */
-  public static String readStringWithLength(ByteBuffer buffer, int length) {
-    if (length < 0) {
-      return null;
-    } else if (length == 0) {
-      return "";
-    }
-    byte[] bytes = new byte[length];
-    buffer.get(bytes, 0, length);
-    return new String(bytes, 0, length);
-  }
-
-  public static ByteBuffer getByteBuffer(String s) {
-    return ByteBuffer.wrap(s.getBytes(java.nio.charset.StandardCharsets.UTF_8));
-  }
-
-  public static ByteBuffer getByteBuffer(int i) {
-    return ByteBuffer.allocate(4).putInt(0, i);
-  }
-
-  public static ByteBuffer getByteBuffer(long n) {
-    return ByteBuffer.allocate(8).putLong(0, n);
-  }
-
-  public static ByteBuffer getByteBuffer(float f) {
-    return ByteBuffer.allocate(4).putFloat(0, f);
-  }
-
-  public static ByteBuffer getByteBuffer(double d) {
-    return ByteBuffer.allocate(8).putDouble(0, d);
-  }
-
-  public static ByteBuffer getByteBuffer(boolean i) {
-    return ByteBuffer.allocate(1).put(i ? (byte) 1 : (byte) 0);
-  }
-
-  public static String readStringFromDirectByteBuffer(ByteBuffer buffer)
-      throws CharacterCodingException {
-    return java.nio.charset.StandardCharsets.UTF_8
-        .newDecoder()
-        .decode(buffer.duplicate())
-        .toString();
-  }
-
-  /**
-   * unlike InputStream.read(bytes), this method makes sure that you can read length bytes or reach
-   * to the end of the stream.
-   */
-  public static byte[] readBytes(InputStream inputStream, int length) throws IOException {
-    byte[] bytes = new byte[length];
-    int offset = 0;
-    int len;
-    while (bytes.length - offset > 0
-        && (len = inputStream.read(bytes, offset, bytes.length - offset)) != NO_BYTE_TO_READ) {
-      offset += len;
-    }
-    return bytes;
-  }
-
-  public static Map<String, String> readMap(ByteBuffer buffer) {
-    int length = readInt(buffer);
-    if (length == NO_BYTE_TO_READ) {
-      return null;
-    }
-    Map<String, String> map = new HashMap<>(length);
-    for (int i = 0; i < length; i++) {
-      // key
-      String key = readString(buffer);
-      // value
-      String value = readString(buffer);
-      map.put(key, value);
-    }
-    return map;
-  }
-
-  public static Map<String, String> readMap(InputStream inputStream) throws IOException {
-    int length = readInt(inputStream);
-    if (length == NO_BYTE_TO_READ) {
-      return null;
-    }
-    Map<String, String> map = new HashMap<>(length);
-    for (int i = 0; i < length; i++) {
-      // key
-      String key = readString(inputStream);
-      // value
-      String value = readString(inputStream);
-      map.put(key, value);
-    }
-    return map;
-  }
-
-  public static LinkedHashMap<String, String> readLinkedHashMap(ByteBuffer buffer) {
-    int length = readInt(buffer);
-    if (length == NO_BYTE_TO_READ) {
-      return null;
-    }
-    LinkedHashMap<String, String> map = new LinkedHashMap<>(length);
-    for (int i = 0; i < length; i++) {
-      // key
-      String key = readString(buffer);
-      // value
-      String value = readString(buffer);
-      map.put(key, value);
-    }
-    return map;
-  }
-
-  public static List<Map<String, String>> readMaps(ByteBuffer buffer, int totalSize) {
-    List<Map<String, String>> results = new ArrayList<>(totalSize);
-    for (int i = 0; i < totalSize; i++) {
-      results.add(ReadWriteIOUtils.readMap(buffer));
-    }
-    return results;
-  }
-
-  /**
-   * unlike InputStream.read(bytes), this method makes sure that you can read length bytes or reach
-   * to the end of the stream.
-   */
-  public static byte[] readBytesWithSelfDescriptionLength(InputStream inputStream)
-      throws IOException {
-    int length = readInt(inputStream);
-    return readBytes(inputStream, length);
-  }
-
-  public static Binary readBinary(ByteBuffer buffer) {
-    int length = readInt(buffer);
-    byte[] bytes = readBytes(buffer, length);
-    return new Binary(bytes);
-  }
-
-  public static Binary readBinary(InputStream inputStream) throws IOException {
-    int length = readInt(inputStream);
-    byte[] bytes = readBytes(inputStream, length);
-    return new Binary(bytes);
-  }
-
-  /**
-   * read bytes from byteBuffer, this method makes sure that you can read length bytes or reach to
-   * the end of the buffer.
-   *
-   * <p>read a int + buffer
-   */
-  public static byte[] readByteBufferWithSelfDescriptionLength(ByteBuffer buffer) {
-    int byteLength = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-    byte[] bytes = new byte[byteLength];
-    buffer.get(bytes);
-    return bytes;
-  }
-
-  /** read bytes from buffer with offset position to the end of buffer. */
-  public static int readAsPossible(TsFileInput input, long position, ByteBuffer buffer)
-      throws IOException {
-    int length = 0;
-    int read;
-    while (buffer.hasRemaining() && (read = input.read(buffer, position)) != NO_BYTE_TO_READ) {
-      length += read;
-      position += read;
-      input.read(buffer, position);
-    }
-    return length;
-  }
-
-  /** read util to the end of buffer. */
-  public static int readAsPossible(TsFileInput input, ByteBuffer buffer) throws IOException {
-    int length = 0;
-    int read;
-    while (buffer.hasRemaining() && (read = input.read(buffer)) != NO_BYTE_TO_READ) {
-      length += read;
-    }
-    return length;
-  }
-
-  /** read bytes from buffer with offset position to the end of buffer or up to len. */
-  public static int readAsPossible(TsFileInput input, ByteBuffer target, long offset, int len)
-      throws IOException {
-    int length = 0;
-    int limit = target.limit();
-    if (target.remaining() > len) {
-      target.limit(target.position() + len);
-    }
-    int read;
-    while (length < len
-        && target.hasRemaining()
-        && (read = input.read(target, offset)) != NO_BYTE_TO_READ) {
-      length += read;
-      offset += read;
-    }
-    target.limit(limit);
-    return length;
-  }
-
-  /** read string list with self define length. */
-  public static List<String> readStringList(InputStream inputStream) throws IOException {
-    List<String> list = new ArrayList<>();
-    int size = readInt(inputStream);
-
-    for (int i = 0; i < size; i++) {
-      list.add(readString(inputStream));
-    }
-
-    return list;
-  }
-
-  /** read string list with self define length. */
-  public static List<String> readStringList(ByteBuffer buffer) {
-    int size = readInt(buffer);
-    if (size <= 0) {
-      return Collections.emptyList();
-    }
-
-    List<String> list = new ArrayList<>();
-    for (int i = 0; i < size; i++) {
-      list.add(readString(buffer));
-    }
-
-    return list;
-  }
-
-  /** write string list with self define length. */
-  public static void writeStringList(List<String> list, ByteBuffer buffer) {
-    if (list == null) {
-      throw new IllegalArgumentException("stringList must not be null!");
-    }
-    int size = list.size();
-    buffer.putInt(size);
-    for (String s : list) {
-      write(s, buffer);
-    }
-  }
-
-  /** write string list with self define length. */
-  public static void writeStringList(List<String> list, OutputStream outputStream)
-      throws IOException {
-    if (list == null) {
-      throw new IllegalArgumentException("stringList must not be null!");
-    }
-    int size = list.size();
-    write(size, outputStream);
-    for (String s : list) {
-      write(s, outputStream);
-    }
-  }
-
-  /** read integer set with self define length. */
-  public static Set<Integer> readIntegerSet(ByteBuffer buffer) {
-    int size = readInt(buffer);
-    if (size <= 0) {
-      return Collections.emptySet();
-    }
-    Set<Integer> set = new HashSet<>();
-    for (int i = 0; i < size; i++) {
-      set.add(readInt(buffer));
-    }
-    return set;
-  }
-
-  private static final String SET_NOT_NULL_MSG = "set must not be null!";
-
-  // write integer set with self define length
-  public static void writeIntegerSet(Set<Integer> set, OutputStream outputStream)
-      throws IOException {
-    if (set == null) {
-      throw new IllegalArgumentException(SET_NOT_NULL_MSG);
-    }
-    int size = set.size();
-    write(size, outputStream);
-    for (int i : set) {
-      write(i, outputStream);
-    }
-  }
-
-  // Read long set with self define length
-  public static Set<Long> readLongSet(ByteBuffer buffer) {
-    int size = readInt(buffer);
-    if (size <= 0) {
-      return Collections.emptySet();
-    }
-    Set<Long> set = new HashSet<>();
-    for (int i = 0; i < size; i++) {
-      set.add(readLong(buffer));
-    }
-    return set;
-  }
-
-  // write long set with self define length
-  public static void writeLongSet(Set<Long> set, DataOutputStream outputStream) throws IOException {
-    if (set == null) {
-      throw new IllegalArgumentException(SET_NOT_NULL_MSG);
-    }
-    write(set.size(), outputStream);
-    for (long e : set) {
-      write(e, outputStream);
-    }
-  }
-
-  // read object set with self define length
-  public static <T> Set<T> readObjectSet(ByteBuffer buffer) {
-    int size = readInt(buffer);
-    if (size <= 0) {
-      return Collections.emptySet();
-    }
-    Set<T> set = new HashSet<>();
-    for (int i = 0; i < size; i++) {
-      set.add((T) readObject(buffer));
-    }
-    return set;
-  }
-
-  // write object set with self define length
-  public static <T> void writeObjectSet(Set<T> set, DataOutputStream outputStream)
-      throws IOException {
-    if (set == null) {
-      throw new IllegalArgumentException(SET_NOT_NULL_MSG);
-    }
-    write(set.size(), outputStream);
-    for (T e : set) {
-      writeObject(e, outputStream);
-    }
-  }
-
-  public static CompressionType readCompressionType(InputStream inputStream) throws IOException {
-    byte n = readByte(inputStream);
-    return CompressionType.deserialize(n);
-  }
-
-  public static CompressionType readCompressionType(ByteBuffer buffer) {
-    byte n = buffer.get();
-    return CompressionType.deserialize(n);
-  }
-
-  public static TSDataType readDataType(InputStream inputStream) throws IOException {
-    byte n = readByte(inputStream);
-    return TSDataType.deserialize(n);
-  }
-
-  public static TSDataType readDataType(ByteBuffer buffer) {
-    byte n = buffer.get();
-    return TSDataType.deserialize(n);
-  }
-
-  public static TSEncoding readEncoding(InputStream inputStream) throws IOException {
-    byte n = readByte(inputStream);
-    return TSEncoding.deserialize(n);
-  }
-
-  public static TSEncoding readEncoding(ByteBuffer buffer) {
-    byte n = buffer.get();
-    return TSEncoding.deserialize(n);
-  }
-
-  /**
-   * To check whether the byte buffer is reach the magic string this method doesn't change the
-   * position of the byte buffer
-   *
-   * @param byteBuffer byte buffer
-   * @return whether the byte buffer is reach the magic string
-   */
-  public static boolean checkIfMagicString(ByteBuffer byteBuffer) {
-    byteBuffer.mark();
-    boolean res = Arrays.equals(readBytes(byteBuffer, magicStringBytes.length), magicStringBytes);
-    byteBuffer.reset();
-    return res;
-  }
-
-  /**
-   * to check whether the inputStream is reach the magic string this method doesn't change the
-   * position of the inputStream
-   *
-   * @param inputStream inputStream
-   * @return whether the inputStream is reach the magic string
-   */
-  public static boolean checkIfMagicString(InputStream inputStream) throws IOException {
-    return inputStream.available() <= magicStringBytes.length;
-  }
-
-  enum ClassSerializeId {
-    LONG,
-    DOUBLE,
-    INTEGER,
-    FLOAT,
-    BINARY,
-    BOOLEAN,
-    STRING,
-    NULL
-  }
-
-  public static void writeObject(Object value, DataOutputStream outputStream) {
-    try {
-      if (value instanceof Long) {
-        outputStream.write(LONG.ordinal());
-        outputStream.writeLong((Long) value);
-      } else if (value instanceof Double) {
-        outputStream.write(DOUBLE.ordinal());
-        outputStream.writeDouble((Double) value);
-      } else if (value instanceof Integer) {
-        outputStream.write(INTEGER.ordinal());
-        outputStream.writeInt((Integer) value);
-      } else if (value instanceof Float) {
-        outputStream.write(FLOAT.ordinal());
-        outputStream.writeFloat((Float) value);
-      } else if (value instanceof Binary) {
-        outputStream.write(BINARY.ordinal());
-        byte[] bytes = ((Binary) value).getValues();
-        outputStream.writeInt(bytes.length);
-        outputStream.write(bytes);
-      } else if (value instanceof Boolean) {
-        outputStream.write(BOOLEAN.ordinal());
-        outputStream.write(Boolean.TRUE.equals(value) ? 1 : 0);
-      } else if (value == null) {
-        outputStream.write(NULL.ordinal());
-      } else {
-        outputStream.write(STRING.ordinal());
-        byte[] bytes = value.toString().getBytes();
-        outputStream.writeInt(bytes.length);
-        outputStream.write(bytes);
-      }
-    } catch (IOException ignored) {
-      // ignored
-    }
-  }
-
-  public static void writeObject(Object value, ByteBuffer byteBuffer) {
-    if (value instanceof Long) {
-      byteBuffer.putInt(LONG.ordinal());
-      byteBuffer.putLong((Long) value);
-    } else if (value instanceof Double) {
-      byteBuffer.putInt(DOUBLE.ordinal());
-      byteBuffer.putDouble((Double) value);
-    } else if (value instanceof Integer) {
-      byteBuffer.putInt(INTEGER.ordinal());
-      byteBuffer.putInt((Integer) value);
-    } else if (value instanceof Float) {
-      byteBuffer.putInt(FLOAT.ordinal());
-      byteBuffer.putFloat((Float) value);
-    } else if (value instanceof Binary) {
-      byteBuffer.putInt(BINARY.ordinal());
-      byte[] bytes = ((Binary) value).getValues();
-      byteBuffer.putInt(bytes.length);
-      byteBuffer.put(bytes);
-    } else if (value instanceof Boolean) {
-      byteBuffer.putInt(BOOLEAN.ordinal());
-      byteBuffer.put(Boolean.TRUE.equals(value) ? (byte) 1 : (byte) 0);
-    } else if (value == null) {
-      byteBuffer.putInt(NULL.ordinal());
-    } else {
-      byteBuffer.putInt(STRING.ordinal());
-      byte[] bytes = value.toString().getBytes();
-      byteBuffer.putInt(bytes.length);
-      byteBuffer.put(bytes);
-    }
-  }
-
-  public static Object readObject(ByteBuffer buffer) {
-    ClassSerializeId serializeId = ClassSerializeId.values()[buffer.get()];
-    switch (serializeId) {
-      case BOOLEAN:
-        return buffer.get() == 1;
-      case FLOAT:
-        return buffer.getFloat();
-      case DOUBLE:
-        return buffer.getDouble();
-      case LONG:
-        return buffer.getLong();
-      case INTEGER:
-        return buffer.getInt();
-      case BINARY:
-        int length = buffer.getInt();
-        byte[] bytes = new byte[length];
-        buffer.get(bytes);
-        return new Binary(bytes);
-      case NULL:
-        return null;
-      case STRING:
-      default:
-        length = buffer.getInt();
-        bytes = new byte[length];
-        buffer.get(bytes);
-        return new String(bytes);
-    }
-  }
-
-  public static ByteBuffer clone(ByteBuffer original) {
-    ByteBuffer clone = ByteBuffer.allocate(original.remaining());
-    while (original.hasRemaining()) {
-      clone.put(original.get());
-    }
-
-    clone.flip();
-    return clone;
-  }
-
-  /**
-   * The skip method of will return only if skipping n bytes or reaching end of file.
-   *
-   * @param inputStream the inputSteam to be skipped.
-   * @param n the number of bytes to be skipped.
-   * @throws IOException if the stream does not support seek, or if some other I/O error occurs.
-   */
-  public static void skip(InputStream inputStream, long n) throws IOException {
-    while (n > 0) {
-      long skipN = inputStream.skip(n);
-      if (skipN > 0) {
-        n -= skipN;
-      } else {
-        // read one byte to decide should we retry
-        if (inputStream.read() == -1) {
-          // EOF
-          break;
-        } else {
-          n--;
-        }
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/RegexUtils.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/RegexUtils.java
deleted file mode 100644
index d6000be8..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/RegexUtils.java
+++ /dev/null
@@ -1,92 +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.utils;
-
-import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
-
-public class RegexUtils {
-
-  private RegexUtils() {
-    // util class
-  }
-
-  /**
-   * The main idea of this part comes from
-   * https://codereview.stackexchange.com/questions/36861/convert-sql-like-to-regex/36864
-   */
-  public static String parseLikePatternToRegex(String likePattern) {
-    String unescapeValue = unescapeString(likePattern);
-    String specialRegexStr = ".^$*+?{}[]|()";
-    StringBuilder patternStrBuild = new StringBuilder();
-    patternStrBuild.append("^");
-    for (int i = 0; i < unescapeValue.length(); i++) {
-      String ch = String.valueOf(unescapeValue.charAt(i));
-      if (specialRegexStr.contains(ch)) {
-        ch = "\\" + unescapeValue.charAt(i);
-      }
-      if (i == 0
-          || !"\\".equals(String.valueOf(unescapeValue.charAt(i - 1)))
-          || i >= 2
-              && "\\\\"
-                  .equals(
-                      patternStrBuild.substring(
-                          patternStrBuild.length() - 2, patternStrBuild.length()))) {
-        String replaceStr = ch.replace("%", ".*?").replace("_", ".");
-        patternStrBuild.append(replaceStr);
-      } else {
-        patternStrBuild.append(ch);
-      }
-    }
-    patternStrBuild.append("$");
-    return patternStrBuild.toString();
-  }
-
-  // This Method is for un-escaping strings except '\' before special string '%', '_', '\', because
-  // we need to use '\' to judge whether to replace this to regexp string
-  private static String unescapeString(String value) {
-    StringBuilder stringBuilder = new StringBuilder();
-    int curIndex = 0;
-    while (curIndex < value.length()) {
-      String ch = String.valueOf(value.charAt(curIndex));
-      if ("\\".equals(ch) && 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)) {
-            curIndex++;
-          }
-        }
-      } else {
-        stringBuilder.append(ch);
-      }
-      curIndex++;
-    }
-    return stringBuilder.toString();
-  }
-
-  public static Pattern compileRegex(String regex) {
-    try {
-      return Pattern.compile(regex);
-    } catch (PatternSyntaxException e) {
-      throw new PatternSyntaxException("Illegal regex expression: ", regex, e.getIndex());
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/StringContainer.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/StringContainer.java
deleted file mode 100644
index bf74245..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/StringContainer.java
+++ /dev/null
@@ -1,392 +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.utils;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * this class is used to concatenate Strings effectively.It contains a StringBuilder and initialize
- * it until {@code toString} is called. Note:it's not thread safety
- */
-public class StringContainer {
-
-  // while call toString, all substrings are jointed with joinSeparator
-  private final String joinSeparator;
-  private StringBuilder stringBuilder;
-  private ArrayList<String> sequenceList;
-  private ArrayList<String> reverseList;
-  /** the summation length of all string segments. */
-  private int totalLength = 0;
-  /** the count of string segments. */
-  private int count = 0;
-
-  private boolean isUpdated = true;
-  private String cache;
-
-  /** defines the constructor function for the class. */
-  public StringContainer() {
-    sequenceList = new ArrayList<>();
-    reverseList = new ArrayList<>();
-    joinSeparator = null;
-  }
-
-  /** defines the constructor function for the class. */
-  public StringContainer(String joinSeparator) {
-    sequenceList = new ArrayList<>();
-    reverseList = new ArrayList<>();
-    this.joinSeparator = joinSeparator;
-  }
-
-  public StringContainer(String[] strings) {
-    this();
-    addTail(strings);
-  }
-
-  public StringContainer(String[] strings, String joinSeparator) {
-    this(joinSeparator);
-    addTail(strings);
-  }
-
-  public int size() {
-    return count;
-  }
-
-  public int length() {
-    return totalLength;
-  }
-
-  public List<String> getSequenceList() {
-    return sequenceList;
-  }
-
-  public List<String> getReverseList() {
-    return reverseList;
-  }
-
-  /**
-   * add a objects array at this container's tail.
-   *
-   * @param objs -to be added
-   * @return another string contains objs as tail
-   */
-  public StringContainer addTail(Object... objs) {
-    isUpdated = true;
-    count += objs.length;
-    for (int i = 0; i < objs.length; i++) {
-      String str = objs[i].toString();
-      totalLength += str.length();
-      sequenceList.add(str);
-    }
-    return this;
-  }
-
-  /**
-   * add a Strings array at this container's tail.<br>
-   * strings:"a","b","c",<br>
-   * StringContainer this:["d","e","f"],<br>
-   * result:this:["d","e","f","a","b","c"],<br>
-   *
-   * @param strings - to be added
-   * @return - this object
-   */
-  public StringContainer addTail(String... strings) {
-    isUpdated = true;
-    count += strings.length;
-    for (int i = 0; i < strings.length; i++) {
-      totalLength += strings[i].length();
-      sequenceList.add(strings[i]);
-    }
-    return this;
-  }
-
-  /**
-   * add a StringContainer at this container's tail.<br>
-   * param StringContainer:["a","b","c"],<br>
-   * this StringContainer :["d","e","f"],<br>
-   * result:this:["d","e","f","a","b","c"],<br>
-   *
-   * @param myContainer - to be added
-   * @return - this object
-   */
-  public StringContainer addTail(StringContainer myContainer) {
-    isUpdated = true;
-    List<String> mySeqList = myContainer.getSequenceList();
-    List<String> myRevList = myContainer.getReverseList();
-    count += myRevList.size() + mySeqList.size();
-    String temp;
-    for (int i = myRevList.size() - 1; i >= 0; i--) {
-      temp = myRevList.get(i);
-      sequenceList.add(temp);
-      totalLength += temp.length();
-    }
-    for (int i = 0; i < mySeqList.size(); i++) {
-      temp = mySeqList.get(i);
-      sequenceList.add(temp);
-      totalLength += temp.length();
-    }
-    return this;
-  }
-
-  /**
-   * add a Strings array from this container's header.<br>
-   * strings:"a","b","c",<br>
-   * StringContainer this:["d","e","f"],<br>
-   * result:this:["a","b","c","d","e","f"],<br>
-   *
-   * @param strings - to be added
-   * @return - this object
-   */
-  public StringContainer addHead(String... strings) {
-    isUpdated = true;
-    count += strings.length;
-    for (int i = strings.length - 1; i >= 0; i--) {
-      totalLength += strings[i].length();
-      reverseList.add(strings[i]);
-    }
-    return this;
-  }
-
-  /**
-   * add a StringContainer from this container's header.<br>
-   * StringContainer m:["a","b","c"],<br>
-   * StringContainer this:["d","e","f"],<br>
-   * result:this:["a","b","c","d","e","f"],<br>
-   *
-   * @param myContainer - given StringContainer to be add in head
-   * @return - this object
-   */
-  public StringContainer addHead(StringContainer myContainer) {
-    isUpdated = true;
-    List<String> mySeqList = myContainer.getSequenceList();
-    List<String> myRevList = myContainer.getReverseList();
-    count += myRevList.size() + mySeqList.size();
-    String temp;
-    for (int i = mySeqList.size() - 1; i >= 0; i--) {
-      temp = mySeqList.get(i);
-      reverseList.add(temp);
-      totalLength += temp.length();
-    }
-    for (int i = 0; i < myRevList.size(); i++) {
-      temp = myRevList.get(i);
-      reverseList.add(temp);
-      totalLength += temp.length();
-    }
-    return this;
-  }
-
-  @Override
-  public String toString() {
-    if (!isUpdated) {
-      return cache;
-    }
-    if (totalLength <= 0) {
-      return "";
-    }
-    if (joinSeparator == null) {
-      stringBuilder = new StringBuilder(totalLength);
-      for (int i = reverseList.size() - 1; i >= 0; i--) {
-        stringBuilder.append(reverseList.get(i));
-      }
-      for (int i = 0; i < sequenceList.size(); i++) {
-        stringBuilder.append(sequenceList.get(i));
-      }
-      cache = stringBuilder.toString();
-    } else {
-      cache = join(joinSeparator);
-    }
-    isUpdated = false;
-    return cache;
-  }
-
-  /**
-   * for all string in rev and seq, concat them with separator and return String.
-   *
-   * @param separator separator of string
-   * @return - result joined in type of String with parameter
-   */
-  public String join(String separator) {
-    if (totalLength <= 0) {
-      return "";
-    }
-    stringBuilder = new StringBuilder(totalLength + (count - 1) * separator.length());
-    for (int i = reverseList.size() - 1; i >= 1; i--) {
-      stringBuilder.append(reverseList.get(i));
-      stringBuilder.append(separator);
-    }
-    if (!reverseList.isEmpty()) {
-      stringBuilder.append(reverseList.get(0));
-      if (!sequenceList.isEmpty()) {
-        stringBuilder.append(separator);
-      }
-    }
-    int i;
-    for (i = 0; i < sequenceList.size() - 1; i++) {
-      stringBuilder.append(sequenceList.get(i));
-      stringBuilder.append(separator);
-    }
-    if (!sequenceList.isEmpty()) {
-      stringBuilder.append(sequenceList.get(i));
-    }
-    return stringBuilder.toString();
-  }
-
-  /**
-   * return a sub-string in this container.<br>
-   * e.g. this container is ["aa","bbb","cc","d","ee"]; this.getSubString(0) = "a";
-   * this.getSubString(2) ="c";this.getSubString(-1) = "ee";
-   *
-   * @param index - the index of wanted sub-string
-   * @return - substring result
-   */
-  public String getSubString(int index) {
-    int realIndex = index >= 0 ? index : count + index;
-    if (realIndex < 0 || realIndex >= count) {
-      throw new IndexOutOfBoundsException(
-          String.format("Index: %d, Real Index: %d, Size: %d", index, realIndex, count));
-    }
-    if (realIndex < reverseList.size()) {
-      return reverseList.get(reverseList.size() - 1 - realIndex);
-    } else {
-      return sequenceList.get(realIndex - reverseList.size());
-    }
-  }
-
-  /**
-   * /** return a sub-container consist of several continuous strings in this {@code container.If
-   * start <= end, return a empty container} e.g. this container is ["aa","bbb","cc","d","ee"];
-   * this.getSubString(0,0) = ["aa"]<br>
-   * this.getSubString(1,3) = ["bbb","cc","d"]<br>
-   * this.getSubString(1,-1) = ["bbb","cc","d", "ee"]<br>
-   *
-   * @param start - the start index of wanted sub-string
-   * @param end - the end index of wanted sub-string
-   * @return - substring result
-   */
-  public StringContainer getSubStringContainer(int start, int end) {
-    int realStartIndex = start >= 0 ? start : count + start;
-    int realEndIndex = end >= 0 ? end : count + end;
-    if (realStartIndex < 0 || realStartIndex >= count) {
-      throw new IndexOutOfBoundsException(
-          String.format(
-              "start Index: %d, Real start Index: %d, Size: %d", start, realStartIndex, count));
-    }
-    if (realEndIndex < 0 || realEndIndex >= count) {
-      throw new IndexOutOfBoundsException(
-          String.format("end Index: %d, Real end Index: %d, Size: %d", end, realEndIndex, count));
-    }
-    StringContainer ret = new StringContainer(joinSeparator);
-    if (realStartIndex < reverseList.size()) {
-      for (int i = reverseList.size() - 1 - realStartIndex;
-          i >= Math.max(0, reverseList.size() - 1 - realEndIndex);
-          i--) {
-        ret.addTail(this.reverseList.get(i));
-      }
-    }
-    if (realEndIndex >= reverseList.size()) {
-      for (int i = Math.max(0, realStartIndex - reverseList.size());
-          i <= realEndIndex - reverseList.size();
-          i++) {
-        ret.addTail(this.sequenceList.get(i));
-      }
-    }
-    return ret;
-  }
-
-  @Override
-  public int hashCode() {
-    final int prime = 31;
-    int result = 1;
-    if (joinSeparator != null) {
-      result = prime * result + joinSeparator.hashCode();
-    }
-    for (String string : reverseList) {
-      result = prime * result + ((string == null) ? 0 : string.hashCode());
-    }
-    for (String string : sequenceList) {
-      result = prime * result + ((string == null) ? 0 : string.hashCode());
-    }
-    return result;
-  }
-
-  @Override
-  public boolean equals(Object sc) {
-    if (sc == null) {
-      return false;
-    }
-    if (this.getClass() != sc.getClass()) {
-      return false;
-    }
-    return this.equals((StringContainer) sc);
-  }
-
-  /**
-   * judge whether the param is equal to this container.
-   *
-   * @param sc -StringContainer Object to judge whether the object is equal to this container
-   * @return boolean value to judge whether is equal
-   */
-  public boolean equals(StringContainer sc) {
-    if (sc == this) {
-      return true;
-    }
-    if (count != sc.count) {
-      return false;
-    }
-    if (totalLength != sc.totalLength) {
-      return false;
-    }
-    if (!joinSeparator.equals(sc.joinSeparator)) {
-      return false;
-    }
-    if (sequenceList.size() != sc.sequenceList.size()) {
-      return false;
-    }
-    for (int i = 0; i < sequenceList.size(); i++) {
-      if (!sequenceList.get(i).equals(sc.sequenceList.get(i))) {
-        return false;
-      }
-    }
-    if (reverseList.size() != sc.reverseList.size()) {
-      return false;
-    }
-    for (int i = 0; i < reverseList.size(); i++) {
-      if (!reverseList.get(i).equals(sc.reverseList.get(i))) {
-        return false;
-      }
-    }
-    return true;
-  }
-
-  @Override
-  public StringContainer clone() {
-    StringContainer ret = new StringContainer(joinSeparator);
-    for (String s : sequenceList) {
-      ret.sequenceList.add(s);
-    }
-    for (String s : reverseList) {
-      ret.reverseList.add(s);
-    }
-    ret.totalLength = totalLength;
-    ret.count = count;
-    ret.isUpdated = isUpdated;
-    ret.cache = cache;
-    return ret;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/TimeDuration.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/TimeDuration.java
deleted file mode 100644
index 8a0045d..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/TimeDuration.java
+++ /dev/null
@@ -1,193 +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.utils;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.time.Instant;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.util.Objects;
-import java.util.TimeZone;
-import java.util.concurrent.TimeUnit;
-
-public class TimeDuration implements Serializable {
-  // month part of time duration
-  public final int monthDuration;
-  // non-month part of time duration, its precision is same as current time_precision
-  public final long nonMonthDuration;
-
-  public TimeDuration(int monthDuration, long nonMonthDuration) {
-    this.monthDuration = monthDuration;
-    this.nonMonthDuration = nonMonthDuration;
-  }
-
-  public boolean containsMonth() {
-    return monthDuration != 0;
-  }
-
-  /**
-   * Convert monthDuration to current precision duration, then add currPrecisionDuration field.
-   * Think month as 30 days.
-   *
-   * @return the total duration of this timeDuration in current precision
-   */
-  public long getTotalDuration(TimeUnit currPrecision) {
-    return currPrecision.convert(monthDuration * 30 * 86400_000L, TimeUnit.MILLISECONDS)
-        + nonMonthDuration;
-  }
-
-  /** Think month as 31 days. */
-  public long getMaxTotalDuration(TimeUnit currPrecision) {
-    return currPrecision.convert(monthDuration * 31 * 86400_000L, TimeUnit.MILLISECONDS)
-        + nonMonthDuration;
-  }
-
-  public boolean isGreaterThan(TimeDuration right) {
-    if (this.monthDuration > right.monthDuration) {
-      return true;
-    } else if (this.monthDuration == right.monthDuration) {
-      return this.nonMonthDuration > right.nonMonthDuration;
-    }
-    return false;
-  }
-
-  public TimeDuration merge(TimeDuration other) {
-    return new TimeDuration(
-        this.monthDuration + other.monthDuration, this.nonMonthDuration + other.nonMonthDuration);
-  }
-
-  public TimeDuration multiple(long times) {
-    return new TimeDuration((int) (monthDuration * times), nonMonthDuration * times);
-  }
-
-  /** Think month as 28 days. */
-  public long getMinTotalDuration(TimeUnit currPrecision) {
-    return currPrecision.convert(monthDuration * 28 * 86400_000L, TimeUnit.MILLISECONDS)
-        + nonMonthDuration;
-  }
-
-  public void serialize(ByteBuffer buffer) {
-    ReadWriteIOUtils.write(monthDuration, buffer);
-    ReadWriteIOUtils.write(nonMonthDuration, buffer);
-  }
-
-  public void serialize(DataOutputStream stream) throws IOException {
-    ReadWriteIOUtils.write(monthDuration, stream);
-    ReadWriteIOUtils.write(nonMonthDuration, stream);
-  }
-
-  public static TimeDuration deserialize(ByteBuffer buffer) {
-    return new TimeDuration(ReadWriteIOUtils.readInt(buffer), ReadWriteIOUtils.readLong(buffer));
-  }
-
-  /** Get a series of time which duration contains month. */
-  public static long[] getConsecutiveTimesIntervalByMonth(
-      long startTime,
-      TimeDuration duration,
-      int length,
-      TimeZone timeZone,
-      TimeUnit currPrecision) {
-    long[] result = new long[length];
-    result[0] = startTime;
-    for (int i = 1; i < length; i++) {
-      result[i] = getStartTime(startTime, duration.multiple(i), currPrecision, timeZone.toZoneId());
-    }
-    return result;
-  }
-
-  /**
-   * Add time duration contains natural months to startTime.
-   *
-   * <p>Attention: This method does not support accumulation. If you need to calculate the date two
-   * months after the start time, just add two months directly through duration, rather than adding
-   * one month first and then adding another month in a loop, it will get wrong result.
-   *
-   * <p>There is an example:
-   *
-   * <pre>
-   * 1.30 + 2mo = 3.30(right)
-   * 1.30 + 1mo = 2.28, 2.28 + 1mo = 3.28(wrong)
-   * </pre>
-   *
-   * @param startTime start time
-   * @param duration one duration
-   * @return the time after durations elapsed
-   */
-  public static long calcPositiveIntervalByMonth(
-      long startTime, TimeDuration duration, TimeZone timeZone, TimeUnit currPrecision) {
-    return getStartTime(startTime, duration, currPrecision, timeZone.toZoneId());
-  }
-
-  private static long getStartTime(
-      long startTime, TimeDuration duration, TimeUnit currPrecision, ZoneId zoneId) {
-    long coarserThanMsPart = getCoarserThanMsPart(startTime, currPrecision);
-    LocalDateTime localDateTime =
-        LocalDateTime.ofInstant(Instant.ofEpochMilli(coarserThanMsPart), zoneId);
-    localDateTime = localDateTime.plusMonths(duration.monthDuration);
-    return currPrecision.convert(
-            localDateTime.atZone(zoneId).toInstant().toEpochMilli(), TimeUnit.MILLISECONDS)
-        + getFinerThanMsPart(startTime, currPrecision)
-        + duration.nonMonthDuration;
-  }
-
-  private static long getCoarserThanMsPart(long time, TimeUnit currPrecision) {
-    return TimeUnit.MILLISECONDS.convert(time, currPrecision);
-  }
-
-  private static long getFinerThanMsPart(long time, TimeUnit currPrecision) {
-    switch (currPrecision) {
-      case MILLISECONDS:
-        return 0;
-      case MICROSECONDS:
-        return time % 1000;
-      case NANOSECONDS:
-        return time % 1000_000;
-      default:
-        throw new UnsupportedOperationException();
-    }
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    TimeDuration that = (TimeDuration) o;
-    return monthDuration == that.monthDuration && nonMonthDuration == that.nonMonthDuration;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(monthDuration, nonMonthDuration);
-  }
-
-  @Override
-  public String toString() {
-    return "TimeDuration{"
-        + (monthDuration > 0 ? monthDuration + "mo, " : "")
-        + (nonMonthDuration > 0 ? nonMonthDuration : "")
-        + '}';
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/TsFileGeneratorUtils.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/TsFileGeneratorUtils.java
deleted file mode 100644
index 462e507..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/TsFileGeneratorUtils.java
+++ /dev/null
@@ -1,405 +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.utils;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.fileSystem.fsFactory.FSFactory;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.StringDataPoint;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
-
-/** This class is only used for generating aligned or nonAligned tsfiles in test. */
-public class TsFileGeneratorUtils {
-  private static final FSFactory fsFactory = FSFactoryProducer.getFSFactory();
-  public static final String testStorageGroup = "root.testsg";
-  public static int alignDeviceOffset = 10000;
-
-  public static void writeWithTsRecord(
-      TsFileWriter tsFileWriter,
-      String deviceId,
-      List<MeasurementSchema> schemas,
-      long rowSize,
-      long startTime,
-      long startValue,
-      boolean isAligned)
-      throws IOException, WriteProcessException {
-    for (long time = startTime; time < rowSize + startTime; time++, startValue++) {
-      // construct TsRecord
-      TSRecord tsRecord = new TSRecord(time, deviceId);
-      for (IMeasurementSchema schema : schemas) {
-        DataPoint dPoint = new LongDataPoint(schema.getMeasurementId(), startValue);
-        tsRecord.addTuple(dPoint);
-      }
-      // write
-      if (isAligned) {
-        tsFileWriter.writeAligned(tsRecord);
-      } else {
-        tsFileWriter.write(tsRecord);
-      }
-    }
-  }
-
-  public static void writeWithTablet(
-      TsFileWriter tsFileWriter,
-      String deviceId,
-      List<MeasurementSchema> schemas,
-      long rowNum,
-      long startTime,
-      long startValue,
-      boolean isAligned)
-      throws IOException, WriteProcessException {
-    Tablet tablet = new Tablet(deviceId, schemas);
-    long[] timestamps = tablet.timestamps;
-    Object[] values = tablet.values;
-    long sensorNum = schemas.size();
-
-    for (long r = 0; r < rowNum; r++, startValue++) {
-      int row = tablet.rowSize++;
-      timestamps[row] = startTime++;
-      for (int i = 0; i < sensorNum; i++) {
-        long[] sensor = (long[]) values[i];
-        sensor[row] = startValue;
-      }
-      // write
-      if (tablet.rowSize == tablet.getMaxRowNumber()) {
-        if (isAligned) {
-          tsFileWriter.writeAligned(tablet);
-        } else {
-          tsFileWriter.write(tablet);
-        }
-        tablet.reset();
-      }
-    }
-    // write
-    if (tablet.rowSize != 0) {
-      if (isAligned) {
-        tsFileWriter.writeAligned(tablet);
-      } else {
-        tsFileWriter.write(tablet);
-      }
-      tablet.reset();
-    }
-  }
-
-  // including aligned and nonAligned timeseries
-  public static File generateMixTsFile(
-      String filePath,
-      int deviceNum,
-      int measurementNum,
-      int pointNum,
-      int startTime,
-      int startValue,
-      int chunkGroupSize,
-      int pageSize)
-      throws IOException, WriteProcessException {
-    File file = fsFactory.getFile(filePath);
-    if (file.exists()) {
-      file.delete();
-    }
-    int originGroupSize = TSFileDescriptor.getInstance().getConfig().getGroupSizeInByte();
-    int originPageSize = TSFileDescriptor.getInstance().getConfig().getMaxNumberOfPointsInPage();
-    try {
-      if (chunkGroupSize > 0)
-        TSFileDescriptor.getInstance().getConfig().setGroupSizeInByte(chunkGroupSize);
-      if (pageSize > 0)
-        TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(pageSize);
-      try (TsFileWriter tsFileWriter = new TsFileWriter(file)) {
-        // register align timeseries
-        List<MeasurementSchema> alignedMeasurementSchemas = new ArrayList<>();
-        for (int i = 0; i < measurementNum; i++) {
-          alignedMeasurementSchemas.add(
-              new MeasurementSchema("s" + i, TSDataType.INT64, TSEncoding.PLAIN));
-        }
-        for (int i = alignDeviceOffset; i < alignDeviceOffset + deviceNum; i++) {
-          tsFileWriter.registerAlignedTimeseries(
-              new Path(testStorageGroup + PATH_SEPARATOR + "d" + i), alignedMeasurementSchemas);
-        }
-
-        // write with record
-        for (int i = alignDeviceOffset; i < alignDeviceOffset + deviceNum; i++) {
-          writeWithTsRecord(
-              tsFileWriter,
-              testStorageGroup + PATH_SEPARATOR + "d" + i,
-              alignedMeasurementSchemas,
-              pointNum,
-              startTime,
-              startValue,
-              true);
-        }
-
-        // register nonAlign timeseries
-        List<MeasurementSchema> measurementSchemas = new ArrayList<>();
-        for (int i = 0; i < measurementNum; i++) {
-          measurementSchemas.add(
-              new MeasurementSchema("s" + i, TSDataType.INT64, TSEncoding.PLAIN));
-        }
-        for (int i = 0; i < deviceNum; i++) {
-          tsFileWriter.registerTimeseries(
-              new Path(testStorageGroup + PATH_SEPARATOR + "d" + i), measurementSchemas);
-        }
-
-        // write with record
-        for (int i = 0; i < deviceNum; i++) {
-          writeWithTsRecord(
-              tsFileWriter,
-              testStorageGroup + PATH_SEPARATOR + "d" + i,
-              measurementSchemas,
-              pointNum,
-              startTime,
-              startValue,
-              false);
-        }
-      }
-      return file;
-    } finally {
-      TSFileDescriptor.getInstance().getConfig().setGroupSizeInByte(originGroupSize);
-      TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(originPageSize);
-    }
-  }
-
-  public static File generateAlignedTsFile(
-      String filePath,
-      int deviceNum,
-      int measurementNum,
-      int pointNum,
-      int startTime,
-      int startValue,
-      int chunkGroupSize,
-      int pageSize)
-      throws IOException, WriteProcessException {
-    File file = fsFactory.getFile(filePath);
-    if (file.exists()) {
-      file.delete();
-    }
-    if (chunkGroupSize > 0)
-      TSFileDescriptor.getInstance().getConfig().setGroupSizeInByte(chunkGroupSize);
-    if (pageSize > 0)
-      TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(pageSize);
-    try (TsFileWriter tsFileWriter = new TsFileWriter(file)) {
-      // register align timeseries
-      List<MeasurementSchema> alignedMeasurementSchemas = new ArrayList<>();
-      for (int i = 0; i < measurementNum; i++) {
-        alignedMeasurementSchemas.add(
-            new MeasurementSchema("s" + i, TSDataType.INT64, TSEncoding.PLAIN));
-      }
-      for (int i = alignDeviceOffset; i < alignDeviceOffset + deviceNum; i++) {
-        tsFileWriter.registerAlignedTimeseries(
-            new Path(testStorageGroup + PATH_SEPARATOR + "d" + i), alignedMeasurementSchemas);
-      }
-
-      // write with record
-      for (int i = alignDeviceOffset; i < alignDeviceOffset + deviceNum; i++) {
-        writeWithTsRecord(
-            tsFileWriter,
-            testStorageGroup + PATH_SEPARATOR + "d" + i,
-            alignedMeasurementSchemas,
-            pointNum,
-            startTime,
-            startValue,
-            true);
-      }
-    }
-    return file;
-  }
-
-  public static File generateNonAlignedTsFile(
-      String filePath,
-      int deviceNum,
-      int measurementNum,
-      int pointNum,
-      int startTime,
-      int startValue,
-      int chunkGroupSize,
-      int pageSize)
-      throws IOException, WriteProcessException {
-    File file = fsFactory.getFile(filePath);
-    if (file.exists()) {
-      file.delete();
-    }
-    if (chunkGroupSize > 0)
-      TSFileDescriptor.getInstance().getConfig().setGroupSizeInByte(chunkGroupSize);
-    if (pageSize > 0)
-      TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(pageSize);
-    try (TsFileWriter tsFileWriter = new TsFileWriter(file)) {
-      // register nonAlign timeseries
-      List<MeasurementSchema> measurementSchemas = new ArrayList<>();
-      for (int i = 0; i < measurementNum; i++) {
-        measurementSchemas.add(new MeasurementSchema("s" + i, TSDataType.INT64, TSEncoding.PLAIN));
-      }
-      for (int i = 0; i < deviceNum; i++) {
-        tsFileWriter.registerTimeseries(
-            new Path(testStorageGroup + PATH_SEPARATOR + "d" + i), measurementSchemas);
-      }
-
-      // write with record
-      for (int i = 0; i < deviceNum; i++) {
-        writeWithTsRecord(
-            tsFileWriter,
-            testStorageGroup + PATH_SEPARATOR + "d" + i,
-            measurementSchemas,
-            pointNum,
-            startTime,
-            startValue,
-            false);
-      }
-      return file;
-    }
-  }
-
-  public static File generateAlignedTsFileWithTextValues(
-      String filePath,
-      List<Integer> deviceIndex,
-      List<Integer> measurementIndex,
-      int pointNum,
-      int startTime,
-      String value,
-      int chunkGroupSize,
-      int pageSize)
-      throws IOException, WriteProcessException {
-    File file = fsFactory.getFile(filePath);
-    if (file.exists()) {
-      file.delete();
-    }
-    if (chunkGroupSize > 0)
-      TSFileDescriptor.getInstance().getConfig().setGroupSizeInByte(chunkGroupSize);
-    if (pageSize > 0)
-      TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(pageSize);
-    try (TsFileWriter tsFileWriter = new TsFileWriter(file)) {
-      // register align timeseries
-      List<MeasurementSchema> alignedMeasurementSchemas = new ArrayList<>();
-      for (int i = 0; i < measurementIndex.size(); i++) {
-        alignedMeasurementSchemas.add(
-            new MeasurementSchema(
-                "s" + measurementIndex.get(i), TSDataType.TEXT, TSEncoding.PLAIN));
-      }
-      for (int i = 0; i < deviceIndex.size(); i++) {
-        tsFileWriter.registerAlignedTimeseries(
-            new Path(
-                testStorageGroup + PATH_SEPARATOR + "d" + (deviceIndex.get(i) + alignDeviceOffset)),
-            alignedMeasurementSchemas);
-      }
-
-      // write with record
-      for (int i = 0; i < deviceIndex.size(); i++) {
-        for (long time = startTime; time < pointNum + startTime; time++) {
-          // construct TsRecord
-          TSRecord tsRecord =
-              new TSRecord(
-                  time,
-                  testStorageGroup
-                      + PATH_SEPARATOR
-                      + "d"
-                      + (deviceIndex.get(i) + alignDeviceOffset));
-          for (IMeasurementSchema schema : alignedMeasurementSchemas) {
-            DataPoint dPoint =
-                new StringDataPoint(
-                    schema.getMeasurementId(), new Binary(value, TSFileConfig.STRING_CHARSET));
-            tsRecord.addTuple(dPoint);
-          }
-          // write
-          tsFileWriter.writeAligned(tsRecord);
-        }
-      }
-    }
-    return file;
-  }
-
-  public static File generateNonAlignedTsFileWithTextValues(
-      String filePath,
-      List<Integer> deviceIndex,
-      List<Integer> measurementIndex,
-      int pointNum,
-      int startTime,
-      String value,
-      int chunkGroupSize,
-      int pageSize)
-      throws IOException, WriteProcessException {
-    File file = fsFactory.getFile(filePath);
-    if (file.exists()) {
-      file.delete();
-    }
-    if (chunkGroupSize > 0)
-      TSFileDescriptor.getInstance().getConfig().setGroupSizeInByte(chunkGroupSize);
-    if (pageSize > 0)
-      TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(pageSize);
-    try (TsFileWriter tsFileWriter = new TsFileWriter(file)) {
-      // register nonAlign timeseries
-      List<MeasurementSchema> measurementSchemas = new ArrayList<>();
-      for (int i = 0; i < measurementIndex.size(); i++) {
-        measurementSchemas.add(
-            new MeasurementSchema(
-                "s" + measurementIndex.get(i), TSDataType.TEXT, TSEncoding.PLAIN));
-      }
-      for (int i = 0; i < deviceIndex.size(); i++) {
-        tsFileWriter.registerTimeseries(
-            new Path(testStorageGroup + PATH_SEPARATOR + "d" + deviceIndex.get(i)),
-            measurementSchemas);
-      }
-
-      // write with record
-      for (int i = 0; i < deviceIndex.size(); i++) {
-        for (long time = startTime; time < pointNum + startTime; time++) {
-          // construct TsRecord
-          TSRecord tsRecord =
-              new TSRecord(time, testStorageGroup + PATH_SEPARATOR + "d" + deviceIndex.get(i));
-          for (IMeasurementSchema schema : measurementSchemas) {
-            DataPoint dPoint =
-                new StringDataPoint(
-                    schema.getMeasurementId(), new Binary(value, TSFileConfig.STRING_CHARSET));
-            tsRecord.addTuple(dPoint);
-          }
-          // write
-          tsFileWriter.write(tsRecord);
-        }
-      }
-      return file;
-    }
-  }
-
-  public static String getTsFilePath(String fileParentPath, long tsFileVersion) {
-    String fileName =
-        System.currentTimeMillis()
-            + FilePathUtils.FILE_NAME_SEPARATOR
-            + tsFileVersion
-            + "-0-0.tsfile";
-    return fileParentPath.concat(fileName);
-  }
-
-  public static int getAlignDeviceOffset() {
-    return alignDeviceOffset;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/TsFileUtils.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/TsFileUtils.java
deleted file mode 100644
index 03ba354..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/TsFileUtils.java
+++ /dev/null
@@ -1,58 +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.utils;
-
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-
-import java.io.File;
-import java.io.IOException;
-
-public class TsFileUtils {
-
-  /**
-   * decides whether a TsFile is complete (the head magic and tail magic string exists.)
-   *
-   * @param file given the TsFile Path
-   * @throws IOException the io operations on file fails
-   */
-  public static boolean isTsFileComplete(File file) throws IOException {
-    try (TsFileSequenceReader reader = new TsFileSequenceReader(file.getAbsolutePath(), false)) {
-      return reader.isComplete();
-    }
-  }
-
-  public static long getTimePartition(File tsFile) {
-    File timePartitionFolder = tsFile.getParentFile();
-    return Long.parseLong(timePartitionFolder.getName());
-  }
-
-  public static int getDataRegionId(File tsFile) {
-    File dataRegionFolder = tsFile.getParentFile().getParentFile();
-    return Integer.parseInt(dataRegionFolder.getName());
-  }
-
-  public static String getStorageGroup(File tsFile) {
-    File vsgFolder = tsFile.getParentFile().getParentFile().getParentFile();
-    return vsgFolder.getName();
-  }
-
-  public static boolean isSequence(File tsFile) {
-    File folder = tsFile.getParentFile().getParentFile().getParentFile().getParentFile();
-    return folder.getName().equals("sequence");
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/TsFileWriter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/TsFileWriter.java
deleted file mode 100644
index f69668f..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/TsFileWriter.java
+++ /dev/null
@@ -1,651 +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.write;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.NoMeasurementException;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.MeasurementGroup;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkGroupWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.IChunkGroupWriter;
-import org.apache.iotdb.tsfile.write.chunk.NonAlignedChunkGroupWriterImpl;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-import org.apache.iotdb.tsfile.write.schema.VectorMeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
-import org.apache.iotdb.tsfile.write.writer.TsFileOutput;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * TsFileWriter is the entrance for writing processing. It receives a record and send it to
- * responding chunk group write. It checks memory size for all writing processing along its strategy
- * and flush data stored in memory to OutputStream. At the end of writing, user should call {@code
- * close()} method to flush the last data outside and close the normal outputStream and error
- * outputStream.
- */
-public class TsFileWriter implements AutoCloseable {
-
-  protected static final TSFileConfig config = TSFileDescriptor.getInstance().getConfig();
-  private static final Logger LOG = LoggerFactory.getLogger(TsFileWriter.class);
-  /** schema of this TsFile. */
-  protected final Schema schema;
-  /** IO writer of this TsFile. */
-  private final TsFileIOWriter fileWriter;
-
-  private final int pageSize;
-  private long recordCount = 0;
-
-  // deviceId -> measurementIdList
-  private Map<IDeviceID, List<String>> flushedMeasurementsInDeviceMap = new HashMap<>();
-
-  // DeviceId -> LastTime
-  private Map<IDeviceID, Long> alignedDeviceLastTimeMap = new HashMap<>();
-
-  // TimeseriesId -> LastTime
-  private Map<IDeviceID, Map<String, Long>> nonAlignedTimeseriesLastTimeMap = new HashMap<>();
-
-  /**
-   * if true, this tsfile allow unsequential data when writing; Otherwise, it limits the user to
-   * write only sequential data
-   */
-  private boolean isUnseq = false;
-
-  private Map<IDeviceID, IChunkGroupWriter> groupWriters = new HashMap<>();
-
-  /** min value of threshold of data points num check. */
-  private long recordCountForNextMemCheck = 100;
-
-  private long chunkGroupSizeThreshold;
-
-  /**
-   * init this TsFileWriter.
-   *
-   * @param file the File to be written by this TsFileWriter
-   */
-  public TsFileWriter(File file) throws IOException {
-    this(new TsFileIOWriter(file), new Schema(), TSFileDescriptor.getInstance().getConfig());
-  }
-
-  /**
-   * init this TsFileWriter.
-   *
-   * @param fileWriter the io writer of this TsFile
-   */
-  public TsFileWriter(TsFileIOWriter fileWriter) throws IOException {
-    this(fileWriter, new Schema(), TSFileDescriptor.getInstance().getConfig());
-  }
-
-  /**
-   * init this TsFileWriter.
-   *
-   * @param file the File to be written by this TsFileWriter
-   * @param schema the schema of this TsFile
-   */
-  public TsFileWriter(File file, Schema schema) throws IOException {
-    this(new TsFileIOWriter(file), schema, TSFileDescriptor.getInstance().getConfig());
-  }
-
-  /**
-   * init this TsFileWriter.
-   *
-   * @param output the TsFileOutput of the file to be written by this TsFileWriter
-   * @param schema the schema of this TsFile
-   * @throws IOException
-   */
-  public TsFileWriter(TsFileOutput output, Schema schema) throws IOException {
-    this(new TsFileIOWriter(output), schema, TSFileDescriptor.getInstance().getConfig());
-  }
-
-  /**
-   * init this TsFileWriter.
-   *
-   * @param file the File to be written by this TsFileWriter
-   * @param schema the schema of this TsFile
-   * @param conf the configuration of this TsFile
-   */
-  public TsFileWriter(File file, Schema schema, TSFileConfig conf) throws IOException {
-    this(new TsFileIOWriter(file), schema, conf);
-  }
-
-  /**
-   * init this TsFileWriter.
-   *
-   * @param fileWriter the io writer of this TsFile
-   * @param schema the schema of this TsFile
-   * @param conf the configuration of this TsFile
-   */
-  protected TsFileWriter(TsFileIOWriter fileWriter, Schema schema, TSFileConfig conf)
-      throws IOException {
-    if (!fileWriter.canWrite()) {
-      throw new IOException(
-          "the given file Writer does not support writing any more. Maybe it is an complete TsFile");
-    }
-    this.fileWriter = fileWriter;
-
-    if (fileWriter instanceof RestorableTsFileIOWriter) {
-      Map<Path, IMeasurementSchema> schemaMap =
-          ((RestorableTsFileIOWriter) fileWriter).getKnownSchema();
-      Map<Path, MeasurementGroup> measurementGroupMap = new HashMap<>();
-      for (Map.Entry<Path, IMeasurementSchema> entry : schemaMap.entrySet()) {
-        IMeasurementSchema measurementSchema = entry.getValue();
-        if (measurementSchema instanceof VectorMeasurementSchema) {
-          MeasurementGroup group =
-              measurementGroupMap.getOrDefault(
-                  new Path(entry.getKey().getDevice()), new MeasurementGroup(true));
-          List<String> measurementList = measurementSchema.getSubMeasurementsList();
-          for (int i = 0; i < measurementList.size(); i++) {
-            group
-                .getMeasurementSchemaMap()
-                .put(
-                    measurementList.get(i),
-                    new MeasurementSchema(
-                        measurementList.get(i),
-                        measurementSchema.getSubMeasurementsTSDataTypeList().get(i),
-                        measurementSchema.getSubMeasurementsTSEncodingList().get(i)));
-          }
-          measurementGroupMap.put(new Path(entry.getKey().getDevice()), group);
-        } else {
-          MeasurementGroup group =
-              measurementGroupMap.getOrDefault(
-                  new Path(entry.getKey().getDevice()), new MeasurementGroup(false));
-          group
-              .getMeasurementSchemaMap()
-              .put(measurementSchema.getMeasurementId(), (MeasurementSchema) measurementSchema);
-          measurementGroupMap.put(new Path(entry.getKey().getDevice()), group);
-        }
-      }
-      this.schema = new Schema(measurementGroupMap);
-    } else {
-      this.schema = schema;
-    }
-    this.pageSize = conf.getPageSizeInByte();
-    this.chunkGroupSizeThreshold = conf.getGroupSizeInByte();
-    config.setTSFileStorageFs(conf.getTSFileStorageFs());
-    if (this.pageSize >= chunkGroupSizeThreshold) {
-      LOG.warn(
-          "TsFile's page size {} is greater than chunk group size {}, please enlarge the chunk group"
-              + " size or decrease page size. ",
-          pageSize,
-          chunkGroupSizeThreshold);
-    }
-  }
-
-  public void registerSchemaTemplate(
-      String templateName, Map<String, MeasurementSchema> template, boolean isAligned) {
-    schema.registerSchemaTemplate(templateName, new MeasurementGroup(isAligned, template));
-  }
-
-  /**
-   * This method is used to register all timeseries in the specified template under the specified
-   * device.
-   *
-   * @param deviceId
-   * @param templateName
-   * @throws WriteProcessException
-   */
-  public void registerDevice(String deviceId, String templateName) throws WriteProcessException {
-    if (!schema.getSchemaTemplates().containsKey(templateName)) {
-      throw new WriteProcessException("given template is not existed! " + templateName);
-    }
-    if (schema.getRegisteredTimeseriesMap().containsKey(new Path(deviceId))) {
-      throw new WriteProcessException(
-          "this device "
-              + deviceId
-              + " has been registered, you can only use registerDevice method to register empty device.");
-    }
-    schema.registerDevice(deviceId, templateName);
-  }
-
-  /**
-   * Register nonAligned timeseries by single.
-   *
-   * @param devicePath
-   * @param measurementSchema
-   * @throws WriteProcessException
-   */
-  public void registerTimeseries(Path devicePath, MeasurementSchema measurementSchema)
-      throws WriteProcessException {
-    MeasurementGroup measurementGroup;
-    if (schema.containsDevice(devicePath)) {
-      measurementGroup = schema.getSeriesSchema(devicePath);
-      if (measurementGroup.isAligned()) {
-        throw new WriteProcessException(
-            "given device " + devicePath + " has been registered for aligned timeseries.");
-      } else if (measurementGroup
-          .getMeasurementSchemaMap()
-          .containsKey(measurementSchema.getMeasurementId())) {
-        throw new WriteProcessException(
-            "given nonAligned timeseries "
-                + (devicePath + "." + measurementSchema.getMeasurementId())
-                + " has been registered.");
-      }
-    } else {
-      measurementGroup = new MeasurementGroup(false);
-    }
-    measurementGroup
-        .getMeasurementSchemaMap()
-        .put(measurementSchema.getMeasurementId(), measurementSchema);
-    schema.registerMeasurementGroup(devicePath, measurementGroup);
-  }
-
-  /**
-   * Register nonAligned timeseries by groups.
-   *
-   * @param devicePath
-   * @param measurementSchemas
-   */
-  public void registerTimeseries(Path devicePath, List<MeasurementSchema> measurementSchemas) {
-    for (MeasurementSchema schema : measurementSchemas) {
-      try {
-        registerTimeseries(devicePath, schema);
-      } catch (WriteProcessException e) {
-        LOG.warn(e.getMessage());
-      }
-    }
-  }
-
-  /**
-   * Register aligned timeseries. Once the device is registered for aligned timeseries, it cannot be
-   * expanded.
-   *
-   * @param devicePath
-   * @param measurementSchemas
-   * @throws WriteProcessException
-   */
-  public void registerAlignedTimeseries(Path devicePath, List<MeasurementSchema> measurementSchemas)
-      throws WriteProcessException {
-    if (schema.containsDevice(devicePath)) {
-      if (schema.getSeriesSchema(devicePath).isAligned()) {
-        throw new WriteProcessException(
-            "given device "
-                + devicePath
-                + " has been registered for aligned timeseries and should not be expanded.");
-      } else {
-        throw new WriteProcessException(
-            "given device " + devicePath + " has been registered for nonAligned timeseries.");
-      }
-    }
-    MeasurementGroup measurementGroup = new MeasurementGroup(true);
-    measurementSchemas.forEach(
-        measurementSchema -> {
-          measurementGroup
-              .getMeasurementSchemaMap()
-              .put(measurementSchema.getMeasurementId(), measurementSchema);
-        });
-    schema.registerMeasurementGroup(devicePath, measurementGroup);
-  }
-
-  private boolean checkIsTimeseriesExist(TSRecord record, boolean isAligned)
-      throws WriteProcessException, IOException {
-    // initial ChunkGroupWriter of this device in the TSRecord
-    IChunkGroupWriter groupWriter =
-        tryToInitialGroupWriter(new PlainDeviceID(record.deviceId), isAligned);
-
-    // initial all SeriesWriters of measurements in this TSRecord
-    Path devicePath = new Path(record.deviceId);
-    List<MeasurementSchema> measurementSchemas;
-    if (schema.containsDevice(devicePath)) {
-      measurementSchemas =
-          checkIsAllMeasurementsInGroup(
-              record.dataPointList, schema.getSeriesSchema(devicePath), isAligned);
-      if (isAligned) {
-        for (IMeasurementSchema s : measurementSchemas) {
-          if (flushedMeasurementsInDeviceMap.containsKey(
-                  new PlainDeviceID(devicePath.getFullPath()))
-              && !flushedMeasurementsInDeviceMap
-                  .get(new PlainDeviceID(devicePath.getFullPath()))
-                  .contains(s.getMeasurementId())) {
-            throw new WriteProcessException(
-                "TsFile has flushed chunk group and should not add new measurement "
-                    + s.getMeasurementId()
-                    + " in device "
-                    + devicePath.getFullPath());
-          }
-        }
-      }
-      groupWriter.tryToAddSeriesWriter(measurementSchemas);
-    } else if (schema.getSchemaTemplates() != null && schema.getSchemaTemplates().size() == 1) {
-      // use the default template without needing to register device
-      MeasurementGroup measurementGroup =
-          schema.getSchemaTemplates().entrySet().iterator().next().getValue();
-      measurementSchemas =
-          checkIsAllMeasurementsInGroup(record.dataPointList, measurementGroup, isAligned);
-      groupWriter.tryToAddSeriesWriter(measurementSchemas);
-    } else {
-      throw new NoMeasurementException("input devicePath is invalid: " + devicePath);
-    }
-    return true;
-  }
-
-  private void checkIsTimeseriesExist(Tablet tablet, boolean isAligned)
-      throws WriteProcessException, IOException {
-    IChunkGroupWriter groupWriter =
-        tryToInitialGroupWriter(new PlainDeviceID(tablet.deviceId), isAligned);
-
-    Path devicePath = new Path(tablet.deviceId);
-    List<MeasurementSchema> schemas = tablet.getSchemas();
-    if (schema.containsDevice(devicePath)) {
-      checkIsAllMeasurementsInGroup(schema.getSeriesSchema(devicePath), schemas, isAligned);
-      if (isAligned) {
-        for (IMeasurementSchema s : schemas) {
-          if (flushedMeasurementsInDeviceMap.containsKey(
-                  new PlainDeviceID(devicePath.getFullPath()))
-              && !flushedMeasurementsInDeviceMap
-                  .get(new PlainDeviceID(devicePath.getFullPath()))
-                  .contains(s.getMeasurementId())) {
-            throw new WriteProcessException(
-                "TsFile has flushed chunk group and should not add new measurement "
-                    + s.getMeasurementId()
-                    + " in device "
-                    + devicePath.getFullPath());
-          }
-        }
-      }
-      groupWriter.tryToAddSeriesWriter(schemas);
-    } else if (schema.getSchemaTemplates() != null && schema.getSchemaTemplates().size() == 1) {
-      MeasurementGroup measurementGroup =
-          schema.getSchemaTemplates().entrySet().iterator().next().getValue();
-      checkIsAllMeasurementsInGroup(measurementGroup, schemas, isAligned);
-      groupWriter.tryToAddSeriesWriter(schemas);
-    } else {
-      throw new NoMeasurementException("input devicePath is invalid: " + devicePath);
-    }
-  }
-
-  /**
-   * If it's aligned, then all measurementSchemas should be contained in the measurementGroup, or it
-   * will throw exception. If it's nonAligned, then remove the measurementSchema that is not
-   * contained in the measurementGroup.
-   *
-   * @param measurementGroup
-   * @param measurementSchemas
-   * @param isAligned
-   * @throws NoMeasurementException
-   */
-  private void checkIsAllMeasurementsInGroup(
-      MeasurementGroup measurementGroup,
-      List<MeasurementSchema> measurementSchemas,
-      boolean isAligned)
-      throws NoMeasurementException {
-    if (isAligned && !measurementGroup.isAligned()) {
-      throw new NoMeasurementException("no aligned timeseries is registered in the group.");
-    } else if (!isAligned && measurementGroup.isAligned()) {
-      throw new NoMeasurementException("no nonAligned timeseries is registered in the group.");
-    }
-    for (MeasurementSchema measurementSchema : measurementSchemas) {
-      if (!measurementGroup
-          .getMeasurementSchemaMap()
-          .containsKey(measurementSchema.getMeasurementId())) {
-        if (isAligned) {
-          throw new NoMeasurementException(
-              "measurement "
-                  + measurementSchema.getMeasurementId()
-                  + " is not registered or in the default template");
-        } else {
-          measurementSchemas.remove(measurementSchema);
-        }
-      }
-    }
-  }
-
-  /**
-   * Check whether all measurements of dataPoints list are in the measurementGroup.
-   *
-   * @param dataPoints
-   * @param measurementGroup
-   * @param isAligned
-   * @return
-   * @throws NoMeasurementException
-   */
-  private List<MeasurementSchema> checkIsAllMeasurementsInGroup(
-      List<DataPoint> dataPoints, MeasurementGroup measurementGroup, boolean isAligned)
-      throws NoMeasurementException {
-    if (isAligned && !measurementGroup.isAligned()) {
-      throw new NoMeasurementException("no aligned timeseries is registered in the group.");
-    } else if (!isAligned && measurementGroup.isAligned()) {
-      throw new NoMeasurementException("no nonAligned timeseries is registered in the group.");
-    }
-    List<MeasurementSchema> schemas = new ArrayList<>();
-    for (DataPoint dataPoint : dataPoints) {
-      if (!measurementGroup.getMeasurementSchemaMap().containsKey(dataPoint.getMeasurementId())) {
-        if (isAligned) {
-          throw new NoMeasurementException(
-              "aligned measurement "
-                  + dataPoint.getMeasurementId()
-                  + " is not registered or in the default template");
-        } else {
-          LOG.warn(
-              "Ignore nonAligned measurement "
-                  + dataPoint.getMeasurementId()
-                  + " , because it is not registered or in the default template");
-        }
-      } else {
-        schemas.add(measurementGroup.getMeasurementSchemaMap().get(dataPoint.getMeasurementId()));
-      }
-    }
-    return schemas;
-  }
-
-  private IChunkGroupWriter tryToInitialGroupWriter(IDeviceID deviceId, boolean isAligned) {
-    IChunkGroupWriter groupWriter;
-    if (!groupWriters.containsKey(deviceId)) {
-      if (isAligned) {
-        groupWriter = new AlignedChunkGroupWriterImpl(deviceId);
-        if (!isUnseq) { // Sequence File
-          ((AlignedChunkGroupWriterImpl) groupWriter)
-              .setLastTime(alignedDeviceLastTimeMap.getOrDefault(deviceId, -1L));
-        }
-      } else {
-        groupWriter = new NonAlignedChunkGroupWriterImpl(deviceId);
-        if (!isUnseq) { // Sequence File
-          ((NonAlignedChunkGroupWriterImpl) groupWriter)
-              .setLastTimeMap(
-                  nonAlignedTimeseriesLastTimeMap.getOrDefault(deviceId, new HashMap<>()));
-        }
-      }
-      groupWriters.put(deviceId, groupWriter);
-    } else {
-      groupWriter = groupWriters.get(deviceId);
-    }
-    return groupWriter;
-  }
-
-  /**
-   * write a record in type of T.
-   *
-   * @param record - record responding a data line
-   * @return true -size of tsfile or metadata reaches the threshold. false - otherwise
-   * @throws IOException exception in IO
-   * @throws WriteProcessException exception in write process
-   */
-  public boolean write(TSRecord record) throws IOException, WriteProcessException {
-    checkIsTimeseriesExist(record, false);
-    recordCount +=
-        groupWriters
-            .get(new PlainDeviceID(record.deviceId))
-            .write(record.time, record.dataPointList);
-    return checkMemorySizeAndMayFlushChunks();
-  }
-
-  public boolean writeAligned(TSRecord record) throws IOException, WriteProcessException {
-    checkIsTimeseriesExist(record, true);
-    recordCount +=
-        groupWriters
-            .get(new PlainDeviceID(record.deviceId))
-            .write(record.time, record.dataPointList);
-    return checkMemorySizeAndMayFlushChunks();
-  }
-
-  /**
-   * write a tablet
-   *
-   * @param tablet - multiple time series of one device that share a time column
-   * @throws IOException exception in IO
-   * @throws WriteProcessException exception in write process
-   */
-  public boolean write(Tablet tablet) throws IOException, WriteProcessException {
-    // make sure the ChunkGroupWriter for this Tablet exist
-    checkIsTimeseriesExist(tablet, false);
-    // get corresponding ChunkGroupWriter and write this Tablet
-    recordCount += groupWriters.get(new PlainDeviceID(tablet.deviceId)).write(tablet);
-    return checkMemorySizeAndMayFlushChunks();
-  }
-
-  public boolean writeAligned(Tablet tablet) throws IOException, WriteProcessException {
-    // make sure the ChunkGroupWriter for this Tablet exist
-    checkIsTimeseriesExist(tablet, true);
-    // get corresponding ChunkGroupWriter and write this Tablet
-    recordCount += groupWriters.get(new PlainDeviceID(tablet.deviceId)).write(tablet);
-    return checkMemorySizeAndMayFlushChunks();
-  }
-
-  /**
-   * calculate total memory size occupied by all ChunkGroupWriter instances currently.
-   *
-   * @return total memory size used
-   */
-  private long calculateMemSizeForAllGroup() {
-    long memTotalSize = 0;
-    for (IChunkGroupWriter group : groupWriters.values()) {
-      memTotalSize += group.updateMaxGroupMemSize();
-    }
-    return memTotalSize;
-  }
-
-  /**
-   * check occupied memory size, if it exceeds the chunkGroupSize threshold, flush them to given
-   * OutputStream.
-   *
-   * @return true - size of tsfile or metadata reaches the threshold. false - otherwise
-   * @throws IOException exception in IO
-   */
-  private boolean checkMemorySizeAndMayFlushChunks() throws IOException {
-    if (recordCount >= recordCountForNextMemCheck) {
-      long memSize = calculateMemSizeForAllGroup();
-      assert memSize > 0;
-      if (memSize > chunkGroupSizeThreshold) {
-        LOG.debug("start to flush chunk groups, memory space occupy:{}", memSize);
-        recordCountForNextMemCheck = recordCount * chunkGroupSizeThreshold / memSize;
-        return flushAllChunkGroups();
-      } else {
-        recordCountForNextMemCheck = recordCount * chunkGroupSizeThreshold / memSize;
-        return false;
-      }
-    }
-    return false;
-  }
-
-  /**
-   * flush the data in all series writers of all chunk group writers and their page writers to
-   * outputStream.
-   *
-   * @return true - size of tsfile or metadata reaches the threshold. false - otherwise. But this
-   *     function just return false, the Override of IoTDB may return true.
-   * @throws IOException exception in IO
-   */
-  public boolean flushAllChunkGroups() throws IOException {
-    if (recordCount > 0) {
-      for (Map.Entry<IDeviceID, IChunkGroupWriter> entry : groupWriters.entrySet()) {
-        IDeviceID deviceId = entry.getKey();
-        IChunkGroupWriter groupWriter = entry.getValue();
-        fileWriter.startChunkGroup(deviceId);
-        long pos = fileWriter.getPos();
-        long dataSize = groupWriter.flushToFileWriter(fileWriter);
-        if (fileWriter.getPos() - pos != dataSize) {
-          throw new IOException(
-              String.format(
-                  "Flushed data size is inconsistent with computation! Estimated: %d, Actual: %d",
-                  dataSize, fileWriter.getPos() - pos));
-        }
-        fileWriter.endChunkGroup();
-        if (groupWriter instanceof AlignedChunkGroupWriterImpl) {
-          // add flushed measurements
-          List<String> measurementList =
-              flushedMeasurementsInDeviceMap.computeIfAbsent(deviceId, p -> new ArrayList<>());
-          ((AlignedChunkGroupWriterImpl) groupWriter)
-              .getMeasurements()
-              .forEach(
-                  measurementId -> {
-                    if (!measurementList.contains(measurementId)) {
-                      measurementList.add(measurementId);
-                    }
-                  });
-          // add lastTime
-          if (!isUnseq) { // Sequence TsFile
-            this.alignedDeviceLastTimeMap.put(
-                deviceId, ((AlignedChunkGroupWriterImpl) groupWriter).getLastTime());
-          }
-        } else {
-          // add lastTime
-          if (!isUnseq) { // Sequence TsFile
-            this.nonAlignedTimeseriesLastTimeMap.put(
-                deviceId, ((NonAlignedChunkGroupWriterImpl) groupWriter).getLastTimeMap());
-          }
-        }
-      }
-      reset();
-    }
-    return false;
-  }
-
-  private void reset() {
-    groupWriters.clear();
-    recordCount = 0;
-  }
-
-  /**
-   * calling this method to write the last data remaining in memory and close the normal and error
-   * OutputStream.
-   *
-   * @throws IOException exception in IO
-   */
-  @Override
-  public void close() throws IOException {
-    LOG.info("start close file");
-    flushAllChunkGroups();
-    fileWriter.endFile();
-  }
-
-  /**
-   * this function is only for Test.
-   *
-   * @return TsFileIOWriter
-   */
-  public TsFileIOWriter getIOWriter() {
-    return this.fileWriter;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/AlignedChunkGroupWriterImpl.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/AlignedChunkGroupWriterImpl.java
deleted file mode 100644
index 12fcaa6..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/AlignedChunkGroupWriterImpl.java
+++ /dev/null
@@ -1,343 +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.write.chunk;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.TSEncodingBuilder;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-public class AlignedChunkGroupWriterImpl implements IChunkGroupWriter {
-  private static final Logger LOG = LoggerFactory.getLogger(AlignedChunkGroupWriterImpl.class);
-
-  private final IDeviceID deviceId;
-
-  // measurementID -> ValueChunkWriter
-  private final Map<String, ValueChunkWriter> valueChunkWriterMap = new LinkedHashMap<>();
-
-  private final TimeChunkWriter timeChunkWriter;
-
-  private long lastTime = -1;
-
-  public AlignedChunkGroupWriterImpl(IDeviceID deviceId) {
-    this.deviceId = deviceId;
-    String timeMeasurementId = "";
-    CompressionType compressionType = TSFileDescriptor.getInstance().getConfig().getCompressor();
-    TSEncoding tsEncoding =
-        TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder());
-    TSDataType timeType = TSFileDescriptor.getInstance().getConfig().getTimeSeriesDataType();
-    Encoder encoder = TSEncodingBuilder.getEncodingBuilder(tsEncoding).getEncoder(timeType);
-    timeChunkWriter = new TimeChunkWriter(timeMeasurementId, compressionType, tsEncoding, encoder);
-  }
-
-  @Override
-  public void tryToAddSeriesWriter(MeasurementSchema measurementSchema) throws IOException {
-    if (!valueChunkWriterMap.containsKey(measurementSchema.getMeasurementId())) {
-      ValueChunkWriter valueChunkWriter =
-          new ValueChunkWriter(
-              measurementSchema.getMeasurementId(),
-              measurementSchema.getCompressor(),
-              measurementSchema.getType(),
-              measurementSchema.getEncodingType(),
-              measurementSchema.getValueEncoder());
-      valueChunkWriterMap.put(measurementSchema.getMeasurementId(), valueChunkWriter);
-      tryToAddEmptyPageAndData(valueChunkWriter);
-    }
-  }
-
-  @Override
-  public void tryToAddSeriesWriter(List<MeasurementSchema> measurementSchemas) throws IOException {
-    for (MeasurementSchema schema : measurementSchemas) {
-      if (!valueChunkWriterMap.containsKey(schema.getMeasurementId())) {
-        ValueChunkWriter valueChunkWriter =
-            new ValueChunkWriter(
-                schema.getMeasurementId(),
-                schema.getCompressor(),
-                schema.getType(),
-                schema.getEncodingType(),
-                schema.getValueEncoder());
-        valueChunkWriterMap.put(schema.getMeasurementId(), valueChunkWriter);
-        tryToAddEmptyPageAndData(valueChunkWriter);
-      }
-    }
-  }
-
-  @Override
-  public int write(long time, List<DataPoint> data) throws WriteProcessException, IOException {
-    checkIsHistoryData(time);
-    List<ValueChunkWriter> emptyValueChunkWriters = new ArrayList<>();
-    Set<String> existingMeasurements =
-        data.stream().map(DataPoint::getMeasurementId).collect(Collectors.toSet());
-    for (Map.Entry<String, ValueChunkWriter> entry : valueChunkWriterMap.entrySet()) {
-      if (!existingMeasurements.contains(entry.getKey())) {
-        emptyValueChunkWriters.add(entry.getValue());
-      }
-    }
-    for (DataPoint point : data) {
-      boolean isNull = point.getValue() == null;
-      ValueChunkWriter valueChunkWriter = valueChunkWriterMap.get(point.getMeasurementId());
-      switch (point.getType()) {
-        case BOOLEAN:
-          valueChunkWriter.write(time, (boolean) point.getValue(), isNull);
-          break;
-        case INT32:
-          valueChunkWriter.write(time, (int) point.getValue(), isNull);
-          break;
-        case INT64:
-          valueChunkWriter.write(time, (long) point.getValue(), isNull);
-          break;
-        case FLOAT:
-          valueChunkWriter.write(time, (float) point.getValue(), isNull);
-          break;
-        case DOUBLE:
-          valueChunkWriter.write(time, (double) point.getValue(), isNull);
-          break;
-        case TEXT:
-          valueChunkWriter.write(time, (Binary) point.getValue(), isNull);
-          break;
-        default:
-          throw new UnSupportedDataTypeException(
-              String.format("Data type %s is not supported.", point.getType()));
-      }
-    }
-    if (!emptyValueChunkWriters.isEmpty()) {
-      writeEmptyDataInOneRow(emptyValueChunkWriters);
-    }
-    timeChunkWriter.write(time);
-    lastTime = time;
-    if (checkPageSizeAndMayOpenANewPage()) {
-      writePageToPageBuffer();
-    }
-    return 1;
-  }
-
-  @Override
-  public int write(Tablet tablet) throws WriteProcessException, IOException {
-    int pointCount = 0;
-    List<MeasurementSchema> measurementSchemas = tablet.getSchemas();
-    List<ValueChunkWriter> emptyValueChunkWriters = new ArrayList<>();
-    Set<String> existingMeasurements =
-        measurementSchemas.stream()
-            .map(MeasurementSchema::getMeasurementId)
-            .collect(Collectors.toSet());
-    for (Map.Entry<String, ValueChunkWriter> entry : valueChunkWriterMap.entrySet()) {
-      if (!existingMeasurements.contains(entry.getKey())) {
-        emptyValueChunkWriters.add(entry.getValue());
-      }
-    }
-    for (int row = 0; row < tablet.rowSize; row++) {
-      long time = tablet.timestamps[row];
-      checkIsHistoryData(time);
-      for (int columnIndex = 0; columnIndex < measurementSchemas.size(); columnIndex++) {
-        boolean isNull =
-            tablet.bitMaps != null
-                && tablet.bitMaps[columnIndex] != null
-                && tablet.bitMaps[columnIndex].isMarked(row);
-        // check isNull by bitMap in tablet
-        ValueChunkWriter valueChunkWriter =
-            valueChunkWriterMap.get(measurementSchemas.get(columnIndex).getMeasurementId());
-        switch (measurementSchemas.get(columnIndex).getType()) {
-          case BOOLEAN:
-            valueChunkWriter.write(time, ((boolean[]) tablet.values[columnIndex])[row], isNull);
-            break;
-          case INT32:
-            valueChunkWriter.write(time, ((int[]) tablet.values[columnIndex])[row], isNull);
-            break;
-          case INT64:
-            valueChunkWriter.write(time, ((long[]) tablet.values[columnIndex])[row], isNull);
-            break;
-          case FLOAT:
-            valueChunkWriter.write(time, ((float[]) tablet.values[columnIndex])[row], isNull);
-            break;
-          case DOUBLE:
-            valueChunkWriter.write(time, ((double[]) tablet.values[columnIndex])[row], isNull);
-            break;
-          case TEXT:
-            valueChunkWriter.write(time, ((Binary[]) tablet.values[columnIndex])[row], isNull);
-            break;
-          default:
-            throw new UnSupportedDataTypeException(
-                String.format(
-                    "Data type %s is not supported.",
-                    measurementSchemas.get(columnIndex).getType()));
-        }
-      }
-      if (!emptyValueChunkWriters.isEmpty()) {
-        writeEmptyDataInOneRow(emptyValueChunkWriters);
-      }
-      timeChunkWriter.write(time);
-      lastTime = time;
-      if (checkPageSizeAndMayOpenANewPage()) {
-        writePageToPageBuffer();
-      }
-      pointCount++;
-    }
-    return pointCount;
-  }
-
-  @Override
-  public long flushToFileWriter(TsFileIOWriter tsfileWriter) throws IOException {
-    LOG.debug("start flush device id:{}", deviceId);
-    // make sure all the pages have been compressed into buffers, so that we can get correct
-    // groupWriter.getCurrentChunkGroupSize().
-    sealAllChunks();
-    long currentChunkGroupSize = getCurrentChunkGroupSize();
-    timeChunkWriter.writeToFileWriter(tsfileWriter);
-    for (ValueChunkWriter valueChunkWriter : valueChunkWriterMap.values()) {
-      valueChunkWriter.writeToFileWriter(tsfileWriter);
-    }
-    return currentChunkGroupSize;
-  }
-
-  @Override
-  public long updateMaxGroupMemSize() {
-    long bufferSize = timeChunkWriter.estimateMaxSeriesMemSize();
-    for (ValueChunkWriter valueChunkWriter : valueChunkWriterMap.values()) {
-      bufferSize += valueChunkWriter.estimateMaxSeriesMemSize();
-    }
-    return bufferSize;
-  }
-
-  @Override
-  public long getCurrentChunkGroupSize() {
-    long size = timeChunkWriter.getCurrentChunkSize();
-    for (ValueChunkWriter valueChunkWriter : valueChunkWriterMap.values()) {
-      size += valueChunkWriter.getCurrentChunkSize();
-    }
-    return size;
-  }
-
-  public void tryToAddEmptyPageAndData(ValueChunkWriter valueChunkWriter) throws IOException {
-    // add empty page
-    for (int i = 0; i < timeChunkWriter.getNumOfPages(); i++) {
-      valueChunkWriter.writeEmptyPageToPageBuffer();
-    }
-
-    // add empty data of currentPage
-    for (long i = 0; i < timeChunkWriter.getPageWriter().getStatistics().getCount(); i++) {
-      valueChunkWriter.write(0, 0, true);
-    }
-  }
-
-  private void writeEmptyDataInOneRow(List<ValueChunkWriter> valueChunkWriterList) {
-    for (ValueChunkWriter valueChunkWriter : valueChunkWriterList) {
-      TSDataType dataType = valueChunkWriter.getDataType();
-      switch (dataType) {
-        case BOOLEAN:
-          valueChunkWriter.write(-1, false, true);
-          break;
-        case INT32:
-          valueChunkWriter.write(-1, 0, true);
-          break;
-        case INT64:
-          valueChunkWriter.write(-1, 0L, true);
-          break;
-        case FLOAT:
-          valueChunkWriter.write(-1, 0.0f, true);
-          break;
-        case DOUBLE:
-          valueChunkWriter.write(-1, 0.0d, true);
-          break;
-        case TEXT:
-          valueChunkWriter.write(-1, null, true);
-          break;
-        default:
-          throw new UnSupportedDataTypeException(
-              String.format("Data type %s is not supported.", dataType));
-      }
-    }
-  }
-
-  /**
-   * check occupied memory size, if it exceeds the PageSize threshold, construct a page and put it
-   * to pageBuffer
-   */
-  private boolean checkPageSizeAndMayOpenANewPage() {
-    if (timeChunkWriter.checkPageSizeAndMayOpenANewPage()) {
-      return true;
-    }
-    for (ValueChunkWriter writer : valueChunkWriterMap.values()) {
-      if (writer.checkPageSizeAndMayOpenANewPage()) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  private void writePageToPageBuffer() {
-    timeChunkWriter.writePageToPageBuffer();
-    for (ValueChunkWriter valueChunkWriter : valueChunkWriterMap.values()) {
-      valueChunkWriter.writePageToPageBuffer();
-    }
-  }
-
-  private void sealAllChunks() {
-    timeChunkWriter.sealCurrentPage();
-    for (ValueChunkWriter valueChunkWriter : valueChunkWriterMap.values()) {
-      valueChunkWriter.sealCurrentPage();
-    }
-  }
-
-  private void checkIsHistoryData(long time) throws WriteProcessException {
-    if (time <= lastTime) {
-      throw new WriteProcessException(
-          "Not allowed to write out-of-order data in timeseries "
-              + ((PlainDeviceID) deviceId).toStringID()
-              + TsFileConstant.PATH_SEPARATOR
-              + ""
-              + ", time should later than "
-              + lastTime);
-    }
-  }
-
-  public List<String> getMeasurements() {
-    return new ArrayList<>(valueChunkWriterMap.keySet());
-  }
-
-  public Long getLastTime() {
-    return this.lastTime;
-  }
-
-  public void setLastTime(Long lastTime) {
-    this.lastTime = lastTime;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/AlignedChunkWriterImpl.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/AlignedChunkWriterImpl.java
deleted file mode 100644
index 3ae1ffd..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/AlignedChunkWriterImpl.java
+++ /dev/null
@@ -1,452 +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.write.chunk;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.TSEncodingBuilder;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.VectorMeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.List;
-
-public class AlignedChunkWriterImpl implements IChunkWriter {
-
-  private final TimeChunkWriter timeChunkWriter;
-  private final List<ValueChunkWriter> valueChunkWriterList;
-  private int valueIndex;
-
-  // Used for batch writing
-  private long remainingPointsNumber;
-
-  // TestOnly
-  public AlignedChunkWriterImpl(VectorMeasurementSchema schema) {
-    timeChunkWriter =
-        new TimeChunkWriter(
-            schema.getMeasurementId(),
-            schema.getCompressor(),
-            schema.getTimeTSEncoding(),
-            schema.getTimeEncoder());
-
-    List<String> valueMeasurementIdList = schema.getSubMeasurementsList();
-    List<TSDataType> valueTSDataTypeList = schema.getSubMeasurementsTSDataTypeList();
-    List<TSEncoding> valueTSEncodingList = schema.getSubMeasurementsTSEncodingList();
-    List<Encoder> valueEncoderList = schema.getSubMeasurementsEncoderList();
-
-    valueChunkWriterList = new ArrayList<>(valueMeasurementIdList.size());
-    for (int i = 0; i < valueMeasurementIdList.size(); i++) {
-      valueChunkWriterList.add(
-          new ValueChunkWriter(
-              valueMeasurementIdList.get(i),
-              schema.getCompressor(),
-              valueTSDataTypeList.get(i),
-              valueTSEncodingList.get(i),
-              valueEncoderList.get(i)));
-    }
-
-    this.valueIndex = 0;
-    this.remainingPointsNumber = timeChunkWriter.getRemainingPointNumberForCurrentPage();
-  }
-
-  /**
-   * This is used to rewrite file. The encoding and compression of the time column should be the
-   * same as the source file.
-   *
-   * @param timeSchema time schema
-   * @param valueSchemaList value schema list
-   */
-  public AlignedChunkWriterImpl(
-      IMeasurementSchema timeSchema, List<IMeasurementSchema> valueSchemaList) {
-    timeChunkWriter =
-        new TimeChunkWriter(
-            timeSchema.getMeasurementId(),
-            timeSchema.getCompressor(),
-            timeSchema.getEncodingType(),
-            timeSchema.getTimeEncoder());
-
-    valueChunkWriterList = new ArrayList<>(valueSchemaList.size());
-    for (int i = 0; i < valueSchemaList.size(); i++) {
-      valueChunkWriterList.add(
-          new ValueChunkWriter(
-              valueSchemaList.get(i).getMeasurementId(),
-              valueSchemaList.get(i).getCompressor(),
-              valueSchemaList.get(i).getType(),
-              valueSchemaList.get(i).getEncodingType(),
-              valueSchemaList.get(i).getValueEncoder()));
-    }
-
-    this.valueIndex = 0;
-    this.remainingPointsNumber = timeChunkWriter.getRemainingPointNumberForCurrentPage();
-  }
-
-  /**
-   * This is used to write 0-level file. The compression of the time column is 'LZ4' in the
-   * configuration by default. The encoding of the time column is 'TS_2DIFF' in the configuration by
-   * default.
-   *
-   * @param schemaList value schema list
-   */
-  public AlignedChunkWriterImpl(List<IMeasurementSchema> schemaList) {
-    TSEncoding timeEncoding =
-        TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder());
-    TSDataType timeType = TSFileDescriptor.getInstance().getConfig().getTimeSeriesDataType();
-    CompressionType timeCompression = TSFileDescriptor.getInstance().getConfig().getCompressor();
-    timeChunkWriter =
-        new TimeChunkWriter(
-            "",
-            timeCompression,
-            timeEncoding,
-            TSEncodingBuilder.getEncodingBuilder(timeEncoding).getEncoder(timeType));
-
-    valueChunkWriterList = new ArrayList<>(schemaList.size());
-    for (int i = 0; i < schemaList.size(); i++) {
-      valueChunkWriterList.add(
-          new ValueChunkWriter(
-              schemaList.get(i).getMeasurementId(),
-              schemaList.get(i).getCompressor(),
-              schemaList.get(i).getType(),
-              schemaList.get(i).getEncodingType(),
-              schemaList.get(i).getValueEncoder()));
-    }
-
-    this.valueIndex = 0;
-
-    this.remainingPointsNumber = timeChunkWriter.getRemainingPointNumberForCurrentPage();
-  }
-
-  public void write(long time, int value, boolean isNull) {
-    valueChunkWriterList.get(valueIndex++).write(time, value, isNull);
-  }
-
-  public void write(long time, long value, boolean isNull) {
-    valueChunkWriterList.get(valueIndex++).write(time, value, isNull);
-  }
-
-  public void write(long time, boolean value, boolean isNull) {
-    valueChunkWriterList.get(valueIndex++).write(time, value, isNull);
-  }
-
-  public void write(long time, float value, boolean isNull) {
-    valueChunkWriterList.get(valueIndex++).write(time, value, isNull);
-  }
-
-  public void write(long time, double value, boolean isNull) {
-    valueChunkWriterList.get(valueIndex++).write(time, value, isNull);
-  }
-
-  public void write(long time, Binary value, boolean isNull) {
-    valueChunkWriterList.get(valueIndex++).write(time, value, isNull);
-  }
-
-  public void write(long time, int value, boolean isNull, int valueIndex) {
-    valueChunkWriterList.get(valueIndex).write(time, value, isNull);
-  }
-
-  public void write(long time, long value, boolean isNull, int valueIndex) {
-    valueChunkWriterList.get(valueIndex).write(time, value, isNull);
-  }
-
-  public void write(long time, boolean value, boolean isNull, int valueIndex) {
-    valueChunkWriterList.get(valueIndex).write(time, value, isNull);
-  }
-
-  public void write(long time, float value, boolean isNull, int valueIndex) {
-    valueChunkWriterList.get(valueIndex).write(time, value, isNull);
-  }
-
-  public void write(long time, double value, boolean isNull, int valueIndex) {
-    valueChunkWriterList.get(valueIndex).write(time, value, isNull);
-  }
-
-  public void write(long time, Binary value, boolean isNull, int valueIndex) {
-    valueChunkWriterList.get(valueIndex).write(time, value, isNull);
-  }
-
-  public void write(long time, TsPrimitiveType[] points) {
-    valueIndex = 0;
-    for (TsPrimitiveType point : points) {
-      ValueChunkWriter writer = valueChunkWriterList.get(valueIndex++);
-      switch (writer.getDataType()) {
-        case INT64:
-          writer.write(time, point != null ? point.getLong() : Long.MAX_VALUE, point == null);
-          break;
-        case INT32:
-          writer.write(time, point != null ? point.getInt() : Integer.MAX_VALUE, point == null);
-          break;
-        case FLOAT:
-          writer.write(time, point != null ? point.getFloat() : Float.MAX_VALUE, point == null);
-          break;
-        case DOUBLE:
-          writer.write(time, point != null ? point.getDouble() : Double.MAX_VALUE, point == null);
-          break;
-        case BOOLEAN:
-          writer.write(time, point != null ? point.getBoolean() : false, point == null);
-          break;
-        case TEXT:
-          writer.write(
-              time,
-              point != null ? point.getBinary() : new Binary("".getBytes(StandardCharsets.UTF_8)),
-              point == null);
-          break;
-      }
-    }
-    write(time);
-  }
-
-  public void write(long time) {
-    valueIndex = 0;
-    timeChunkWriter.write(time);
-    if (checkPageSizeAndMayOpenANewPage()) {
-      writePageToPageBuffer();
-    }
-  }
-
-  public void writeTime(long time) {
-    timeChunkWriter.write(time);
-  }
-
-  public void write(TimeColumn timeColumn, Column[] valueColumns, int batchSize) {
-    if (remainingPointsNumber < batchSize) {
-      int pointsHasWritten = (int) remainingPointsNumber;
-      batchWrite(timeColumn, valueColumns, pointsHasWritten, 0);
-      batchWrite(timeColumn, valueColumns, batchSize - pointsHasWritten, pointsHasWritten);
-    } else {
-      batchWrite(timeColumn, valueColumns, batchSize, 0);
-    }
-  }
-
-  private void batchWrite(
-      TimeColumn timeColumn, Column[] valueColumns, int batchSize, int arrayOffset) {
-    valueIndex = 0;
-    long[] times = timeColumn.getTimes();
-
-    for (Column column : valueColumns) {
-      ValueChunkWriter chunkWriter = valueChunkWriterList.get(valueIndex++);
-      TSDataType tsDataType = chunkWriter.getDataType();
-      switch (tsDataType) {
-        case TEXT:
-          chunkWriter.write(times, column.getBinaries(), column.isNull(), batchSize, arrayOffset);
-          break;
-        case DOUBLE:
-          chunkWriter.write(times, column.getDoubles(), column.isNull(), batchSize, arrayOffset);
-          break;
-        case BOOLEAN:
-          chunkWriter.write(times, column.getBooleans(), column.isNull(), batchSize, arrayOffset);
-          break;
-        case INT64:
-          chunkWriter.write(times, column.getLongs(), column.isNull(), batchSize, arrayOffset);
-          break;
-        case INT32:
-          chunkWriter.write(times, column.getInts(), column.isNull(), batchSize, arrayOffset);
-          break;
-        case FLOAT:
-          chunkWriter.write(times, column.getFloats(), column.isNull(), batchSize, arrayOffset);
-          break;
-        default:
-          throw new UnsupportedOperationException("Unknown data type " + tsDataType);
-      }
-    }
-
-    write(times, batchSize, arrayOffset);
-  }
-
-  public void write(long[] time, int batchSize, int arrayOffset) {
-    valueIndex = 0;
-    timeChunkWriter.write(time, batchSize, arrayOffset);
-    if (checkPageSizeAndMayOpenANewPage()) {
-      writePageToPageBuffer();
-    }
-
-    remainingPointsNumber = timeChunkWriter.getRemainingPointNumberForCurrentPage();
-  }
-
-  public void writeByColumn(long time, int value, boolean isNull) {
-    valueChunkWriterList.get(valueIndex).write(time, value, isNull);
-  }
-
-  public void writeByColumn(long time, long value, boolean isNull) {
-    valueChunkWriterList.get(valueIndex).write(time, value, isNull);
-  }
-
-  public void writeByColumn(long time, boolean value, boolean isNull) {
-    valueChunkWriterList.get(valueIndex).write(time, value, isNull);
-  }
-
-  public void writeByColumn(long time, float value, boolean isNull) {
-    valueChunkWriterList.get(valueIndex).write(time, value, isNull);
-  }
-
-  public void writeByColumn(long time, double value, boolean isNull) {
-    valueChunkWriterList.get(valueIndex).write(time, value, isNull);
-  }
-
-  public void writeByColumn(long time, Binary value, boolean isNull) {
-    valueChunkWriterList.get(valueIndex).write(time, value, isNull);
-  }
-
-  public void nextColumn() {
-    valueIndex++;
-  }
-
-  /**
-   * check occupied memory size, if it exceeds the PageSize threshold, construct a page and put it
-   * to pageBuffer
-   */
-  private boolean checkPageSizeAndMayOpenANewPage() {
-    if (timeChunkWriter.checkPageSizeAndMayOpenANewPage()) {
-      return true;
-    }
-    for (ValueChunkWriter writer : valueChunkWriterList) {
-      if (writer.checkPageSizeAndMayOpenANewPage()) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  private void writePageToPageBuffer() {
-    timeChunkWriter.writePageToPageBuffer();
-    for (ValueChunkWriter valueChunkWriter : valueChunkWriterList) {
-      valueChunkWriter.writePageToPageBuffer();
-    }
-  }
-
-  public void writePageHeaderAndDataIntoTimeBuff(ByteBuffer data, PageHeader header)
-      throws PageException {
-    timeChunkWriter.writePageHeaderAndDataIntoBuff(data, header);
-  }
-
-  public void writePageHeaderAndDataIntoValueBuff(
-      ByteBuffer data, PageHeader header, int valueIndex) throws PageException {
-    valueChunkWriterList.get(valueIndex).writePageHeaderAndDataIntoBuff(data, header);
-  }
-
-  @Override
-  public void writeToFileWriter(TsFileIOWriter tsfileWriter) throws IOException {
-    timeChunkWriter.writeToFileWriter(tsfileWriter);
-    for (ValueChunkWriter valueChunkWriter : valueChunkWriterList) {
-      valueChunkWriter.writeToFileWriter(tsfileWriter);
-    }
-  }
-
-  @Override
-  public long estimateMaxSeriesMemSize() {
-    long estimateMaxSeriesMemSize = timeChunkWriter.estimateMaxSeriesMemSize();
-    for (ValueChunkWriter valueChunkWriter : valueChunkWriterList) {
-      estimateMaxSeriesMemSize += valueChunkWriter.estimateMaxSeriesMemSize();
-    }
-    return estimateMaxSeriesMemSize;
-  }
-
-  public long getSerializedChunkSize() {
-    long currentChunkSize = timeChunkWriter.getCurrentChunkSize();
-    for (ValueChunkWriter valueChunkWriter : valueChunkWriterList) {
-      currentChunkSize += valueChunkWriter.getCurrentChunkSize();
-    }
-    return currentChunkSize;
-  }
-
-  @Override
-  public void sealCurrentPage() {
-    timeChunkWriter.sealCurrentPage();
-    for (ValueChunkWriter valueChunkWriter : valueChunkWriterList) {
-      valueChunkWriter.sealCurrentPage();
-    }
-  }
-
-  public void sealCurrentTimePage() {
-    timeChunkWriter.sealCurrentPage();
-  }
-
-  public void sealCurrentValuePage(int valueIndex) {
-    valueChunkWriterList.get(valueIndex).sealCurrentPage();
-  }
-
-  @Override
-  public void clearPageWriter() {
-    timeChunkWriter.clearPageWriter();
-    for (ValueChunkWriter valueChunkWriter : valueChunkWriterList) {
-      valueChunkWriter.clearPageWriter();
-    }
-  }
-
-  @Override
-  public boolean checkIsChunkSizeOverThreshold(
-      long size, long pointNum, boolean returnTrueIfChunkEmpty) {
-    if ((returnTrueIfChunkEmpty && timeChunkWriter.getPointNum() == 0)
-        || (timeChunkWriter.getPointNum() >= pointNum
-            || timeChunkWriter.estimateMaxSeriesMemSize() >= size)) {
-      return true;
-    }
-    for (ValueChunkWriter valueChunkWriter : valueChunkWriterList) {
-      if (valueChunkWriter.estimateMaxSeriesMemSize() >= size) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  @Override
-  public boolean isEmpty() {
-    return timeChunkWriter.getPointNum() + timeChunkWriter.getPageWriter().getPointNumber() == 0;
-  }
-
-  @Override
-  public boolean checkIsUnsealedPageOverThreshold(
-      long size, long pointNum, boolean returnTrueIfPageEmpty) {
-    if ((returnTrueIfPageEmpty && timeChunkWriter.getPageWriter().getPointNumber() == 0)
-        || timeChunkWriter.checkIsUnsealedPageOverThreshold(size, pointNum)) {
-      return true;
-    }
-    for (ValueChunkWriter valueChunkWriter : valueChunkWriterList) {
-      if (valueChunkWriter.checkIsUnsealedPageOverThreshold(size)) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  public ValueChunkWriter getValueChunkWriterByIndex(int valueIndex) {
-    return valueChunkWriterList.get(valueIndex);
-  }
-
-  /** Test only */
-  public TimeChunkWriter getTimeChunkWriter() {
-    return timeChunkWriter;
-  }
-
-  /** Test only */
-  public List<ValueChunkWriter> getValueChunkWriterList() {
-    return valueChunkWriterList;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkWriterImpl.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkWriterImpl.java
deleted file mode 100644
index 013ab71..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkWriterImpl.java
+++ /dev/null
@@ -1,492 +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.write.chunk;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.compress.ICompressor;
-import org.apache.iotdb.tsfile.encoding.encoder.SDTEncoder;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.write.page.PageWriter;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.nio.channels.Channels;
-import java.nio.channels.WritableByteChannel;
-
-public class ChunkWriterImpl implements IChunkWriter {
-
-  private static final Logger logger = LoggerFactory.getLogger(ChunkWriterImpl.class);
-
-  private final IMeasurementSchema measurementSchema;
-
-  private final ICompressor compressor;
-
-  /** all pages of this chunk. */
-  private final PublicBAOS pageBuffer;
-
-  private int numOfPages;
-
-  /** write data into current page */
-  private PageWriter pageWriter;
-
-  /** page size threshold. */
-  private final long pageSizeThreshold;
-
-  private final int maxNumberOfPointsInPage;
-
-  /** value count in current page. */
-  private int valueCountInOnePageForNextCheck;
-
-  // initial value for valueCountInOnePageForNextCheck
-  private static final int MINIMUM_RECORD_COUNT_FOR_CHECK = 1500;
-
-  /** statistic of this chunk. */
-  private Statistics statistics;
-
-  /** SDT parameters */
-  private boolean isSdtEncoding;
-  // When the ChunkWriter WILL write the last data point in the chunk, set it to true to tell SDT
-  // saves the point.
-  private boolean isLastPoint;
-  // do not re-execute SDT compression when merging chunks
-  private boolean isMerging;
-  private SDTEncoder sdtEncoder;
-
-  private static final String LOSS = "loss";
-  private static final String SDT = "sdt";
-  private static final String SDT_COMP_DEV = "compdev";
-  private static final String SDT_COMP_MIN_TIME = "compmintime";
-  private static final String SDT_COMP_MAX_TIME = "compmaxtime";
-
-  /** first page info */
-  private int sizeWithoutStatistic;
-
-  private Statistics<?> firstPageStatistics;
-
-  /** @param schema schema of this measurement */
-  public ChunkWriterImpl(IMeasurementSchema schema) {
-    this.measurementSchema = schema;
-    this.compressor = ICompressor.getCompressor(schema.getCompressor());
-    this.pageBuffer = new PublicBAOS();
-
-    this.pageSizeThreshold = TSFileDescriptor.getInstance().getConfig().getPageSizeInByte();
-    this.maxNumberOfPointsInPage =
-        TSFileDescriptor.getInstance().getConfig().getMaxNumberOfPointsInPage();
-    // initial check of memory usage. So that we have enough data to make an initial prediction
-    this.valueCountInOnePageForNextCheck = MINIMUM_RECORD_COUNT_FOR_CHECK;
-
-    // init statistics for this chunk and page
-    this.statistics = Statistics.getStatsByType(measurementSchema.getType());
-
-    this.pageWriter = new PageWriter(measurementSchema);
-
-    this.pageWriter.setTimeEncoder(measurementSchema.getTimeEncoder());
-    this.pageWriter.setValueEncoder(measurementSchema.getValueEncoder());
-
-    // check if the measurement schema uses SDT
-    checkSdtEncoding();
-  }
-
-  public ChunkWriterImpl(IMeasurementSchema schema, boolean isMerging) {
-    this(schema);
-    this.isMerging = isMerging;
-  }
-
-  private void checkSdtEncoding() {
-    if (measurementSchema.getProps() != null && !isMerging) {
-      if (measurementSchema.getProps().getOrDefault(LOSS, "").equals(SDT)) {
-        isSdtEncoding = true;
-        sdtEncoder = new SDTEncoder();
-      }
-
-      if (isSdtEncoding && measurementSchema.getProps().containsKey(SDT_COMP_DEV)) {
-        sdtEncoder.setCompDeviation(
-            Double.parseDouble(measurementSchema.getProps().get(SDT_COMP_DEV)));
-      }
-
-      if (isSdtEncoding && measurementSchema.getProps().containsKey(SDT_COMP_MIN_TIME)) {
-        sdtEncoder.setCompMinTime(
-            Long.parseLong(measurementSchema.getProps().get(SDT_COMP_MIN_TIME)));
-      }
-
-      if (isSdtEncoding && measurementSchema.getProps().containsKey(SDT_COMP_MAX_TIME)) {
-        sdtEncoder.setCompMaxTime(
-            Long.parseLong(measurementSchema.getProps().get(SDT_COMP_MAX_TIME)));
-      }
-    }
-  }
-
-  public void write(long time, long value) {
-    // store last point for sdtEncoding, it still needs to go through encoding process
-    // in case it exceeds compdev and needs to store second last point
-    if (!isSdtEncoding || sdtEncoder.encodeLong(time, value)) {
-      pageWriter.write(
-          isSdtEncoding ? sdtEncoder.getTime() : time,
-          isSdtEncoding ? sdtEncoder.getLongValue() : value);
-    }
-    if (isSdtEncoding && isLastPoint) {
-      pageWriter.write(time, value);
-    }
-    checkPageSizeAndMayOpenANewPage();
-  }
-
-  public void write(long time, int value) {
-    if (!isSdtEncoding || sdtEncoder.encodeInt(time, value)) {
-      pageWriter.write(
-          isSdtEncoding ? sdtEncoder.getTime() : time,
-          isSdtEncoding ? sdtEncoder.getIntValue() : value);
-    }
-    if (isSdtEncoding && isLastPoint) {
-      pageWriter.write(time, value);
-    }
-    checkPageSizeAndMayOpenANewPage();
-  }
-
-  public void write(long time, boolean value) {
-    pageWriter.write(time, value);
-    checkPageSizeAndMayOpenANewPage();
-  }
-
-  public void write(long time, float value) {
-    if (!isSdtEncoding || sdtEncoder.encodeFloat(time, value)) {
-      pageWriter.write(
-          isSdtEncoding ? sdtEncoder.getTime() : time,
-          isSdtEncoding ? sdtEncoder.getFloatValue() : value);
-    }
-    // store last point for sdt encoding
-    if (isSdtEncoding && isLastPoint) {
-      pageWriter.write(time, value);
-    }
-    checkPageSizeAndMayOpenANewPage();
-  }
-
-  public void write(long time, double value) {
-    if (!isSdtEncoding || sdtEncoder.encodeDouble(time, value)) {
-      pageWriter.write(
-          isSdtEncoding ? sdtEncoder.getTime() : time,
-          isSdtEncoding ? sdtEncoder.getDoubleValue() : value);
-    }
-    if (isSdtEncoding && isLastPoint) {
-      pageWriter.write(time, value);
-    }
-    checkPageSizeAndMayOpenANewPage();
-  }
-
-  public void write(long time, Binary value) {
-    pageWriter.write(time, value);
-    checkPageSizeAndMayOpenANewPage();
-  }
-
-  public void write(long[] timestamps, int[] values, int batchSize) {
-    if (isSdtEncoding) {
-      batchSize = sdtEncoder.encode(timestamps, values, batchSize);
-    }
-    pageWriter.write(timestamps, values, batchSize);
-    checkPageSizeAndMayOpenANewPage();
-  }
-
-  public void write(long[] timestamps, long[] values, int batchSize) {
-    if (isSdtEncoding) {
-      batchSize = sdtEncoder.encode(timestamps, values, batchSize);
-    }
-    pageWriter.write(timestamps, values, batchSize);
-    checkPageSizeAndMayOpenANewPage();
-  }
-
-  public void write(long[] timestamps, boolean[] values, int batchSize) {
-    pageWriter.write(timestamps, values, batchSize);
-    checkPageSizeAndMayOpenANewPage();
-  }
-
-  public void write(long[] timestamps, float[] values, int batchSize) {
-    if (isSdtEncoding) {
-      batchSize = sdtEncoder.encode(timestamps, values, batchSize);
-    }
-    pageWriter.write(timestamps, values, batchSize);
-    checkPageSizeAndMayOpenANewPage();
-  }
-
-  public void write(long[] timestamps, double[] values, int batchSize) {
-    if (isSdtEncoding) {
-      batchSize = sdtEncoder.encode(timestamps, values, batchSize);
-    }
-    pageWriter.write(timestamps, values, batchSize);
-    checkPageSizeAndMayOpenANewPage();
-  }
-
-  public void write(long[] timestamps, Binary[] values, int batchSize) {
-    pageWriter.write(timestamps, values, batchSize);
-    checkPageSizeAndMayOpenANewPage();
-  }
-
-  /**
-   * check occupied memory size, if it exceeds the PageSize threshold, construct a page and put it
-   * to pageBuffer
-   */
-  private void checkPageSizeAndMayOpenANewPage() {
-    if (pageWriter.getPointNumber() == maxNumberOfPointsInPage) {
-      logger.debug("current line count reaches the upper bound, write page {}", measurementSchema);
-      writePageToPageBuffer();
-    } else if (pageWriter.getPointNumber()
-        >= valueCountInOnePageForNextCheck) { // need to check memory size
-      // not checking the memory used for every value
-      long currentPageSize = pageWriter.estimateMaxMemSize();
-      if (currentPageSize > pageSizeThreshold) { // memory size exceeds threshold
-        // we will write the current page
-        logger.debug(
-            "enough size, write page {}, pageSizeThreshold:{}, currentPateSize:{}, valueCountInOnePage:{}",
-            measurementSchema.getMeasurementId(),
-            pageSizeThreshold,
-            currentPageSize,
-            pageWriter.getPointNumber());
-        writePageToPageBuffer();
-        valueCountInOnePageForNextCheck = MINIMUM_RECORD_COUNT_FOR_CHECK;
-      } else {
-        // reset the valueCountInOnePageForNextCheck for the next page
-        valueCountInOnePageForNextCheck =
-            (int) (((float) pageSizeThreshold / currentPageSize) * pageWriter.getPointNumber());
-      }
-    }
-  }
-
-  private void writePageToPageBuffer() {
-    try {
-      if (numOfPages == 0) { // record the firstPageStatistics
-        this.firstPageStatistics = pageWriter.getStatistics();
-        this.sizeWithoutStatistic = pageWriter.writePageHeaderAndDataIntoBuff(pageBuffer, true);
-      } else if (numOfPages == 1) { // put the firstPageStatistics into pageBuffer
-        byte[] b = pageBuffer.toByteArray();
-        pageBuffer.reset();
-        pageBuffer.write(b, 0, this.sizeWithoutStatistic);
-        firstPageStatistics.serialize(pageBuffer);
-        pageBuffer.write(b, this.sizeWithoutStatistic, b.length - this.sizeWithoutStatistic);
-        pageWriter.writePageHeaderAndDataIntoBuff(pageBuffer, false);
-        firstPageStatistics = null;
-      } else {
-        pageWriter.writePageHeaderAndDataIntoBuff(pageBuffer, false);
-      }
-
-      // update statistics of this chunk
-      numOfPages++;
-      this.statistics.mergeStatistics(pageWriter.getStatistics());
-    } catch (IOException e) {
-      logger.error("meet error in pageWriter.writePageHeaderAndDataIntoBuff,ignore this page:", e);
-    } finally {
-      // clear start time stamp for next initializing
-      pageWriter.reset(measurementSchema);
-    }
-  }
-
-  @Override
-  public void writeToFileWriter(TsFileIOWriter tsfileWriter) throws IOException {
-    sealCurrentPage();
-    writeAllPagesOfChunkToTsFile(tsfileWriter, statistics);
-
-    // reinit this chunk writer
-    pageBuffer.reset();
-    numOfPages = 0;
-    sizeWithoutStatistic = 0;
-    firstPageStatistics = null;
-    this.statistics = Statistics.getStatsByType(measurementSchema.getType());
-  }
-
-  @Override
-  public long estimateMaxSeriesMemSize() {
-    return pageBuffer.size()
-        + pageWriter.estimateMaxMemSize()
-        + PageHeader.estimateMaxPageHeaderSizeWithoutStatistics()
-        + pageWriter.getStatistics().getSerializedSize();
-  }
-
-  @Override
-  public long getSerializedChunkSize() {
-    if (pageBuffer.size() == 0) {
-      return 0;
-    }
-    // return the serialized size of the chunk header + all pages
-    return ChunkHeader.getSerializedSize(measurementSchema.getMeasurementId(), pageBuffer.size())
-        + (long) pageBuffer.size();
-  }
-
-  @Override
-  public void sealCurrentPage() {
-    if (pageWriter != null && pageWriter.getPointNumber() > 0) {
-      writePageToPageBuffer();
-    }
-  }
-
-  @Override
-  public void clearPageWriter() {
-    pageWriter = null;
-  }
-
-  @Override
-  public boolean checkIsUnsealedPageOverThreshold(
-      long size, long pointNum, boolean returnTrueIfPageEmpty) {
-    if (returnTrueIfPageEmpty && pageWriter.getPointNumber() == 0) {
-      // return true if there is no unsealed page
-      return true;
-    }
-    return pageWriter.getPointNumber() >= pointNum || pageWriter.estimateMaxMemSize() >= size;
-  }
-
-  @Override
-  public boolean checkIsChunkSizeOverThreshold(
-      long size, long pointNum, boolean returnTrueIfChunkEmpty) {
-    if (returnTrueIfChunkEmpty && statistics.getCount() + pageWriter.getPointNumber() == 0) {
-      // return true if there is no unsealed chunk
-      return true;
-    }
-    return estimateMaxSeriesMemSize() >= size
-        || statistics.getCount() + pageWriter.getPointNumber() >= pointNum;
-  }
-
-  @Override
-  public boolean isEmpty() {
-    return statistics.getCount() + pageWriter.getPointNumber() == 0;
-  }
-
-  public TSDataType getDataType() {
-    return measurementSchema.getType();
-  }
-
-  /**
-   * write the page header and data into the PageWriter's output stream. @NOTE: for upgrading
-   * 0.11/v2 to 0.12/v3 TsFile
-   */
-  public void writePageHeaderAndDataIntoBuff(ByteBuffer data, PageHeader header)
-      throws PageException {
-    // write the page header to pageBuffer
-    try {
-      logger.debug(
-          "start to flush a page header into buffer, buffer position {} ", pageBuffer.size());
-      // serialize pageHeader  see writePageToPageBuffer method
-      if (numOfPages == 0) { // record the firstPageStatistics
-        this.firstPageStatistics = header.getStatistics();
-        this.sizeWithoutStatistic +=
-            ReadWriteForEncodingUtils.writeUnsignedVarInt(header.getUncompressedSize(), pageBuffer);
-        this.sizeWithoutStatistic +=
-            ReadWriteForEncodingUtils.writeUnsignedVarInt(header.getCompressedSize(), pageBuffer);
-      } else if (numOfPages == 1) { // put the firstPageStatistics into pageBuffer
-        byte[] b = pageBuffer.toByteArray();
-        pageBuffer.reset();
-        pageBuffer.write(b, 0, this.sizeWithoutStatistic);
-        firstPageStatistics.serialize(pageBuffer);
-        pageBuffer.write(b, this.sizeWithoutStatistic, b.length - this.sizeWithoutStatistic);
-        ReadWriteForEncodingUtils.writeUnsignedVarInt(header.getUncompressedSize(), pageBuffer);
-        ReadWriteForEncodingUtils.writeUnsignedVarInt(header.getCompressedSize(), pageBuffer);
-        header.getStatistics().serialize(pageBuffer);
-        firstPageStatistics = null;
-      } else {
-        ReadWriteForEncodingUtils.writeUnsignedVarInt(header.getUncompressedSize(), pageBuffer);
-        ReadWriteForEncodingUtils.writeUnsignedVarInt(header.getCompressedSize(), pageBuffer);
-        header.getStatistics().serialize(pageBuffer);
-      }
-      logger.debug(
-          "finish to flush a page header {} of {} into buffer, buffer position {} ",
-          header,
-          measurementSchema.getMeasurementId(),
-          pageBuffer.size());
-
-      statistics.mergeStatistics(header.getStatistics());
-
-    } catch (IOException e) {
-      throw new PageException("IO Exception in writeDataPageHeader,ignore this page", e);
-    }
-    numOfPages++;
-    // write page content to temp PBAOS
-    try (WritableByteChannel channel = Channels.newChannel(pageBuffer)) {
-      channel.write(data);
-    } catch (IOException e) {
-      throw new PageException(e);
-    }
-  }
-
-  /**
-   * write the page to specified IOWriter.
-   *
-   * @param writer the specified IOWriter
-   * @param statistics the chunk statistics
-   * @throws IOException exception in IO
-   */
-  private void writeAllPagesOfChunkToTsFile(
-      TsFileIOWriter writer, Statistics<? extends Serializable> statistics) throws IOException {
-    if (statistics.getCount() == 0) {
-      return;
-    }
-
-    // start to write this column chunk
-    writer.startFlushChunk(
-        measurementSchema.getMeasurementId(),
-        compressor.getType(),
-        measurementSchema.getType(),
-        measurementSchema.getEncodingType(),
-        statistics,
-        pageBuffer.size(),
-        numOfPages,
-        0);
-
-    long dataOffset = writer.getPos();
-
-    // write all pages of this column
-    writer.writeBytesToStream(pageBuffer);
-
-    int dataSize = (int) (writer.getPos() - dataOffset);
-    if (dataSize != pageBuffer.size()) {
-      throw new IOException(
-          "Bytes written is inconsistent with the size of data: "
-              + dataSize
-              + " !="
-              + " "
-              + pageBuffer.size());
-    }
-
-    writer.endCurrentChunk();
-  }
-
-  public void setIsMerging(boolean isMerging) {
-    this.isMerging = isMerging;
-  }
-
-  public boolean isMerging() {
-    return isMerging;
-  }
-
-  public void setLastPoint(boolean isLastPoint) {
-    this.isLastPoint = isLastPoint;
-  }
-
-  /** Only used for tests. */
-  public PageWriter getPageWriter() {
-    return pageWriter;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/IChunkGroupWriter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/IChunkGroupWriter.java
deleted file mode 100644
index 94bee18..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/IChunkGroupWriter.java
+++ /dev/null
@@ -1,96 +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.write.chunk;
-
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
-
-import java.io.IOException;
-import java.util.List;
-
-/**
- * A chunk group in TsFile contains several series. A ChunkGroupWriter should implement write method
- * which takes a timestamp(in TimeValue class) and a list of data points as input. It should also
- * provide flushing method for serializing to local file system or HDFS.
- */
-public interface IChunkGroupWriter {
-
-  /**
-   * receive a timestamp and a list of data points, write them to their series writers.
-   *
-   * @param time - all data points have unify time stamp.
-   * @param data - data point list to input
-   * @throws WriteProcessException exception in write process
-   * @throws IOException exception in IO
-   */
-  int write(long time, List<DataPoint> data) throws WriteProcessException, IOException;
-
-  /**
-   * receive a tablet, write it to chunk writers
-   *
-   * @throws WriteProcessException exception in write process
-   * @throws IOException exception in IO
-   */
-  int write(Tablet tablet) throws WriteProcessException, IOException;
-
-  /**
-   * flushing method for serializing to local file system or HDFS. Implemented by
-   * ChunkWriterImpl.writeToFileWriter().
-   *
-   * @param tsfileWriter - TSFileIOWriter
-   * @throws IOException exception in IO
-   * @return current ChunkGroupDataSize
-   */
-  long flushToFileWriter(TsFileIOWriter tsfileWriter) throws IOException;
-
-  /**
-   * get the max memory occupied at this time. Note that, this method should be called after running
-   * {@code long calcAllocatedSize()}
-   *
-   * @return - allocated memory size.
-   */
-  long updateMaxGroupMemSize();
-
-  /**
-   * given a measurement descriptor, create a corresponding writer and put into this
-   * ChunkGroupWriter.
-   *
-   * @param measurementSchema a measurement descriptor containing the message of the series
-   */
-  void tryToAddSeriesWriter(MeasurementSchema measurementSchema) throws IOException;
-
-  /**
-   * given a measurement descriptor list, create corresponding writers and put into this
-   * ChunkGroupWriter.
-   *
-   * @param measurementSchemas
-   */
-  void tryToAddSeriesWriter(List<MeasurementSchema> measurementSchemas) throws IOException;
-
-  /**
-   * get the serialized size of current chunkGroup header + all chunks. Notice, the value does not
-   * include any un-sealed page in the chunks.
-   *
-   * @return the serialized size of current chunkGroup header + all chunk
-   */
-  long getCurrentChunkGroupSize();
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/IChunkWriter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/IChunkWriter.java
deleted file mode 100644
index 2550172..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/IChunkWriter.java
+++ /dev/null
@@ -1,63 +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.write.chunk;
-
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
-
-import java.io.IOException;
-
-/** IChunkWriter provides a list of writing methods for different value types. */
-public interface IChunkWriter {
-
-  /** flush data to TsFileIOWriter. */
-  void writeToFileWriter(TsFileIOWriter tsfileWriter) throws IOException;
-
-  /** estimate memory usage of this series. */
-  long estimateMaxSeriesMemSize();
-
-  /**
-   * return the serialized size of the chunk header + all pages (not including the un-sealed page).
-   * Notice, call this method before calling writeToFileWriter(), otherwise the page buffer in
-   * memory will be cleared. <br>
-   * If there is no data points in the chunk, return 0 (i.e., in this case, the size of header is
-   * not calculated, because nothing will be serialized latter)</>
-   */
-  long getSerializedChunkSize();
-
-  /** seal the current page which may has not enough data points in force. */
-  void sealCurrentPage();
-
-  /** set the current pageWriter to null, friendly for gc */
-  void clearPageWriter();
-
-  /**
-   * used for compaction to check whether the chunk is over threshold or not. Return true if there
-   * is no unsealed chunk.
-   */
-  boolean checkIsChunkSizeOverThreshold(long size, long pointNum, boolean returnTrueIfChunkEmpty);
-
-  /** Return true if the chunk writer is empty */
-  boolean isEmpty();
-
-  /**
-   * used for compaction to check whether the unsealed page is over threshold or not. Return true if
-   * there is no unsealed page.
-   */
-  boolean checkIsUnsealedPageOverThreshold(long size, long pointNum, boolean returnTrueIfPageEmpty);
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java
deleted file mode 100644
index 8aa203f..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java
+++ /dev/null
@@ -1,197 +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.write.chunk;
-
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-/** a implementation of IChunkGroupWriter. */
-public class NonAlignedChunkGroupWriterImpl implements IChunkGroupWriter {
-
-  private static final Logger LOG = LoggerFactory.getLogger(NonAlignedChunkGroupWriterImpl.class);
-
-  private final IDeviceID deviceId;
-
-  /** Map(measurementID, ChunkWriterImpl). Aligned measurementId is empty. */
-  private final Map<String, ChunkWriterImpl> chunkWriters = new LinkedHashMap<>();
-
-  // measurementId -> lastTime
-  private Map<String, Long> lastTimeMap = new HashMap<>();
-
-  public NonAlignedChunkGroupWriterImpl(IDeviceID deviceId) {
-    this.deviceId = deviceId;
-  }
-
-  @Override
-  public void tryToAddSeriesWriter(MeasurementSchema schema) {
-    if (!chunkWriters.containsKey(schema.getMeasurementId())) {
-      this.chunkWriters.put(schema.getMeasurementId(), new ChunkWriterImpl(schema));
-    }
-  }
-
-  @Override
-  public void tryToAddSeriesWriter(List<MeasurementSchema> schemas) {
-    for (IMeasurementSchema schema : schemas) {
-      if (!chunkWriters.containsKey(schema.getMeasurementId())) {
-        this.chunkWriters.put(schema.getMeasurementId(), new ChunkWriterImpl(schema));
-      }
-    }
-  }
-
-  @Override
-  public int write(long time, List<DataPoint> data) throws IOException, WriteProcessException {
-    int pointCount = 0;
-    for (DataPoint point : data) {
-      checkIsHistoryData(point.getMeasurementId(), time);
-
-      if (pointCount == 0) {
-        pointCount++;
-      }
-      point.writeTo(
-          time, chunkWriters.get(point.getMeasurementId())); // write time and value to page
-      lastTimeMap.put(point.getMeasurementId(), time);
-    }
-    return pointCount;
-  }
-
-  @Override
-  public int write(Tablet tablet) throws WriteProcessException {
-    int maxPointCount = 0, pointCount;
-    List<MeasurementSchema> timeseries = tablet.getSchemas();
-    for (int column = 0; column < timeseries.size(); column++) {
-      String measurementId = timeseries.get(column).getMeasurementId();
-      TSDataType tsDataType = timeseries.get(column).getType();
-      pointCount = 0;
-      for (int row = 0; row < tablet.rowSize; row++) {
-        // check isNull in tablet
-        if (tablet.bitMaps != null
-            && tablet.bitMaps[column] != null
-            && tablet.bitMaps[column].isMarked(row)) {
-          continue;
-        }
-        long time = tablet.timestamps[row];
-        checkIsHistoryData(measurementId, time);
-        pointCount++;
-        switch (tsDataType) {
-          case INT32:
-            chunkWriters.get(measurementId).write(time, ((int[]) tablet.values[column])[row]);
-            break;
-          case INT64:
-            chunkWriters.get(measurementId).write(time, ((long[]) tablet.values[column])[row]);
-            break;
-          case FLOAT:
-            chunkWriters.get(measurementId).write(time, ((float[]) tablet.values[column])[row]);
-            break;
-          case DOUBLE:
-            chunkWriters.get(measurementId).write(time, ((double[]) tablet.values[column])[row]);
-            break;
-          case BOOLEAN:
-            chunkWriters.get(measurementId).write(time, ((boolean[]) tablet.values[column])[row]);
-            break;
-          case TEXT:
-            chunkWriters.get(measurementId).write(time, ((Binary[]) tablet.values[column])[row]);
-            break;
-          default:
-            throw new UnSupportedDataTypeException(
-                String.format("Data type %s is not supported.", tsDataType));
-        }
-        lastTimeMap.put(measurementId, time);
-      }
-      maxPointCount = Math.max(pointCount, maxPointCount);
-    }
-    return maxPointCount;
-  }
-
-  @Override
-  public long flushToFileWriter(TsFileIOWriter fileWriter) throws IOException {
-    LOG.debug("start flush device id:{}", deviceId);
-    // make sure all the pages have been compressed into buffers, so that we can get correct
-    // groupWriter.getCurrentChunkGroupSize().
-    sealAllChunks();
-    long currentChunkGroupSize = getCurrentChunkGroupSize();
-    for (IChunkWriter seriesWriter : chunkWriters.values()) {
-      seriesWriter.writeToFileWriter(fileWriter);
-    }
-    return currentChunkGroupSize;
-  }
-
-  @Override
-  public long updateMaxGroupMemSize() {
-    long bufferSize = 0;
-    for (IChunkWriter seriesWriter : chunkWriters.values()) {
-      bufferSize += seriesWriter.estimateMaxSeriesMemSize();
-    }
-    return bufferSize;
-  }
-
-  @Override
-  public long getCurrentChunkGroupSize() {
-    long size = 0;
-    for (IChunkWriter writer : chunkWriters.values()) {
-      size += writer.getSerializedChunkSize();
-    }
-    return size;
-  }
-
-  /** seal all the chunks which may has un-sealed pages in force. */
-  private void sealAllChunks() {
-    for (IChunkWriter writer : chunkWriters.values()) {
-      writer.sealCurrentPage();
-    }
-  }
-
-  private void checkIsHistoryData(String measurementId, long time) throws WriteProcessException {
-    if (time <= lastTimeMap.getOrDefault(measurementId, -1L)) {
-      throw new WriteProcessException(
-          "Not allowed to write out-of-order data in timeseries "
-              + ((PlainDeviceID) deviceId).toStringID()
-              + TsFileConstant.PATH_SEPARATOR
-              + measurementId
-              + ", time should later than "
-              + lastTimeMap.get(measurementId));
-    }
-  }
-
-  public Map<String, Long> getLastTimeMap() {
-    return this.lastTimeMap;
-  }
-
-  public void setLastTimeMap(Map<String, Long> lastTimeMap) {
-    this.lastTimeMap = lastTimeMap;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/TimeChunkWriter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/TimeChunkWriter.java
deleted file mode 100644
index 9acf84a..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/TimeChunkWriter.java
+++ /dev/null
@@ -1,325 +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.write.chunk;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.compress.ICompressor;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.file.metadata.statistics.TimeStatistics;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.write.page.TimePageWriter;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.Channels;
-import java.nio.channels.WritableByteChannel;
-
-public class TimeChunkWriter {
-
-  private static final Logger logger = LoggerFactory.getLogger(TimeChunkWriter.class);
-
-  private final String measurementId;
-
-  private final TSEncoding encodingType;
-
-  private final CompressionType compressionType;
-
-  /** all pages of this chunk. */
-  private final PublicBAOS pageBuffer;
-
-  private int numOfPages;
-
-  /** write data into current page */
-  private TimePageWriter pageWriter;
-
-  /** page size threshold. */
-  private final long pageSizeThreshold;
-
-  private final int maxNumberOfPointsInPage;
-
-  /** value count in current page. */
-  private int valueCountInOnePageForNextCheck;
-
-  // initial value for valueCountInOnePageForNextCheck
-  private static final int MINIMUM_RECORD_COUNT_FOR_CHECK = 1500;
-
-  /** statistic of this chunk. */
-  private TimeStatistics statistics;
-
-  /** first page info */
-  private int sizeWithoutStatistic;
-
-  private Statistics<?> firstPageStatistics;
-
-  public TimeChunkWriter(
-      String measurementId,
-      CompressionType compressionType,
-      TSEncoding encodingType,
-      Encoder timeEncoder) {
-    this.measurementId = measurementId;
-    this.encodingType = encodingType;
-    this.compressionType = compressionType;
-    this.pageBuffer = new PublicBAOS();
-
-    this.pageSizeThreshold = TSFileDescriptor.getInstance().getConfig().getPageSizeInByte();
-    this.maxNumberOfPointsInPage =
-        TSFileDescriptor.getInstance().getConfig().getMaxNumberOfPointsInPage();
-    // initial check of memory usage. So that we have enough data to make an initial prediction
-    this.valueCountInOnePageForNextCheck = MINIMUM_RECORD_COUNT_FOR_CHECK;
-
-    // init statistics for this chunk and page
-    this.statistics = new TimeStatistics();
-
-    this.pageWriter = new TimePageWriter(timeEncoder, ICompressor.getCompressor(compressionType));
-  }
-
-  public void write(long time) {
-    pageWriter.write(time);
-  }
-
-  public void write(long[] timestamps, int batchSize, int arrayOffset) {
-    pageWriter.write(timestamps, batchSize, arrayOffset);
-  }
-
-  /**
-   * check occupied memory size, if it exceeds the PageSize threshold, construct a page and put it
-   * to pageBuffer
-   */
-  public boolean checkPageSizeAndMayOpenANewPage() {
-    if (pageWriter.getPointNumber() >= maxNumberOfPointsInPage) {
-      logger.debug("current line count reaches the upper bound, write page {}", measurementId);
-      return true;
-    } else if (pageWriter.getPointNumber()
-        >= valueCountInOnePageForNextCheck) { // need to check memory size
-      // not checking the memory used for every value
-      long currentPageSize = pageWriter.estimateMaxMemSize();
-      if (currentPageSize > pageSizeThreshold) { // memory size exceeds threshold
-        // we will write the current page
-        logger.debug(
-            "enough size, write page {}, pageSizeThreshold:{}, currentPateSize:{}, valueCountInOnePage:{}",
-            measurementId,
-            pageSizeThreshold,
-            currentPageSize,
-            pageWriter.getPointNumber());
-        valueCountInOnePageForNextCheck = MINIMUM_RECORD_COUNT_FOR_CHECK;
-        return true;
-      } else {
-        // reset the valueCountInOnePageForNextCheck for the next page
-        valueCountInOnePageForNextCheck =
-            (int) (((float) pageSizeThreshold / currentPageSize) * pageWriter.getPointNumber());
-      }
-    }
-    return false;
-  }
-
-  public long getRemainingPointNumberForCurrentPage() {
-    return maxNumberOfPointsInPage - pageWriter.getPointNumber();
-  }
-
-  public void writePageToPageBuffer() {
-    try {
-      if (numOfPages == 0) { // record the firstPageStatistics
-        this.firstPageStatistics = pageWriter.getStatistics();
-        this.sizeWithoutStatistic = pageWriter.writePageHeaderAndDataIntoBuff(pageBuffer, true);
-      } else if (numOfPages == 1) { // put the firstPageStatistics into pageBuffer
-        byte[] b = pageBuffer.toByteArray();
-        pageBuffer.reset();
-        pageBuffer.write(b, 0, this.sizeWithoutStatistic);
-        firstPageStatistics.serialize(pageBuffer);
-        pageBuffer.write(b, this.sizeWithoutStatistic, b.length - this.sizeWithoutStatistic);
-        pageWriter.writePageHeaderAndDataIntoBuff(pageBuffer, false);
-        firstPageStatistics = null;
-      } else {
-        pageWriter.writePageHeaderAndDataIntoBuff(pageBuffer, false);
-      }
-
-      // update statistics of this chunk
-      numOfPages++;
-      this.statistics.mergeStatistics(pageWriter.getStatistics());
-    } catch (IOException e) {
-      logger.error("meet error in pageWriter.writePageHeaderAndDataIntoBuff,ignore this page:", e);
-    } finally {
-      // clear start time stamp for next initializing
-      pageWriter.reset();
-    }
-  }
-
-  public void writePageHeaderAndDataIntoBuff(ByteBuffer data, PageHeader header)
-      throws PageException {
-    // write the page header to pageBuffer
-    try {
-      logger.debug(
-          "start to flush a page header into buffer, buffer position {} ", pageBuffer.size());
-      // serialize pageHeader  see writePageToPageBuffer method
-      if (numOfPages == 0) { // record the firstPageStatistics
-        this.firstPageStatistics = header.getStatistics();
-        this.sizeWithoutStatistic +=
-            ReadWriteForEncodingUtils.writeUnsignedVarInt(header.getUncompressedSize(), pageBuffer);
-        this.sizeWithoutStatistic +=
-            ReadWriteForEncodingUtils.writeUnsignedVarInt(header.getCompressedSize(), pageBuffer);
-      } else if (numOfPages == 1) { // put the firstPageStatistics into pageBuffer
-        byte[] b = pageBuffer.toByteArray();
-        pageBuffer.reset();
-        pageBuffer.write(b, 0, this.sizeWithoutStatistic);
-        firstPageStatistics.serialize(pageBuffer);
-        pageBuffer.write(b, this.sizeWithoutStatistic, b.length - this.sizeWithoutStatistic);
-        ReadWriteForEncodingUtils.writeUnsignedVarInt(header.getUncompressedSize(), pageBuffer);
-        ReadWriteForEncodingUtils.writeUnsignedVarInt(header.getCompressedSize(), pageBuffer);
-        header.getStatistics().serialize(pageBuffer);
-        firstPageStatistics = null;
-      } else {
-        ReadWriteForEncodingUtils.writeUnsignedVarInt(header.getUncompressedSize(), pageBuffer);
-        ReadWriteForEncodingUtils.writeUnsignedVarInt(header.getCompressedSize(), pageBuffer);
-        header.getStatistics().serialize(pageBuffer);
-      }
-      logger.debug(
-          "finish to flush a page header {} of time page into buffer, buffer position {} ",
-          header,
-          pageBuffer.size());
-
-      statistics.mergeStatistics(header.getStatistics());
-
-    } catch (IOException e) {
-      throw new PageException("IO Exception in writeDataPageHeader,ignore this page", e);
-    }
-    numOfPages++;
-    // write page content to temp PBAOS
-    try (WritableByteChannel channel = Channels.newChannel(pageBuffer)) {
-      channel.write(data);
-    } catch (IOException e) {
-      throw new PageException(e);
-    }
-  }
-
-  public void writeToFileWriter(TsFileIOWriter tsfileWriter) throws IOException {
-    sealCurrentPage();
-    writeAllPagesOfChunkToTsFile(tsfileWriter);
-
-    // reinit this chunk writer
-    pageBuffer.reset();
-    numOfPages = 0;
-    sizeWithoutStatistic = 0;
-    firstPageStatistics = null;
-    this.statistics = new TimeStatistics();
-  }
-
-  public long estimateMaxSeriesMemSize() {
-    return pageBuffer.size()
-        + pageWriter.estimateMaxMemSize()
-        + PageHeader.estimateMaxPageHeaderSizeWithoutStatistics()
-        + pageWriter.getStatistics().getSerializedSize();
-  }
-
-  public long getCurrentChunkSize() {
-    if (pageBuffer.size() == 0) {
-      return 0;
-    }
-    // return the serialized size of the chunk header + all pages
-    return ChunkHeader.getSerializedSize(measurementId, pageBuffer.size())
-        + (long) pageBuffer.size();
-  }
-
-  public void sealCurrentPage() {
-    if (pageWriter != null && pageWriter.getPointNumber() > 0) {
-      writePageToPageBuffer();
-    }
-  }
-
-  public void clearPageWriter() {
-    pageWriter = null;
-  }
-
-  public int getNumOfPages() {
-    return numOfPages;
-  }
-
-  public TSDataType getDataType() {
-    return TSDataType.VECTOR;
-  }
-
-  public long getPointNum() {
-    return statistics.getCount() + pageWriter.getPointNumber();
-  }
-
-  /**
-   * write the page to specified IOWriter.
-   *
-   * @param writer the specified IOWriter
-   * @throws IOException exception in IO
-   */
-  public void writeAllPagesOfChunkToTsFile(TsFileIOWriter writer) throws IOException {
-    if (statistics.getCount() == 0) {
-      return;
-    }
-
-    // start to write this column chunk
-    writer.startFlushChunk(
-        measurementId,
-        compressionType,
-        TSDataType.VECTOR,
-        encodingType,
-        statistics,
-        pageBuffer.size(),
-        numOfPages,
-        TsFileConstant.TIME_COLUMN_MASK);
-
-    long dataOffset = writer.getPos();
-
-    // write all pages of this column
-    writer.writeBytesToStream(pageBuffer);
-
-    int dataSize = (int) (writer.getPos() - dataOffset);
-    if (dataSize != pageBuffer.size()) {
-      throw new IOException(
-          "Bytes written is inconsistent with the size of data: "
-              + dataSize
-              + " !="
-              + " "
-              + pageBuffer.size());
-    }
-
-    writer.endCurrentChunk();
-  }
-
-  /** only used for test */
-  public PublicBAOS getPageBuffer() {
-    return pageBuffer;
-  }
-
-  public TimePageWriter getPageWriter() {
-    return pageWriter;
-  }
-
-  public boolean checkIsUnsealedPageOverThreshold(long size, long pointNum) {
-    return pageWriter.getPointNumber() >= pointNum || pageWriter.estimateMaxMemSize() >= size;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ValueChunkWriter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ValueChunkWriter.java
deleted file mode 100644
index de289b9..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ValueChunkWriter.java
+++ /dev/null
@@ -1,431 +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.write.chunk;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.compress.ICompressor;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.write.page.ValuePageWriter;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.nio.channels.Channels;
-import java.nio.channels.WritableByteChannel;
-
-public class ValueChunkWriter {
-
-  private static final Logger logger = LoggerFactory.getLogger(ValueChunkWriter.class);
-
-  private final String measurementId;
-
-  private final TSEncoding encodingType;
-
-  private final TSDataType dataType;
-
-  private final CompressionType compressionType;
-
-  /** all pages of this chunk. */
-  private final PublicBAOS pageBuffer;
-
-  private int numOfPages;
-
-  /** write data into current page */
-  private ValuePageWriter pageWriter;
-
-  /** page size threshold. */
-  private final long pageSizeThreshold;
-
-  private final int maxNumberOfPointsInPage;
-
-  /** value count in current page. */
-  private int valueCountInOnePageForNextCheck;
-
-  // initial value for valueCountInOnePageForNextCheck
-  private static final int MINIMUM_RECORD_COUNT_FOR_CHECK = 1500;
-
-  /** statistic of this chunk. */
-  private Statistics<? extends Serializable> statistics;
-
-  /** first page info */
-  private int sizeWithoutStatistic;
-
-  private Statistics<?> firstPageStatistics;
-
-  public ValueChunkWriter(
-      String measurementId,
-      CompressionType compressionType,
-      TSDataType dataType,
-      TSEncoding encodingType,
-      Encoder valueEncoder) {
-    this.measurementId = measurementId;
-    this.encodingType = encodingType;
-    this.dataType = dataType;
-    this.compressionType = compressionType;
-    this.pageBuffer = new PublicBAOS();
-    this.pageSizeThreshold = TSFileDescriptor.getInstance().getConfig().getPageSizeInByte();
-    this.maxNumberOfPointsInPage =
-        TSFileDescriptor.getInstance().getConfig().getMaxNumberOfPointsInPage();
-    this.valueCountInOnePageForNextCheck = MINIMUM_RECORD_COUNT_FOR_CHECK;
-
-    // init statistics for this chunk and page
-    this.statistics = Statistics.getStatsByType(dataType);
-
-    this.pageWriter =
-        new ValuePageWriter(valueEncoder, ICompressor.getCompressor(compressionType), dataType);
-  }
-
-  public void write(long time, long value, boolean isNull) {
-    pageWriter.write(time, value, isNull);
-  }
-
-  public void write(long time, int value, boolean isNull) {
-    pageWriter.write(time, value, isNull);
-  }
-
-  public void write(long time, boolean value, boolean isNull) {
-    pageWriter.write(time, value, isNull);
-  }
-
-  public void write(long time, float value, boolean isNull) {
-    pageWriter.write(time, value, isNull);
-  }
-
-  public void write(long time, double value, boolean isNull) {
-    pageWriter.write(time, value, isNull);
-  }
-
-  public void write(long time, Binary value, boolean isNull) {
-    pageWriter.write(time, value, isNull);
-  }
-
-  public void write(long[] timestamps, int[] values, boolean[] isNull, int batchSize, int pos) {
-    pageWriter.write(timestamps, values, isNull, batchSize, pos);
-  }
-
-  public void write(long[] timestamps, long[] values, boolean[] isNull, int batchSize, int pos) {
-    pageWriter.write(timestamps, values, isNull, batchSize, pos);
-  }
-
-  public void write(long[] timestamps, boolean[] values, boolean[] isNull, int batchSize, int pos) {
-    pageWriter.write(timestamps, values, isNull, batchSize, pos);
-  }
-
-  public void write(long[] timestamps, float[] values, boolean[] isNull, int batchSize, int pos) {
-    pageWriter.write(timestamps, values, isNull, batchSize, pos);
-  }
-
-  public void write(long[] timestamps, double[] values, boolean[] isNull, int batchSize, int pos) {
-    pageWriter.write(timestamps, values, isNull, batchSize, pos);
-  }
-
-  public void write(long[] timestamps, Binary[] values, boolean[] isNull, int batchSize, int pos) {
-    pageWriter.write(timestamps, values, isNull, batchSize, pos);
-  }
-
-  public void writeEmptyPageToPageBuffer() throws IOException {
-    if (numOfPages == 1 && firstPageStatistics != null) {
-      // if the first page is not an empty page
-      byte[] b = pageBuffer.toByteArray();
-      pageBuffer.reset();
-      pageBuffer.write(b, 0, this.sizeWithoutStatistic);
-      firstPageStatistics.serialize(pageBuffer);
-      pageBuffer.write(b, this.sizeWithoutStatistic, b.length - this.sizeWithoutStatistic);
-      firstPageStatistics = null;
-    }
-    pageWriter.writeEmptyPageIntoBuff(pageBuffer);
-    numOfPages++;
-  }
-
-  public void writePageToPageBuffer() {
-    try {
-      if (numOfPages == 0) {
-        if (pageWriter.getStatistics().getCount() != 0) {
-          // record the firstPageStatistics if it is not empty page
-          this.firstPageStatistics = pageWriter.getStatistics();
-        }
-        this.sizeWithoutStatistic = pageWriter.writePageHeaderAndDataIntoBuff(pageBuffer, true);
-      } else if (numOfPages == 1) { // put the firstPageStatistics into pageBuffer
-        if (firstPageStatistics != null) { // Consider previous page is an empty page
-          byte[] b = pageBuffer.toByteArray();
-          pageBuffer.reset();
-          pageBuffer.write(b, 0, this.sizeWithoutStatistic);
-          firstPageStatistics.serialize(pageBuffer);
-          pageBuffer.write(b, this.sizeWithoutStatistic, b.length - this.sizeWithoutStatistic);
-        }
-        pageWriter.writePageHeaderAndDataIntoBuff(pageBuffer, false);
-        firstPageStatistics = null;
-      } else {
-        pageWriter.writePageHeaderAndDataIntoBuff(pageBuffer, false);
-      }
-
-      // update statistics of this chunk
-      numOfPages++;
-      this.statistics.mergeStatistics(pageWriter.getStatistics());
-    } catch (IOException e) {
-      logger.error("meet error in pageWriter.writePageHeaderAndDataIntoBuff,ignore this page:", e);
-    } finally {
-      // clear start time stamp for next initializing
-      pageWriter.reset(dataType);
-    }
-  }
-
-  public void writePageHeaderAndDataIntoBuff(ByteBuffer data, PageHeader header)
-      throws PageException {
-    // write the page header to pageBuffer
-    try {
-      logger.debug(
-          "start to flush a page header into buffer, buffer position {} ", pageBuffer.size());
-      // serialize pageHeader  see writePageToPageBuffer method
-      if (numOfPages == 0) { // record the firstPageStatistics
-
-        this.sizeWithoutStatistic +=
-            ReadWriteForEncodingUtils.writeUnsignedVarInt(header.getUncompressedSize(), pageBuffer);
-
-        if (header.getStatistics() == null) {
-          this.firstPageStatistics = null;
-        } else {
-          this.firstPageStatistics = header.getStatistics();
-          this.sizeWithoutStatistic +=
-              ReadWriteForEncodingUtils.writeUnsignedVarInt(header.getCompressedSize(), pageBuffer);
-        }
-      } else if (numOfPages == 1) { // put the firstPageStatistics into pageBuffer
-        if (firstPageStatistics != null) {
-          byte[] b = pageBuffer.toByteArray();
-          pageBuffer.reset();
-          pageBuffer.write(b, 0, this.sizeWithoutStatistic);
-          firstPageStatistics.serialize(pageBuffer);
-          pageBuffer.write(b, this.sizeWithoutStatistic, b.length - this.sizeWithoutStatistic);
-        }
-        ReadWriteForEncodingUtils.writeUnsignedVarInt(header.getUncompressedSize(), pageBuffer);
-        if (header.getUncompressedSize() != 0) {
-          ReadWriteForEncodingUtils.writeUnsignedVarInt(header.getCompressedSize(), pageBuffer);
-          header.getStatistics().serialize(pageBuffer);
-        }
-
-        firstPageStatistics = null;
-      } else {
-        ReadWriteForEncodingUtils.writeUnsignedVarInt(header.getUncompressedSize(), pageBuffer);
-        if (header.getUncompressedSize() != 0) {
-          ReadWriteForEncodingUtils.writeUnsignedVarInt(header.getCompressedSize(), pageBuffer);
-          header.getStatistics().serialize(pageBuffer);
-        }
-      }
-      logger.debug(
-          "finish to flush a page header {} of time page into buffer, buffer position {} ",
-          header,
-          pageBuffer.size());
-
-      if (header.getStatistics() != null) {
-        statistics.mergeStatistics(header.getStatistics());
-      }
-    } catch (IOException e) {
-      throw new PageException("IO Exception in writeDataPageHeader,ignore this page", e);
-    }
-    numOfPages++;
-    // write page content to temp PBAOS
-    try (WritableByteChannel channel = Channels.newChannel(pageBuffer)) {
-      channel.write(data);
-    } catch (IOException e) {
-      throw new PageException(e);
-    }
-  }
-
-  public void writeToFileWriter(TsFileIOWriter tsfileWriter) throws IOException {
-    sealCurrentPage();
-    writeAllPagesOfChunkToTsFile(tsfileWriter);
-
-    // reinit this chunk writer
-    pageBuffer.reset();
-    numOfPages = 0;
-    sizeWithoutStatistic = 0;
-    firstPageStatistics = null;
-    this.statistics = Statistics.getStatsByType(dataType);
-  }
-
-  public long estimateMaxSeriesMemSize() {
-    return pageBuffer.size()
-        + pageWriter.estimateMaxMemSize()
-        + PageHeader.estimateMaxPageHeaderSizeWithoutStatistics()
-        + pageWriter.getStatistics().getSerializedSize();
-  }
-
-  public long getCurrentChunkSize() {
-    /**
-     * It may happen if subsequent write operations are all out of order, then count of statistics
-     * in this chunk will be 0 and this chunk will not be flushed.
-     */
-    if (pageBuffer.size() == 0) {
-      return 0;
-    }
-
-    // Empty chunk, it may happen if pageBuffer stores empty bits and only chunk header will be
-    // flushed.
-    if (statistics.getCount() == 0) {
-      return ChunkHeader.getSerializedSize(measurementId, 0);
-    }
-
-    // return the serialized size of the chunk header + all pages
-    return ChunkHeader.getSerializedSize(measurementId, pageBuffer.size())
-        + (long) pageBuffer.size();
-  }
-
-  public boolean checkPageSizeAndMayOpenANewPage() {
-    if (pageWriter.getPointNumber() == maxNumberOfPointsInPage) {
-      logger.debug("current line count reaches the upper bound, write page {}", measurementId);
-      return true;
-    } else if (pageWriter.getPointNumber()
-        >= valueCountInOnePageForNextCheck) { // need to check memory size
-      // not checking the memory used for every value
-      long currentPageSize = pageWriter.estimateMaxMemSize();
-      if (currentPageSize > pageSizeThreshold) { // memory size exceeds threshold
-        // we will write the current page
-        logger.debug(
-            "enough size, write page {}, pageSizeThreshold:{}, currentPageSize:{}, valueCountInOnePage:{}",
-            measurementId,
-            pageSizeThreshold,
-            currentPageSize,
-            pageWriter.getPointNumber());
-        valueCountInOnePageForNextCheck = MINIMUM_RECORD_COUNT_FOR_CHECK;
-        return true;
-      } else {
-        // reset the valueCountInOnePageForNextCheck for the next page
-        valueCountInOnePageForNextCheck =
-            (int) (((float) pageSizeThreshold / currentPageSize) * pageWriter.getPointNumber());
-      }
-    }
-    return false;
-  }
-
-  public void sealCurrentPage() {
-    // if the page contains no points, we still need to serialize it
-    if (pageWriter != null && pageWriter.getSize() != 0) {
-      writePageToPageBuffer();
-    }
-  }
-
-  public void clearPageWriter() {
-    pageWriter = null;
-  }
-
-  public int getNumOfPages() {
-    return numOfPages;
-  }
-
-  public TSDataType getDataType() {
-    return dataType;
-  }
-
-  /**
-   * write the page to specified IOWriter.
-   *
-   * @param writer the specified IOWriter
-   * @throws IOException exception in IO
-   */
-  public void writeAllPagesOfChunkToTsFile(TsFileIOWriter writer) throws IOException {
-    if (statistics.getCount() == 0) {
-      if (pageBuffer.size() == 0) {
-        return;
-      }
-      // In order to ensure that different chunkgroups in a tsfile have the same chunks or if all
-      // data of this timeseries has been deleted, it is possible to have an empty valueChunk in a
-      // chunkGroup during compaction. To save the disk space, we only serialize chunkHeader for the
-      // empty valueChunk, whose dataSize is 0.
-      writer.startFlushChunk(
-          measurementId,
-          compressionType,
-          dataType,
-          encodingType,
-          statistics,
-          0,
-          0,
-          TsFileConstant.VALUE_COLUMN_MASK);
-      writer.endCurrentChunk();
-      return;
-    }
-
-    // start to write this column chunk
-    writer.startFlushChunk(
-        measurementId,
-        compressionType,
-        dataType,
-        encodingType,
-        statistics,
-        pageBuffer.size(),
-        numOfPages,
-        TsFileConstant.VALUE_COLUMN_MASK);
-
-    long dataOffset = writer.getPos();
-
-    // write all pages of this column
-    writer.writeBytesToStream(pageBuffer);
-
-    int dataSize = (int) (writer.getPos() - dataOffset);
-    if (dataSize != pageBuffer.size()) {
-      throw new IOException(
-          "Bytes written is inconsistent with the size of data: "
-              + dataSize
-              + " !="
-              + " "
-              + pageBuffer.size());
-    }
-
-    writer.endCurrentChunk();
-  }
-
-  public String getMeasurementId() {
-    return measurementId;
-  }
-
-  public TSEncoding getEncodingType() {
-    return encodingType;
-  }
-
-  public CompressionType getCompressionType() {
-    return compressionType;
-  }
-
-  /** only used for test */
-  public PublicBAOS getPageBuffer() {
-    return pageBuffer;
-  }
-
-  public boolean checkIsUnsealedPageOverThreshold(long size) {
-    return pageWriter.estimateMaxMemSize() >= size;
-  }
-
-  public ValuePageWriter getPageWriter() {
-    return pageWriter;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/PageWriter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/PageWriter.java
deleted file mode 100644
index 0401908..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/PageWriter.java
+++ /dev/null
@@ -1,296 +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.write.page;
-
-import org.apache.iotdb.tsfile.compress.ICompressor;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.nio.channels.Channels;
-import java.nio.channels.WritableByteChannel;
-
-/**
- * This writer is used to write time-value into a page. It consists of a time encoder, a value
- * encoder and respective OutputStream.
- */
-public class PageWriter {
-
-  private static final Logger logger = LoggerFactory.getLogger(PageWriter.class);
-
-  private ICompressor compressor;
-
-  // time
-  private Encoder timeEncoder;
-  private PublicBAOS timeOut;
-  // value
-  private Encoder valueEncoder;
-  private PublicBAOS valueOut;
-
-  /**
-   * statistic of current page. It will be reset after calling {@code
-   * writePageHeaderAndDataIntoBuff()}
-   */
-  private Statistics<? extends Serializable> statistics;
-
-  public PageWriter() {
-    this(null, null);
-  }
-
-  public PageWriter(IMeasurementSchema measurementSchema) {
-    this(measurementSchema.getTimeEncoder(), measurementSchema.getValueEncoder());
-    this.statistics = Statistics.getStatsByType(measurementSchema.getType());
-    this.compressor = ICompressor.getCompressor(measurementSchema.getCompressor());
-  }
-
-  private PageWriter(Encoder timeEncoder, Encoder valueEncoder) {
-    this.timeOut = new PublicBAOS();
-    this.valueOut = new PublicBAOS();
-    this.timeEncoder = timeEncoder;
-    this.valueEncoder = valueEncoder;
-  }
-
-  /** write a time value pair into encoder */
-  public void write(long time, boolean value) {
-    timeEncoder.encode(time, timeOut);
-    valueEncoder.encode(value, valueOut);
-    statistics.update(time, value);
-  }
-
-  /** write a time value pair into encoder */
-  public void write(long time, short value) {
-    timeEncoder.encode(time, timeOut);
-    valueEncoder.encode(value, valueOut);
-    statistics.update(time, value);
-  }
-
-  /** write a time value pair into encoder */
-  public void write(long time, int value) {
-    timeEncoder.encode(time, timeOut);
-    valueEncoder.encode(value, valueOut);
-    statistics.update(time, value);
-  }
-
-  /** write a time value pair into encoder */
-  public void write(long time, long value) {
-    timeEncoder.encode(time, timeOut);
-    valueEncoder.encode(value, valueOut);
-    statistics.update(time, value);
-  }
-
-  /** write a time value pair into encoder */
-  public void write(long time, float value) {
-    timeEncoder.encode(time, timeOut);
-    valueEncoder.encode(value, valueOut);
-    statistics.update(time, value);
-  }
-
-  /** write a time value pair into encoder */
-  public void write(long time, double value) {
-    timeEncoder.encode(time, timeOut);
-    valueEncoder.encode(value, valueOut);
-    statistics.update(time, value);
-  }
-
-  /** write a time value pair into encoder */
-  public void write(long time, Binary value) {
-    timeEncoder.encode(time, timeOut);
-    valueEncoder.encode(value, valueOut);
-    statistics.update(time, value);
-  }
-
-  /** write time series into encoder */
-  public void write(long[] timestamps, boolean[] values, int batchSize) {
-    for (int i = 0; i < batchSize; i++) {
-      timeEncoder.encode(timestamps[i], timeOut);
-      valueEncoder.encode(values[i], valueOut);
-    }
-    statistics.update(timestamps, values, batchSize);
-  }
-
-  /** write time series into encoder */
-  public void write(long[] timestamps, int[] values, int batchSize) {
-    for (int i = 0; i < batchSize; i++) {
-      timeEncoder.encode(timestamps[i], timeOut);
-      valueEncoder.encode(values[i], valueOut);
-    }
-    statistics.update(timestamps, values, batchSize);
-  }
-
-  /** write time series into encoder */
-  public void write(long[] timestamps, long[] values, int batchSize) {
-    for (int i = 0; i < batchSize; i++) {
-      timeEncoder.encode(timestamps[i], timeOut);
-      valueEncoder.encode(values[i], valueOut);
-    }
-    statistics.update(timestamps, values, batchSize);
-  }
-
-  /** write time series into encoder */
-  public void write(long[] timestamps, float[] values, int batchSize) {
-    for (int i = 0; i < batchSize; i++) {
-      timeEncoder.encode(timestamps[i], timeOut);
-      valueEncoder.encode(values[i], valueOut);
-    }
-    statistics.update(timestamps, values, batchSize);
-  }
-
-  /** write time series into encoder */
-  public void write(long[] timestamps, double[] values, int batchSize) {
-    for (int i = 0; i < batchSize; i++) {
-      timeEncoder.encode(timestamps[i], timeOut);
-      valueEncoder.encode(values[i], valueOut);
-    }
-    statistics.update(timestamps, values, batchSize);
-  }
-
-  /** write time series into encoder */
-  public void write(long[] timestamps, Binary[] values, int batchSize) {
-    for (int i = 0; i < batchSize; i++) {
-      timeEncoder.encode(timestamps[i], timeOut);
-      valueEncoder.encode(values[i], valueOut);
-    }
-    statistics.update(timestamps, values, batchSize);
-  }
-
-  /** flush all data remained in encoders. */
-  private void prepareEndWriteOnePage() throws IOException {
-    timeEncoder.flush(timeOut);
-    valueEncoder.flush(valueOut);
-  }
-
-  /**
-   * getUncompressedBytes return data what it has been written in form of <code>
-   * size of time list, time list, value list</code>
-   *
-   * @return a new readable ByteBuffer whose position is 0.
-   */
-  public ByteBuffer getUncompressedBytes() throws IOException {
-    prepareEndWriteOnePage();
-    ByteBuffer buffer = ByteBuffer.allocate(timeOut.size() + valueOut.size() + 4);
-    ReadWriteForEncodingUtils.writeUnsignedVarInt(timeOut.size(), buffer);
-    buffer.put(timeOut.getBuf(), 0, timeOut.size());
-    buffer.put(valueOut.getBuf(), 0, valueOut.size());
-    buffer.flip();
-    return buffer;
-  }
-
-  /** write the page header and data into the PageWriter's output stream. */
-  public int writePageHeaderAndDataIntoBuff(PublicBAOS pageBuffer, boolean first)
-      throws IOException {
-    if (statistics.getCount() == 0) {
-      return 0;
-    }
-
-    ByteBuffer pageData = getUncompressedBytes();
-    int uncompressedSize = pageData.remaining();
-    int compressedSize;
-    byte[] compressedBytes = null;
-
-    if (compressor.getType().equals(CompressionType.UNCOMPRESSED)) {
-      compressedSize = uncompressedSize;
-    } else if (compressor.getType().equals(CompressionType.GZIP)) {
-      compressedBytes =
-          compressor.compress(pageData.array(), pageData.position(), uncompressedSize);
-      compressedSize = compressedBytes.length;
-    } else {
-      compressedBytes = new byte[compressor.getMaxBytesForCompression(uncompressedSize)];
-      // data is never a directByteBuffer now, so we can use data.array()
-      compressedSize =
-          compressor.compress(
-              pageData.array(), pageData.position(), uncompressedSize, compressedBytes);
-    }
-
-    // write the page header to IOWriter
-    int sizeWithoutStatistic = 0;
-    if (first) {
-      sizeWithoutStatistic +=
-          ReadWriteForEncodingUtils.writeUnsignedVarInt(uncompressedSize, pageBuffer);
-      sizeWithoutStatistic +=
-          ReadWriteForEncodingUtils.writeUnsignedVarInt(compressedSize, pageBuffer);
-    } else {
-      ReadWriteForEncodingUtils.writeUnsignedVarInt(uncompressedSize, pageBuffer);
-      ReadWriteForEncodingUtils.writeUnsignedVarInt(compressedSize, pageBuffer);
-      statistics.serialize(pageBuffer);
-    }
-
-    // write page content to temp PBAOS
-    logger.trace("start to flush a page data into buffer, buffer position {} ", pageBuffer.size());
-    if (compressor.getType().equals(CompressionType.UNCOMPRESSED)) {
-      try (WritableByteChannel channel = Channels.newChannel(pageBuffer)) {
-        channel.write(pageData);
-      }
-    } else {
-      pageBuffer.write(compressedBytes, 0, compressedSize);
-    }
-    logger.trace("start to flush a page data into buffer, buffer position {} ", pageBuffer.size());
-    return sizeWithoutStatistic;
-  }
-
-  /**
-   * calculate max possible memory size it occupies, including time outputStream and value
-   * outputStream, because size outputStream is never used until flushing.
-   *
-   * @return allocated size in time, value and outputStream
-   */
-  public long estimateMaxMemSize() {
-    return timeOut.size()
-        + valueOut.size()
-        + timeEncoder.getMaxByteSize()
-        + valueEncoder.getMaxByteSize();
-  }
-
-  /** reset this page */
-  public void reset(IMeasurementSchema measurementSchema) {
-    timeOut.reset();
-    valueOut.reset();
-    statistics = Statistics.getStatsByType(measurementSchema.getType());
-  }
-
-  public void setTimeEncoder(Encoder encoder) {
-    this.timeEncoder = encoder;
-  }
-
-  public void setValueEncoder(Encoder encoder) {
-    this.valueEncoder = encoder;
-  }
-
-  public void initStatistics(TSDataType dataType) {
-    statistics = Statistics.getStatsByType(dataType);
-  }
-
-  public long getPointNumber() {
-    return statistics.getCount();
-  }
-
-  public Statistics<? extends Serializable> getStatistics() {
-    return statistics;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/TimePageWriter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/TimePageWriter.java
deleted file mode 100644
index ccaaf72..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/TimePageWriter.java
+++ /dev/null
@@ -1,183 +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.write.page;
-
-import org.apache.iotdb.tsfile.compress.ICompressor;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.TimeStatistics;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.Channels;
-import java.nio.channels.WritableByteChannel;
-
-/**
- * This writer is used to write time into a page. It consists of a time encoder and respective
- * OutputStream.
- */
-public class TimePageWriter {
-
-  private static final Logger logger = LoggerFactory.getLogger(TimePageWriter.class);
-
-  private final ICompressor compressor;
-
-  // time
-  private Encoder timeEncoder;
-  private final PublicBAOS timeOut;
-
-  /**
-   * statistic of current page. It will be reset after calling {@code
-   * writePageHeaderAndDataIntoBuff()}
-   */
-  private TimeStatistics statistics;
-
-  public TimePageWriter(Encoder timeEncoder, ICompressor compressor) {
-    this.timeOut = new PublicBAOS();
-    this.timeEncoder = timeEncoder;
-    this.statistics = new TimeStatistics();
-    this.compressor = compressor;
-  }
-
-  /** write a time into encoder */
-  public void write(long time) {
-    timeEncoder.encode(time, timeOut);
-    statistics.update(time);
-  }
-
-  /** write time series into encoder */
-  public void write(long[] timestamps, int batchSize, int arrayOffset) {
-    for (int i = arrayOffset; i < batchSize + arrayOffset; i++) {
-      timeEncoder.encode(timestamps[i], timeOut);
-    }
-    if (batchSize != 0) {
-      statistics.update(timestamps, batchSize, arrayOffset);
-    }
-  }
-
-  /** flush all data remained in encoders. */
-  private void prepareEndWriteOnePage() throws IOException {
-    timeEncoder.flush(timeOut);
-  }
-
-  /**
-   * getUncompressedBytes return data what it has been written in form of <code>
-   * size of time list, time list, value list</code>
-   *
-   * @return a new readable ByteBuffer whose position is 0.
-   */
-  public ByteBuffer getUncompressedBytes() throws IOException {
-    prepareEndWriteOnePage();
-    ByteBuffer buffer = ByteBuffer.allocate(timeOut.size());
-    buffer.put(timeOut.getBuf(), 0, timeOut.size());
-    buffer.flip();
-    return buffer;
-  }
-
-  /** write the page header and data into the PageWriter's output stream. */
-  public int writePageHeaderAndDataIntoBuff(PublicBAOS pageBuffer, boolean first)
-      throws IOException {
-    if (statistics.getCount() == 0) {
-      return 0;
-    }
-
-    ByteBuffer pageData = getUncompressedBytes();
-    int uncompressedSize = pageData.remaining();
-    int compressedSize;
-    byte[] compressedBytes = null;
-
-    if (compressor.getType().equals(CompressionType.UNCOMPRESSED)) {
-      compressedSize = uncompressedSize;
-    } else if (compressor.getType().equals(CompressionType.GZIP)) {
-      compressedBytes =
-          compressor.compress(pageData.array(), pageData.position(), uncompressedSize);
-      compressedSize = compressedBytes.length;
-    } else {
-      compressedBytes = new byte[compressor.getMaxBytesForCompression(uncompressedSize)];
-      // data is never a directByteBuffer now, so we can use data.array()
-      compressedSize =
-          compressor.compress(
-              pageData.array(), pageData.position(), uncompressedSize, compressedBytes);
-    }
-
-    // write the page header to IOWriter
-    int sizeWithoutStatistic = 0;
-    if (first) {
-      sizeWithoutStatistic +=
-          ReadWriteForEncodingUtils.writeUnsignedVarInt(uncompressedSize, pageBuffer);
-      sizeWithoutStatistic +=
-          ReadWriteForEncodingUtils.writeUnsignedVarInt(compressedSize, pageBuffer);
-    } else {
-      ReadWriteForEncodingUtils.writeUnsignedVarInt(uncompressedSize, pageBuffer);
-      ReadWriteForEncodingUtils.writeUnsignedVarInt(compressedSize, pageBuffer);
-      statistics.serialize(pageBuffer);
-    }
-
-    // write page content to temp PBAOS
-    logger.trace(
-        "start to flush a time page data into buffer, buffer position {} ", pageBuffer.size());
-    if (compressor.getType().equals(CompressionType.UNCOMPRESSED)) {
-      try (WritableByteChannel channel = Channels.newChannel(pageBuffer)) {
-        channel.write(pageData);
-      }
-    } else {
-      pageBuffer.write(compressedBytes, 0, compressedSize);
-    }
-    logger.trace(
-        "finish flushing a time page data into buffer, buffer position {} ", pageBuffer.size());
-    return sizeWithoutStatistic;
-  }
-
-  /**
-   * calculate max possible memory size it occupies, including time outputStream and value
-   * outputStream, because size outputStream is never used until flushing.
-   *
-   * @return allocated size in time, value and outputStream
-   */
-  public long estimateMaxMemSize() {
-    return timeOut.size() + timeEncoder.getMaxByteSize();
-  }
-
-  /** reset this page */
-  public void reset() {
-    timeOut.reset();
-    statistics = new TimeStatistics();
-  }
-
-  public void setTimeEncoder(Encoder encoder) {
-    this.timeEncoder = encoder;
-  }
-
-  public void initStatistics() {
-    statistics = new TimeStatistics();
-  }
-
-  public long getPointNumber() {
-    return statistics.getCount();
-  }
-
-  public TimeStatistics getStatistics() {
-    return statistics;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/ValuePageWriter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/ValuePageWriter.java
deleted file mode 100644
index 329a5c7..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/ValuePageWriter.java
+++ /dev/null
@@ -1,343 +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.write.page;
-
-import org.apache.iotdb.tsfile.compress.ICompressor;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.nio.channels.Channels;
-import java.nio.channels.WritableByteChannel;
-
-/**
- * This writer is used to write value into a page. It consists of a value encoder and respective
- * OutputStream.
- */
-public class ValuePageWriter {
-  private static final Logger logger = LoggerFactory.getLogger(ValuePageWriter.class);
-
-  private final ICompressor compressor;
-
-  // value
-  private Encoder valueEncoder;
-  private final PublicBAOS valueOut;
-
-  /**
-   * statistic of current page. It will be reset after calling {@code
-   * writePageHeaderAndDataIntoBuff()}
-   */
-  private Statistics<? extends Serializable> statistics;
-
-  private byte bitmap;
-
-  private int size;
-
-  private final PublicBAOS bitmapOut;
-
-  private static final int MASK = 1 << 7;
-
-  public ValuePageWriter(Encoder valueEncoder, ICompressor compressor, TSDataType dataType) {
-    this.valueOut = new PublicBAOS();
-    this.bitmap = 0;
-    this.size = 0;
-    this.bitmapOut = new PublicBAOS();
-    this.valueEncoder = valueEncoder;
-    this.statistics = Statistics.getStatsByType(dataType);
-    this.compressor = compressor;
-  }
-
-  /** write a time value pair into encoder */
-  public void write(long time, boolean value, boolean isNull) {
-    setBit(isNull);
-    if (!isNull) {
-      valueEncoder.encode(value, valueOut);
-      statistics.update(time, value);
-    }
-  }
-
-  /** write a time value pair into encoder */
-  public void write(long time, short value, boolean isNull) {
-    setBit(isNull);
-    if (!isNull) {
-      valueEncoder.encode(value, valueOut);
-      statistics.update(time, value);
-    }
-  }
-
-  /** write a time value pair into encoder */
-  public void write(long time, int value, boolean isNull) {
-    setBit(isNull);
-    if (!isNull) {
-      valueEncoder.encode(value, valueOut);
-      statistics.update(time, value);
-    }
-  }
-
-  /** write a time value pair into encoder */
-  public void write(long time, long value, boolean isNull) {
-    setBit(isNull);
-    if (!isNull) {
-      valueEncoder.encode(value, valueOut);
-      statistics.update(time, value);
-    }
-  }
-
-  /** write a time value pair into encoder */
-  public void write(long time, float value, boolean isNull) {
-    setBit(isNull);
-    if (!isNull) {
-      valueEncoder.encode(value, valueOut);
-      statistics.update(time, value);
-    }
-  }
-
-  /** write a time value pair into encoder */
-  public void write(long time, double value, boolean isNull) {
-    setBit(isNull);
-    if (!isNull) {
-      valueEncoder.encode(value, valueOut);
-      statistics.update(time, value);
-    }
-  }
-
-  /** write a time value pair into encoder */
-  public void write(long time, Binary value, boolean isNull) {
-    setBit(isNull);
-    if (!isNull) {
-      valueEncoder.encode(value, valueOut);
-      statistics.update(time, value);
-    }
-  }
-
-  private void setBit(boolean isNull) {
-    if (!isNull) {
-      bitmap |= (MASK >>> (size % 8));
-    }
-    size++;
-    if (size % 8 == 0) {
-      bitmapOut.write(bitmap);
-      bitmap = 0;
-    }
-  }
-
-  /** write time series into encoder */
-  public void write(
-      long[] timestamps, boolean[] values, boolean[] isNull, int batchSize, int arrayOffset) {
-    for (int i = arrayOffset; i < batchSize + arrayOffset; i++) {
-      setBit(isNull[i]);
-      if (!isNull[i]) {
-        valueEncoder.encode(values[i], valueOut);
-        statistics.update(timestamps[i], values[i]);
-      }
-    }
-  }
-
-  /** write time series into encoder */
-  public void write(
-      long[] timestamps, int[] values, boolean[] isNull, int batchSize, int arrayOffset) {
-    for (int i = arrayOffset; i < batchSize + arrayOffset; i++) {
-      setBit(isNull[i]);
-      if (!isNull[i]) {
-        valueEncoder.encode(values[i], valueOut);
-        statistics.update(timestamps[i], values[i]);
-      }
-    }
-  }
-
-  /** write time series into encoder */
-  public void write(
-      long[] timestamps, long[] values, boolean[] isNull, int batchSize, int arrayOffset) {
-    for (int i = arrayOffset; i < batchSize + arrayOffset; i++) {
-      setBit(isNull[i]);
-      if (!isNull[i]) {
-        valueEncoder.encode(values[i], valueOut);
-        statistics.update(timestamps[i], values[i]);
-      }
-    }
-  }
-
-  /** write time series into encoder */
-  public void write(
-      long[] timestamps, float[] values, boolean[] isNull, int batchSize, int arrayOffset) {
-    for (int i = arrayOffset; i < batchSize + arrayOffset; i++) {
-      setBit(isNull[i]);
-      if (!isNull[i]) {
-        valueEncoder.encode(values[i], valueOut);
-        statistics.update(timestamps[i], values[i]);
-      }
-    }
-  }
-
-  /** write time series into encoder */
-  public void write(
-      long[] timestamps, double[] values, boolean[] isNull, int batchSize, int arrayOffset) {
-    for (int i = arrayOffset; i < batchSize + arrayOffset; i++) {
-      setBit(isNull[i]);
-      if (!isNull[i]) {
-        valueEncoder.encode(values[i], valueOut);
-        statistics.update(timestamps[i], values[i]);
-      }
-    }
-  }
-
-  /** write time series into encoder */
-  public void write(
-      long[] timestamps, Binary[] values, boolean[] isNull, int batchSize, int arrayOffset) {
-    for (int i = arrayOffset; i < batchSize + arrayOffset; i++) {
-      setBit(isNull[i]);
-      if (!isNull[i]) {
-        valueEncoder.encode(values[i], valueOut);
-        statistics.update(timestamps[i], values[i]);
-      }
-    }
-  }
-
-  /** flush all data remained in encoders. */
-  private void prepareEndWriteOnePage() throws IOException {
-    valueEncoder.flush(valueOut);
-    if (size % 8 != 0) {
-      bitmapOut.write(bitmap);
-    }
-  }
-
-  /**
-   * getUncompressedBytes return data what it has been written in form of <code>
-   * size of time list, time list, value list</code>
-   *
-   * @return a new readable ByteBuffer whose position is 0.
-   */
-  public ByteBuffer getUncompressedBytes() throws IOException {
-    prepareEndWriteOnePage();
-    ByteBuffer buffer = ByteBuffer.allocate(Integer.BYTES + bitmapOut.size() + valueOut.size());
-    buffer.putInt(size);
-    buffer.put(bitmapOut.getBuf(), 0, bitmapOut.size());
-    buffer.put(valueOut.getBuf(), 0, valueOut.size());
-    buffer.flip();
-    return buffer;
-  }
-
-  public int writeEmptyPageIntoBuff(PublicBAOS pageBuffer) {
-    return ReadWriteForEncodingUtils.writeUnsignedVarInt(0, pageBuffer);
-  }
-
-  /** write the page header and data into the PageWriter's output stream. */
-  public int writePageHeaderAndDataIntoBuff(PublicBAOS pageBuffer, boolean first)
-      throws IOException {
-    if (size == 0) {
-      return 0;
-    } else if (statistics.getCount() == 0) {
-      // this page is full of null point data
-      return writeEmptyPageIntoBuff(pageBuffer);
-    }
-
-    ByteBuffer pageData = getUncompressedBytes();
-    int uncompressedSize = pageData.remaining();
-    int compressedSize;
-    byte[] compressedBytes = null;
-
-    if (compressor.getType().equals(CompressionType.UNCOMPRESSED)) {
-      compressedSize = uncompressedSize;
-    } else if (compressor.getType().equals(CompressionType.GZIP)) {
-      compressedBytes =
-          compressor.compress(pageData.array(), pageData.position(), uncompressedSize);
-      compressedSize = compressedBytes.length;
-    } else {
-      compressedBytes = new byte[compressor.getMaxBytesForCompression(uncompressedSize)];
-      // data is never a directByteBuffer now, so we can use data.array()
-      compressedSize =
-          compressor.compress(
-              pageData.array(), pageData.position(), uncompressedSize, compressedBytes);
-    }
-
-    // write the page header to IOWriter
-    int sizeWithoutStatistic = 0;
-    if (first) {
-      sizeWithoutStatistic +=
-          ReadWriteForEncodingUtils.writeUnsignedVarInt(uncompressedSize, pageBuffer);
-      sizeWithoutStatistic +=
-          ReadWriteForEncodingUtils.writeUnsignedVarInt(compressedSize, pageBuffer);
-    } else {
-      ReadWriteForEncodingUtils.writeUnsignedVarInt(uncompressedSize, pageBuffer);
-      ReadWriteForEncodingUtils.writeUnsignedVarInt(compressedSize, pageBuffer);
-      statistics.serialize(pageBuffer);
-    }
-
-    // write page content to temp PBAOS
-    logger.trace("start to flush a page data into buffer, buffer position {} ", pageBuffer.size());
-    if (compressor.getType().equals(CompressionType.UNCOMPRESSED)) {
-      try (WritableByteChannel channel = Channels.newChannel(pageBuffer)) {
-        channel.write(pageData);
-      }
-    } else {
-      pageBuffer.write(compressedBytes, 0, compressedSize);
-    }
-    logger.trace("start to flush a page data into buffer, buffer position {} ", pageBuffer.size());
-    return sizeWithoutStatistic;
-  }
-
-  /**
-   * calculate max possible memory size it occupies, including time outputStream and value
-   * outputStream, because size outputStream is never used until flushing.
-   *
-   * @return allocated size in time, value and outputStream
-   */
-  public long estimateMaxMemSize() {
-    return Integer.BYTES + bitmapOut.size() + 1 + valueOut.size() + valueEncoder.getMaxByteSize();
-  }
-
-  /** reset this page */
-  public void reset(TSDataType dataType) {
-    bitmapOut.reset();
-    size = 0;
-    bitmap = 0;
-    valueOut.reset();
-    statistics = Statistics.getStatsByType(dataType);
-  }
-
-  public void setValueEncoder(Encoder encoder) {
-    this.valueEncoder = encoder;
-  }
-
-  public void initStatistics(TSDataType dataType) {
-    statistics = Statistics.getStatsByType(dataType);
-  }
-
-  public long getPointNumber() {
-    return statistics.getCount();
-  }
-
-  public Statistics<? extends Serializable> getStatistics() {
-    return statistics;
-  }
-
-  public int getSize() {
-    return size;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/TSRecord.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/TSRecord.java
deleted file mode 100644
index cf73f1c..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/TSRecord.java
+++ /dev/null
@@ -1,89 +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.write.record;
-
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.utils.StringContainer;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * TSRecord is a kind of format that TsFile receives.TSRecord contains timestamp, deviceId and a
- * list of data points.
- */
-public class TSRecord {
-
-  /** timestamp of this TSRecord. */
-  public long time;
-  /** deviceId of this TSRecord. */
-  public String deviceId;
-  /** all value of this TSRecord. */
-  public List<DataPoint> dataPointList = new ArrayList<>();
-
-  /**
-   * constructor of TSRecord.
-   *
-   * @param timestamp timestamp of this TSRecord
-   * @param deviceId deviceId of this TSRecord
-   */
-  public TSRecord(long timestamp, String deviceId) {
-    this.time = timestamp;
-    this.deviceId = deviceId;
-  }
-
-  public TSRecord(long timestamp, IDeviceID deviceId) {
-    this.time = timestamp;
-    this.deviceId = ((PlainDeviceID) deviceId).toStringID();
-  }
-
-  public void setTime(long timestamp) {
-    this.time = timestamp;
-  }
-
-  /**
-   * add one data point to this TSRecord.
-   *
-   * @param tuple data point to be added
-   */
-  public TSRecord addTuple(DataPoint tuple) {
-    this.dataPointList.add(tuple);
-    return this;
-  }
-
-  /**
-   * output this TSRecord in String format.For example: {device id: d1 time: 123456 ,data:[
-   * {measurement id: s1 type:INT32 value: 1 } {measurement id: s2 type: FLOAT value: 11.11 }
-   * {measurement id: s3 type: BOOLEAN value: true }]}
-   *
-   * @return the String format of this TSRecord
-   */
-  @Override
-  public String toString() {
-    StringContainer sc = new StringContainer(" ");
-    sc.addTail("{device id:", deviceId, "time:", time, ",data:[");
-    for (DataPoint tuple : dataPointList) {
-      sc.addTail(tuple);
-    }
-    sc.addTail("]}");
-    return sc.toString();
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/Tablet.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/Tablet.java
deleted file mode 100644
index 220059d..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/Tablet.java
+++ /dev/null
@@ -1,794 +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.write.record;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * A tablet data of one device, the tablet contains multiple measurements of this device that share
- * the same time column.
- *
- * <p>for example: device root.sg1.d1
- *
- * <p>time, m1, m2, m3 1, 1, 2, 3 2, 1, 2, 3 3, 1, 2, 3
- *
- * <p>Notice: The tablet should not have empty cell, please use BitMap to denote null value
- */
-public class Tablet {
-
-  private static final int DEFAULT_SIZE = 1024;
-  private static final String NOT_SUPPORT_DATATYPE = "Data type %s is not supported.";
-
-  /** DeviceId of this {@link Tablet} */
-  public String deviceId;
-
-  /** The list of {@link MeasurementSchema}s for creating the {@link Tablet} */
-  private List<MeasurementSchema> schemas;
-
-  /** MeasurementId->indexOf({@link MeasurementSchema}) */
-  private final Map<String, Integer> measurementIndex;
-
-  /** Timestamps in this {@link Tablet} */
-  public long[] timestamps;
-  /** Each object is a primitive type array, which represents values of one measurement */
-  public Object[] values;
-  /** Each {@link BitMap} represents the existence of each value in the current column. */
-  public BitMap[] bitMaps;
-  /** The number of rows to include in this {@link Tablet} */
-  public int rowSize;
-  /** The maximum number of rows for this {@link Tablet} */
-  private final int maxRowNumber;
-
-  /**
-   * Return a {@link Tablet} with default specified row number. This is the standard constructor
-   * (all Tablet should be the same size).
-   *
-   * @param deviceId the name of the device specified to be written in
-   * @param schemas the list of {@link MeasurementSchema}s for creating the tablet, only
-   *     measurementId and type take effects
-   */
-  public Tablet(String deviceId, List<MeasurementSchema> schemas) {
-    this(deviceId, schemas, DEFAULT_SIZE);
-  }
-
-  /**
-   * Return a {@link Tablet} with the specified number of rows (maxBatchSize). Only call this
-   * constructor directly for testing purposes. {@link Tablet} should normally always be default
-   * size.
-   *
-   * @param deviceId the name of the device specified to be written in
-   * @param schemas the list of {@link MeasurementSchema}s for creating the row batch, only
-   *     measurementId and type take effects
-   * @param maxRowNumber the maximum number of rows for this tablet
-   */
-  public Tablet(String deviceId, List<MeasurementSchema> schemas, int maxRowNumber) {
-    this.deviceId = deviceId;
-    this.schemas = new ArrayList<>(schemas);
-    this.maxRowNumber = maxRowNumber;
-    measurementIndex = new HashMap<>();
-    constructMeasurementIndexMap();
-
-    createColumns();
-
-    reset();
-  }
-
-  /**
-   * Return a {@link Tablet} with specified timestamps and values. Only call this constructor
-   * directly for Trigger.
-   *
-   * @param deviceId the name of the device specified to be written in
-   * @param schemas the list of {@link MeasurementSchema}s for creating the row batch, only
-   *     measurementId and type take effects
-   * @param timestamps given timestamps
-   * @param values given values
-   * @param bitMaps given {@link BitMap}s
-   * @param maxRowNumber the maximum number of rows for this {@link Tablet}
-   */
-  public Tablet(
-      String deviceId,
-      List<MeasurementSchema> schemas,
-      long[] timestamps,
-      Object[] values,
-      BitMap[] bitMaps,
-      int maxRowNumber) {
-    this.deviceId = deviceId;
-    this.schemas = schemas;
-    this.timestamps = timestamps;
-    this.values = values;
-    this.bitMaps = bitMaps;
-    this.maxRowNumber = maxRowNumber;
-    // rowSize == maxRowNumber in this case
-    this.rowSize = maxRowNumber;
-    measurementIndex = new HashMap<>();
-    constructMeasurementIndexMap();
-  }
-
-  private void constructMeasurementIndexMap() {
-    int indexInSchema = 0;
-    for (MeasurementSchema schema : schemas) {
-      measurementIndex.put(schema.getMeasurementId(), indexInSchema);
-      indexInSchema++;
-    }
-  }
-
-  public void setDeviceId(String deviceId) {
-    this.deviceId = deviceId;
-  }
-
-  public void setSchemas(List<MeasurementSchema> schemas) {
-    this.schemas = schemas;
-  }
-
-  public void initBitMaps() {
-    this.bitMaps = new BitMap[schemas.size()];
-    for (int column = 0; column < schemas.size(); column++) {
-      this.bitMaps[column] = new BitMap(getMaxRowNumber());
-    }
-  }
-
-  public void addTimestamp(int rowIndex, long timestamp) {
-    timestamps[rowIndex] = timestamp;
-  }
-
-  public void addValue(String measurementId, int rowIndex, Object value) {
-    int indexOfSchema = measurementIndex.get(measurementId);
-    MeasurementSchema measurementSchema = schemas.get(indexOfSchema);
-    addValueOfDataType(measurementSchema.getType(), rowIndex, indexOfSchema, value);
-  }
-
-  private void addValueOfDataType(
-      TSDataType dataType, int rowIndex, int indexOfSchema, Object value) {
-
-    if (value == null) {
-      // Init the bitMap to mark null value
-      if (bitMaps == null) {
-        bitMaps = new BitMap[values.length];
-      }
-      if (bitMaps[indexOfSchema] == null) {
-        bitMaps[indexOfSchema] = new BitMap(maxRowNumber);
-      }
-      // Mark the null value position
-      bitMaps[indexOfSchema].mark(rowIndex);
-    }
-    switch (dataType) {
-      case TEXT:
-        {
-          Binary[] sensor = (Binary[]) values[indexOfSchema];
-          if (value instanceof Binary) {
-            sensor[rowIndex] = (Binary) value;
-          } else {
-            sensor[rowIndex] =
-                value != null
-                    ? new Binary((String) value, TSFileConfig.STRING_CHARSET)
-                    : Binary.EMPTY_VALUE;
-          }
-          break;
-        }
-      case FLOAT:
-        {
-          float[] sensor = (float[]) values[indexOfSchema];
-          sensor[rowIndex] = value != null ? (float) value : Float.MIN_VALUE;
-          break;
-        }
-      case INT32:
-        {
-          int[] sensor = (int[]) values[indexOfSchema];
-          sensor[rowIndex] = value != null ? (int) value : Integer.MIN_VALUE;
-          break;
-        }
-      case INT64:
-        {
-          long[] sensor = (long[]) values[indexOfSchema];
-          sensor[rowIndex] = value != null ? (long) value : Long.MIN_VALUE;
-          break;
-        }
-      case DOUBLE:
-        {
-          double[] sensor = (double[]) values[indexOfSchema];
-          sensor[rowIndex] = value != null ? (double) value : Double.MIN_VALUE;
-          break;
-        }
-      case BOOLEAN:
-        {
-          boolean[] sensor = (boolean[]) values[indexOfSchema];
-          sensor[rowIndex] = value != null && (boolean) value;
-          break;
-        }
-      default:
-        throw new UnSupportedDataTypeException(String.format(NOT_SUPPORT_DATATYPE, dataType));
-    }
-  }
-
-  public List<MeasurementSchema> getSchemas() {
-    return schemas;
-  }
-
-  /** Return the maximum number of rows for this tablet */
-  public int getMaxRowNumber() {
-    return maxRowNumber;
-  }
-
-  /** Reset Tablet to the default state - set the rowSize to 0 and reset bitMaps */
-  public void reset() {
-    rowSize = 0;
-    if (bitMaps != null) {
-      for (BitMap bitMap : bitMaps) {
-        if (bitMap != null) {
-          bitMap.reset();
-        }
-      }
-    }
-  }
-
-  private void createColumns() {
-    // create timestamp column
-    timestamps = new long[maxRowNumber];
-
-    // calculate total value column size
-    int valueColumnsSize = schemas.size();
-
-    // value column
-    values = new Object[valueColumnsSize];
-    int columnIndex = 0;
-    for (MeasurementSchema schema : schemas) {
-      TSDataType dataType = schema.getType();
-      values[columnIndex] = createValueColumnOfDataType(dataType);
-      columnIndex++;
-    }
-  }
-
-  private Object createValueColumnOfDataType(TSDataType dataType) {
-
-    Object valueColumn;
-    switch (dataType) {
-      case INT32:
-        valueColumn = new int[maxRowNumber];
-        break;
-      case INT64:
-        valueColumn = new long[maxRowNumber];
-        break;
-      case FLOAT:
-        valueColumn = new float[maxRowNumber];
-        break;
-      case DOUBLE:
-        valueColumn = new double[maxRowNumber];
-        break;
-      case BOOLEAN:
-        valueColumn = new boolean[maxRowNumber];
-        break;
-      case TEXT:
-        valueColumn = new Binary[maxRowNumber];
-        break;
-      default:
-        throw new UnSupportedDataTypeException(String.format(NOT_SUPPORT_DATATYPE, dataType));
-    }
-    return valueColumn;
-  }
-
-  public int getTimeBytesSize() {
-    return rowSize * 8;
-  }
-
-  /** @return Total bytes of values */
-  public int getTotalValueOccupation() {
-    int valueOccupation = 0;
-    int columnIndex = 0;
-    for (MeasurementSchema schema : schemas) {
-      valueOccupation += calOccupationOfOneColumn(schema.getType(), columnIndex);
-      columnIndex++;
-    }
-    // Add bitmap size if the tablet has bitMaps
-    if (bitMaps != null) {
-      for (BitMap bitMap : bitMaps) {
-        // Marker byte
-        valueOccupation++;
-        if (bitMap != null && !bitMap.isAllUnmarked()) {
-          valueOccupation += rowSize / Byte.SIZE + 1;
-        }
-      }
-    }
-    return valueOccupation;
-  }
-
-  private int calOccupationOfOneColumn(TSDataType dataType, int columnIndex) {
-    int valueOccupation = 0;
-    switch (dataType) {
-      case BOOLEAN:
-        valueOccupation += rowSize;
-        break;
-      case INT32:
-      case FLOAT:
-        valueOccupation += rowSize * 4;
-        break;
-      case INT64:
-      case DOUBLE:
-        valueOccupation += rowSize * 8;
-        break;
-      case TEXT:
-        valueOccupation += rowSize * 4;
-        Binary[] binaries = (Binary[]) values[columnIndex];
-        for (int rowIndex = 0; rowIndex < rowSize; rowIndex++) {
-          valueOccupation += binaries[rowIndex].getLength();
-        }
-        break;
-      default:
-        throw new UnSupportedDataTypeException(String.format(NOT_SUPPORT_DATATYPE, dataType));
-    }
-    return valueOccupation;
-  }
-
-  /** Serialize {@link Tablet} */
-  public ByteBuffer serialize() throws IOException {
-    try (PublicBAOS byteArrayOutputStream = new PublicBAOS();
-        DataOutputStream outputStream = new DataOutputStream(byteArrayOutputStream)) {
-      serialize(outputStream);
-      return ByteBuffer.wrap(byteArrayOutputStream.getBuf(), 0, byteArrayOutputStream.size());
-    }
-  }
-
-  public void serialize(DataOutputStream stream) throws IOException {
-    ReadWriteIOUtils.write(deviceId, stream);
-    ReadWriteIOUtils.write(rowSize, stream);
-    writeMeasurementSchemas(stream);
-    writeTimes(stream);
-    writeBitMaps(stream);
-    writeValues(stream);
-  }
-
-  /** Serialize {@link MeasurementSchema}s */
-  private void writeMeasurementSchemas(DataOutputStream stream) throws IOException {
-    ReadWriteIOUtils.write(BytesUtils.boolToByte(schemas != null), stream);
-    if (schemas != null) {
-      ReadWriteIOUtils.write(schemas.size(), stream);
-      for (MeasurementSchema schema : schemas) {
-        if (schema == null) {
-          ReadWriteIOUtils.write(BytesUtils.boolToByte(false), stream);
-        } else {
-          ReadWriteIOUtils.write(BytesUtils.boolToByte(true), stream);
-          schema.serializeTo(stream);
-        }
-      }
-    }
-  }
-
-  private void writeTimes(DataOutputStream stream) throws IOException {
-    ReadWriteIOUtils.write(BytesUtils.boolToByte(timestamps != null), stream);
-    if (timestamps != null) {
-      for (int i = 0; i < rowSize; i++) {
-        ReadWriteIOUtils.write(timestamps[i], stream);
-      }
-    }
-  }
-
-  /** Serialize {@link BitMap}s */
-  private void writeBitMaps(DataOutputStream stream) throws IOException {
-    ReadWriteIOUtils.write(BytesUtils.boolToByte(bitMaps != null), stream);
-    if (bitMaps != null) {
-      int size = (schemas == null ? 0 : schemas.size());
-      for (int i = 0; i < size; i++) {
-        if (bitMaps[i] == null) {
-          ReadWriteIOUtils.write(BytesUtils.boolToByte(false), stream);
-        } else {
-          ReadWriteIOUtils.write(BytesUtils.boolToByte(true), stream);
-          ReadWriteIOUtils.write(bitMaps[i].getSize(), stream);
-          ReadWriteIOUtils.write(new Binary(bitMaps[i].getByteArray()), stream);
-        }
-      }
-    }
-  }
-
-  /** Serialize values */
-  private void writeValues(DataOutputStream stream) throws IOException {
-    ReadWriteIOUtils.write(BytesUtils.boolToByte(values != null), stream);
-    if (values != null) {
-      int size = (schemas == null ? 0 : schemas.size());
-      for (int i = 0; i < size; i++) {
-        serializeColumn(schemas.get(i).getType(), values[i], stream);
-      }
-    }
-  }
-
-  private void serializeColumn(TSDataType dataType, Object column, DataOutputStream stream)
-      throws IOException {
-    ReadWriteIOUtils.write(BytesUtils.boolToByte(column != null), stream);
-
-    if (column != null) {
-      switch (dataType) {
-        case INT32:
-          int[] intValues = (int[]) column;
-          for (int j = 0; j < rowSize; j++) {
-            ReadWriteIOUtils.write(intValues[j], stream);
-          }
-          break;
-        case INT64:
-          long[] longValues = (long[]) column;
-          for (int j = 0; j < rowSize; j++) {
-            ReadWriteIOUtils.write(longValues[j], stream);
-          }
-          break;
-        case FLOAT:
-          float[] floatValues = (float[]) column;
-          for (int j = 0; j < rowSize; j++) {
-            ReadWriteIOUtils.write(floatValues[j], stream);
-          }
-          break;
-        case DOUBLE:
-          double[] doubleValues = (double[]) column;
-          for (int j = 0; j < rowSize; j++) {
-            ReadWriteIOUtils.write(doubleValues[j], stream);
-          }
-          break;
-        case BOOLEAN:
-          boolean[] boolValues = (boolean[]) column;
-          for (int j = 0; j < rowSize; j++) {
-            ReadWriteIOUtils.write(BytesUtils.boolToByte(boolValues[j]), stream);
-          }
-          break;
-        case TEXT:
-          Binary[] binaryValues = (Binary[]) column;
-          for (int j = 0; j < rowSize; j++) {
-            ReadWriteIOUtils.write(BytesUtils.boolToByte(binaryValues[j] != null), stream);
-            if (binaryValues[j] != null) {
-              ReadWriteIOUtils.write(binaryValues[j], stream);
-            }
-          }
-          break;
-        default:
-          throw new UnSupportedDataTypeException(
-              String.format("Data type %s is not supported.", dataType));
-      }
-    }
-  }
-
-  /** Deserialize Tablet */
-  public static Tablet deserialize(ByteBuffer byteBuffer) {
-    String deviceId = ReadWriteIOUtils.readString(byteBuffer);
-    int rowSize = ReadWriteIOUtils.readInt(byteBuffer);
-
-    // deserialize schemas
-    int schemaSize = 0;
-    List<MeasurementSchema> schemas = new ArrayList<>();
-    boolean isSchemasNotNull = BytesUtils.byteToBool(ReadWriteIOUtils.readByte(byteBuffer));
-    if (isSchemasNotNull) {
-      schemaSize = ReadWriteIOUtils.readInt(byteBuffer);
-      for (int i = 0; i < schemaSize; i++) {
-        boolean hasSchema = BytesUtils.byteToBool(ReadWriteIOUtils.readByte(byteBuffer));
-        if (hasSchema) {
-          schemas.add(MeasurementSchema.deserializeFrom(byteBuffer));
-        }
-      }
-    }
-
-    // deserialize times
-    long[] times = new long[rowSize];
-    boolean isTimesNotNull = BytesUtils.byteToBool(ReadWriteIOUtils.readByte(byteBuffer));
-    if (isTimesNotNull) {
-      for (int i = 0; i < rowSize; i++) {
-        times[i] = ReadWriteIOUtils.readLong(byteBuffer);
-      }
-    }
-
-    // deserialize bitmaps
-    BitMap[] bitMaps = new BitMap[schemaSize];
-    boolean isBitMapsNotNull = BytesUtils.byteToBool(ReadWriteIOUtils.readByte(byteBuffer));
-    if (isBitMapsNotNull) {
-      bitMaps = readBitMapsFromBuffer(byteBuffer, schemaSize);
-    }
-
-    // deserialize values
-    TSDataType[] dataTypes =
-        schemas.stream().map(MeasurementSchema::getType).toArray(TSDataType[]::new);
-    Object[] values = new Object[schemaSize];
-    boolean isValuesNotNull = BytesUtils.byteToBool(ReadWriteIOUtils.readByte(byteBuffer));
-    if (isValuesNotNull) {
-      values = readTabletValuesFromBuffer(byteBuffer, dataTypes, schemaSize, rowSize);
-    }
-
-    Tablet tablet = new Tablet(deviceId, schemas, times, values, bitMaps, rowSize);
-    tablet.constructMeasurementIndexMap();
-    return tablet;
-  }
-
-  /** deserialize bitmaps */
-  public static BitMap[] readBitMapsFromBuffer(ByteBuffer byteBuffer, int columns) {
-    BitMap[] bitMaps = new BitMap[columns];
-    for (int i = 0; i < columns; i++) {
-      boolean hasBitMap = BytesUtils.byteToBool(ReadWriteIOUtils.readByte(byteBuffer));
-      if (hasBitMap) {
-        final int size = ReadWriteIOUtils.readInt(byteBuffer);
-        final Binary valueBinary = ReadWriteIOUtils.readBinary(byteBuffer);
-        bitMaps[i] = new BitMap(size, valueBinary.getValues());
-      }
-    }
-    return bitMaps;
-  }
-
-  /**
-   * @param byteBuffer data values
-   * @param columns column number
-   */
-  @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning
-  public static Object[] readTabletValuesFromBuffer(
-      ByteBuffer byteBuffer, TSDataType[] types, int columns, int rowSize) {
-    Object[] values = new Object[columns];
-    for (int i = 0; i < columns; i++) {
-      boolean isValueColumnsNotNull = BytesUtils.byteToBool(ReadWriteIOUtils.readByte(byteBuffer));
-
-      if (isValueColumnsNotNull) {
-        switch (types[i]) {
-          case BOOLEAN:
-            boolean[] boolValues = new boolean[rowSize];
-            for (int index = 0; index < rowSize; index++) {
-              boolValues[index] = BytesUtils.byteToBool(ReadWriteIOUtils.readByte(byteBuffer));
-            }
-            values[i] = boolValues;
-            break;
-          case INT32:
-            int[] intValues = new int[rowSize];
-            for (int index = 0; index < rowSize; index++) {
-              intValues[index] = ReadWriteIOUtils.readInt(byteBuffer);
-            }
-            values[i] = intValues;
-            break;
-          case INT64:
-            long[] longValues = new long[rowSize];
-            for (int index = 0; index < rowSize; index++) {
-              longValues[index] = ReadWriteIOUtils.readLong(byteBuffer);
-            }
-            values[i] = longValues;
-            break;
-          case FLOAT:
-            float[] floatValues = new float[rowSize];
-            for (int index = 0; index < rowSize; index++) {
-              floatValues[index] = ReadWriteIOUtils.readFloat(byteBuffer);
-            }
-            values[i] = floatValues;
-            break;
-          case DOUBLE:
-            double[] doubleValues = new double[rowSize];
-            for (int index = 0; index < rowSize; index++) {
-              doubleValues[index] = ReadWriteIOUtils.readDouble(byteBuffer);
-            }
-            values[i] = doubleValues;
-            break;
-          case TEXT:
-            Binary[] binaryValues = new Binary[rowSize];
-            for (int index = 0; index < rowSize; index++) {
-              boolean isNotNull = BytesUtils.byteToBool(ReadWriteIOUtils.readByte(byteBuffer));
-              if (isNotNull) {
-                binaryValues[index] = ReadWriteIOUtils.readBinary(byteBuffer);
-              } else {
-                binaryValues[index] = Binary.EMPTY_VALUE;
-              }
-            }
-            values[i] = binaryValues;
-            break;
-          default:
-            throw new UnSupportedDataTypeException(
-                String.format(
-                    "data type %s is not supported when convert data at client", types[i]));
-        }
-      }
-    }
-    return values;
-  }
-
-  /**
-   * Note that the function will judge 2 {@link Tablet}s to be equal when their contents are logically the
-   * same. Namely, a {@link Tablet} with {@link BitMap} "null" may be equal to another {@link Tablet} with 3 columns and
-   * {@link BitMap "[null, null, null]", and a {@link Tablet} with rowSize 2 is judged identical to other {@link Tablet}s
-   * regardless of any timeStamps with indexes larger than or equal to 2.
-   *
-   * @param o the tablet to compare
-   * @return {@code true} if the tablets are logically equal
-   */
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || !getClass().equals(o.getClass())) {
-      return false;
-    }
-    Tablet that = (Tablet) o;
-
-    boolean flag =
-        that.rowSize == rowSize
-            && Objects.equals(that.deviceId, deviceId)
-            && Objects.equals(that.schemas, schemas)
-            && Objects.equals(that.measurementIndex, measurementIndex);
-    if (!flag) {
-      return false;
-    }
-
-    // assert timestamps and bitmaps
-    int columns = (schemas == null ? 0 : schemas.size());
-    if (!isTimestampsEqual(this.timestamps, that.timestamps, rowSize)
-        || !isBitMapsEqual(this.bitMaps, that.bitMaps, columns)) {
-      return false;
-    }
-
-    // assert values
-    Object[] thatValues = that.values;
-    if (thatValues == values) {
-      return true;
-    }
-    if (thatValues == null || values == null) {
-      return false;
-    }
-    if (thatValues.length != values.length) {
-      return false;
-    }
-    for (int i = 0, n = values.length; i < n; i++) {
-      if (thatValues[i] == values[i]) {
-        continue;
-      }
-      if (thatValues[i] == null || values[i] == null) {
-        return false;
-      }
-      if (!thatValues[i].getClass().equals(values[i].getClass())) {
-        return false;
-      }
-
-      switch (schemas.get(i).getType()) {
-        case INT32:
-          int[] thisIntValues = (int[]) values[i];
-          int[] thatIntValues = (int[]) thatValues[i];
-          if (thisIntValues.length < rowSize || thatIntValues.length < rowSize) {
-            return false;
-          }
-          for (int j = 0; j < rowSize; j++) {
-            if (thisIntValues[j] != thatIntValues[j]) {
-              return false;
-            }
-          }
-          break;
-        case INT64:
-          long[] thisLongValues = (long[]) values[i];
-          long[] thatLongValues = (long[]) thatValues[i];
-          if (thisLongValues.length < rowSize || thatLongValues.length < rowSize) {
-            return false;
-          }
-          for (int j = 0; j < rowSize; j++) {
-            if (thisLongValues[j] != thatLongValues[j]) {
-              return false;
-            }
-          }
-          break;
-        case FLOAT:
-          float[] thisFloatValues = (float[]) values[i];
-          float[] thatFloatValues = (float[]) thatValues[i];
-          if (thisFloatValues.length < rowSize || thatFloatValues.length < rowSize) {
-            return false;
-          }
-          for (int j = 0; j < rowSize; j++) {
-            if (thisFloatValues[j] != thatFloatValues[j]) {
-              return false;
-            }
-          }
-          break;
-        case DOUBLE:
-          double[] thisDoubleValues = (double[]) values[i];
-          double[] thatDoubleValues = (double[]) thatValues[i];
-          if (thisDoubleValues.length < rowSize || thatDoubleValues.length < rowSize) {
-            return false;
-          }
-          for (int j = 0; j < rowSize; j++) {
-            if (thisDoubleValues[j] != thatDoubleValues[j]) {
-              return false;
-            }
-          }
-          break;
-        case BOOLEAN:
-          boolean[] thisBooleanValues = (boolean[]) values[i];
-          boolean[] thatBooleanValues = (boolean[]) thatValues[i];
-          if (thisBooleanValues.length < rowSize || thatBooleanValues.length < rowSize) {
-            return false;
-          }
-          for (int j = 0; j < rowSize; j++) {
-            if (thisBooleanValues[j] != thatBooleanValues[j]) {
-              return false;
-            }
-          }
-          break;
-        case TEXT:
-          Binary[] thisBinaryValues = (Binary[]) values[i];
-          Binary[] thatBinaryValues = (Binary[]) thatValues[i];
-          if (thisBinaryValues.length < rowSize || thatBinaryValues.length < rowSize) {
-            return false;
-          }
-          for (int j = 0; j < rowSize; j++) {
-            if (!thisBinaryValues[j].equals(thatBinaryValues[j])) {
-              return false;
-            }
-          }
-          break;
-        default:
-          throw new UnSupportedDataTypeException(
-              String.format("Data type %s is not supported.", schemas.get(i).getType()));
-      }
-    }
-
-    return true;
-  }
-
-  private boolean isTimestampsEqual(long[] thisTimestamps, long[] thatTimestamps, int rowSize) {
-    if (thisTimestamps == thatTimestamps) {
-      return true;
-    }
-    if (thisTimestamps == null || thatTimestamps == null) {
-      return false;
-    }
-
-    for (int i = 0; i < rowSize; i++) {
-      if (thisTimestamps[i] != thatTimestamps[i]) {
-        return false;
-      }
-    }
-    return true;
-  }
-
-  private boolean isBitMapsEqual(BitMap[] thisBitMaps, BitMap[] thatBitMaps, int columns) {
-    if (thisBitMaps == thatBitMaps) {
-      return true;
-    }
-    if (thisBitMaps == null) {
-      for (int i = 0; i < columns; i++) {
-        if (thatBitMaps[i] != null && !thatBitMaps[i].isAllMarked()) {
-          return false;
-        }
-      }
-      return true;
-    }
-    if (thatBitMaps == null) {
-      for (int i = 0; i < columns; i++) {
-        if (thisBitMaps[i] != null && !thisBitMaps[i].isAllMarked()) {
-          return false;
-        }
-      }
-      return true;
-    }
-
-    for (int i = 0; i < columns; i++) {
-      if (!thisBitMaps[i].equals(thatBitMaps[i])) {
-        return false;
-      }
-    }
-    return true;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/BooleanDataPoint.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/BooleanDataPoint.java
deleted file mode 100644
index 62cfdd4..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/BooleanDataPoint.java
+++ /dev/null
@@ -1,62 +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.write.record.datapoint;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * a subclass for Boolean data type extends DataPoint.
- *
- * @see DataPoint DataPoint
- */
-public class BooleanDataPoint extends DataPoint {
-
-  private static final Logger LOG = LoggerFactory.getLogger(BooleanDataPoint.class);
-  /** actual value. */
-  private boolean value;
-
-  /** constructor of BooleanDataPoint, the value type will be set automatically. */
-  public BooleanDataPoint(String measurementId, boolean v) {
-    super(TSDataType.BOOLEAN, measurementId);
-    this.value = v;
-  }
-
-  @Override
-  public void writeTo(long time, ChunkWriterImpl writer) {
-    if (writer == null) {
-      LOG.warn("given IChunkWriter is null, do nothing and return");
-      return;
-    }
-    writer.write(time, value);
-  }
-
-  @Override
-  public Object getValue() {
-    return value;
-  }
-
-  @Override
-  public void setBoolean(boolean value) {
-    this.value = value;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/DataPoint.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/DataPoint.java
deleted file mode 100644
index 9c4414c..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/DataPoint.java
+++ /dev/null
@@ -1,147 +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.write.record.datapoint;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.StringContainer;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-
-import java.io.IOException;
-
-/**
- * This is a abstract class representing a data point. DataPoint consists of a measurement id and a
- * data type. subclass of DataPoint need override method {@code write(long time, IChunkWriter
- * writer)} .Every subclass has its data type and overrides a setting method for its data type.
- */
-public abstract class DataPoint {
-
-  /** value type of this DataPoint. */
-  protected final TSDataType type;
-  /** measurementId of this DataPoint. */
-  protected final String measurementId;
-
-  /**
-   * constructor of DataPoint.
-   *
-   * @param type value type of this DataPoint
-   * @param measurementId measurementId of this DataPoint
-   */
-  protected DataPoint(TSDataType type, String measurementId) {
-    this.type = type;
-    this.measurementId = measurementId;
-  }
-
-  /**
-   * Construct one data point with data type and value.
-   *
-   * @param dataType data type
-   * @param measurementId measurement id
-   * @param value value in string format
-   * @return data point class according to data type
-   */
-  public static DataPoint getDataPoint(TSDataType dataType, String measurementId, String value) {
-    DataPoint dataPoint = null;
-    try {
-      switch (dataType) {
-        case INT32:
-          dataPoint = new IntDataPoint(measurementId, Integer.parseInt(value));
-          break;
-        case INT64:
-          dataPoint = new LongDataPoint(measurementId, Long.parseLong(value));
-          break;
-        case FLOAT:
-          dataPoint = new FloatDataPoint(measurementId, Float.parseFloat(value));
-          break;
-        case DOUBLE:
-          dataPoint = new DoubleDataPoint(measurementId, Double.parseDouble(value));
-          break;
-        case BOOLEAN:
-          dataPoint = new BooleanDataPoint(measurementId, Boolean.parseBoolean(value));
-          break;
-        case TEXT:
-          dataPoint =
-              new StringDataPoint(measurementId, new Binary(value, TSFileConfig.STRING_CHARSET));
-          break;
-        default:
-          throw new UnSupportedDataTypeException(
-              String.format("Data type %s is not supported.", dataType));
-      }
-    } catch (Exception e) {
-      throw new UnSupportedDataTypeException(
-          String.format(
-              "Data type of %s is %s, but input value is %s", measurementId, dataType, value));
-    }
-
-    return dataPoint;
-  }
-
-  /**
-   * write this DataPoint by a SeriesWriter.
-   *
-   * @param time timestamp
-   * @param writer writer
-   * @throws IOException exception in IO
-   */
-  public abstract void writeTo(long time, ChunkWriterImpl writer) throws IOException;
-
-  public String getMeasurementId() {
-    return measurementId;
-  }
-
-  public abstract Object getValue();
-
-  public TSDataType getType() {
-    return type;
-  }
-
-  @Override
-  public String toString() {
-    StringContainer sc = new StringContainer(" ");
-    sc.addTail("{measurement id:", measurementId, "type:", type, "value:", getValue(), "}");
-    return sc.toString();
-  }
-
-  public void setInteger(int value) {
-    throw new UnsupportedOperationException("set Integer not support in DataPoint");
-  }
-
-  public void setLong(long value) {
-    throw new UnsupportedOperationException("set Long not support in DataPoint");
-  }
-
-  public void setBoolean(boolean value) {
-    throw new UnsupportedOperationException("set Boolean not support in DataPoint");
-  }
-
-  public void setFloat(float value) {
-    throw new UnsupportedOperationException("set Float not support in DataPoint");
-  }
-
-  public void setDouble(double value) {
-    throw new UnsupportedOperationException("set Double not support in DataPoint");
-  }
-
-  public void setString(Binary value) {
-    throw new UnsupportedOperationException("set String not support in DataPoint");
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/DoubleDataPoint.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/DoubleDataPoint.java
deleted file mode 100644
index ed00375..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/DoubleDataPoint.java
+++ /dev/null
@@ -1,62 +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.write.record.datapoint;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * a subclass for Double data type extends DataPoint.
- *
- * @see DataPoint DataPoint
- */
-public class DoubleDataPoint extends DataPoint {
-
-  private static final Logger LOG = LoggerFactory.getLogger(DoubleDataPoint.class);
-  /** actual value. */
-  private double value;
-
-  /** constructor of DoubleDataPoint, the value type will be set automatically. */
-  public DoubleDataPoint(String measurementId, double v) {
-    super(TSDataType.DOUBLE, measurementId);
-    this.value = v;
-  }
-
-  @Override
-  public void writeTo(long time, ChunkWriterImpl writer) {
-    if (writer == null) {
-      LOG.warn("given IChunkWriter is null, do nothing and return");
-      return;
-    }
-    writer.write(time, value);
-  }
-
-  @Override
-  public Object getValue() {
-    return value;
-  }
-
-  @Override
-  public void setDouble(double value) {
-    this.value = value;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/FloatDataPoint.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/FloatDataPoint.java
deleted file mode 100644
index f00bdbe..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/FloatDataPoint.java
+++ /dev/null
@@ -1,62 +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.write.record.datapoint;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * a subclass for Float data type extends DataPoint.
- *
- * @see DataPoint DataPoint
- */
-public class FloatDataPoint extends DataPoint {
-
-  private static final Logger LOG = LoggerFactory.getLogger(FloatDataPoint.class);
-  /** actual value. */
-  private float value;
-
-  /** constructor of FloatDataPoint, the value type will be set automatically. */
-  public FloatDataPoint(String measurementId, float v) {
-    super(TSDataType.FLOAT, measurementId);
-    this.value = v;
-  }
-
-  @Override
-  public void writeTo(long time, ChunkWriterImpl writer) {
-    if (writer == null) {
-      LOG.warn("given IChunkWriter is null, do nothing and return");
-      return;
-    }
-    writer.write(time, value);
-  }
-
-  @Override
-  public Object getValue() {
-    return value;
-  }
-
-  @Override
-  public void setFloat(float value) {
-    this.value = value;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/IntDataPoint.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/IntDataPoint.java
deleted file mode 100644
index 14bab49..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/IntDataPoint.java
+++ /dev/null
@@ -1,62 +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.write.record.datapoint;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * a subclass for Integer data type extends DataPoint.
- *
- * @see DataPoint DataPoint
- */
-public class IntDataPoint extends DataPoint {
-
-  private static final Logger LOG = LoggerFactory.getLogger(IntDataPoint.class);
-  /** actual value. */
-  private int value;
-
-  /** constructor of IntDataPoint, the value type will be set automatically. */
-  public IntDataPoint(String measurementId, int v) {
-    super(TSDataType.INT32, measurementId);
-    this.value = v;
-  }
-
-  @Override
-  public void writeTo(long time, ChunkWriterImpl writer) {
-    if (writer == null) {
-      LOG.warn("given IChunkWriter is null, do nothing and return");
-      return;
-    }
-    writer.write(time, value);
-  }
-
-  @Override
-  public Object getValue() {
-    return value;
-  }
-
-  @Override
-  public void setInteger(int value) {
-    this.value = value;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/LongDataPoint.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/LongDataPoint.java
deleted file mode 100644
index f2549f5..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/LongDataPoint.java
+++ /dev/null
@@ -1,62 +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.write.record.datapoint;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * a subclass for Long data type extends DataPoint.
- *
- * @see DataPoint DataPoint
- */
-public class LongDataPoint extends DataPoint {
-
-  private static final Logger LOG = LoggerFactory.getLogger(LongDataPoint.class);
-  /** actual value. */
-  private long value;
-
-  /** constructor of LongDataPoint, the value type will be set automatically. */
-  public LongDataPoint(String measurementId, long v) {
-    super(TSDataType.INT64, measurementId);
-    this.value = v;
-  }
-
-  @Override
-  public void writeTo(long time, ChunkWriterImpl writer) {
-    if (writer == null) {
-      LOG.warn("given IChunkWriter is null, do nothing and return");
-      return;
-    }
-    writer.write(time, value);
-  }
-
-  @Override
-  public Object getValue() {
-    return value;
-  }
-
-  @Override
-  public void setLong(long value) {
-    this.value = value;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/StringDataPoint.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/StringDataPoint.java
deleted file mode 100644
index 72c019b..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/StringDataPoint.java
+++ /dev/null
@@ -1,63 +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.write.record.datapoint;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * a subclass for Integer data type extends DataPoint.
- *
- * @see DataPoint DataPoint
- */
-public class StringDataPoint extends DataPoint {
-
-  private static final Logger LOG = LoggerFactory.getLogger(StringDataPoint.class);
-  /** actual value. */
-  private Binary value;
-
-  /** constructor of StringDataPoint, the value type will be set automatically. */
-  public StringDataPoint(String measurementId, Binary v) {
-    super(TSDataType.TEXT, measurementId);
-    this.value = v;
-  }
-
-  @Override
-  public void writeTo(long time, ChunkWriterImpl writer) {
-    if (writer == null) {
-      LOG.warn("given IChunkWriter is null, do nothing and return");
-      return;
-    }
-    writer.write(time, value);
-  }
-
-  @Override
-  public Object getValue() {
-    return value;
-  }
-
-  @Override
-  public void setString(Binary value) {
-    this.value = value;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/IMeasurementSchema.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/IMeasurementSchema.java
deleted file mode 100644
index bd506bd..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/IMeasurementSchema.java
+++ /dev/null
@@ -1,91 +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.write.schema;
-
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-import java.util.List;
-import java.util.Map;
-
-public interface IMeasurementSchema {
-
-  MeasurementSchemaType getSchemaType();
-
-  String getMeasurementId();
-
-  CompressionType getCompressor();
-
-  TSEncoding getEncodingType();
-
-  TSDataType getType();
-
-  byte getTypeInByte();
-
-  void setType(TSDataType dataType);
-
-  TSEncoding getTimeTSEncoding();
-
-  Encoder getTimeEncoder();
-
-  Encoder getValueEncoder();
-
-  Map<String, String> getProps();
-
-  List<String> getSubMeasurementsList();
-
-  List<TSDataType> getSubMeasurementsTSDataTypeList();
-
-  List<TSEncoding> getSubMeasurementsTSEncodingList();
-
-  List<Encoder> getSubMeasurementsEncoderList();
-
-  int getSubMeasurementIndex(String measurementId);
-
-  int getSubMeasurementsCount();
-
-  /* test whether the schemaengine contains Measurement with given measurementId */
-  boolean containsSubMeasurement(String measurementId);
-
-  int serializedSize();
-
-  int serializeTo(ByteBuffer buffer);
-
-  int serializeTo(OutputStream outputStream) throws IOException;
-
-  /*
-   1. used in cluster module to avoid useless field transfer(such as props in MeasurementSchema)
-   2. add a flag bit at the beginning to distinguish between MeasurementSchema(0) and VectorMeasurementSchema(1)
-  */
-  int partialSerializeTo(ByteBuffer buffer);
-
-  /*
-   1. used in cluster module to avoid useless field transfer(such as props in MeasurementSchema)
-   2. add a flag bit at the beginning to distinguish between MeasurementSchema(0) and VectorMeasurementSchema(1)
-  */
-  int partialSerializeTo(OutputStream outputStream) throws IOException;
-
-  boolean isLogicalView();
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchema.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchema.java
deleted file mode 100644
index fe536d8..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchema.java
+++ /dev/null
@@ -1,449 +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.write.schema;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.TSEncodingBuilder;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.utils.StringContainer;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * This class describes a measurement's information registered in {@linkplain Schema FileSchema},
- * including measurement id, data type, encoding and compressor type. For each TSEncoding,
- * MeasurementSchema maintains respective TSEncodingBuilder; For TSDataType, only ENUM has
- * TSDataTypeConverter up to now.
- */
-public class MeasurementSchema
-    implements IMeasurementSchema, Comparable<MeasurementSchema>, Serializable {
-
-  private String measurementId;
-  private byte type;
-  private byte encoding;
-  private TSEncodingBuilder encodingConverter;
-  private byte compressor;
-  private Map<String, String> props = null;
-
-  public MeasurementSchema() {}
-
-  public MeasurementSchema(String measurementId, TSDataType tsDataType) {
-    this(
-        measurementId,
-        tsDataType,
-        TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
-        TSFileDescriptor.getInstance().getConfig().getCompressor(),
-        null);
-  }
-
-  /** set properties as an empty Map. */
-  public MeasurementSchema(String measurementId, TSDataType type, TSEncoding encoding) {
-    this(
-        measurementId,
-        type,
-        encoding,
-        TSFileDescriptor.getInstance().getConfig().getCompressor(),
-        null);
-  }
-
-  public MeasurementSchema(
-      String measurementId, TSDataType type, TSEncoding encoding, CompressionType compressionType) {
-    this(measurementId, type, encoding, compressionType, null);
-  }
-
-  /**
-   * Constructor of MeasurementSchema.
-   *
-   * <p>props - information in encoding method. For RLE, Encoder.MAX_POINT_NUMBER For PLAIN,
-   * Encoder.maxStringLength
-   */
-  public MeasurementSchema(
-      String measurementId,
-      TSDataType type,
-      TSEncoding encoding,
-      CompressionType compressionType,
-      Map<String, String> props) {
-    this.type = type.serialize();
-    this.measurementId = measurementId;
-    this.encoding = encoding.serialize();
-    this.props = props;
-    this.compressor = compressionType.serialize();
-  }
-
-  public MeasurementSchema(
-      String measurementId,
-      byte type,
-      byte encoding,
-      byte compressionType,
-      Map<String, String> props) {
-    this.type = type;
-    this.measurementId = measurementId;
-    this.encoding = encoding;
-    this.props = props;
-    this.compressor = compressionType;
-  }
-
-  /** function for deserializing data from input stream. */
-  public static MeasurementSchema deserializeFrom(InputStream inputStream) throws IOException {
-    MeasurementSchema measurementSchema = new MeasurementSchema();
-
-    measurementSchema.measurementId = ReadWriteIOUtils.readString(inputStream);
-
-    measurementSchema.type = ReadWriteIOUtils.readByte(inputStream);
-
-    measurementSchema.encoding = ReadWriteIOUtils.readByte(inputStream);
-
-    measurementSchema.compressor = ReadWriteIOUtils.readByte(inputStream);
-
-    int size = ReadWriteIOUtils.readInt(inputStream);
-    if (size > 0) {
-      measurementSchema.props = new HashMap<>();
-      String key;
-      String value;
-      for (int i = 0; i < size; i++) {
-        key = ReadWriteIOUtils.readString(inputStream);
-        value = ReadWriteIOUtils.readString(inputStream);
-        measurementSchema.props.put(key, value);
-      }
-    }
-
-    return measurementSchema;
-  }
-
-  /** function for deserializing data from byte buffer. */
-  public static MeasurementSchema deserializeFrom(ByteBuffer buffer) {
-    MeasurementSchema measurementSchema = new MeasurementSchema();
-
-    measurementSchema.measurementId = ReadWriteIOUtils.readString(buffer);
-
-    measurementSchema.type = ReadWriteIOUtils.readByte(buffer);
-
-    measurementSchema.encoding = ReadWriteIOUtils.readByte(buffer);
-
-    measurementSchema.compressor = ReadWriteIOUtils.readByte(buffer);
-
-    int size = ReadWriteIOUtils.readInt(buffer);
-    if (size > 0) {
-      measurementSchema.props = new HashMap<>();
-      String key;
-      String value;
-      for (int i = 0; i < size; i++) {
-        key = ReadWriteIOUtils.readString(buffer);
-        value = ReadWriteIOUtils.readString(buffer);
-        measurementSchema.props.put(key, value);
-      }
-    }
-
-    return measurementSchema;
-  }
-
-  public static MeasurementSchema partialDeserializeFrom(ByteBuffer buffer) {
-    MeasurementSchema measurementSchema = new MeasurementSchema();
-
-    measurementSchema.measurementId = ReadWriteIOUtils.readString(buffer);
-
-    measurementSchema.type = ReadWriteIOUtils.readByte(buffer);
-
-    measurementSchema.encoding = ReadWriteIOUtils.readByte(buffer);
-
-    measurementSchema.compressor = ReadWriteIOUtils.readByte(buffer);
-
-    return measurementSchema;
-  }
-
-  @Override
-  public MeasurementSchemaType getSchemaType() {
-    return MeasurementSchemaType.MEASUREMENT_SCHEMA;
-  }
-
-  @Override
-  public String getMeasurementId() {
-    return measurementId;
-  }
-
-  public void setMeasurementId(String measurementId) {
-    this.measurementId = measurementId;
-  }
-
-  @Override
-  public Map<String, String> getProps() {
-    return props;
-  }
-
-  @Override
-  public TSEncoding getEncodingType() {
-    return TSEncoding.deserialize(encoding);
-  }
-
-  @Override
-  public TSDataType getType() {
-    return TSDataType.deserialize(type);
-  }
-
-  @Override
-  public byte getTypeInByte() {
-    return type;
-  }
-
-  @Override
-  public TSEncoding getTimeTSEncoding() {
-    return TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder());
-  }
-
-  public void setProps(Map<String, String> props) {
-    this.props = props;
-  }
-
-  /** function for getting time encoder. */
-  @Override
-  public Encoder getTimeEncoder() {
-    TSEncoding timeEncoding =
-        TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder());
-    TSDataType timeType = TSFileDescriptor.getInstance().getConfig().getTimeSeriesDataType();
-    return TSEncodingBuilder.getEncodingBuilder(timeEncoding).getEncoder(timeType);
-  }
-
-  @Override
-  public List<String> getSubMeasurementsList() {
-    throw new UnsupportedOperationException("unsupported method for MeasurementSchema");
-  }
-
-  @Override
-  public List<TSDataType> getSubMeasurementsTSDataTypeList() {
-    throw new UnsupportedOperationException("unsupported method for MeasurementSchema");
-  }
-
-  @Override
-  public List<TSEncoding> getSubMeasurementsTSEncodingList() {
-    throw new UnsupportedOperationException("unsupported method for MeasurementSchema");
-  }
-
-  @Override
-  public List<Encoder> getSubMeasurementsEncoderList() {
-    throw new UnsupportedOperationException("unsupported method for MeasurementSchema");
-  }
-
-  /**
-   * get Encoder of value from encodingConverter by measurementID and data type.
-   *
-   * @return Encoder for value
-   */
-  public Encoder getValueEncoder() {
-    // it is ok even if encodingConverter is constructed two instances for concurrent scenario
-    if (encodingConverter == null) {
-      // initialize TSEncoding. e.g. set max error for PLA and SDT
-      encodingConverter = TSEncodingBuilder.getEncodingBuilder(TSEncoding.deserialize(encoding));
-      encodingConverter.initFromProps(props);
-    }
-    return encodingConverter.getEncoder(TSDataType.deserialize(type));
-  }
-
-  @Override
-  public CompressionType getCompressor() {
-    return CompressionType.deserialize(compressor);
-  }
-
-  /** function for serializing data to output stream. */
-  @Override
-  public int serializeTo(OutputStream outputStream) throws IOException {
-    int byteLen = 0;
-
-    byteLen += ReadWriteIOUtils.write(measurementId, outputStream);
-
-    byteLen += ReadWriteIOUtils.write(type, outputStream);
-
-    byteLen += ReadWriteIOUtils.write(encoding, outputStream);
-
-    byteLen += ReadWriteIOUtils.write(compressor, outputStream);
-
-    if (props == null) {
-      byteLen += ReadWriteIOUtils.write(0, outputStream);
-    } else {
-      byteLen += ReadWriteIOUtils.write(props.size(), outputStream);
-      for (Map.Entry<String, String> entry : props.entrySet()) {
-        byteLen += ReadWriteIOUtils.write(entry.getKey(), outputStream);
-        byteLen += ReadWriteIOUtils.write(entry.getValue(), outputStream);
-      }
-    }
-
-    return byteLen;
-  }
-
-  @Override
-  public int serializedSize() {
-    int byteLen = 0;
-    byteLen += ReadWriteIOUtils.sizeToWrite(measurementId);
-    byteLen += 3 * Byte.BYTES;
-    if (props == null) {
-      byteLen += Integer.BYTES;
-    } else {
-      byteLen += Integer.BYTES;
-      for (Map.Entry<String, String> entry : props.entrySet()) {
-        byteLen += ReadWriteIOUtils.sizeToWrite(entry.getKey());
-        byteLen += ReadWriteIOUtils.sizeToWrite(entry.getValue());
-      }
-    }
-
-    return byteLen;
-  }
-
-  /** function for serializing data to byte buffer. */
-  @Override
-  public int serializeTo(ByteBuffer buffer) {
-    int byteLen = 0;
-
-    byteLen += ReadWriteIOUtils.write(measurementId, buffer);
-
-    byteLen += ReadWriteIOUtils.write(type, buffer);
-
-    byteLen += ReadWriteIOUtils.write(encoding, buffer);
-
-    byteLen += ReadWriteIOUtils.write(compressor, buffer);
-
-    if (props == null) {
-      byteLen += ReadWriteIOUtils.write(0, buffer);
-    } else {
-      byteLen += ReadWriteIOUtils.write(props.size(), buffer);
-      for (Map.Entry<String, String> entry : props.entrySet()) {
-        byteLen += ReadWriteIOUtils.write(entry.getKey(), buffer);
-        byteLen += ReadWriteIOUtils.write(entry.getValue(), buffer);
-      }
-    }
-
-    return byteLen;
-  }
-
-  @Override
-  public int partialSerializeTo(OutputStream outputStream) throws IOException {
-    int byteLen = 0;
-
-    byteLen += ReadWriteIOUtils.write((byte) 0, outputStream);
-    byteLen += ReadWriteIOUtils.write(measurementId, outputStream);
-    byteLen += ReadWriteIOUtils.write(type, outputStream);
-    byteLen += ReadWriteIOUtils.write(encoding, outputStream);
-    byteLen += ReadWriteIOUtils.write(compressor, outputStream);
-
-    return byteLen;
-  }
-
-  @Override
-  public boolean isLogicalView() {
-    return false;
-  }
-
-  @Override
-  public int partialSerializeTo(ByteBuffer buffer) {
-    int byteLen = 0;
-
-    byteLen += ReadWriteIOUtils.write((byte) 0, buffer);
-    byteLen += ReadWriteIOUtils.write(measurementId, buffer);
-    byteLen += ReadWriteIOUtils.write(type, buffer);
-    byteLen += ReadWriteIOUtils.write(encoding, buffer);
-    byteLen += ReadWriteIOUtils.write(compressor, buffer);
-
-    return byteLen;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    MeasurementSchema that = (MeasurementSchema) o;
-    return type == that.type
-        && encoding == that.encoding
-        && Objects.equals(measurementId, that.measurementId)
-        && Objects.equals(compressor, that.compressor);
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(type, encoding, measurementId, compressor);
-  }
-
-  /** compare by measurementID. */
-  @Override
-  public int compareTo(MeasurementSchema o) {
-    if (equals(o)) {
-      return 0;
-    } else {
-      return this.measurementId.compareTo(o.measurementId);
-    }
-  }
-
-  @Override
-  public String toString() {
-    StringContainer sc = new StringContainer("");
-    sc.addTail(
-        "[",
-        measurementId,
-        ",",
-        TSDataType.deserialize(type).toString(),
-        ",",
-        TSEncoding.deserialize(encoding).toString(),
-        ",",
-        props == null ? "" : props.toString(),
-        ",",
-        CompressionType.deserialize(compressor).toString());
-    sc.addTail("]");
-    return sc.toString();
-  }
-
-  public void setType(TSDataType type) {
-    this.type = type.serialize();
-  }
-
-  @Override
-  public int getSubMeasurementIndex(String measurementId) {
-    return this.measurementId.equals(measurementId) ? 0 : -1;
-  }
-
-  @Override
-  public int getSubMeasurementsCount() {
-    return 1;
-  }
-
-  @Override
-  public boolean containsSubMeasurement(String measurementId) {
-    return this.measurementId.equals(measurementId);
-  }
-
-  public void setEncoding(byte encoding) {
-    this.encoding = encoding;
-  }
-
-  public void setCompressor(byte compressor) {
-    this.compressor = compressor;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchemaType.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchemaType.java
deleted file mode 100644
index d51ce12..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchemaType.java
+++ /dev/null
@@ -1,38 +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.write.schema;
-
-public enum MeasurementSchemaType {
-  MEASUREMENT_SCHEMA((byte) 0),
-
-  VECTOR_MEASUREMENT_SCHEMA((byte) 1),
-
-  LOGICAL_VIEW_SCHEMA((byte) 2),
-  ;
-
-  private final byte type;
-
-  MeasurementSchemaType(byte b) {
-    this.type = b;
-  }
-
-  public byte getMeasurementSchemaTypeInByteEnum() {
-    return this.type;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/Schema.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/Schema.java
deleted file mode 100644
index d75fa40..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/Schema.java
+++ /dev/null
@@ -1,110 +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.write.schema;
-
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.MeasurementGroup;
-
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-/**
- * The schema of timeseries that exist in this file. The schemaTemplates is a simplified manner to
- * batch create schema of timeseries.
- */
-public class Schema implements Serializable {
-
-  /**
-   * Path (devicePath) -> measurementSchema By default, use the LinkedHashMap to store the order of
-   * insertion
-   */
-  private final Map<Path, MeasurementGroup> registeredTimeseries;
-
-  /** template name -> (measurement -> MeasurementSchema) */
-  private Map<String, MeasurementGroup> schemaTemplates;
-
-  public Schema() {
-    this.registeredTimeseries = new LinkedHashMap<>();
-  }
-
-  public Schema(Map<Path, MeasurementGroup> knownSchema) {
-    this.registeredTimeseries = knownSchema;
-  }
-
-  // This method can only register nonAligned timeseries.
-  public void registerTimeseries(Path devicePath, MeasurementSchema measurementSchema) {
-    MeasurementGroup group =
-        registeredTimeseries.getOrDefault(devicePath, new MeasurementGroup(false));
-    group.getMeasurementSchemaMap().put(measurementSchema.getMeasurementId(), measurementSchema);
-    this.registeredTimeseries.put(devicePath, group);
-  }
-
-  public void registerMeasurementGroup(Path devicePath, MeasurementGroup measurementGroup) {
-    this.registeredTimeseries.put(devicePath, measurementGroup);
-  }
-
-  public void registerSchemaTemplate(String templateName, MeasurementGroup measurementGroup) {
-    if (schemaTemplates == null) {
-      schemaTemplates = new HashMap<>();
-    }
-    this.schemaTemplates.put(templateName, measurementGroup);
-  }
-
-  /** If template does not exist, an nonAligned timeseries is created by default */
-  public void extendTemplate(String templateName, MeasurementSchema descriptor) {
-    if (schemaTemplates == null) {
-      schemaTemplates = new HashMap<>();
-    }
-    MeasurementGroup measurementGroup =
-        this.schemaTemplates.getOrDefault(
-            templateName, new MeasurementGroup(false, new HashMap<>()));
-    measurementGroup.getMeasurementSchemaMap().put(descriptor.getMeasurementId(), descriptor);
-    this.schemaTemplates.put(templateName, measurementGroup);
-  }
-
-  public void registerDevice(String deviceId, String templateName) {
-    if (!schemaTemplates.containsKey(templateName)) {
-      return;
-    }
-    Map<String, MeasurementSchema> template =
-        schemaTemplates.get(templateName).getMeasurementSchemaMap();
-    boolean isAligned = schemaTemplates.get(templateName).isAligned();
-    registerMeasurementGroup(new Path(deviceId), new MeasurementGroup(isAligned, template));
-  }
-
-  public MeasurementGroup getSeriesSchema(Path devicePath) {
-    return registeredTimeseries.get(devicePath);
-  }
-
-  public Map<String, MeasurementGroup> getSchemaTemplates() {
-    return schemaTemplates;
-  }
-
-  /** check if this schema contains a measurement named measurementId. */
-  public boolean containsDevice(Path devicePath) {
-    return registeredTimeseries.containsKey(devicePath);
-  }
-
-  // for test
-  public Map<Path, MeasurementGroup> getRegisteredTimeseriesMap() {
-    return registeredTimeseries;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/TimeseriesSchema.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/TimeseriesSchema.java
deleted file mode 100644
index edd7596..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/TimeseriesSchema.java
+++ /dev/null
@@ -1,272 +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.write.schema;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.TSEncodingBuilder;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.utils.StringContainer;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * TimeseriesSchema is like MeasurementSchema, but instead of measurementId, it stores the full
- * path.
- */
-public class TimeseriesSchema implements Comparable<TimeseriesSchema>, Serializable {
-  private String fullPath;
-  private TSDataType type;
-  private TSEncoding encoding;
-  private transient TSEncodingBuilder encodingConverter;
-  private CompressionType compressor;
-  private Map<String, String> props = new HashMap<>();
-
-  public TimeseriesSchema() {}
-
-  public TimeseriesSchema(String fullPath, TSDataType tsDataType) {
-    this(
-        fullPath,
-        tsDataType,
-        TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
-        TSFileDescriptor.getInstance().getConfig().getCompressor(),
-        Collections.emptyMap());
-  }
-
-  /** set properties as an empty Map. */
-  public TimeseriesSchema(String fullPath, TSDataType type, TSEncoding encoding) {
-    this(
-        fullPath,
-        type,
-        encoding,
-        TSFileDescriptor.getInstance().getConfig().getCompressor(),
-        Collections.emptyMap());
-  }
-
-  public TimeseriesSchema(
-      String fullPath, TSDataType type, TSEncoding encoding, CompressionType compressionType) {
-    this(fullPath, type, encoding, compressionType, Collections.emptyMap());
-  }
-
-  /**
-   * Constructor of TimeseriesSchema.
-   *
-   * <p>props - information in encoding method. For RLE, Encoder.MAX_POINT_NUMBER For PLAIN,
-   * Encoder.maxStringLength
-   */
-  public TimeseriesSchema(
-      String fullPath,
-      TSDataType type,
-      TSEncoding encoding,
-      CompressionType compressionType,
-      Map<String, String> props) {
-    this.type = type;
-    this.fullPath = fullPath;
-    this.encoding = encoding;
-    this.props = props == null ? Collections.emptyMap() : props;
-    this.compressor = compressionType;
-  }
-
-  /** function for deserializing data from byte buffer. */
-  public static TimeseriesSchema deserializeFrom(ByteBuffer buffer) {
-    TimeseriesSchema timeseriesSchema = new TimeseriesSchema();
-
-    timeseriesSchema.fullPath = ReadWriteIOUtils.readString(buffer);
-
-    timeseriesSchema.type = ReadWriteIOUtils.readDataType(buffer);
-
-    timeseriesSchema.encoding = ReadWriteIOUtils.readEncoding(buffer);
-
-    timeseriesSchema.compressor = ReadWriteIOUtils.readCompressionType(buffer);
-
-    int size = ReadWriteIOUtils.readInt(buffer);
-    if (size > 0) {
-      timeseriesSchema.props = new HashMap<>();
-      String key;
-      String value;
-      for (int i = 0; i < size; i++) {
-        key = ReadWriteIOUtils.readString(buffer);
-        value = ReadWriteIOUtils.readString(buffer);
-        timeseriesSchema.props.put(key, value);
-      }
-    }
-
-    return timeseriesSchema;
-  }
-
-  public String getFullPath() {
-    return fullPath;
-  }
-
-  public void setFullPath(String fullPath) {
-    this.fullPath = fullPath;
-  }
-
-  public Map<String, String> getProps() {
-    return props;
-  }
-
-  public TSEncoding getEncodingType() {
-    return encoding;
-  }
-
-  public TSDataType getType() {
-    return type;
-  }
-
-  public void setProps(Map<String, String> props) {
-    this.props = props;
-  }
-
-  /** function for getting time encoder. */
-  public Encoder getTimeEncoder() {
-    TSEncoding timeEncoding =
-        TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder());
-    TSDataType timeType = TSFileDescriptor.getInstance().getConfig().getTimeSeriesDataType();
-    return TSEncodingBuilder.getEncodingBuilder(timeEncoding).getEncoder(timeType);
-  }
-
-  /**
-   * get Encoder of value from encodingConverter by measurementID and data type.
-   *
-   * @return Encoder for value
-   */
-  public Encoder getValueEncoder() {
-    // it is ok even if encodingConverter is constructed two instances for concurrent scenario
-    if (encodingConverter == null) {
-      // initialize TSEncoding. e.g. set max error for PLA and SDT
-      encodingConverter = TSEncodingBuilder.getEncodingBuilder(encoding);
-      encodingConverter.initFromProps(props);
-    }
-    return encodingConverter.getEncoder(type);
-  }
-
-  public CompressionType getCompressor() {
-    return compressor;
-  }
-
-  /** function for serializing data to output stream. */
-  public int serializeTo(OutputStream outputStream) throws IOException {
-    int byteLen = 0;
-
-    byteLen += ReadWriteIOUtils.write(fullPath, outputStream);
-
-    byteLen += ReadWriteIOUtils.write(type, outputStream);
-
-    byteLen += ReadWriteIOUtils.write(encoding, outputStream);
-
-    byteLen += ReadWriteIOUtils.write(compressor, outputStream);
-
-    if (props == null) {
-      byteLen += ReadWriteIOUtils.write(0, outputStream);
-    } else {
-      byteLen += ReadWriteIOUtils.write(props.size(), outputStream);
-      for (Map.Entry<String, String> entry : props.entrySet()) {
-        byteLen += ReadWriteIOUtils.write(entry.getKey(), outputStream);
-        byteLen += ReadWriteIOUtils.write(entry.getValue(), outputStream);
-      }
-    }
-
-    return byteLen;
-  }
-
-  /** function for serializing data to byte buffer. */
-  public int serializeTo(ByteBuffer buffer) {
-    int byteLen = 0;
-
-    byteLen += ReadWriteIOUtils.write(fullPath, buffer);
-
-    byteLen += ReadWriteIOUtils.write(type, buffer);
-
-    byteLen += ReadWriteIOUtils.write(encoding, buffer);
-
-    byteLen += ReadWriteIOUtils.write(compressor, buffer);
-
-    if (props == null) {
-      byteLen += ReadWriteIOUtils.write(0, buffer);
-    } else {
-      byteLen += ReadWriteIOUtils.write(props.size(), buffer);
-      for (Map.Entry<String, String> entry : props.entrySet()) {
-        byteLen += ReadWriteIOUtils.write(entry.getKey(), buffer);
-        byteLen += ReadWriteIOUtils.write(entry.getValue(), buffer);
-      }
-    }
-
-    return byteLen;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    TimeseriesSchema that = (TimeseriesSchema) o;
-    return type == that.type
-        && encoding == that.encoding
-        && Objects.equals(fullPath, that.fullPath)
-        && Objects.equals(compressor, that.compressor);
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(type, encoding, fullPath, compressor);
-  }
-
-  /** compare by full path. */
-  @Override
-  public int compareTo(TimeseriesSchema o) {
-    if (equals(o)) {
-      return 0;
-    } else {
-      return this.fullPath.compareTo(o.fullPath);
-    }
-  }
-
-  @Override
-  public String toString() {
-    StringContainer sc = new StringContainer("");
-    sc.addTail(
-        "[",
-        fullPath,
-        ",",
-        type.toString(),
-        ",",
-        encoding.toString(),
-        ",",
-        props.toString(),
-        ",",
-        compressor.toString());
-    sc.addTail("]");
-    return sc.toString();
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/VectorMeasurementSchema.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/VectorMeasurementSchema.java
deleted file mode 100644
index 32bc321..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/VectorMeasurementSchema.java
+++ /dev/null
@@ -1,425 +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.write.schema;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.TSEncodingBuilder;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.utils.StringContainer;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Serializable;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-public class VectorMeasurementSchema
-    implements IMeasurementSchema, Comparable<VectorMeasurementSchema>, Serializable {
-
-  private String deviceId;
-  private Map<String, Integer> measurementsToIndexMap;
-  private byte[] types;
-  private byte[] encodings;
-  private TSEncodingBuilder[] encodingConverters;
-  private byte compressor;
-
-  public VectorMeasurementSchema() {}
-
-  public VectorMeasurementSchema(
-      String deviceId,
-      String[] subMeasurements,
-      TSDataType[] types,
-      TSEncoding[] encodings,
-      CompressionType compressionType) {
-    this.deviceId = deviceId;
-    this.measurementsToIndexMap = new HashMap<>();
-    for (int i = 0; i < subMeasurements.length; i++) {
-      measurementsToIndexMap.put(subMeasurements[i], i);
-    }
-    byte[] typesInByte = new byte[types.length];
-    for (int i = 0; i < types.length; i++) {
-      typesInByte[i] = types[i].serialize();
-    }
-    this.types = typesInByte;
-
-    byte[] encodingsInByte = new byte[encodings.length];
-    for (int i = 0; i < encodings.length; i++) {
-      encodingsInByte[i] = encodings[i].serialize();
-    }
-    this.encodings = encodingsInByte;
-    this.encodingConverters = new TSEncodingBuilder[subMeasurements.length];
-    this.compressor = compressionType.serialize();
-  }
-
-  public VectorMeasurementSchema(String deviceId, String[] subMeasurements, TSDataType[] types) {
-    this.deviceId = deviceId;
-    this.measurementsToIndexMap = new HashMap<>();
-    for (int i = 0; i < subMeasurements.length; i++) {
-      measurementsToIndexMap.put(subMeasurements[i], i);
-    }
-    this.types = new byte[types.length];
-    for (int i = 0; i < types.length; i++) {
-      this.types[i] = types[i].serialize();
-    }
-
-    this.encodings = new byte[types.length];
-    for (int i = 0; i < types.length; i++) {
-      this.encodings[i] =
-          TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder())
-              .serialize();
-    }
-    this.encodingConverters = new TSEncodingBuilder[subMeasurements.length];
-    this.compressor = TSFileDescriptor.getInstance().getConfig().getCompressor().serialize();
-  }
-
-  public VectorMeasurementSchema(
-      String deviceId, String[] subMeasurements, TSDataType[] types, TSEncoding[] encodings) {
-    this(
-        deviceId,
-        subMeasurements,
-        types,
-        encodings,
-        TSFileDescriptor.getInstance().getConfig().getCompressor());
-  }
-
-  @Override
-  public MeasurementSchemaType getSchemaType() {
-    return MeasurementSchemaType.VECTOR_MEASUREMENT_SCHEMA;
-  }
-
-  @Override
-  public String getMeasurementId() {
-    return deviceId;
-  }
-
-  @Override
-  public CompressionType getCompressor() {
-    return CompressionType.deserialize(compressor);
-  }
-
-  @Override
-  public TSEncoding getEncodingType() {
-    throw new UnsupportedOperationException("unsupported method for VectorMeasurementSchema");
-  }
-
-  @Override
-  public TSDataType getType() {
-    return TSDataType.VECTOR;
-  }
-
-  @Override
-  public byte getTypeInByte() {
-    return ((byte) 6);
-  }
-
-  @Override
-  public void setType(TSDataType dataType) {
-    throw new UnsupportedOperationException("unsupported method for VectorMeasurementSchema");
-  }
-
-  @Override
-  public TSEncoding getTimeTSEncoding() {
-    return TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder());
-  }
-
-  @Override
-  public Encoder getTimeEncoder() {
-    TSEncoding timeEncoding =
-        TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder());
-    TSDataType timeType = TSFileDescriptor.getInstance().getConfig().getTimeSeriesDataType();
-    return TSEncodingBuilder.getEncodingBuilder(timeEncoding).getEncoder(timeType);
-  }
-
-  @Override
-  public Encoder getValueEncoder() {
-    throw new UnsupportedOperationException("unsupported method for VectorMeasurementSchema");
-  }
-
-  @Override
-  public Map<String, String> getProps() {
-    throw new UnsupportedOperationException("unsupported method for VectorMeasurementSchema");
-  }
-
-  @Override
-  public List<String> getSubMeasurementsList() {
-    String[] measurements = new String[measurementsToIndexMap.size()];
-    for (Map.Entry<String, Integer> entry : measurementsToIndexMap.entrySet()) {
-      measurements[entry.getValue()] = entry.getKey();
-    }
-    return Arrays.asList(measurements);
-  }
-
-  @Override
-  public List<TSDataType> getSubMeasurementsTSDataTypeList() {
-    List<TSDataType> dataTypeList = new ArrayList<>();
-    for (byte dataType : types) {
-      dataTypeList.add(TSDataType.deserialize(dataType));
-    }
-    return dataTypeList;
-  }
-
-  @Override
-  public List<TSEncoding> getSubMeasurementsTSEncodingList() {
-    List<TSEncoding> encodingList = new ArrayList<>();
-    for (byte encoding : encodings) {
-      encodingList.add(TSEncoding.deserialize(encoding));
-    }
-    return encodingList;
-  }
-
-  @Override
-  public List<Encoder> getSubMeasurementsEncoderList() {
-    List<Encoder> encoderList = new ArrayList<>();
-    for (int i = 0; i < encodings.length; i++) {
-      TSEncoding encoding = TSEncoding.deserialize(encodings[i]);
-      // it is ok even if encodingConverter is constructed two instances for concurrent scenario
-      if (encodingConverters[i] == null) {
-        // initialize TSEncoding. e.g. set max error for PLA and SDT
-        encodingConverters[i] = TSEncodingBuilder.getEncodingBuilder(encoding);
-        encodingConverters[i].initFromProps(null);
-      }
-      encoderList.add(encodingConverters[i].getEncoder(TSDataType.deserialize(types[i])));
-    }
-    return encoderList;
-  }
-
-  @Override
-  public int getSubMeasurementIndex(String subMeasurement) {
-    return measurementsToIndexMap.getOrDefault(subMeasurement, -1);
-  }
-
-  @Override
-  public int getSubMeasurementsCount() {
-    return measurementsToIndexMap.size();
-  }
-
-  @Override
-  public boolean containsSubMeasurement(String subMeasurement) {
-    return measurementsToIndexMap.containsKey(subMeasurement);
-  }
-
-  public void addMeasurement(String measurementId, TSDataType dataType, TSEncoding encoding) {
-    measurementsToIndexMap.put(measurementId, measurementsToIndexMap.size());
-    byte[] typesInByte = new byte[measurementsToIndexMap.size()];
-    if (measurementsToIndexMap.size() - 1 >= 0) {
-      System.arraycopy(types, 0, typesInByte, 0, measurementsToIndexMap.size() - 1);
-    }
-    typesInByte[typesInByte.length - 1] = dataType.serialize();
-    this.types = typesInByte;
-    byte[] encodingsInByte = new byte[measurementsToIndexMap.size()];
-    if (measurementsToIndexMap.size() - 1 >= 0) {
-      System.arraycopy(encodings, 0, encodingsInByte, 0, measurementsToIndexMap.size() - 1);
-    }
-    encodingsInByte[encodingsInByte.length - 1] = encoding.serialize();
-    this.encodings = encodingsInByte;
-    this.encodingConverters = new TSEncodingBuilder[measurementsToIndexMap.size()];
-  }
-
-  @Override
-  public int serializedSize() {
-    int byteLen = 0;
-    byteLen += ReadWriteIOUtils.sizeToWrite(deviceId);
-    byteLen += Integer.BYTES;
-    for (Map.Entry<String, Integer> entry : measurementsToIndexMap.entrySet()) {
-      byteLen += ReadWriteIOUtils.sizeToWrite(entry.getKey());
-      byteLen += Integer.BYTES;
-    }
-    byteLen += (types.length + encodings.length + 1) * Byte.BYTES;
-    return byteLen;
-  }
-
-  @Override
-  public int serializeTo(ByteBuffer buffer) {
-    int byteLen = 0;
-    byteLen += ReadWriteIOUtils.write(deviceId, buffer);
-    byteLen += ReadWriteIOUtils.write(measurementsToIndexMap.size(), buffer);
-
-    for (Map.Entry<String, Integer> entry : measurementsToIndexMap.entrySet()) {
-      byteLen += ReadWriteIOUtils.write(entry.getKey(), buffer);
-      byteLen += ReadWriteIOUtils.write(entry.getValue(), buffer);
-    }
-    for (byte type : types) {
-      byteLen += ReadWriteIOUtils.write(type, buffer);
-    }
-    for (byte encoding : encodings) {
-      byteLen += ReadWriteIOUtils.write(encoding, buffer);
-    }
-    byteLen += ReadWriteIOUtils.write(compressor, buffer);
-
-    return byteLen;
-  }
-
-  @Override
-  public int serializeTo(OutputStream outputStream) throws IOException {
-    int byteLen = 0;
-    byteLen += ReadWriteIOUtils.write(deviceId, outputStream);
-    byteLen += ReadWriteIOUtils.write(measurementsToIndexMap.size(), outputStream);
-
-    for (Map.Entry<String, Integer> entry : measurementsToIndexMap.entrySet()) {
-      byteLen += ReadWriteIOUtils.write(entry.getKey(), outputStream);
-      byteLen += ReadWriteIOUtils.write(entry.getValue(), outputStream);
-    }
-    for (byte type : types) {
-      byteLen += ReadWriteIOUtils.write(type, outputStream);
-    }
-    for (byte encoding : encodings) {
-      byteLen += ReadWriteIOUtils.write(encoding, outputStream);
-    }
-    byteLen += ReadWriteIOUtils.write(compressor, outputStream);
-
-    return byteLen;
-  }
-
-  @Override
-  public int partialSerializeTo(OutputStream outputStream) throws IOException {
-    ReadWriteIOUtils.write((byte) 1, outputStream);
-    return 1 + serializeTo(outputStream);
-  }
-
-  @Override
-  public boolean isLogicalView() {
-    return false;
-  }
-
-  @Override
-  public int partialSerializeTo(ByteBuffer buffer) {
-    ReadWriteIOUtils.write((byte) 1, buffer);
-    return 1 + serializeTo(buffer);
-  }
-
-  public static VectorMeasurementSchema partialDeserializeFrom(ByteBuffer buffer) {
-    return deserializeFrom(buffer);
-  }
-
-  public static VectorMeasurementSchema deserializeFrom(InputStream inputStream)
-      throws IOException {
-    VectorMeasurementSchema vectorMeasurementSchema = new VectorMeasurementSchema();
-    vectorMeasurementSchema.deviceId = ReadWriteIOUtils.readString(inputStream);
-
-    int measurementSize = ReadWriteIOUtils.readInt(inputStream);
-    Map<String, Integer> measurementsToIndexMap = new HashMap<>();
-    for (int i = 0; i < measurementSize; i++) {
-      measurementsToIndexMap.put(
-          ReadWriteIOUtils.readString(inputStream), ReadWriteIOUtils.readInt(inputStream));
-    }
-    vectorMeasurementSchema.measurementsToIndexMap = measurementsToIndexMap;
-
-    byte[] types = new byte[measurementSize];
-    for (int i = 0; i < measurementSize; i++) {
-      types[i] = ReadWriteIOUtils.readByte(inputStream);
-    }
-    vectorMeasurementSchema.types = types;
-
-    byte[] encodings = new byte[measurementSize];
-    for (int i = 0; i < measurementSize; i++) {
-      encodings[i] = ReadWriteIOUtils.readByte(inputStream);
-    }
-    vectorMeasurementSchema.encodings = encodings;
-
-    vectorMeasurementSchema.compressor = ReadWriteIOUtils.readByte(inputStream);
-    return vectorMeasurementSchema;
-  }
-
-  public static VectorMeasurementSchema deserializeFrom(ByteBuffer buffer) {
-    VectorMeasurementSchema vectorMeasurementSchema = new VectorMeasurementSchema();
-    vectorMeasurementSchema.deviceId = ReadWriteIOUtils.readString(buffer);
-    int measurementSize = ReadWriteIOUtils.readInt(buffer);
-    Map<String, Integer> measurementsToIndexMap = new HashMap<>();
-    for (int i = 0; i < measurementSize; i++) {
-      measurementsToIndexMap.put(
-          ReadWriteIOUtils.readString(buffer), ReadWriteIOUtils.readInt(buffer));
-    }
-    vectorMeasurementSchema.measurementsToIndexMap = measurementsToIndexMap;
-
-    byte[] types = new byte[measurementSize];
-    for (int i = 0; i < measurementSize; i++) {
-      types[i] = ReadWriteIOUtils.readByte(buffer);
-    }
-    vectorMeasurementSchema.types = types;
-
-    byte[] encodings = new byte[measurementSize];
-    for (int i = 0; i < measurementSize; i++) {
-      encodings[i] = ReadWriteIOUtils.readByte(buffer);
-    }
-    vectorMeasurementSchema.encodings = encodings;
-
-    vectorMeasurementSchema.compressor = ReadWriteIOUtils.readByte(buffer);
-    return vectorMeasurementSchema;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    VectorMeasurementSchema that = (VectorMeasurementSchema) o;
-    return Arrays.equals(types, that.types)
-        && Arrays.equals(encodings, that.encodings)
-        && Objects.equals(deviceId, that.deviceId)
-        && Objects.equals(compressor, that.compressor);
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(deviceId, types, encodings, compressor);
-  }
-
-  /** compare by vector name */
-  @Override
-  public int compareTo(VectorMeasurementSchema o) {
-    if (equals(o)) {
-      return 0;
-    } else {
-      return this.deviceId.compareTo(o.deviceId);
-    }
-  }
-
-  @Override
-  public String toString() {
-    StringContainer sc = new StringContainer("");
-    sc.addTail(deviceId, ",");
-    // string is not in real order
-    for (Map.Entry<String, Integer> entry : measurementsToIndexMap.entrySet()) {
-      sc.addTail(
-          "[",
-          entry.getKey(),
-          ",",
-          TSDataType.deserialize(types[entry.getValue()]).toString(),
-          ",",
-          TSEncoding.deserialize(encodings[entry.getValue()]).toString());
-      sc.addTail("],");
-    }
-    sc.addTail(CompressionType.deserialize(compressor).toString());
-    return sc.toString();
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/ForceAppendTsFileWriter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/ForceAppendTsFileWriter.java
deleted file mode 100644
index eb05ad7..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/ForceAppendTsFileWriter.java
+++ /dev/null
@@ -1,87 +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.write.writer;
-
-import org.apache.iotdb.tsfile.exception.write.TsFileNotCompleteException;
-import org.apache.iotdb.tsfile.file.metadata.ChunkGroupMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * ForceAppendTsFileWriter opens a COMPLETE TsFile, reads and truncate its metadata to support
- * appending new data.
- */
-public class ForceAppendTsFileWriter extends TsFileIOWriter {
-
-  private long truncatePosition;
-  private static Logger logger = LoggerFactory.getLogger(ForceAppendTsFileWriter.class);
-
-  public ForceAppendTsFileWriter(File file) throws IOException {
-    if (logger.isDebugEnabled()) {
-      logger.debug("{} writer is opened.", file.getName());
-    }
-    this.out = FSFactoryProducer.getFileOutputFactory().getTsFileOutput(file.getPath(), true);
-    this.file = file;
-
-    // file doesn't exist
-    if (file.length() == 0 || !file.exists()) {
-      throw new TsFileNotCompleteException("File " + file.getPath() + " is not a complete TsFile");
-    }
-
-    try (TsFileSequenceReader reader = new TsFileSequenceReader(file.getAbsolutePath(), true)) {
-
-      // this tsfile is not complete
-      if (!reader.isComplete()) {
-        throw new TsFileNotCompleteException(
-            "File " + file.getPath() + " is not a complete TsFile");
-      }
-      TsFileMetadata tsFileMetadata = reader.readFileMetadata();
-      // truncate metadata and marker
-      truncatePosition = tsFileMetadata.getMetaOffset();
-
-      canWrite = true;
-      List<IDeviceID> devices = reader.getAllDevices();
-      for (IDeviceID device : devices) {
-        List<ChunkMetadata> chunkMetadataList = new ArrayList<>();
-        reader.readChunkMetadataInDevice(device).values().forEach(chunkMetadataList::addAll);
-        ChunkGroupMetadata chunkGroupMetadata = new ChunkGroupMetadata(device, chunkMetadataList);
-        chunkGroupMetadataList.add(chunkGroupMetadata);
-      }
-    }
-  }
-
-  public void doTruncate() throws IOException {
-    out.truncate(truncatePosition);
-  }
-
-  public long getTruncatePosition() {
-    return truncatePosition;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/IDataWriter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/IDataWriter.java
deleted file mode 100644
index 5a56a9a..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/IDataWriter.java
+++ /dev/null
@@ -1,21 +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.write.writer;
-
-public interface IDataWriter {}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/LocalTsFileOutput.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/LocalTsFileOutput.java
deleted file mode 100644
index d64d796..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/LocalTsFileOutput.java
+++ /dev/null
@@ -1,106 +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.write.writer;
-
-import java.io.BufferedOutputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-
-/**
- * a TsFileOutput implementation with FileOutputStream. If the file is not existed, it will be
- * created. Otherwise the file will be written from position 0.
- */
-public class LocalTsFileOutput extends OutputStream implements TsFileOutput {
-
-  private FileOutputStream outputStream;
-  private BufferedOutputStream bufferedStream;
-  private long position;
-
-  public LocalTsFileOutput(FileOutputStream outputStream) {
-    this.outputStream = outputStream;
-    this.bufferedStream = new BufferedOutputStream(outputStream);
-    position = 0;
-  }
-
-  @Override
-  public void write(int b) throws IOException {
-    bufferedStream.write(b);
-    position++;
-  }
-
-  @Override
-  public void write(byte[] b) throws IOException {
-    bufferedStream.write(b);
-    position += b.length;
-  }
-
-  @Override
-  public void write(byte b) throws IOException {
-    bufferedStream.write(b);
-    position++;
-  }
-
-  @Override
-  public void write(byte[] buf, int start, int offset) throws IOException {
-    bufferedStream.write(buf, start, offset);
-    position += offset;
-  }
-
-  @Override
-  public void write(ByteBuffer b) throws IOException {
-    bufferedStream.write(b.array());
-    position += b.array().length;
-  }
-
-  @Override
-  public long getPosition() {
-    return position;
-  }
-
-  @Override
-  public void close() throws IOException {
-    bufferedStream.close();
-    outputStream.close();
-  }
-
-  @Override
-  public OutputStream wrapAsStream() {
-    return this;
-  }
-
-  @Override
-  public void flush() throws IOException {
-    this.bufferedStream.flush();
-  }
-
-  @Override
-  public void truncate(long size) throws IOException {
-    bufferedStream.flush();
-    outputStream.getChannel().truncate(size);
-    position = outputStream.getChannel().position();
-  }
-
-  @Override
-  public void force() throws IOException {
-    flush();
-    outputStream.getFD().sync();
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/RestorableTsFileIOWriter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/RestorableTsFileIOWriter.java
deleted file mode 100644
index 051008b..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/RestorableTsFileIOWriter.java
+++ /dev/null
@@ -1,269 +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.write.writer;
-
-import org.apache.iotdb.tsfile.exception.NotCompatibleTsFileException;
-import org.apache.iotdb.tsfile.file.metadata.ChunkGroupMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.TsFileCheckStatus;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.channels.FileChannel;
-import java.nio.file.Paths;
-import java.nio.file.StandardOpenOption;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * This writer is for opening and recover a TsFile
- *
- * <p>(1) If the TsFile is closed normally, hasCrashed()=false and canWrite()=false
- *
- * <p>(2) Otherwise, the writer generates metadata for already flushed Chunks and truncate crashed
- * data. The hasCrashed()=true and canWrite()=true
- *
- * <p>Notice!!! If you want to query this file through the generated metadata, remember to call the
- * makeMetadataVisible()
- */
-public class RestorableTsFileIOWriter extends TsFileIOWriter {
-
-  private static final Logger logger = LoggerFactory.getLogger("FileMonitor");
-  private long truncatedSize = -1;
-  private Map<Path, IMeasurementSchema> knownSchemas = new HashMap<>();
-
-  private int lastFlushedChunkGroupIndex = 0;
-
-  private boolean crashed;
-
-  private long minPlanIndex = Long.MAX_VALUE;
-  private long maxPlanIndex = Long.MIN_VALUE;
-
-  /** all chunk group metadata which have been serialized on disk. */
-  private final Map<IDeviceID, Map<String, List<ChunkMetadata>>> metadatasForQuery =
-      new HashMap<>();
-
-  /**
-   * @param file a given tsfile path you want to (continue to) write
-   * @throws IOException if write failed, or the file is broken but autoRepair==false.
-   */
-  public RestorableTsFileIOWriter(File file) throws IOException {
-    this(file, true);
-  }
-
-  /**
-   * @param file a given tsfile path you want to (continue to) write
-   * @throws IOException if write failed, or the file is broken but autoRepair==false.
-   */
-  public RestorableTsFileIOWriter(File file, long maxMetadataSize) throws IOException {
-    this(file, true);
-    this.maxMetadataSize = maxMetadataSize;
-    this.chunkMetadataTempFile = new File(file.getAbsolutePath() + CHUNK_METADATA_TEMP_FILE_SUFFIX);
-    this.checkMetadataSizeAndMayFlush();
-  }
-
-  public RestorableTsFileIOWriter(File file, boolean truncate) throws IOException {
-    if (logger.isDebugEnabled()) {
-      logger.debug("{} is opened.", file.getName());
-    }
-    this.file = file;
-    this.out = FSFactoryProducer.getFileOutputFactory().getTsFileOutput(file.getPath(), true);
-
-    // file doesn't exist
-    if (file.length() == 0) {
-      startFile();
-      crashed = true;
-      canWrite = true;
-      return;
-    }
-
-    if (file.exists()) {
-      try (TsFileSequenceReader reader = new TsFileSequenceReader(file.getAbsolutePath(), false)) {
-
-        truncatedSize = reader.selfCheck(knownSchemas, chunkGroupMetadataList, true);
-        minPlanIndex = reader.getMinPlanIndex();
-        maxPlanIndex = reader.getMaxPlanIndex();
-        if (truncatedSize == TsFileCheckStatus.COMPLETE_FILE) {
-          crashed = false;
-          canWrite = false;
-          out.close();
-        } else if (truncatedSize == TsFileCheckStatus.INCOMPATIBLE_FILE) {
-          out.close();
-          throw new NotCompatibleTsFileException(
-              String.format("%s is not in TsFile format.", file.getAbsolutePath()));
-        } else {
-          crashed = true;
-          canWrite = true;
-          // remove broken data
-          if (truncate) {
-            out.truncate(truncatedSize);
-          }
-        }
-      }
-    }
-  }
-
-  /**
-   * Given a TsFile, generate a writable RestorableTsFileIOWriter. That is, for a complete TsFile,
-   * the function erases all FileMetadata and supports writing new data; For a incomplete TsFile,
-   * the function supports writing new data directly. However, it is more efficient using the
-   * construction function of RestorableTsFileIOWriter, if the tsfile is incomplete.
-   *
-   * @param file a TsFile
-   * @return a writable RestorableTsFileIOWriter
-   */
-  public static RestorableTsFileIOWriter getWriterForAppendingDataOnCompletedTsFile(File file)
-      throws IOException {
-    long position = file.length();
-
-    try (TsFileSequenceReader reader = new TsFileSequenceReader(file.getAbsolutePath(), false)) {
-      // this tsfile is complete
-      if (reader.isComplete()) {
-        reader.loadMetadataSize();
-        position = reader.getFileMetadataPos();
-      }
-    }
-
-    if (position != file.length()) {
-      // if the file is complete, we will remove all file metadatas
-      try (FileChannel channel =
-          FileChannel.open(Paths.get(file.getAbsolutePath()), StandardOpenOption.WRITE)) {
-        channel.truncate(position - 1); // remove the last marker.
-      }
-    }
-    return new RestorableTsFileIOWriter(file);
-  }
-
-  long getTruncatedSize() {
-    return truncatedSize;
-  }
-
-  public Map<Path, IMeasurementSchema> getKnownSchema() {
-    return knownSchemas;
-  }
-
-  /**
-   * For query.
-   *
-   * <p>get chunks' metadata from memory.
-   *
-   * @param deviceId the device id
-   * @param measurementId the measurement id
-   * @param dataType the value type
-   * @return chunks' metadata
-   */
-  public List<ChunkMetadata> getVisibleMetadataList(
-      IDeviceID deviceId, String measurementId, TSDataType dataType) {
-    List<ChunkMetadata> chunkMetadataList = new ArrayList<>();
-    if (metadatasForQuery.containsKey(deviceId)
-        && metadatasForQuery.get(deviceId).containsKey(measurementId)) {
-      for (IChunkMetadata chunkMetaData : metadatasForQuery.get(deviceId).get(measurementId)) {
-        // filter: if a device'measurement is defined as float type, and data has been persistent.
-        // Then someone deletes the timeseries and recreate it with Int type. We have to ignore
-        // all the stale data.
-        if (dataType == null || dataType.equals(chunkMetaData.getDataType())) {
-          chunkMetadataList.add((ChunkMetadata) chunkMetaData);
-        }
-      }
-    }
-    return chunkMetadataList;
-  }
-
-  public Map<IDeviceID, Map<String, List<ChunkMetadata>>> getMetadatasForQuery() {
-    return metadatasForQuery;
-  }
-
-  /**
-   * add all appendChunkMetadatas into memory. After calling this method, other classes can read
-   * these metadata.
-   */
-  public void makeMetadataVisible() {
-    List<ChunkGroupMetadata> newlyFlushedMetadataList = getAppendedRowMetadata();
-    if (!newlyFlushedMetadataList.isEmpty()) {
-      for (ChunkGroupMetadata chunkGroupMetadata : newlyFlushedMetadataList) {
-        List<ChunkMetadata> rowMetaDataList = chunkGroupMetadata.getChunkMetadataList();
-
-        IDeviceID device = chunkGroupMetadata.getDevice();
-        for (ChunkMetadata chunkMetaData : rowMetaDataList) {
-          String measurementId = chunkMetaData.getMeasurementUid();
-          if (!metadatasForQuery.containsKey(device)) {
-            metadatasForQuery.put(device, new HashMap<>());
-          }
-          if (!metadatasForQuery.get(device).containsKey(measurementId)) {
-            metadatasForQuery.get(device).put(measurementId, new ArrayList<>());
-          }
-          metadatasForQuery.get(device).get(measurementId).add(chunkMetaData);
-        }
-      }
-    }
-  }
-
-  /**
-   * Whether this TsFile is crashed.
-   *
-   * @return false when this TsFile is complete
-   */
-  public boolean hasCrashed() {
-    return crashed;
-  }
-
-  /**
-   * get all the chunk's metadata which are appended after the last calling of this method, or after
-   * the class instance is initialized if this is the first time to call the method.
-   *
-   * @return a list of Device ChunkMetadataList Pair
-   */
-  private List<ChunkGroupMetadata> getAppendedRowMetadata() {
-    List<ChunkGroupMetadata> append = new ArrayList<>();
-    if (lastFlushedChunkGroupIndex < chunkGroupMetadataList.size()) {
-      append.addAll(
-          chunkGroupMetadataList.subList(
-              lastFlushedChunkGroupIndex, chunkGroupMetadataList.size()));
-      lastFlushedChunkGroupIndex = chunkGroupMetadataList.size();
-    }
-    return append;
-  }
-
-  public void addSchema(Path path, IMeasurementSchema schema) {
-    knownSchemas.put(path, schema);
-  }
-
-  @Override
-  public long getMinPlanIndex() {
-    return minPlanIndex;
-  }
-
-  @Override
-  public long getMaxPlanIndex() {
-    return maxPlanIndex;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java
deleted file mode 100644
index 6570a07..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java
+++ /dev/null
@@ -1,694 +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.write.writer;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkGroupHeader;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkGroupMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.MeasurementMetadataIndexEntry;
-import org.apache.iotdb.tsfile.file.metadata.MetadataIndexNode;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.MetadataIndexNodeType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.BloomFilter;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.writer.tsmiterator.TSMIterator;
-
-import org.apache.commons.io.FileUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.ArrayDeque;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Queue;
-import java.util.TreeMap;
-
-import static org.apache.iotdb.tsfile.file.metadata.MetadataIndexConstructor.addCurrentIndexNodeToQueue;
-import static org.apache.iotdb.tsfile.file.metadata.MetadataIndexConstructor.checkAndBuildLevelIndex;
-import static org.apache.iotdb.tsfile.file.metadata.MetadataIndexConstructor.generateRootNode;
-
-/**
- * TsFileIOWriter is used to construct metadata and write data stored in memory to output stream.
- */
-public class TsFileIOWriter implements AutoCloseable {
-
-  protected static final byte[] MAGIC_STRING_BYTES;
-  public static final byte VERSION_NUMBER_BYTE;
-  protected static final TSFileConfig TS_FILE_CONFIG = TSFileDescriptor.getInstance().getConfig();
-  private static final Logger logger = LoggerFactory.getLogger(TsFileIOWriter.class);
-  private static final Logger resourceLogger = LoggerFactory.getLogger("FileMonitor");
-
-  static {
-    MAGIC_STRING_BYTES = BytesUtils.stringToBytes(TSFileConfig.MAGIC_STRING);
-    VERSION_NUMBER_BYTE = TSFileConfig.VERSION_NUMBER;
-  }
-
-  protected TsFileOutput out;
-  protected boolean canWrite = true;
-  protected File file;
-
-  // current flushed Chunk
-  protected ChunkMetadata currentChunkMetadata;
-  // current flushed ChunkGroup
-  protected List<ChunkMetadata> chunkMetadataList = new ArrayList<>();
-  // all flushed ChunkGroups
-  protected List<ChunkGroupMetadata> chunkGroupMetadataList = new ArrayList<>();
-
-  private long markedPosition;
-  private IDeviceID currentChunkGroupDeviceId;
-
-  // the two longs marks the index range of operations in current MemTable
-  // and are serialized after MetaMarker.OPERATION_INDEX_RANGE to recover file-level range
-  private long minPlanIndex;
-  private long maxPlanIndex;
-
-  // the following variable is used for memory control
-  protected long maxMetadataSize;
-  protected long currentChunkMetadataSize = 0L;
-  protected File chunkMetadataTempFile;
-  protected LocalTsFileOutput tempOutput;
-  protected volatile boolean hasChunkMetadataInDisk = false;
-  // record the total num of path in order to make bloom filter
-  protected int pathCount = 0;
-  private Path lastSerializePath = null;
-  protected LinkedList<Long> endPosInCMTForDevice = new LinkedList<>();
-  private volatile int chunkMetadataCount = 0;
-  public static final String CHUNK_METADATA_TEMP_FILE_SUFFIX = ".meta";
-
-  /** empty construct function. */
-  protected TsFileIOWriter() {}
-
-  /**
-   * for writing a new tsfile.
-   *
-   * @param file be used to output written data
-   * @throws IOException if I/O error occurs
-   */
-  public TsFileIOWriter(File file) throws IOException {
-    this.out = FSFactoryProducer.getFileOutputFactory().getTsFileOutput(file.getPath(), false);
-    this.file = file;
-    if (resourceLogger.isDebugEnabled()) {
-      resourceLogger.debug("{} writer is opened.", file.getName());
-    }
-    startFile();
-  }
-
-  /**
-   * for writing a new tsfile.
-   *
-   * @param output be used to output written data
-   */
-  public TsFileIOWriter(TsFileOutput output) throws IOException {
-    this.out = output;
-    startFile();
-  }
-
-  /** for test only */
-  public TsFileIOWriter(TsFileOutput output, boolean test) {
-    this.out = output;
-  }
-
-  /** for write with memory control */
-  public TsFileIOWriter(File file, long maxMetadataSize) throws IOException {
-    this(file);
-    this.maxMetadataSize = maxMetadataSize;
-    chunkMetadataTempFile = new File(file.getAbsolutePath() + CHUNK_METADATA_TEMP_FILE_SUFFIX);
-  }
-
-  /**
-   * Writes given bytes to output stream. This method is called when total memory size exceeds the
-   * chunk group size threshold.
-   *
-   * @param bytes - data of several pages which has been packed
-   * @throws IOException if an I/O error occurs.
-   */
-  public void writeBytesToStream(PublicBAOS bytes) throws IOException {
-    bytes.writeTo(out.wrapAsStream());
-  }
-
-  protected void startFile() throws IOException {
-    out.write(MAGIC_STRING_BYTES);
-    out.write(VERSION_NUMBER_BYTE);
-  }
-
-  public int startChunkGroup(IDeviceID deviceId) throws IOException {
-    this.currentChunkGroupDeviceId = deviceId;
-    if (logger.isDebugEnabled()) {
-      logger.debug("start chunk group:{}, file position {}", deviceId, out.getPosition());
-    }
-    chunkMetadataList = new ArrayList<>();
-    ChunkGroupHeader chunkGroupHeader = new ChunkGroupHeader(currentChunkGroupDeviceId);
-    return chunkGroupHeader.serializeTo(out.wrapAsStream());
-  }
-
-  /**
-   * end chunk and write some log. If there is no data in the chunk group, nothing will be flushed.
-   */
-  public void endChunkGroup() throws IOException {
-    if (currentChunkGroupDeviceId == null || chunkMetadataList.isEmpty()) {
-      return;
-    }
-    chunkGroupMetadataList.add(
-        new ChunkGroupMetadata(currentChunkGroupDeviceId, chunkMetadataList));
-    currentChunkGroupDeviceId = null;
-    chunkMetadataList = null;
-    out.flush();
-  }
-
-  /**
-   * For TsFileReWriteTool / UpgradeTool. Use this method to determine if needs to start a
-   * ChunkGroup.
-   *
-   * @return isWritingChunkGroup
-   */
-  public boolean isWritingChunkGroup() {
-    return currentChunkGroupDeviceId != null;
-  }
-
-  /**
-   * start a {@linkplain ChunkMetadata ChunkMetaData}.
-   *
-   * @param measurementId - measurementId of this time series
-   * @param compressionCodecName - compression name of this time series
-   * @param tsDataType - data type
-   * @param statistics - Chunk statistics
-   * @param dataSize - the serialized size of all pages
-   * @param mask - 0x80 for time chunk, 0x40 for value chunk, 0x00 for common chunk
-   * @throws IOException if I/O error occurs
-   */
-  public void startFlushChunk(
-      String measurementId,
-      CompressionType compressionCodecName,
-      TSDataType tsDataType,
-      TSEncoding encodingType,
-      Statistics<? extends Serializable> statistics,
-      int dataSize,
-      int numOfPages,
-      int mask)
-      throws IOException {
-
-    currentChunkMetadata =
-        new ChunkMetadata(measurementId, tsDataType, out.getPosition(), statistics);
-    currentChunkMetadata.setMask((byte) mask);
-
-    ChunkHeader header =
-        new ChunkHeader(
-            measurementId,
-            dataSize,
-            tsDataType,
-            compressionCodecName,
-            encodingType,
-            numOfPages,
-            mask);
-    header.serializeTo(out.wrapAsStream());
-  }
-
-  /** Write a whole chunk in another file into this file. Providing fast merge for IoTDB. */
-  public void writeChunk(Chunk chunk, ChunkMetadata chunkMetadata) throws IOException {
-    ChunkHeader chunkHeader = chunk.getHeader();
-    currentChunkMetadata =
-        new ChunkMetadata(
-            chunkHeader.getMeasurementID(),
-            chunkHeader.getDataType(),
-            out.getPosition(),
-            chunkMetadata.getStatistics());
-    chunkHeader.serializeTo(out.wrapAsStream());
-    out.write(chunk.getData());
-    endCurrentChunk();
-    if (logger.isDebugEnabled()) {
-      logger.debug(
-          "end flushing a chunk:{}, totalvalue:{}",
-          chunkHeader.getMeasurementID(),
-          chunkMetadata.getNumOfPoints());
-    }
-  }
-
-  /** Write an empty value chunk into file directly. Only used for aligned timeseries. */
-  public void writeEmptyValueChunk(
-      String measurementId,
-      CompressionType compressionType,
-      TSDataType tsDataType,
-      TSEncoding encodingType,
-      Statistics<? extends Serializable> statistics)
-      throws IOException {
-    currentChunkMetadata =
-        new ChunkMetadata(measurementId, tsDataType, out.getPosition(), statistics);
-    currentChunkMetadata.setMask(TsFileConstant.VALUE_COLUMN_MASK);
-    ChunkHeader emptyChunkHeader =
-        new ChunkHeader(
-            measurementId,
-            0,
-            tsDataType,
-            compressionType,
-            encodingType,
-            0,
-            TsFileConstant.VALUE_COLUMN_MASK);
-    emptyChunkHeader.serializeTo(out.wrapAsStream());
-    endCurrentChunk();
-  }
-
-  public void writeChunk(Chunk chunk) throws IOException {
-    ChunkHeader chunkHeader = chunk.getHeader();
-    currentChunkMetadata =
-        new ChunkMetadata(
-            chunkHeader.getMeasurementID(),
-            chunkHeader.getDataType(),
-            out.getPosition(),
-            chunk.getChunkStatistic());
-    chunkHeader.serializeTo(out.wrapAsStream());
-    out.write(chunk.getData());
-    endCurrentChunk();
-  }
-
-  /** end chunk and write some log. */
-  public void endCurrentChunk() {
-    this.currentChunkMetadataSize += currentChunkMetadata.getRetainedSizeInBytes();
-    chunkMetadataCount++;
-    chunkMetadataList.add(currentChunkMetadata);
-    currentChunkMetadata = null;
-  }
-
-  /**
-   * write {@linkplain TsFileMetadata TSFileMetaData} to output stream and close it.
-   *
-   * @throws IOException if I/O error occurs
-   */
-  @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning
-  public void endFile() throws IOException {
-    checkInMemoryPathCount();
-    readChunkMetadataAndConstructIndexTree();
-
-    long footerIndex = out.getPosition();
-    if (logger.isDebugEnabled()) {
-      logger.debug("start to flush the footer,file pos:{}", footerIndex);
-    }
-
-    // write magic string
-    out.write(MAGIC_STRING_BYTES);
-
-    // flush page cache data to disk
-    out.force();
-    // close file
-    out.close();
-
-    if (resourceLogger.isDebugEnabled() && file != null) {
-      resourceLogger.debug("{} writer is closed.", file.getName());
-    }
-    if (file != null) {
-      File chunkMetadataFile = new File(file.getAbsolutePath() + CHUNK_METADATA_TEMP_FILE_SUFFIX);
-      if (chunkMetadataFile.exists()) {
-        FileUtils.delete(chunkMetadataFile);
-      }
-    }
-    canWrite = false;
-  }
-
-  private void checkInMemoryPathCount() {
-    for (ChunkGroupMetadata chunkGroupMetadata : chunkGroupMetadataList) {
-      pathCount += chunkGroupMetadata.getChunkMetadataList().size();
-    }
-  }
-
-  private void readChunkMetadataAndConstructIndexTree() throws IOException {
-    if (tempOutput != null) {
-      tempOutput.close();
-    }
-    long metaOffset = out.getPosition();
-
-    // serialize the SEPARATOR of MetaData
-    ReadWriteIOUtils.write(MetaMarker.SEPARATOR, out.wrapAsStream());
-
-    TSMIterator tsmIterator =
-        hasChunkMetadataInDisk
-            ? TSMIterator.getTSMIteratorInDisk(
-                chunkMetadataTempFile, chunkGroupMetadataList, endPosInCMTForDevice)
-            : TSMIterator.getTSMIteratorInMemory(chunkGroupMetadataList);
-    Map<IDeviceID, MetadataIndexNode> deviceMetadataIndexMap = new TreeMap<>();
-    Queue<MetadataIndexNode> measurementMetadataIndexQueue = new ArrayDeque<>();
-    IDeviceID currentDevice = null;
-    IDeviceID prevDevice = null;
-    Path currentPath = null;
-    MetadataIndexNode currentIndexNode =
-        new MetadataIndexNode(MetadataIndexNodeType.LEAF_MEASUREMENT);
-    int seriesIdxForCurrDevice = 0;
-    BloomFilter filter =
-        BloomFilter.getEmptyBloomFilter(
-            TSFileDescriptor.getInstance().getConfig().getBloomFilterErrorRate(), pathCount);
-
-    while (tsmIterator.hasNext()) {
-      // read in all chunk metadata of one series
-      // construct the timeseries metadata for this series
-      Pair<Path, TimeseriesMetadata> timeseriesMetadataPair = tsmIterator.next();
-      TimeseriesMetadata timeseriesMetadata = timeseriesMetadataPair.right;
-      currentPath = timeseriesMetadataPair.left;
-
-      // build bloom filter
-      filter.add(currentPath.getFullPath());
-      // construct the index tree node for the series
-
-      currentDevice = currentPath.getIDeviceID();
-      if (!currentDevice.equals(prevDevice)) {
-        if (prevDevice != null) {
-          addCurrentIndexNodeToQueue(currentIndexNode, measurementMetadataIndexQueue, out);
-          deviceMetadataIndexMap.put(
-              prevDevice,
-              generateRootNode(
-                  measurementMetadataIndexQueue, out, MetadataIndexNodeType.INTERNAL_MEASUREMENT));
-          currentIndexNode = new MetadataIndexNode(MetadataIndexNodeType.LEAF_MEASUREMENT);
-        }
-        measurementMetadataIndexQueue = new ArrayDeque<>();
-        seriesIdxForCurrDevice = 0;
-      }
-
-      if (seriesIdxForCurrDevice % TS_FILE_CONFIG.getMaxDegreeOfIndexNode() == 0) {
-        if (currentIndexNode.isFull()) {
-          addCurrentIndexNodeToQueue(currentIndexNode, measurementMetadataIndexQueue, out);
-          currentIndexNode = new MetadataIndexNode(MetadataIndexNodeType.LEAF_MEASUREMENT);
-        }
-        if (timeseriesMetadata.getTsDataType() != TSDataType.VECTOR) {
-          currentIndexNode.addEntry(
-              new MeasurementMetadataIndexEntry(currentPath.getMeasurement(), out.getPosition()));
-        } else {
-          currentIndexNode.addEntry(new MeasurementMetadataIndexEntry("", out.getPosition()));
-        }
-      }
-
-      prevDevice = currentDevice;
-      seriesIdxForCurrDevice++;
-      // serialize the timeseries metadata to file
-      timeseriesMetadata.serializeTo(out.wrapAsStream());
-    }
-
-    addCurrentIndexNodeToQueue(currentIndexNode, measurementMetadataIndexQueue, out);
-    if (prevDevice != null) {
-      deviceMetadataIndexMap.put(
-          prevDevice,
-          generateRootNode(
-              measurementMetadataIndexQueue, out, MetadataIndexNodeType.INTERNAL_MEASUREMENT));
-    }
-
-    MetadataIndexNode metadataIndex = checkAndBuildLevelIndex(deviceMetadataIndexMap, out);
-
-    TsFileMetadata tsFileMetadata = new TsFileMetadata();
-    tsFileMetadata.setMetadataIndex(metadataIndex);
-    tsFileMetadata.setMetaOffset(metaOffset);
-
-    int size = tsFileMetadata.serializeTo(out.wrapAsStream());
-    size += tsFileMetadata.serializeBloomFilter(out.wrapAsStream(), filter);
-
-    // write TsFileMetaData size
-    ReadWriteIOUtils.write(size, out.wrapAsStream());
-  }
-
-  /**
-   * get the length of normal OutputStream.
-   *
-   * @return - length of normal OutputStream
-   * @throws IOException if I/O error occurs
-   */
-  public long getPos() throws IOException {
-    return out.getPosition();
-  }
-
-  // device -> ChunkMetadataList
-  public Map<IDeviceID, List<ChunkMetadata>> getDeviceChunkMetadataMap() {
-    Map<IDeviceID, List<ChunkMetadata>> deviceChunkMetadataMap = new HashMap<>();
-
-    for (ChunkGroupMetadata chunkGroupMetadata : chunkGroupMetadataList) {
-      deviceChunkMetadataMap
-          .computeIfAbsent(chunkGroupMetadata.getDevice(), k -> new ArrayList<>())
-          .addAll(chunkGroupMetadata.getChunkMetadataList());
-    }
-    return deviceChunkMetadataMap;
-  }
-
-  public boolean canWrite() {
-    return canWrite;
-  }
-
-  public void mark() throws IOException {
-    markedPosition = getPos();
-  }
-
-  public void reset() throws IOException {
-    out.truncate(markedPosition);
-  }
-
-  /**
-   * close the outputStream or file channel without writing FileMetadata. This is just used for
-   * Testing.
-   */
-  public void close() throws IOException {
-    canWrite = false;
-    out.close();
-    if (tempOutput != null) {
-      this.tempOutput.close();
-    }
-  }
-
-  void writeSeparatorMaskForTest() throws IOException {
-    out.write(new byte[] {MetaMarker.SEPARATOR});
-  }
-
-  void writeChunkGroupMarkerForTest() throws IOException {
-    out.write(new byte[] {MetaMarker.CHUNK_GROUP_HEADER});
-  }
-
-  public File getFile() {
-    return file;
-  }
-
-  public void setFile(File file) {
-    this.file = file;
-  }
-
-  public void writePlanIndices() throws IOException {
-    ReadWriteIOUtils.write(MetaMarker.OPERATION_INDEX_RANGE, out.wrapAsStream());
-    ReadWriteIOUtils.write(minPlanIndex, out.wrapAsStream());
-    ReadWriteIOUtils.write(maxPlanIndex, out.wrapAsStream());
-    out.flush();
-  }
-
-  public void truncate(long offset) throws IOException {
-    out.truncate(offset);
-  }
-
-  /**
-   * this function is only for Test.
-   *
-   * @return TsFileOutput
-   */
-  public TsFileOutput getIOWriterOut() {
-    return out;
-  }
-
-  /**
-   * This method should be called before flushing chunk group metadata list, otherwise, it will
-   * return null.
-   */
-  public List<ChunkMetadata> getChunkMetadataListOfCurrentDeviceInMemory() {
-    return chunkMetadataList;
-  }
-
-  /**
-   * this function is for Upgrade Tool and Split Tool.
-   *
-   * @return DeviceTimeseriesMetadataMap
-   */
-  public Map<IDeviceID, List<TimeseriesMetadata>> getDeviceTimeseriesMetadataMap() {
-    Map<IDeviceID, List<TimeseriesMetadata>> deviceTimeseriesMetadataMap = new TreeMap<>();
-    Map<IDeviceID, Map<String, List<IChunkMetadata>>> chunkMetadataMap = new TreeMap<>();
-    for (ChunkGroupMetadata chunkGroupMetadata : chunkGroupMetadataList) {
-      for (ChunkMetadata chunkMetadata : chunkGroupMetadata.getChunkMetadataList()) {
-        chunkMetadataMap
-            .computeIfAbsent(chunkGroupMetadata.getDevice(), x -> new TreeMap<>())
-            .computeIfAbsent(chunkMetadata.getMeasurementUid(), x -> new ArrayList<>())
-            .add(chunkMetadata);
-      }
-    }
-    for (IDeviceID device : chunkMetadataMap.keySet()) {
-      Map<String, List<IChunkMetadata>> seriesToChunkMetadataMap = chunkMetadataMap.get(device);
-      for (Map.Entry<String, List<IChunkMetadata>> entry : seriesToChunkMetadataMap.entrySet()) {
-        try {
-          deviceTimeseriesMetadataMap
-              .computeIfAbsent(device, x -> new ArrayList<>())
-              .add(TSMIterator.constructOneTimeseriesMetadata(entry.getKey(), entry.getValue()));
-        } catch (IOException e) {
-          logger.error("Failed to get device timeseries metadata map", e);
-          return null;
-        }
-      }
-    }
-
-    return deviceTimeseriesMetadataMap;
-  }
-
-  public long getMinPlanIndex() {
-    return minPlanIndex;
-  }
-
-  public void setMinPlanIndex(long minPlanIndex) {
-    this.minPlanIndex = minPlanIndex;
-  }
-
-  public long getMaxPlanIndex() {
-    return maxPlanIndex;
-  }
-
-  public void setMaxPlanIndex(long maxPlanIndex) {
-    this.maxPlanIndex = maxPlanIndex;
-  }
-
-  /**
-   * Check if the size of chunk metadata in memory is greater than the given threshold. If so, the
-   * chunk metadata will be written to a temp files. <b>Notice! If you are writing a aligned device
-   * in row, you should make sure all data of current writing device has been written before this
-   * method is called. For writing not aligned series or writing aligned series in column, you
-   * should make sure that all data of one series is written before you call this function.</b>
-   *
-   * @throws IOException
-   */
-  public int checkMetadataSizeAndMayFlush() throws IOException {
-    // This function should be called after all data of an aligned device has been written
-    if (currentChunkMetadataSize > maxMetadataSize) {
-      try {
-        if (logger.isDebugEnabled()) {
-          logger.debug(
-              "Flushing chunk metadata, total size is {}, count is {}, avg size is {}",
-              currentChunkMetadataSize,
-              chunkMetadataCount,
-              currentChunkMetadataSize / chunkMetadataCount);
-        }
-        return sortAndFlushChunkMetadata();
-      } catch (IOException e) {
-        logger.error("Meets exception when flushing metadata to temp file for {}", file, e);
-        throw e;
-      }
-    } else {
-      return 0;
-    }
-  }
-
-  /**
-   * Sort the chunk metadata by the lexicographical order and the start time of the chunk, then
-   * flush them to a temp file.
-   *
-   * @throws IOException
-   */
-  protected int sortAndFlushChunkMetadata() throws IOException {
-    int writtenSize = 0;
-    // group by series
-    List<Pair<Path, List<IChunkMetadata>>> sortedChunkMetadataList =
-        TSMIterator.sortChunkMetadata(
-            chunkGroupMetadataList, currentChunkGroupDeviceId, chunkMetadataList);
-    if (tempOutput == null) {
-      tempOutput = new LocalTsFileOutput(new FileOutputStream(chunkMetadataTempFile));
-    }
-    hasChunkMetadataInDisk = true;
-    for (Pair<Path, List<IChunkMetadata>> pair : sortedChunkMetadataList) {
-      Path seriesPath = pair.left;
-      boolean isNewPath = !seriesPath.equals(lastSerializePath);
-      if (isNewPath) {
-        // record the count of path to construct bloom filter later
-        pathCount++;
-      }
-      List<IChunkMetadata> iChunkMetadataList = pair.right;
-      writtenSize += writeChunkMetadataToTempFile(iChunkMetadataList, seriesPath, isNewPath);
-      lastSerializePath = seriesPath;
-      logger.debug("Flushing {}", seriesPath);
-    }
-    // clear the cache metadata to release the memory
-    chunkGroupMetadataList.clear();
-    if (chunkMetadataList != null) {
-      chunkMetadataList.clear();
-    }
-    chunkMetadataCount = 0;
-    currentChunkMetadataSize = 0;
-    return writtenSize;
-  }
-
-  private int writeChunkMetadataToTempFile(
-      List<IChunkMetadata> iChunkMetadataList, Path seriesPath, boolean isNewPath)
-      throws IOException {
-    int writtenSize = 0;
-    // [DeviceId] measurementId datatype size chunkMetadataBuffer
-    if (lastSerializePath == null
-        || !seriesPath.getDevice().equals(lastSerializePath.getDevice())) {
-      // mark the end position of last device
-      endPosInCMTForDevice.add(tempOutput.getPosition());
-      // serialize the device
-      // for each device, we only serialize it once, in order to save io
-      writtenSize += ReadWriteIOUtils.write(seriesPath.getDevice(), tempOutput.wrapAsStream());
-    }
-    if (isNewPath && !iChunkMetadataList.isEmpty()) {
-      // serialize the public info of this measurement
-      writtenSize +=
-          ReadWriteIOUtils.writeVar(seriesPath.getMeasurement(), tempOutput.wrapAsStream());
-      writtenSize +=
-          ReadWriteIOUtils.write(
-              iChunkMetadataList.get(0).getDataType(), tempOutput.wrapAsStream());
-    }
-    PublicBAOS buffer = new PublicBAOS();
-    int totalSize = 0;
-    for (IChunkMetadata chunkMetadata : iChunkMetadataList) {
-      totalSize += chunkMetadata.serializeTo(buffer, true);
-    }
-    writtenSize += ReadWriteIOUtils.write(totalSize, tempOutput.wrapAsStream());
-    buffer.writeTo(tempOutput);
-    writtenSize += buffer.size();
-    return writtenSize;
-  }
-
-  public List<ChunkGroupMetadata> getChunkGroupMetadataList() {
-    return chunkGroupMetadataList;
-  }
-
-  public void flush() throws IOException {
-    out.flush();
-  }
-
-  public TsFileOutput getTsFileOutput() {
-    return this.out;
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriterEndFileTest.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriterEndFileTest.java
deleted file mode 100644
index c4fd259..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriterEndFileTest.java
+++ /dev/null
@@ -1,51 +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.write.writer;
-
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import java.io.File;
-
-public class TsFileIOWriterEndFileTest {
-  public static void main(String[] args) throws Exception {
-    try (TsFileIOWriter writer = new TsFileIOWriter(new File("test.tsfile"))) {
-      for (int deviceIndex = 0; deviceIndex < 1000; deviceIndex++) {
-        writer.startChunkGroup(new PlainDeviceID("root.sg.d" + deviceIndex));
-        for (int seriesIndex = 0; seriesIndex < 1000; seriesIndex++) {
-          ChunkWriterImpl chunkWriter =
-              new ChunkWriterImpl(
-                  new MeasurementSchema(
-                      "s" + seriesIndex, TSDataType.INT32, TSEncoding.RLE, CompressionType.GZIP));
-          for (long time = 0; time < 10; ++time) {
-            chunkWriter.write(time, 0);
-          }
-          chunkWriter.writeToFileWriter(writer);
-        }
-        writer.endChunkGroup();
-      }
-      writer.endFile();
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileOutput.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileOutput.java
deleted file mode 100644
index 5088e0c..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileOutput.java
+++ /dev/null
@@ -1,94 +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.write.writer;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-
-public interface TsFileOutput {
-
-  /**
-   * Writes <code>b.length</code> bytes from the specified byte array to this output at the current
-   * position.
-   *
-   * @param b the data.
-   * @throws IOException if an I/O error occurs.
-   */
-  void write(byte[] b) throws IOException;
-
-  /**
-   * Writes 1 byte to this output at the current position.
-   *
-   * @param b the data.
-   * @throws IOException if an I/O error occurs.
-   */
-  void write(byte b) throws IOException;
-
-  /**
-   * Writes <code>b.remaining()</code> bytes from the specified byte array to this output at the
-   * current position.
-   *
-   * @param b the data.
-   * @throws IOException if an I/O error occurs.
-   */
-  void write(ByteBuffer b) throws IOException;
-
-  /**
-   * gets the current position of the Output. This method is usually used for recording where the
-   * data is. <br>
-   * For example, if the Output is a fileOutputStream, then getPosition returns its file position.
-   *
-   * @return current position
-   * @throws java.io.IOException if an I/O error occurs.
-   */
-  long getPosition() throws IOException;
-
-  /**
-   * close the output.
-   *
-   * @throws IOException if an I/O error occurs.
-   */
-  void close() throws IOException;
-
-  /**
-   * convert this TsFileOutput as a outputstream.
-   *
-   * @return an output stream whose position is the same with this Output
-   * @throws IOException if an I/O error occurs.
-   */
-  OutputStream wrapAsStream() throws IOException;
-
-  /**
-   * the same with {@link OutputStream#flush()}.
-   *
-   * @throws IOException if an I/O error occurs.
-   */
-  void flush() throws IOException;
-
-  /**
-   * The same with {@link java.nio.channels.FileChannel#truncate(long)}.
-   *
-   * @param size size The new size, a non-negative byte count
-   */
-  void truncate(long size) throws IOException;
-
-  /** Make sure that the data in the buffer is flushed to disk */
-  void force() throws IOException;
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/tsmiterator/DiskTSMIterator.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/tsmiterator/DiskTSMIterator.java
deleted file mode 100644
index b6f6df8..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/tsmiterator/DiskTSMIterator.java
+++ /dev/null
@@ -1,133 +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.write.writer.tsmiterator;
-
-import org.apache.iotdb.tsfile.file.metadata.ChunkGroupMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.reader.LocalTsFileInput;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * This class read ChunkMetadata iteratively from disk(.cmt file) and memory(list of
- * ChunkGroupMetadata), and construct them as TimeseriesMetadata. It will read ChunkMetadata in disk
- * first, and after all ChunkMetadata in disk is read, it will read ChunkMetadata in memory.
- */
-public class DiskTSMIterator extends TSMIterator {
-
-  private static final Logger LOG = LoggerFactory.getLogger(DiskTSMIterator.class);
-
-  private LinkedList<Long> endPosForEachDevice;
-  private File cmtFile;
-  private LocalTsFileInput input;
-  private long fileLength = 0;
-  private long currentPos = 0;
-  private long nextEndPosForDevice = 0;
-  private String currentDevice;
-  private boolean remainsInFile = true;
-
-  protected DiskTSMIterator(
-      File cmtFile,
-      List<ChunkGroupMetadata> chunkGroupMetadataList,
-      LinkedList<Long> endPosForEachDevice)
-      throws IOException {
-    super(chunkGroupMetadataList);
-    this.cmtFile = cmtFile;
-    this.endPosForEachDevice = endPosForEachDevice;
-    this.input = new LocalTsFileInput(cmtFile.toPath());
-    this.fileLength = cmtFile.length();
-    this.nextEndPosForDevice = endPosForEachDevice.removeFirst();
-  }
-
-  @Override
-  public boolean hasNext() {
-    return remainsInFile || iterator.hasNext();
-  }
-
-  @Override
-  public Pair<Path, TimeseriesMetadata> next() {
-    try {
-      if (remainsInFile) {
-        // deserialize from file
-        return getTimeSerisMetadataFromFile();
-      } else {
-        // get from memory iterator
-        return super.next();
-      }
-    } catch (IOException e) {
-      LOG.error("Meets IOException when reading timeseries metadata from disk", e);
-      return null;
-    }
-  }
-
-  private Pair<Path, TimeseriesMetadata> getTimeSerisMetadataFromFile() throws IOException {
-    if (currentPos == nextEndPosForDevice) {
-      // deserialize the current device name
-      currentDevice = ReadWriteIOUtils.readString(input.wrapAsInputStream());
-      nextEndPosForDevice =
-          endPosForEachDevice.size() > 0 ? endPosForEachDevice.removeFirst() : fileLength;
-    }
-    // deserialize public info for measurement
-    String measurementUid = ReadWriteIOUtils.readVarIntString(input.wrapAsInputStream());
-    byte dataTypeInByte = ReadWriteIOUtils.readByte(input.wrapAsInputStream());
-    TSDataType dataType = TSDataType.getTsDataType(dataTypeInByte);
-    int chunkBufferSize = ReadWriteIOUtils.readInt(input.wrapAsInputStream());
-    ByteBuffer chunkBuffer = ByteBuffer.allocate(chunkBufferSize);
-    int readSize = ReadWriteIOUtils.readAsPossible(input, chunkBuffer);
-    if (readSize < chunkBufferSize) {
-      throw new IOException(
-          String.format(
-              "Expected to read %s bytes, but actually read %s bytes", chunkBufferSize, readSize));
-    }
-    chunkBuffer.flip();
-
-    // deserialize chunk metadata from chunk buffer
-    List<IChunkMetadata> chunkMetadataList = new ArrayList<>();
-    while (chunkBuffer.hasRemaining()) {
-      chunkMetadataList.add(ChunkMetadata.deserializeFrom(chunkBuffer, dataType));
-    }
-    updateCurrentPos();
-    return new Pair<>(
-        new Path(currentDevice, measurementUid, false),
-        constructOneTimeseriesMetadata(measurementUid, chunkMetadataList));
-  }
-
-  private void updateCurrentPos() throws IOException {
-    currentPos = input.position();
-    if (currentPos >= fileLength) {
-      remainsInFile = false;
-      input.close();
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/tsmiterator/TSMIterator.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/tsmiterator/TSMIterator.java
deleted file mode 100644
index de0db63..0000000
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/tsmiterator/TSMIterator.java
+++ /dev/null
@@ -1,157 +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.write.writer.tsmiterator;
-
-import org.apache.iotdb.tsfile.file.metadata.ChunkGroupMetadata;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
-/**
- * TSMIterator returns full path of series and its TimeseriesMetadata iteratively. It accepts data
- * source from memory or disk. Static method getTSMIteratorInMemory returns a TSMIterator that reads
- * from memory, and static method getTSMIteratorInDisk returns a TSMIterator that reads from disk.
- */
-public class TSMIterator {
-  private static final Logger LOG = LoggerFactory.getLogger(TSMIterator.class);
-  protected List<Pair<Path, List<IChunkMetadata>>> sortedChunkMetadataList;
-  protected Iterator<Pair<Path, List<IChunkMetadata>>> iterator;
-
-  protected TSMIterator(List<ChunkGroupMetadata> chunkGroupMetadataList) {
-    this.sortedChunkMetadataList = sortChunkMetadata(chunkGroupMetadataList, null, null);
-    this.iterator = sortedChunkMetadataList.iterator();
-  }
-
-  public static TSMIterator getTSMIteratorInMemory(
-      List<ChunkGroupMetadata> chunkGroupMetadataList) {
-    return new TSMIterator(chunkGroupMetadataList);
-  }
-
-  public static TSMIterator getTSMIteratorInDisk(
-      File cmtFile, List<ChunkGroupMetadata> chunkGroupMetadataList, LinkedList<Long> serializePos)
-      throws IOException {
-    return new DiskTSMIterator(cmtFile, chunkGroupMetadataList, serializePos);
-  }
-
-  public boolean hasNext() {
-    return iterator.hasNext();
-  }
-
-  public Pair<Path, TimeseriesMetadata> next() throws IOException {
-    Pair<Path, List<IChunkMetadata>> nextPair = iterator.next();
-    return new Pair<>(
-        nextPair.left,
-        constructOneTimeseriesMetadata(nextPair.left.getMeasurement(), nextPair.right));
-  }
-
-  public static TimeseriesMetadata constructOneTimeseriesMetadata(
-      String measurementId, List<IChunkMetadata> chunkMetadataList) throws IOException {
-    // create TimeseriesMetaData
-    PublicBAOS publicBAOS = new PublicBAOS();
-    TSDataType dataType = chunkMetadataList.get(chunkMetadataList.size() - 1).getDataType();
-    Statistics seriesStatistics = Statistics.getStatsByType(dataType);
-
-    int chunkMetadataListLength = 0;
-    boolean serializeStatistic = (chunkMetadataList.size() > 1);
-    // flush chunkMetadataList one by one
-    for (IChunkMetadata chunkMetadata : chunkMetadataList) {
-      if (!chunkMetadata.getDataType().equals(dataType)) {
-        continue;
-      }
-      chunkMetadataListLength += chunkMetadata.serializeTo(publicBAOS, serializeStatistic);
-      seriesStatistics.mergeStatistics(chunkMetadata.getStatistics());
-    }
-
-    TimeseriesMetadata timeseriesMetadata =
-        new TimeseriesMetadata(
-            (byte)
-                ((serializeStatistic ? (byte) 1 : (byte) 0) | chunkMetadataList.get(0).getMask()),
-            chunkMetadataListLength,
-            measurementId,
-            dataType,
-            seriesStatistics,
-            publicBAOS);
-    return timeseriesMetadata;
-  }
-
-  public static List<Pair<Path, List<IChunkMetadata>>> sortChunkMetadata(
-      List<ChunkGroupMetadata> chunkGroupMetadataList,
-      IDeviceID currentDevice,
-      List<ChunkMetadata> chunkMetadataList) {
-    Map<IDeviceID, Map<Path, List<IChunkMetadata>>> chunkMetadataMap = new TreeMap<>();
-    List<Pair<Path, List<IChunkMetadata>>> sortedChunkMetadataList = new LinkedList<>();
-    for (ChunkGroupMetadata chunkGroupMetadata : chunkGroupMetadataList) {
-      chunkMetadataMap.computeIfAbsent(chunkGroupMetadata.getDevice(), x -> new TreeMap<>());
-      for (IChunkMetadata chunkMetadata : chunkGroupMetadata.getChunkMetadataList()) {
-        chunkMetadataMap
-            .get(chunkGroupMetadata.getDevice())
-            .computeIfAbsent(
-                new Path(
-                    ((PlainDeviceID) chunkGroupMetadata.getDevice()).toStringID(),
-                    chunkMetadata.getMeasurementUid(),
-                    false),
-                x -> new ArrayList<>())
-            .add(chunkMetadata);
-      }
-    }
-    if (currentDevice != null) {
-      for (IChunkMetadata chunkMetadata : chunkMetadataList) {
-        chunkMetadataMap
-            .computeIfAbsent(currentDevice, x -> new TreeMap<>())
-            .computeIfAbsent(
-                new Path(
-                    ((PlainDeviceID) currentDevice).toStringID(),
-                    chunkMetadata.getMeasurementUid(),
-                    false),
-                x -> new ArrayList<>())
-            .add(chunkMetadata);
-      }
-    }
-
-    for (Map.Entry<IDeviceID, Map<Path, List<IChunkMetadata>>> entry :
-        chunkMetadataMap.entrySet()) {
-      Map<Path, List<IChunkMetadata>> seriesChunkMetadataMap = entry.getValue();
-      for (Map.Entry<Path, List<IChunkMetadata>> seriesChunkMetadataEntry :
-          seriesChunkMetadataMap.entrySet()) {
-        sortedChunkMetadataList.add(
-            new Pair<>(seriesChunkMetadataEntry.getKey(), seriesChunkMetadataEntry.getValue()));
-      }
-    }
-    return sortedChunkMetadataList;
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/LRUCacheTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/LRUCacheTest.java
deleted file mode 100644
index debcbad..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/LRUCacheTest.java
+++ /dev/null
@@ -1,55 +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.common;
-
-import org.apache.iotdb.tsfile.common.cache.LRUCache;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.IOException;
-
-public class LRUCacheTest {
-
-  private LRUCache<Integer, Integer> cache;
-
-  @Test
-  public void test() {
-    try {
-      int testCount = 1000;
-      int cacheSize = 5;
-      cache =
-          new LRUCache<Integer, Integer>(cacheSize) {
-
-            @Override
-            public Integer loadObjectByKey(Integer key) {
-              return key * 10;
-            }
-          };
-
-      for (int i = 1; i < testCount; i++) {
-        Assert.assertEquals(i * 10, (int) cache.get(i));
-        Assert.assertEquals((i - 1) * 10, (int) cache.get(i - 1));
-      }
-    } catch (IOException e) {
-      e.printStackTrace();
-      Assert.fail();
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/BinaryArrayColumnEncoderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/BinaryArrayColumnEncoderTest.java
deleted file mode 100644
index c3d08d0..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/BinaryArrayColumnEncoderTest.java
+++ /dev/null
@@ -1,82 +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.common.block;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnEncoder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnEncoderFactory;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Optional;
-import java.util.Random;
-
-public class BinaryArrayColumnEncoderTest {
-  @Test
-  public void testBinaryColumn() {
-    final int positionCount = 10;
-
-    Random random = new Random();
-
-    boolean[] nullIndicators = new boolean[positionCount];
-    Binary[] values = new Binary[positionCount];
-    for (int i = 0; i < positionCount; i++) {
-      nullIndicators[i] = i % 2 == 0;
-      if (i % 2 != 0) {
-        int length = random.nextInt(1024) + 1;
-        byte[] value = new byte[length];
-        random.nextBytes(value);
-        values[i] = new Binary(value);
-      }
-    }
-    BinaryColumn input = new BinaryColumn(positionCount, Optional.of(nullIndicators), values);
-    long expectedRetainedSize = input.getRetainedSizeInBytes();
-    ColumnEncoder encoder = ColumnEncoderFactory.get(ColumnEncoding.BINARY_ARRAY);
-
-    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-    DataOutputStream dos = new DataOutputStream(byteArrayOutputStream);
-    try {
-      encoder.writeColumn(dos, input);
-    } catch (IOException e) {
-      e.printStackTrace();
-      Assert.fail();
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(byteArrayOutputStream.toByteArray());
-    BinaryColumn output = (BinaryColumn) encoder.readColumn(buffer, TSDataType.TEXT, positionCount);
-    Assert.assertEquals(positionCount, output.getPositionCount());
-    Assert.assertTrue(output.mayHaveNull());
-    Assert.assertEquals(expectedRetainedSize, output.getRetainedSizeInBytes());
-    for (int i = 0; i < positionCount; i++) {
-      Assert.assertEquals(i % 2 == 0, output.isNull(i));
-      if (i % 2 != 0) {
-        Assert.assertEquals(values[i], output.getBinary(i));
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/ByteArrayColumnEncoderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/ByteArrayColumnEncoderTest.java
deleted file mode 100644
index 28bde62..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/ByteArrayColumnEncoderTest.java
+++ /dev/null
@@ -1,79 +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.common.block;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.column.BooleanColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnEncoder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnEncoderFactory;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnEncoding;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Optional;
-import java.util.Random;
-
-public class ByteArrayColumnEncoderTest {
-  @Test
-  public void testBooleanColumn() {
-    final int positionCount = 10;
-
-    Random random = new Random();
-
-    boolean[] nullIndicators = new boolean[positionCount];
-    boolean[] values = new boolean[positionCount];
-    for (int i = 0; i < positionCount; i++) {
-      nullIndicators[i] = i % 2 == 0;
-      if (i % 2 != 0) {
-        values[i] = random.nextBoolean();
-      }
-    }
-    BooleanColumn input = new BooleanColumn(positionCount, Optional.of(nullIndicators), values);
-    long expectedRetainedSize = input.getRetainedSizeInBytes();
-    ColumnEncoder encoder = ColumnEncoderFactory.get(ColumnEncoding.BYTE_ARRAY);
-
-    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-    DataOutputStream dos = new DataOutputStream(byteArrayOutputStream);
-    try {
-      encoder.writeColumn(dos, input);
-    } catch (IOException e) {
-      e.printStackTrace();
-      Assert.fail();
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(byteArrayOutputStream.toByteArray());
-    BooleanColumn output =
-        (BooleanColumn) encoder.readColumn(buffer, TSDataType.BOOLEAN, positionCount);
-    Assert.assertEquals(positionCount, output.getPositionCount());
-    Assert.assertTrue(output.mayHaveNull());
-    Assert.assertEquals(expectedRetainedSize, output.getRetainedSizeInBytes());
-    for (int i = 0; i < positionCount; i++) {
-      Assert.assertEquals(i % 2 == 0, output.isNull(i));
-      if (i % 2 != 0) {
-        Assert.assertEquals(values[i], output.getBoolean(i));
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/ColumnEncoderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/ColumnEncoderTest.java
deleted file mode 100644
index 242031f..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/ColumnEncoderTest.java
+++ /dev/null
@@ -1,144 +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.common.block;
-
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnEncoder;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.mockito.Mockito;
-
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-public class ColumnEncoderTest {
-  @Test
-  public void testSerializeNullIndicators() throws IOException {
-    // Construct a mock column with position count equals 7.
-    Column mockColumn = Mockito.mock(Column.class);
-    Mockito.doReturn(7).when(mockColumn).getPositionCount();
-    Mockito.doReturn(true).when(mockColumn).mayHaveNull();
-    Mockito.doAnswer(invocation -> (int) invocation.getArguments()[0] % 2 == 0)
-        .when(mockColumn)
-        .isNull(Mockito.anyInt());
-    Mockito.doAnswer(
-            invocation ->
-                (int) (invocation.getArguments()[0]) % 2 == 0 ? null : invocation.getArguments()[0])
-        .when(mockColumn)
-        .getInt(Mockito.anyInt());
-
-    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-    DataOutputStream output = new DataOutputStream(byteArrayOutputStream);
-    ColumnEncoder.serializeNullIndicators(output, mockColumn);
-    byte[] bytes = byteArrayOutputStream.toByteArray();
-    Assert.assertEquals(2, bytes.length);
-    Assert.assertEquals(1, bytes[0]);
-    Assert.assertEquals((byte) 0b1010_1010, bytes[1]);
-
-    // Change the position count to 8.
-    Mockito.doReturn(8).when(mockColumn).getPositionCount();
-    byteArrayOutputStream = new ByteArrayOutputStream();
-    output = new DataOutputStream(byteArrayOutputStream);
-    ColumnEncoder.serializeNullIndicators(output, mockColumn);
-    bytes = byteArrayOutputStream.toByteArray();
-    Assert.assertEquals(2, bytes.length);
-    Assert.assertEquals(1, bytes[0]);
-    Assert.assertEquals((byte) 0b1010_1010, bytes[1]);
-
-    // Change the position count to 15.
-    Mockito.doReturn(15).when(mockColumn).getPositionCount();
-    byteArrayOutputStream = new ByteArrayOutputStream();
-    output = new DataOutputStream(byteArrayOutputStream);
-    ColumnEncoder.serializeNullIndicators(output, mockColumn);
-    bytes = byteArrayOutputStream.toByteArray();
-    Assert.assertEquals(3, bytes.length);
-    Assert.assertEquals(1, bytes[0]);
-    Assert.assertEquals((byte) 0b1010_1010, bytes[1]);
-    Assert.assertEquals((byte) 0b1010_1010, bytes[1]);
-  }
-
-  @Test
-  public void testDeserializeNullIndicators() {
-    ByteBuffer buffer = ByteBuffer.wrap(new byte[] {(byte) 1, (byte) 0b1010_1010});
-    boolean[] nullIndicators = ColumnEncoder.deserializeNullIndicators(buffer, 7);
-    Assert.assertNotNull(nullIndicators);
-    Assert.assertEquals(7, nullIndicators.length);
-    for (int i = 0; i < nullIndicators.length; i++) {
-      if (i % 2 == 0) {
-        Assert.assertTrue(nullIndicators[i]);
-      } else {
-        Assert.assertFalse(nullIndicators[i]);
-      }
-    }
-
-    buffer = ByteBuffer.wrap(new byte[] {(byte) 1, (byte) 0b1010_1010});
-    nullIndicators = ColumnEncoder.deserializeNullIndicators(buffer, 8);
-    Assert.assertNotNull(nullIndicators);
-    Assert.assertEquals(8, nullIndicators.length);
-    for (int i = 0; i < nullIndicators.length; i++) {
-      if (i % 2 == 0) {
-        Assert.assertTrue(nullIndicators[i]);
-      } else {
-        Assert.assertFalse(nullIndicators[i]);
-      }
-    }
-
-    buffer = ByteBuffer.wrap(new byte[] {(byte) 1, (byte) 0b1010_1010, (byte) 0b1010_1010});
-    nullIndicators = ColumnEncoder.deserializeNullIndicators(buffer, 15);
-    Assert.assertNotNull(nullIndicators);
-    Assert.assertEquals(15, nullIndicators.length);
-    for (int i = 0; i < nullIndicators.length; i++) {
-      if (i % 2 == 0) {
-        Assert.assertTrue(nullIndicators[i]);
-      } else {
-        Assert.assertFalse(nullIndicators[i]);
-      }
-    }
-  }
-
-  @Test
-  public void testSerializeNoNullIndicators() throws IOException {
-    // Mock int32 column with position count == 8.
-    Column mockColumn = Mockito.mock(Column.class);
-    Mockito.doReturn(8).when(mockColumn).getPositionCount();
-    Mockito.doReturn(false).when(mockColumn).mayHaveNull();
-    Mockito.doReturn(false).when(mockColumn).isNull(Mockito.anyInt());
-    Mockito.doAnswer(invocation -> invocation.getArguments()[0])
-        .when(mockColumn)
-        .getInt(Mockito.anyInt());
-
-    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-    DataOutputStream output = new DataOutputStream(byteArrayOutputStream);
-    ColumnEncoder.serializeNullIndicators(output, mockColumn);
-    byte[] bytes = byteArrayOutputStream.toByteArray();
-    Assert.assertEquals(1, bytes.length);
-    Assert.assertEquals(0, bytes[0]);
-  }
-
-  @Test
-  public void testDeserializeNoNullIndicators() {
-    ByteBuffer byteBuffer = ByteBuffer.wrap(new byte[] {0});
-    boolean[] nullIndicators = ColumnEncoder.deserializeNullIndicators(byteBuffer, 8);
-    Assert.assertNull(nullIndicators);
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/Int32ArrayColumnEncoderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/Int32ArrayColumnEncoderTest.java
deleted file mode 100644
index 09d9ab1..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/Int32ArrayColumnEncoderTest.java
+++ /dev/null
@@ -1,119 +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.common.block;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnEncoder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnEncoderFactory;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnEncoding;
-import org.apache.iotdb.tsfile.read.common.block.column.FloatColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.IntColumn;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Optional;
-import java.util.Random;
-
-public class Int32ArrayColumnEncoderTest {
-  @Test
-  public void testIntColumn() {
-    final int positionCount = 10;
-
-    Random random = new Random();
-
-    boolean[] nullIndicators = new boolean[positionCount];
-    int[] values = new int[positionCount];
-    for (int i = 0; i < positionCount; i++) {
-      nullIndicators[i] = i % 2 == 0;
-      if (i % 2 != 0) {
-        values[i] = random.nextInt();
-      }
-    }
-    IntColumn input = new IntColumn(positionCount, Optional.of(nullIndicators), values);
-    long expectedRetainedSize = input.getRetainedSizeInBytes();
-    ColumnEncoder encoder = ColumnEncoderFactory.get(ColumnEncoding.INT32_ARRAY);
-
-    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-    DataOutputStream dos = new DataOutputStream(byteArrayOutputStream);
-    try {
-      encoder.writeColumn(dos, input);
-    } catch (IOException e) {
-      e.printStackTrace();
-      Assert.fail();
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(byteArrayOutputStream.toByteArray());
-    IntColumn output = (IntColumn) encoder.readColumn(buffer, TSDataType.INT32, positionCount);
-    Assert.assertEquals(positionCount, output.getPositionCount());
-    Assert.assertTrue(output.mayHaveNull());
-    Assert.assertEquals(expectedRetainedSize, output.getRetainedSizeInBytes());
-    for (int i = 0; i < positionCount; i++) {
-      Assert.assertEquals(i % 2 == 0, output.isNull(i));
-      if (i % 2 != 0) {
-        Assert.assertEquals(values[i], output.getInt(i));
-      }
-    }
-  }
-
-  @Test
-  public void testFloatColumn() {
-    final int positionCount = 10;
-
-    Random random = new Random();
-
-    boolean[] nullIndicators = new boolean[positionCount];
-    float[] values = new float[positionCount];
-    for (int i = 0; i < positionCount; i++) {
-      nullIndicators[i] = i % 2 == 0;
-      if (i % 2 != 0) {
-        values[i] = random.nextFloat();
-      }
-    }
-    FloatColumn input = new FloatColumn(positionCount, Optional.of(nullIndicators), values);
-    long expectedRetainedSize = input.getRetainedSizeInBytes();
-    ColumnEncoder encoder = ColumnEncoderFactory.get(ColumnEncoding.INT32_ARRAY);
-
-    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-    DataOutputStream dos = new DataOutputStream(byteArrayOutputStream);
-    try {
-      encoder.writeColumn(dos, input);
-    } catch (IOException e) {
-      e.printStackTrace();
-      Assert.fail();
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(byteArrayOutputStream.toByteArray());
-    FloatColumn output = (FloatColumn) encoder.readColumn(buffer, TSDataType.FLOAT, positionCount);
-    Assert.assertEquals(positionCount, output.getPositionCount());
-    Assert.assertTrue(output.mayHaveNull());
-    Assert.assertEquals(expectedRetainedSize, output.getRetainedSizeInBytes());
-    for (int i = 0; i < positionCount; i++) {
-      Assert.assertEquals(i % 2 == 0, output.isNull(i));
-      if (i % 2 != 0) {
-        Assert.assertEquals(values[i], output.getFloat(i), 0.001F);
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/Int64ArrayColumnEncoderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/Int64ArrayColumnEncoderTest.java
deleted file mode 100644
index 31e1405..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/Int64ArrayColumnEncoderTest.java
+++ /dev/null
@@ -1,122 +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.common.block;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnEncoder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnEncoderFactory;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnEncoding;
-import org.apache.iotdb.tsfile.read.common.block.column.DoubleColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.LongColumn;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Optional;
-import java.util.Random;
-
-public class Int64ArrayColumnEncoderTest {
-
-  @Test
-  public void testLongColumn() {
-    final int positionCount = 10;
-
-    Random random = new Random();
-
-    boolean[] nullIndicators = new boolean[positionCount];
-    long[] values = new long[positionCount];
-    for (int i = 0; i < positionCount; i++) {
-      nullIndicators[i] = i % 2 == 0;
-      if (i % 2 != 0) {
-        values[i] = random.nextLong();
-      }
-    }
-    LongColumn input = new LongColumn(positionCount, Optional.of(nullIndicators), values);
-    long expectedRetainedSize = input.getRetainedSizeInBytes();
-    ColumnEncoder encoder = ColumnEncoderFactory.get(ColumnEncoding.INT64_ARRAY);
-
-    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-    DataOutputStream dos = new DataOutputStream(byteArrayOutputStream);
-    try {
-      encoder.writeColumn(dos, input);
-    } catch (IOException e) {
-      e.printStackTrace();
-      Assert.fail();
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(byteArrayOutputStream.toByteArray());
-    LongColumn output = (LongColumn) encoder.readColumn(buffer, TSDataType.INT64, positionCount);
-    Assert.assertEquals(positionCount, output.getPositionCount());
-    Assert.assertTrue(output.mayHaveNull());
-    Assert.assertEquals(expectedRetainedSize, output.getRetainedSizeInBytes());
-    for (int i = 0; i < positionCount; i++) {
-      Assert.assertEquals(i % 2 == 0, output.isNull(i));
-      if (i % 2 != 0) {
-        Assert.assertEquals(values[i], output.getLong(i));
-      }
-    }
-  }
-
-  @Test
-  public void testDoubleColumn() {
-    final int positionCount = 10;
-
-    Random random = new Random();
-
-    boolean[] nullIndicators = new boolean[positionCount];
-    double[] values = new double[positionCount];
-    for (int i = 0; i < positionCount; i++) {
-      nullIndicators[i] = i % 2 == 0;
-      if (i % 2 != 0) {
-        values[i] = random.nextDouble();
-      }
-    }
-    DoubleColumn input = new DoubleColumn(positionCount, Optional.of(nullIndicators), values);
-    long expectedRetainedSize = input.getRetainedSizeInBytes();
-    ColumnEncoder encoder = ColumnEncoderFactory.get(ColumnEncoding.INT64_ARRAY);
-
-    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-    DataOutputStream dos = new DataOutputStream(byteArrayOutputStream);
-    try {
-      encoder.writeColumn(dos, input);
-    } catch (IOException e) {
-      e.printStackTrace();
-      Assert.fail();
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(byteArrayOutputStream.toByteArray());
-
-    DoubleColumn output =
-        (DoubleColumn) encoder.readColumn(buffer, TSDataType.DOUBLE, positionCount);
-    Assert.assertEquals(positionCount, output.getPositionCount());
-    Assert.assertTrue(output.mayHaveNull());
-    Assert.assertEquals(expectedRetainedSize, output.getRetainedSizeInBytes());
-    for (int i = 0; i < positionCount; i++) {
-      Assert.assertEquals(i % 2 == 0, output.isNull(i));
-      if (i % 2 != 0) {
-        Assert.assertEquals(values[i], output.getDouble(i), 0.001D);
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/NullColumnUnitTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/NullColumnUnitTest.java
deleted file mode 100644
index ffbcfb6..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/NullColumnUnitTest.java
+++ /dev/null
@@ -1,90 +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.common.block;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.NullColumn;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-public class NullColumnUnitTest {
-
-  @Test
-  public void testCreatingBooleanNullColumn() {
-    Column nullColumn = NullColumn.create(TSDataType.BOOLEAN, 10);
-    Assert.assertEquals(TSDataType.BOOLEAN, nullColumn.getDataType());
-    Assert.assertEquals(10, nullColumn.getPositionCount());
-    Assert.assertTrue(nullColumn.mayHaveNull());
-    Assert.assertTrue(nullColumn.isNull(0));
-    Assert.assertTrue(nullColumn.isNull(9));
-  }
-
-  @Test
-  public void testCreatingBinaryNullColumn() {
-    Column nullColumn = NullColumn.create(TSDataType.TEXT, 10);
-    Assert.assertEquals(TSDataType.TEXT, nullColumn.getDataType());
-    Assert.assertEquals(10, nullColumn.getPositionCount());
-    Assert.assertTrue(nullColumn.mayHaveNull());
-    Assert.assertTrue(nullColumn.isNull(0));
-    Assert.assertTrue(nullColumn.isNull(9));
-  }
-
-  @Test
-  public void testCreatingIntNullColumn() {
-    Column nullColumn = NullColumn.create(TSDataType.INT32, 10);
-    Assert.assertEquals(TSDataType.INT32, nullColumn.getDataType());
-    Assert.assertEquals(10, nullColumn.getPositionCount());
-    Assert.assertTrue(nullColumn.mayHaveNull());
-    Assert.assertTrue(nullColumn.isNull(0));
-    Assert.assertTrue(nullColumn.isNull(9));
-  }
-
-  @Test
-  public void testCreatingLongNullColumn() {
-    Column nullColumn = NullColumn.create(TSDataType.INT64, 10);
-    Assert.assertEquals(TSDataType.INT64, nullColumn.getDataType());
-    Assert.assertEquals(10, nullColumn.getPositionCount());
-    Assert.assertTrue(nullColumn.mayHaveNull());
-    Assert.assertTrue(nullColumn.isNull(0));
-    Assert.assertTrue(nullColumn.isNull(9));
-  }
-
-  @Test
-  public void testCreatingFloatNullColumn() {
-    Column nullColumn = NullColumn.create(TSDataType.FLOAT, 10);
-    Assert.assertEquals(TSDataType.FLOAT, nullColumn.getDataType());
-    Assert.assertEquals(10, nullColumn.getPositionCount());
-    Assert.assertTrue(nullColumn.mayHaveNull());
-    Assert.assertTrue(nullColumn.isNull(0));
-    Assert.assertTrue(nullColumn.isNull(9));
-  }
-
-  @Test
-  public void testCreatingDoubleNullColumn() {
-    Column nullColumn = NullColumn.create(TSDataType.DOUBLE, 10);
-    Assert.assertEquals(TSDataType.DOUBLE, nullColumn.getDataType());
-    Assert.assertEquals(10, nullColumn.getPositionCount());
-    Assert.assertTrue(nullColumn.mayHaveNull());
-    Assert.assertTrue(nullColumn.isNull(0));
-    Assert.assertTrue(nullColumn.isNull(9));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/RunLengthColumnEncoderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/RunLengthColumnEncoderTest.java
deleted file mode 100644
index 75f5f06..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/RunLengthColumnEncoderTest.java
+++ /dev/null
@@ -1,104 +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.common.block;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.BooleanColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnEncoder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnEncoderFactory;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnEncoding;
-import org.apache.iotdb.tsfile.read.common.block.column.DoubleColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.FloatColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.IntColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.LongColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.RunLengthEncodedColumn;
-import org.apache.iotdb.tsfile.utils.Binary;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Optional;
-
-public class RunLengthColumnEncoderTest {
-
-  private void testInternal(Column column) {
-    final int positionCount = 10;
-
-    Column input = new RunLengthEncodedColumn(column, positionCount);
-    long expectedRetainedSize = input.getRetainedSizeInBytes();
-    ColumnEncoder encoder = ColumnEncoderFactory.get(ColumnEncoding.RLE);
-
-    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-    DataOutputStream dos = new DataOutputStream(byteArrayOutputStream);
-    try {
-      encoder.writeColumn(dos, input);
-    } catch (IOException e) {
-      e.printStackTrace();
-      Assert.fail();
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(byteArrayOutputStream.toByteArray());
-    Column output = encoder.readColumn(buffer, input.getDataType(), positionCount);
-    Assert.assertEquals(positionCount, output.getPositionCount());
-    Assert.assertFalse(output.mayHaveNull());
-    Assert.assertEquals(expectedRetainedSize, output.getRetainedSizeInBytes());
-    for (int i = 0; i < positionCount; i++) {
-      Assert.assertEquals(column.getObject(0), output.getObject(i));
-    }
-  }
-
-  @Test
-  public void testBooleanColumn() {
-    testInternal(new BooleanColumn(1, Optional.empty(), new boolean[] {true}));
-  }
-
-  @Test
-  public void testIntColumn() {
-    testInternal(new IntColumn(1, Optional.empty(), new int[] {0}));
-  }
-
-  @Test
-  public void testLongColumn() {
-    testInternal(new LongColumn(1, Optional.empty(), new long[] {0L}));
-  }
-
-  @Test
-  public void testFloatColumn() {
-    testInternal(new FloatColumn(1, Optional.empty(), new float[] {0.0F}));
-  }
-
-  @Test
-  public void testDoubleColumn() {
-    testInternal(new DoubleColumn(1, Optional.empty(), new double[] {0.0D}));
-  }
-
-  @Test
-  public void testTextColumn() {
-    testInternal(
-        new BinaryColumn(
-            1, Optional.empty(), new Binary[] {new Binary("foo", TSFileConfig.STRING_CHARSET)}));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/TsBlockSerdeTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/TsBlockSerdeTest.java
deleted file mode 100644
index 895af76..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/TsBlockSerdeTest.java
+++ /dev/null
@@ -1,190 +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.common.block;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnEncoding;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TsBlockSerde;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import org.junit.Test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-public class TsBlockSerdeTest {
-  @Test
-  public void testSerializeAndDeserialize() {
-    final int positionCount = 10;
-
-    // TODO: test more data types
-    List<TSDataType> dataTypes = new ArrayList<>();
-    dataTypes.add(TSDataType.INT32);
-    dataTypes.add(TSDataType.FLOAT);
-    dataTypes.add(TSDataType.INT64);
-    dataTypes.add(TSDataType.DOUBLE);
-    dataTypes.add(TSDataType.BOOLEAN);
-    dataTypes.add(TSDataType.TEXT);
-    TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(dataTypes);
-    ColumnBuilder timeColumnBuilder = tsBlockBuilder.getTimeColumnBuilder();
-    ColumnBuilder intColumnBuilder = tsBlockBuilder.getColumnBuilder(0);
-    ColumnBuilder floatColumnBuilder = tsBlockBuilder.getColumnBuilder(1);
-    ColumnBuilder longColumnBuilder = tsBlockBuilder.getColumnBuilder(2);
-    ColumnBuilder doubleColumnBuilder = tsBlockBuilder.getColumnBuilder(3);
-    ColumnBuilder booleanColumnBuilder = tsBlockBuilder.getColumnBuilder(4);
-    ColumnBuilder binaryColumnBuilder = tsBlockBuilder.getColumnBuilder(5);
-    for (int i = 0; i < positionCount; i++) {
-      timeColumnBuilder.writeLong(i);
-      intColumnBuilder.writeInt(i);
-      floatColumnBuilder.writeFloat(i + i / 10F);
-      longColumnBuilder.writeLong(i);
-      doubleColumnBuilder.writeDouble(i + i / 10D);
-      booleanColumnBuilder.writeBoolean(true);
-      binaryColumnBuilder.writeBinary(new Binary("foo", TSFileConfig.STRING_CHARSET));
-      tsBlockBuilder.declarePosition();
-    }
-
-    TsBlockSerde tsBlockSerde = new TsBlockSerde();
-    try {
-      ByteBuffer output = tsBlockSerde.serialize(tsBlockBuilder.build());
-      output.rewind();
-      int valueColumnCount = output.getInt();
-      assertEquals(6, valueColumnCount);
-      assertEquals(TSDataType.INT32, TSDataType.deserialize(output.get()));
-      assertEquals(TSDataType.FLOAT, TSDataType.deserialize(output.get()));
-      assertEquals(TSDataType.INT64, TSDataType.deserialize(output.get()));
-      assertEquals(TSDataType.DOUBLE, TSDataType.deserialize(output.get()));
-      assertEquals(TSDataType.BOOLEAN, TSDataType.deserialize(output.get()));
-      assertEquals(TSDataType.TEXT, TSDataType.deserialize(output.get()));
-      assertEquals(positionCount, output.getInt());
-      assertEquals(ColumnEncoding.INT64_ARRAY, ColumnEncoding.deserializeFrom(output));
-      assertEquals(ColumnEncoding.INT32_ARRAY, ColumnEncoding.deserializeFrom(output));
-      assertEquals(ColumnEncoding.INT32_ARRAY, ColumnEncoding.deserializeFrom(output));
-      assertEquals(ColumnEncoding.INT64_ARRAY, ColumnEncoding.deserializeFrom(output));
-      assertEquals(ColumnEncoding.INT64_ARRAY, ColumnEncoding.deserializeFrom(output));
-      assertEquals(ColumnEncoding.BYTE_ARRAY, ColumnEncoding.deserializeFrom(output));
-      assertEquals(ColumnEncoding.BINARY_ARRAY, ColumnEncoding.deserializeFrom(output));
-
-      output.rewind();
-      TsBlock tsBlock = tsBlockSerde.deserialize(output);
-      assertEquals(valueColumnCount, tsBlock.getValueColumnCount());
-      assertEquals(TSDataType.INT32, tsBlock.getColumn(0).getDataType());
-      assertEquals(TSDataType.FLOAT, tsBlock.getColumn(1).getDataType());
-      assertEquals(TSDataType.INT64, tsBlock.getColumn(2).getDataType());
-      assertEquals(TSDataType.DOUBLE, tsBlock.getColumn(3).getDataType());
-      assertEquals(TSDataType.BOOLEAN, tsBlock.getColumn(4).getDataType());
-      assertEquals(TSDataType.TEXT, tsBlock.getColumn(5).getDataType());
-      assertEquals(positionCount, tsBlock.getPositionCount());
-      assertEquals(ColumnEncoding.INT32_ARRAY, tsBlock.getColumn(0).getEncoding());
-      assertEquals(ColumnEncoding.INT32_ARRAY, tsBlock.getColumn(1).getEncoding());
-      assertEquals(ColumnEncoding.INT64_ARRAY, tsBlock.getColumn(2).getEncoding());
-      assertEquals(ColumnEncoding.INT64_ARRAY, tsBlock.getColumn(3).getEncoding());
-      assertEquals(ColumnEncoding.BYTE_ARRAY, tsBlock.getColumn(4).getEncoding());
-      assertEquals(ColumnEncoding.BINARY_ARRAY, tsBlock.getColumn(5).getEncoding());
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail();
-    }
-  }
-
-  @Test
-  public void testSerializeAndDeserialize2() {
-
-    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-    try {
-      // to indicate this binary data is database info
-      ReadWriteIOUtils.write((byte) 0, outputStream);
-
-      ReadWriteIOUtils.write(1, outputStream);
-      ReadWriteIOUtils.write("root.test.g_0", outputStream);
-    } catch (IOException e) {
-      // Totally memory operation. This case won't happen.
-      fail(e.getMessage());
-    }
-
-    TsBlock tsBlock =
-        new TsBlock(
-            new TimeColumn(1, new long[] {0}),
-            new BinaryColumn(
-                1, Optional.empty(), new Binary[] {new Binary(outputStream.toByteArray())}));
-
-    TsBlockSerde tsBlockSerde = new TsBlockSerde();
-    try {
-      ByteBuffer output = tsBlockSerde.serialize(tsBlock);
-      output.rewind();
-
-      TsBlock deserializedTsBlock = tsBlockSerde.deserialize(output);
-      assertEquals(tsBlock.getRetainedSizeInBytes(), deserializedTsBlock.getRetainedSizeInBytes());
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail();
-    }
-  }
-
-  @Test
-  public void testSerializeAndDeserialize3() {
-
-    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-    try {
-      // to indicate this binary data is database info
-      ReadWriteIOUtils.write((byte) 0, outputStream);
-
-      ReadWriteIOUtils.write(1, outputStream);
-      ReadWriteIOUtils.write("root.test.g_0", outputStream);
-    } catch (IOException e) {
-      // Totally memory operation. This case won't happen.
-      fail(e.getMessage());
-    }
-
-    TsBlock tsBlock =
-        new TsBlock(
-            new TimeColumn(1, new long[] {0}),
-            new BinaryColumn(
-                1,
-                Optional.of(new boolean[] {false}),
-                new Binary[] {new Binary(outputStream.toByteArray())}));
-
-    TsBlockSerde tsBlockSerde = new TsBlockSerde();
-    try {
-      ByteBuffer output = tsBlockSerde.serialize(tsBlock);
-      output.rewind();
-
-      TsBlock deserializedTsBlock = tsBlockSerde.deserialize(output);
-      assertEquals(tsBlock.getRetainedSizeInBytes(), deserializedTsBlock.getRetainedSizeInBytes());
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail();
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/TsBlockTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/TsBlockTest.java
deleted file mode 100644
index d7fc5a9..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/block/TsBlockTest.java
+++ /dev/null
@@ -1,456 +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.common.block;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock.TsBlockSingleColumnIterator;
-import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.BooleanColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.DoubleColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.FloatColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.IntColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.LongColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.RunLengthEncodedColumn;
-import org.apache.iotdb.tsfile.utils.Binary;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Optional;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-public class TsBlockTest {
-
-  private static final double DELTA = 0.000001;
-
-  @Test
-  public void testBooleanTsBlock() {
-    long[] timeArray = {1L, 2L, 3L, 4L, 5L};
-    boolean[] valueArray = {true, false, false, false, false};
-    TsBlockBuilder builder = new TsBlockBuilder(Collections.singletonList(TSDataType.BOOLEAN));
-    for (int i = 0; i < timeArray.length; i++) {
-      builder.getTimeColumnBuilder().writeLong(timeArray[i]);
-      builder.getColumnBuilder(0).writeBoolean(valueArray[i]);
-      builder.declarePosition();
-    }
-    TsBlock tsBlock = builder.build();
-    assertEquals(timeArray.length, tsBlock.getPositionCount());
-    assertEquals(1, tsBlock.getValueColumnCount());
-    assertTrue(tsBlock.getColumn(0) instanceof BooleanColumn);
-    for (int i = 0; i < timeArray.length; i++) {
-      assertEquals(timeArray[i], tsBlock.getTimeByIndex(i));
-      assertFalse(tsBlock.getColumn(0).isNull(i));
-      assertEquals(valueArray[i], tsBlock.getColumn(0).getBoolean(i));
-    }
-  }
-
-  @Test
-  public void testIntTsBlock() {
-    long[] timeArray = {1L, 2L, 3L, 4L, 5L};
-    int[] valueArray = {10, 20, 30, 40, 50};
-    TsBlockBuilder builder = new TsBlockBuilder(Collections.singletonList(TSDataType.INT32));
-    for (int i = 0; i < timeArray.length; i++) {
-      builder.getTimeColumnBuilder().writeLong(timeArray[i]);
-      builder.getColumnBuilder(0).writeInt(valueArray[i]);
-      builder.declarePosition();
-    }
-    TsBlock tsBlock = builder.build();
-    assertEquals(timeArray.length, tsBlock.getPositionCount());
-    assertEquals(1, tsBlock.getValueColumnCount());
-    assertTrue(tsBlock.getColumn(0) instanceof IntColumn);
-    for (int i = 0; i < timeArray.length; i++) {
-      assertEquals(timeArray[i], tsBlock.getTimeByIndex(i));
-      assertFalse(tsBlock.getColumn(0).isNull(i));
-      assertEquals(valueArray[i], tsBlock.getColumn(0).getInt(i));
-    }
-  }
-
-  @Test
-  public void testLongTsBlock() {
-    long[] timeArray = {1L, 2L, 3L, 4L, 5L};
-    long[] valueArray = {10L, 20L, 30L, 40L, 50L};
-    TsBlockBuilder builder = new TsBlockBuilder(Collections.singletonList(TSDataType.INT64));
-    for (int i = 0; i < timeArray.length; i++) {
-      builder.getTimeColumnBuilder().writeLong(timeArray[i]);
-      builder.getColumnBuilder(0).writeLong(valueArray[i]);
-      builder.declarePosition();
-    }
-    TsBlock tsBlock = builder.build();
-    assertEquals(timeArray.length, tsBlock.getPositionCount());
-    assertEquals(1, tsBlock.getValueColumnCount());
-    assertTrue(tsBlock.getColumn(0) instanceof LongColumn);
-    for (int i = 0; i < timeArray.length; i++) {
-      assertEquals(timeArray[i], tsBlock.getTimeByIndex(i));
-      assertFalse(tsBlock.getColumn(0).isNull(i));
-      assertEquals(valueArray[i], tsBlock.getColumn(0).getLong(i));
-    }
-  }
-
-  @Test
-  public void testFloatTsBlock() {
-    long[] timeArray = {1L, 2L, 3L, 4L, 5L};
-    float[] valueArray = {10.0f, 20.0f, 30.0f, 40.0f, 50.0f};
-    TsBlockBuilder builder = new TsBlockBuilder(Collections.singletonList(TSDataType.FLOAT));
-    for (int i = 0; i < timeArray.length; i++) {
-      builder.getTimeColumnBuilder().writeLong(timeArray[i]);
-      builder.getColumnBuilder(0).writeFloat(valueArray[i]);
-      builder.declarePosition();
-    }
-    TsBlock tsBlock = builder.build();
-    assertEquals(timeArray.length, tsBlock.getPositionCount());
-    assertEquals(1, tsBlock.getValueColumnCount());
-    assertTrue(tsBlock.getColumn(0) instanceof FloatColumn);
-    for (int i = 0; i < timeArray.length; i++) {
-      assertEquals(timeArray[i], tsBlock.getTimeByIndex(i));
-      assertFalse(tsBlock.getColumn(0).isNull(i));
-      assertEquals(valueArray[i], tsBlock.getColumn(0).getFloat(i), DELTA);
-    }
-  }
-
-  @Test
-  public void testDoubleTsBlock() {
-    long[] timeArray = {1L, 2L, 3L, 4L, 5L};
-    double[] valueArray = {10.0, 20.0, 30.0, 40.0, 50.0};
-    TsBlockBuilder builder = new TsBlockBuilder(Collections.singletonList(TSDataType.DOUBLE));
-    for (int i = 0; i < timeArray.length; i++) {
-      builder.getTimeColumnBuilder().writeLong(timeArray[i]);
-      builder.getColumnBuilder(0).writeDouble(valueArray[i]);
-      builder.declarePosition();
-    }
-    TsBlock tsBlock = builder.build();
-    assertEquals(timeArray.length, tsBlock.getPositionCount());
-    assertEquals(1, tsBlock.getValueColumnCount());
-    assertTrue(tsBlock.getColumn(0) instanceof DoubleColumn);
-    for (int i = 0; i < timeArray.length; i++) {
-      assertEquals(timeArray[i], tsBlock.getTimeByIndex(i));
-      assertFalse(tsBlock.getColumn(0).isNull(i));
-      assertEquals(valueArray[i], tsBlock.getColumn(0).getDouble(i), DELTA);
-    }
-  }
-
-  @Test
-  public void testBinaryTsBlock() {
-    long[] timeArray = {1L, 2L, 3L, 4L, 5L};
-    Binary[] valueArray = {
-      new Binary("10", TSFileConfig.STRING_CHARSET),
-      new Binary("20", TSFileConfig.STRING_CHARSET),
-      new Binary("30", TSFileConfig.STRING_CHARSET),
-      new Binary("40", TSFileConfig.STRING_CHARSET),
-      new Binary("50", TSFileConfig.STRING_CHARSET)
-    };
-    TsBlockBuilder builder = new TsBlockBuilder(Collections.singletonList(TSDataType.TEXT));
-    for (int i = 0; i < timeArray.length; i++) {
-      builder.getTimeColumnBuilder().writeLong(timeArray[i]);
-      builder.getColumnBuilder(0).writeBinary(valueArray[i]);
-      builder.declarePosition();
-    }
-    TsBlock tsBlock = builder.build();
-    assertEquals(timeArray.length, tsBlock.getPositionCount());
-    assertEquals(1, tsBlock.getValueColumnCount());
-    assertTrue(tsBlock.getColumn(0) instanceof BinaryColumn);
-    for (int i = 0; i < timeArray.length; i++) {
-      assertEquals(timeArray[i], tsBlock.getTimeByIndex(i));
-      assertFalse(tsBlock.getColumn(0).isNull(i));
-      assertEquals(valueArray[i], tsBlock.getColumn(0).getBinary(i));
-    }
-  }
-
-  @Test
-  public void testIntTsBlockWithNull() {
-    long[] timeArray = {1L, 2L, 3L, 4L, 5L};
-    int[] valueArray = {10, 20, 30, 40, 50};
-    boolean[] isNull = {false, false, true, true, false};
-    TsBlockBuilder builder = new TsBlockBuilder(Collections.singletonList(TSDataType.INT32));
-    for (int i = 0; i < timeArray.length; i++) {
-      builder.getTimeColumnBuilder().writeLong(timeArray[i]);
-      if (isNull[i]) {
-        builder.getColumnBuilder(0).appendNull();
-
-      } else {
-        builder.getColumnBuilder(0).writeInt(valueArray[i]);
-      }
-      builder.declarePosition();
-    }
-    TsBlock tsBlock = builder.build();
-    assertEquals(timeArray.length, tsBlock.getPositionCount());
-    assertEquals(1, tsBlock.getValueColumnCount());
-    assertTrue(tsBlock.getColumn(0) instanceof IntColumn);
-    for (int i = 0; i < timeArray.length; i++) {
-      assertEquals(timeArray[i], tsBlock.getTimeByIndex(i));
-      assertEquals(isNull[i], tsBlock.getColumn(0).isNull(i));
-      if (!isNull[i]) {
-        assertEquals(valueArray[i], tsBlock.getColumn(0).getInt(i));
-      }
-    }
-  }
-
-  @Test
-  public void testIntTsBlockWithAllNull() {
-    long[] timeArray = {1L, 2L, 3L, 4L, 5L};
-    TsBlockBuilder builder = new TsBlockBuilder(Collections.singletonList(TSDataType.INT32));
-    for (long l : timeArray) {
-      builder.getTimeColumnBuilder().writeLong(l);
-      builder.getColumnBuilder(0).appendNull();
-      builder.declarePosition();
-    }
-    TsBlock tsBlock = builder.build();
-    assertEquals(timeArray.length, tsBlock.getPositionCount());
-    assertEquals(1, tsBlock.getValueColumnCount());
-    assertTrue(tsBlock.getColumn(0) instanceof RunLengthEncodedColumn);
-    for (int i = 0; i < timeArray.length; i++) {
-      assertEquals(timeArray[i], tsBlock.getTimeByIndex(i));
-      assertTrue(tsBlock.getColumn(0).isNull(i));
-    }
-  }
-
-  @Test
-  public void testMultiColumnTsBlockWithNull() {
-    long[] timeArray = {1L, 2L, 3L, 4L, 5L};
-    boolean[] booleanValueArray = {true, false, false, false, true};
-    boolean[] booleanIsNull = {true, true, false, true, false};
-    int[] intValueArray = {10, 20, 30, 40, 50};
-    boolean[] intIsNull = {false, true, false, false, true};
-    long[] longValueArray = {100L, 200L, 300L, 400, 500L};
-    boolean[] longIsNull = {true, false, false, true, true};
-    float[] floatValueArray = {1000.0f, 2000.0f, 3000.0f, 4000.0f, 5000.0f};
-    boolean[] floatIsNull = {false, false, true, true, false};
-    double[] doubleValueArray = {10000.0, 20000.0, 30000.0, 40000.0, 50000.0};
-    boolean[] doubleIsNull = {true, false, false, true, false};
-    Binary[] binaryValueArray = {
-      new Binary("19970909", TSFileConfig.STRING_CHARSET),
-      new Binary("ty", TSFileConfig.STRING_CHARSET),
-      new Binary("love", TSFileConfig.STRING_CHARSET),
-      new Binary("zm", TSFileConfig.STRING_CHARSET),
-      new Binary("19950421", TSFileConfig.STRING_CHARSET)
-    };
-    boolean[] binaryIsNull = {false, false, false, false, false};
-
-    TsBlockBuilder builder =
-        new TsBlockBuilder(
-            Arrays.asList(
-                TSDataType.BOOLEAN,
-                TSDataType.INT32,
-                TSDataType.INT64,
-                TSDataType.FLOAT,
-                TSDataType.DOUBLE,
-                TSDataType.TEXT));
-    for (int i = 0; i < timeArray.length; i++) {
-      builder.getTimeColumnBuilder().writeLong(timeArray[i]);
-      if (booleanIsNull[i]) {
-        builder.getColumnBuilder(0).appendNull();
-      } else {
-        builder.getColumnBuilder(0).writeBoolean(booleanValueArray[i]);
-      }
-      if (intIsNull[i]) {
-        builder.getColumnBuilder(1).appendNull();
-      } else {
-        builder.getColumnBuilder(1).writeInt(intValueArray[i]);
-      }
-      if (longIsNull[i]) {
-        builder.getColumnBuilder(2).appendNull();
-      } else {
-        builder.getColumnBuilder(2).writeLong(longValueArray[i]);
-      }
-      if (floatIsNull[i]) {
-        builder.getColumnBuilder(3).appendNull();
-      } else {
-        builder.getColumnBuilder(3).writeFloat(floatValueArray[i]);
-      }
-      if (doubleIsNull[i]) {
-        builder.getColumnBuilder(4).appendNull();
-      } else {
-        builder.getColumnBuilder(4).writeDouble(doubleValueArray[i]);
-      }
-      if (binaryIsNull[i]) {
-        builder.getColumnBuilder(5).appendNull();
-      } else {
-        builder.getColumnBuilder(5).writeBinary(binaryValueArray[i]);
-      }
-      builder.declarePosition();
-    }
-    TsBlock tsBlock = builder.build();
-    assertEquals(timeArray.length, tsBlock.getPositionCount());
-    assertEquals(6, tsBlock.getValueColumnCount());
-    assertTrue(tsBlock.getColumn(0) instanceof BooleanColumn);
-    assertTrue(tsBlock.getColumn(1) instanceof IntColumn);
-    assertTrue(tsBlock.getColumn(2) instanceof LongColumn);
-    assertTrue(tsBlock.getColumn(3) instanceof FloatColumn);
-    assertTrue(tsBlock.getColumn(4) instanceof DoubleColumn);
-    assertTrue(tsBlock.getColumn(5) instanceof BinaryColumn);
-
-    for (int i = 0; i < timeArray.length; i++) {
-      assertEquals(timeArray[i], tsBlock.getTimeByIndex(i));
-      assertEquals(booleanIsNull[i], tsBlock.getColumn(0).isNull(i));
-      if (!booleanIsNull[i]) {
-        assertEquals(booleanValueArray[i], tsBlock.getColumn(0).getBoolean(i));
-      }
-      assertEquals(intIsNull[i], tsBlock.getColumn(1).isNull(i));
-      if (!intIsNull[i]) {
-        assertEquals(intValueArray[i], tsBlock.getColumn(1).getInt(i));
-      }
-      assertEquals(longIsNull[i], tsBlock.getColumn(2).isNull(i));
-      if (!longIsNull[i]) {
-        assertEquals(longValueArray[i], tsBlock.getColumn(2).getLong(i));
-      }
-      assertEquals(floatIsNull[i], tsBlock.getColumn(3).isNull(i));
-      if (!floatIsNull[i]) {
-        assertEquals(floatValueArray[i], tsBlock.getColumn(3).getFloat(i), DELTA);
-      }
-      assertEquals(doubleIsNull[i], tsBlock.getColumn(4).isNull(i));
-      if (!doubleIsNull[i]) {
-        assertEquals(doubleValueArray[i], tsBlock.getColumn(4).getDouble(i), DELTA);
-      }
-      assertEquals(binaryIsNull[i], tsBlock.getColumn(5).isNull(i));
-      if (!binaryIsNull[i]) {
-        assertEquals(binaryValueArray[i], tsBlock.getColumn(5).getBinary(i));
-      }
-    }
-  }
-
-  @Test
-  public void testSubTsBlock() {
-    TsBlockBuilder builder = new TsBlockBuilder(Collections.singletonList(TSDataType.INT32));
-    for (int i = 0; i < 10; i++) {
-      builder.getTimeColumnBuilder().writeLong(i);
-      builder.getColumnBuilder(0).writeInt(i);
-      builder.declarePosition();
-    }
-    TsBlock tsBlock = builder.build();
-    TsBlockSingleColumnIterator iterator = tsBlock.getTsBlockSingleColumnIterator();
-    int index = 0;
-    while (iterator.hasNext()) {
-      Assert.assertEquals(index, iterator.currentTime());
-      Assert.assertEquals(index, iterator.currentValue());
-      iterator.next();
-      index++;
-    }
-    // get subTsBlock from TsBlock, offset = 3
-    int offset = 3;
-    TsBlock subTsBlock = tsBlock.subTsBlock(offset);
-    iterator = subTsBlock.getTsBlockSingleColumnIterator();
-    index = offset;
-    while (iterator.hasNext()) {
-      Assert.assertEquals(index, iterator.currentTime());
-      Assert.assertEquals(index, iterator.currentValue());
-      iterator.next();
-      index++;
-    }
-    // get subSubTsBlock from subTsBlock, offset = 2
-    int nextOffset = 2;
-    TsBlock subSubTsBlock = subTsBlock.subTsBlock(nextOffset);
-    iterator = subSubTsBlock.getTsBlockSingleColumnIterator();
-    index = offset + nextOffset;
-    while (iterator.hasNext()) {
-      Assert.assertEquals(index, iterator.currentTime());
-      Assert.assertEquals(index, iterator.currentValue());
-      iterator.next();
-      index++;
-    }
-    try {
-      subSubTsBlock.subTsBlock(3);
-    } catch (IllegalArgumentException e) {
-      Assert.assertTrue(
-          e.getMessage().contains("FromIndex of subTsBlock cannot over positionCount."));
-    }
-  }
-
-  private TsBlock getOriginalTsBlock() {
-    TsBlockBuilder tsBlockBuilder =
-        new TsBlockBuilder(Arrays.asList(TSDataType.INT64, TSDataType.DOUBLE));
-    for (int i = 0; i < 19; i++) {
-      tsBlockBuilder.getTimeColumnBuilder().writeLong(i);
-      tsBlockBuilder.getColumnBuilder(0).writeLong(i);
-      tsBlockBuilder.getColumnBuilder(1).writeDouble(i * 0.1);
-      tsBlockBuilder.declarePosition();
-    }
-    return tsBlockBuilder.build();
-  }
-
-  @Test
-  public void ColumnInsertTest() {
-    TsBlock tsBlock = getOriginalTsBlock();
-    int[] targetValue = new int[19];
-    for (int i = 0; i < 19; i++) {
-      targetValue[i] = i;
-    }
-
-    Column targetColumn = new IntColumn(19, Optional.empty(), targetValue);
-    tsBlock = tsBlock.insertValueColumn(1, new Column[] {targetColumn});
-    for (int i = 0; i < 19; i++) {
-      assertEquals(i, tsBlock.getColumn(0).getLong(i));
-      assertEquals(i, tsBlock.getColumn(1).getInt(i));
-      assertEquals(i * 0.1, tsBlock.getColumn(2).getDouble(i), DELTA);
-    }
-  }
-
-  @Test
-  public void MultiColumnInsertTest() {
-    TsBlock tsBlock = getOriginalTsBlock();
-    int[] targetValue1 = new int[19];
-    double[] targetValue2 = new double[19];
-    for (int i = 0; i < 19; i++) {
-      targetValue1[i] = i;
-      targetValue2[i] = i * 0.2;
-    }
-    Column[] targetColumn =
-        new Column[] {
-          new IntColumn(19, Optional.empty(), targetValue1),
-          new DoubleColumn(19, Optional.empty(), targetValue2)
-        };
-    tsBlock = tsBlock.insertValueColumn(1, targetColumn);
-    for (int i = 0; i < 19; i++) {
-      assertEquals(i, tsBlock.getColumn(0).getLong(i));
-      assertEquals(i, tsBlock.getColumn(1).getInt(i));
-      assertEquals(i * 0.2, tsBlock.getColumn(2).getDouble(i), DELTA);
-      assertEquals(i * 0.1, tsBlock.getColumn(3).getDouble(i), DELTA);
-    }
-  }
-
-  @Test
-  public void ColumnAppendTest() {
-    TsBlock tsBlock = getOriginalTsBlock();
-    int[] targetValue = new int[19];
-    long[] targetValue2 = new long[19];
-    for (int i = 0; i < 19; i++) {
-      targetValue[i] = i * 2;
-      targetValue2[i] = i * 3;
-    }
-    Column[] targetColumn =
-        new Column[] {
-          new IntColumn(19, Optional.empty(), targetValue),
-          new LongColumn(19, Optional.empty(), targetValue2)
-        };
-    tsBlock = tsBlock.appendValueColumns(targetColumn);
-    for (int i = 0; i < 19; i++) {
-      assertEquals(i, tsBlock.getColumn(0).getLong(i));
-      assertEquals(i * 0.1, tsBlock.getColumn(1).getDouble(i), DELTA);
-      assertEquals(i * 2, tsBlock.getColumn(2).getInt(i));
-      assertEquals(i * 3, tsBlock.getColumn(3).getLong(i));
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/conf/TSFileDescriptorTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/conf/TSFileDescriptorTest.java
deleted file mode 100644
index a236d19..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/common/conf/TSFileDescriptorTest.java
+++ /dev/null
@@ -1,85 +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.common.conf;
-
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-
-public class TSFileDescriptorTest {
-
-  @Rule public TemporaryFolder tempFolder = new TemporaryFolder();
-
-  private TSFileConfig tsFileConfig1;
-  private TSFileConfig tsFileConfig2;
-
-  @BeforeClass
-  public static void setUpClass() {
-    // System.setProperty(TsFileConstant.TSFILE_CONF, configDirectory); in the setUp method may
-    // cause the other tests getting a polluted TSFileDescriptor instance in a concurrent
-    // environment.
-    TSFileDescriptor.getInstance();
-  }
-
-  @Before
-  public void setUp() throws IOException {
-    File file = tempFolder.newFile(TSFileConfig.CONFIG_FILE_NAME);
-    try (FileWriter writer = new FileWriter(file)) {
-      writer.write("page_size_in_byte=1234\n");
-      writer.write("max_string_length=bad\n");
-      writer.write("float_precision=4\n");
-      writer.write("batch_size=100\n");
-    }
-    String configDirectory = tempFolder.getRoot().getAbsolutePath();
-
-    String originalProperty = System.getProperty(TsFileConstant.TSFILE_CONF);
-    System.setProperty(TsFileConstant.TSFILE_CONF, configDirectory);
-    this.tsFileConfig1 = new TSFileConfig();
-    this.tsFileConfig2 = new TSFileDescriptor().getConfig();
-    if (originalProperty == null) {
-      System.clearProperty(TsFileConstant.TSFILE_CONF);
-    } else {
-      System.setProperty(TsFileConstant.TSFILE_CONF, originalProperty);
-    }
-  }
-
-  @Test
-  public void testGetInstanceOverWriteFromFile() {
-
-    Assert.assertEquals(65536, tsFileConfig1.getPageSizeInByte());
-    Assert.assertEquals(1234, tsFileConfig2.getPageSizeInByte());
-
-    Assert.assertEquals(2, tsFileConfig1.getFloatPrecision());
-    Assert.assertEquals(4, tsFileConfig2.getFloatPrecision());
-
-    Assert.assertEquals(1000, tsFileConfig1.getBatchSize());
-    Assert.assertEquals(100, tsFileConfig2.getBatchSize());
-
-    Assert.assertEquals(tsFileConfig1.getMaxStringLength(), tsFileConfig2.getMaxStringLength());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/compress/CompressTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/compress/CompressTest.java
deleted file mode 100644
index c1339bc..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/compress/CompressTest.java
+++ /dev/null
@@ -1,145 +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.compress;
-
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.xerial.snappy.Snappy;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-
-import static org.junit.Assert.assertEquals;
-
-public class CompressTest {
-
-  private final String inputString =
-      "Hello snappy-java! Snappy-java is a JNI-based wrapper of "
-          + "Snappy, a fast compressor/decompressor.";
-
-  @Before
-  public void setUp() {}
-
-  @After
-  public void tearDown() {}
-
-  @Test
-  public void snappyCompressorTest1() throws IOException {
-    PublicBAOS out = new PublicBAOS();
-    out.write(inputString.getBytes(StandardCharsets.UTF_8));
-    ICompressor.SnappyCompressor compressor = new ICompressor.SnappyCompressor();
-    IUnCompressor.SnappyUnCompressor unCompressor = new IUnCompressor.SnappyUnCompressor();
-    byte[] compressed = compressor.compress(out.getBuf());
-    byte[] uncompressed = unCompressor.uncompress(compressed);
-    String result = new String(uncompressed, StandardCharsets.UTF_8);
-    assertEquals(inputString, result);
-  }
-
-  @Test
-  public void snappyCompressorTest2() throws IOException {
-    PublicBAOS out = new PublicBAOS();
-    out.write(inputString.getBytes(StandardCharsets.UTF_8));
-    ICompressor.SnappyCompressor compressor = new ICompressor.SnappyCompressor();
-    IUnCompressor.SnappyUnCompressor unCompressor = new IUnCompressor.SnappyUnCompressor();
-    byte[] compressed = new byte[compressor.getMaxBytesForCompression(out.size())];
-    int size = compressor.compress(out.getBuf(), 0, out.size(), compressed);
-    byte[] bytes = Arrays.copyOfRange(compressed, 0, size);
-    byte[] uncompressed = unCompressor.uncompress(bytes);
-    String result = new String(uncompressed, StandardCharsets.UTF_8);
-    assertEquals(inputString, result);
-  }
-
-  @Test
-  public void snappyTest() throws IOException {
-    byte[] compressed = Snappy.compress(inputString.getBytes(StandardCharsets.UTF_8));
-    byte[] uncompressed = Snappy.uncompress(compressed);
-
-    String result = new String(uncompressed, StandardCharsets.UTF_8);
-    assertEquals(inputString, result);
-  }
-
-  @Test
-  public void lz4CompressorTest1() throws IOException {
-    PublicBAOS out = new PublicBAOS();
-    out.write(inputString.getBytes(StandardCharsets.UTF_8));
-    ICompressor compressor = new ICompressor.IOTDBLZ4Compressor();
-    IUnCompressor unCompressor = new IUnCompressor.LZ4UnCompressor();
-    byte[] compressed = compressor.compress(out.getBuf());
-    byte[] uncompressed = unCompressor.uncompress(compressed);
-    String result = new String(uncompressed, StandardCharsets.UTF_8);
-    assertEquals(inputString, result);
-  }
-
-  @Test
-  public void lz4CompressorTest2() throws IOException {
-    PublicBAOS out = new PublicBAOS();
-    out.write(inputString.getBytes(StandardCharsets.UTF_8));
-    ICompressor compressor = new ICompressor.IOTDBLZ4Compressor();
-    IUnCompressor unCompressor = new IUnCompressor.LZ4UnCompressor();
-    byte[] compressed = new byte[compressor.getMaxBytesForCompression(out.size())];
-    int size = compressor.compress(out.getBuf(), 0, out.size(), compressed);
-    byte[] bytes = Arrays.copyOfRange(compressed, 0, size);
-    byte[] uncompressed = unCompressor.uncompress(bytes);
-    String result = new String(uncompressed, StandardCharsets.UTF_8);
-    assertEquals(inputString, result);
-  }
-
-  @Test
-  public void zstdCompressorTest1() throws IOException {
-    PublicBAOS out = new PublicBAOS();
-    out.write(inputString.getBytes(StandardCharsets.UTF_8));
-    ICompressor compressor = new ICompressor.ZstdCompressor();
-    IUnCompressor unCompressor = new IUnCompressor.ZstdUnCompressor();
-    byte[] compressed = compressor.compress(out.getBuf());
-    byte[] uncompressed = new byte[out.size()];
-    unCompressor.uncompress(compressed, 0, compressed.length, uncompressed, 0);
-    String result = new String(uncompressed, StandardCharsets.UTF_8);
-    assertEquals(inputString, result);
-  }
-
-  @Test
-  public void zstdCompressorTest2() throws IOException {
-    byte[] input = inputString.getBytes();
-    ICompressor compressor = new ICompressor.ZstdCompressor();
-    IUnCompressor unCompressor = new IUnCompressor.ZstdUnCompressor();
-    ByteBuffer data = ByteBuffer.allocateDirect(input.length);
-    data.put(input);
-    data.position(0);
-    ByteBuffer compressed =
-        ByteBuffer.allocateDirect(compressor.getMaxBytesForCompression(input.length));
-    int compressedSize = compressor.compress(data, compressed);
-    byte[] compressedData = new byte[compressedSize];
-    compressed.position(0);
-    ByteBuffer compressedDataBuffer = ByteBuffer.allocateDirect(compressedSize);
-    compressed.get(compressedData, 0, compressedSize);
-    compressedDataBuffer.put(compressedData);
-    compressedDataBuffer.position(0);
-
-    ByteBuffer uncompressed = ByteBuffer.allocateDirect(input.length);
-    int uncompressedSize = unCompressor.uncompress(compressedDataBuffer, uncompressed);
-    uncompressed.position(0);
-    assertEquals(inputString, ReadWriteIOUtils.readStringFromDirectByteBuffer(uncompressed));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/compress/GZIPTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/compress/GZIPTest.java
deleted file mode 100644
index 04d14b6..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/compress/GZIPTest.java
+++ /dev/null
@@ -1,104 +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.compress;
-
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
-import java.util.concurrent.ThreadLocalRandom;
-
-/**
- * @author yuqi
- * @mail yuqi4733@gmail.com
- * @description your description
- * @time 13/12/20 下午10:08
- */
-public class GZIPTest {
-  private String randomString(int length) {
-    StringBuilder builder = new StringBuilder(length);
-    for (int i = 0; i < length; i++) {
-      builder.append((char) (ThreadLocalRandom.current().nextInt(33, 128)));
-    }
-    return builder.toString();
-  }
-
-  @Before
-  public void setUp() {}
-
-  @After
-  public void tearDown() {}
-
-  @Test
-  public void testBytes1() throws IOException {
-    int n = 500000;
-    String input = randomString(n);
-    byte[] uncom = input.getBytes(StandardCharsets.UTF_8);
-    byte[] compressed = ICompressor.GZIPCompress.compress(uncom);
-    byte[] uncompressed = ICompressor.GZIPCompress.uncompress(compressed);
-
-    Assert.assertArrayEquals(uncom, uncompressed);
-  }
-
-  @Test
-  public void testBytes2() throws IOException {
-    ICompressor.GZIPCompressor compressor = new ICompressor.GZIPCompressor();
-    IUnCompressor.GZIPUnCompressor unCompressor = new IUnCompressor.GZIPUnCompressor();
-
-    int n = 500000;
-    String input = randomString(n);
-    byte[] uncom = input.getBytes(StandardCharsets.UTF_8);
-    byte[] compressed = compressor.compress(uncom, 0, uncom.length);
-    // length should be same
-    Assert.assertEquals(compressor.compress(uncom).length, compressed.length);
-    byte[] uncompressed = unCompressor.uncompress(compressed);
-    Assert.assertArrayEquals(uncom, uncompressed);
-  }
-
-  @Test
-  public void testByteBuffer() throws IOException {
-    for (int i = 1; i < 500000; i += 100000) {
-      String input = randomString(i);
-      ByteBuffer source = ByteBuffer.allocateDirect(input.getBytes().length);
-      source.put(input.getBytes());
-      source.flip();
-
-      ICompressor.GZIPCompressor compressor = new ICompressor.GZIPCompressor();
-      ByteBuffer compressed =
-          ByteBuffer.allocateDirect(Math.max(source.remaining() * 3 + 1, 28 + source.remaining()));
-      compressor.compress(source, compressed);
-
-      IUnCompressor.GZIPUnCompressor unCompressor = new IUnCompressor.GZIPUnCompressor();
-      ByteBuffer uncompressedByteBuffer =
-          ByteBuffer.allocateDirect(compressed.remaining() + 28 * 2);
-      compressed.flip();
-      unCompressor.uncompress(compressed, uncompressedByteBuffer);
-
-      uncompressedByteBuffer.flip();
-      String afterDecode = ReadWriteIOUtils.readStringFromDirectByteBuffer(uncompressedByteBuffer);
-      assert input.equals(afterDecode);
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/compress/LZ4Test.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/compress/LZ4Test.java
deleted file mode 100644
index 42bee4f..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/compress/LZ4Test.java
+++ /dev/null
@@ -1,104 +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.compress;
-
-import org.apache.iotdb.tsfile.compress.ICompressor.IOTDBLZ4Compressor;
-import org.apache.iotdb.tsfile.compress.IUnCompressor.LZ4UnCompressor;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.util.concurrent.ThreadLocalRandom;
-
-public class LZ4Test {
-
-  private String randomString(int length) {
-    StringBuilder builder = new StringBuilder(length);
-    for (int i = 0; i < length; i++) {
-      builder.append((char) (ThreadLocalRandom.current().nextInt(33, 128)));
-    }
-    return builder.toString();
-  }
-
-  @Before
-  public void setUp() {}
-
-  @After
-  public void tearDown() {}
-
-  @Test
-  public void testBytes1() throws IOException {
-    String input = randomString(2000000);
-    byte[] uncom = input.getBytes(StandardCharsets.UTF_8);
-    long time = System.currentTimeMillis();
-    ICompressor compressor = new IOTDBLZ4Compressor();
-
-    byte[] compressed = compressor.compress(uncom);
-    System.out.println("compression time cost:" + (System.currentTimeMillis() - time));
-    time = System.currentTimeMillis();
-    System.out.println("ratio: " + (double) compressed.length / uncom.length);
-
-    IUnCompressor unCompressor = new LZ4UnCompressor();
-    byte[] uncompressed = new byte[uncom.length];
-    unCompressor.uncompress(compressed, 0, compressed.length, uncompressed, 0);
-    System.out.println("decompression time cost:" + (System.currentTimeMillis() - time));
-
-    Assert.assertArrayEquals(uncom, uncompressed);
-  }
-
-  @Test
-  public void testBytes2() throws IOException {
-    ICompressor.IOTDBLZ4Compressor compressor = new ICompressor.IOTDBLZ4Compressor();
-    IUnCompressor.LZ4UnCompressor unCompressor = new IUnCompressor.LZ4UnCompressor();
-
-    int n = 500000;
-    String input = randomString(n);
-    byte[] uncom = input.getBytes(StandardCharsets.UTF_8);
-    byte[] compressed = compressor.compress(uncom, 0, uncom.length);
-    // length should be same
-    Assert.assertEquals(compressor.compress(uncom).length, compressed.length);
-    byte[] uncompressed = unCompressor.uncompress(compressed);
-    Assert.assertArrayEquals(uncom, uncompressed);
-  }
-
-  @Test
-  public void testBytes3() throws IOException {
-    ICompressor.IOTDBLZ4Compressor compressor = new ICompressor.IOTDBLZ4Compressor();
-    IUnCompressor.LZ4UnCompressor unCompressor = new IUnCompressor.LZ4UnCompressor();
-
-    int n = 500000;
-    int offset = 100;
-    String input = randomString(n);
-    byte[] origin = input.getBytes(StandardCharsets.UTF_8);
-    byte[] compressed = new byte[origin.length * 2];
-    int compressedLength = compressor.compress(origin, 0, origin.length, compressed);
-    System.arraycopy(compressed, 0, compressed, offset, compressedLength);
-    for (int i = 0; i < offset; i++) {
-      compressed[i] = 0;
-    }
-
-    byte[] uncompressed = new byte[origin.length];
-    unCompressor.uncompress(compressed, offset, compressedLength, uncompressed, 0);
-    Assert.assertArrayEquals(origin, uncompressed);
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/compress/LZMA2Test.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/compress/LZMA2Test.java
deleted file mode 100644
index 4c78d90..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/compress/LZMA2Test.java
+++ /dev/null
@@ -1,104 +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.compress;
-
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
-import java.util.concurrent.ThreadLocalRandom;
-
-public class LZMA2Test {
-
-  private String randomString(int length) {
-    StringBuilder builder = new StringBuilder(length);
-    for (int i = 0; i < length; i++) {
-      builder.append((char) (ThreadLocalRandom.current().nextInt(33, 128)));
-    }
-    return builder.toString();
-  }
-
-  @Before
-  public void setUp() {}
-
-  @After
-  public void tearDown() {}
-
-  @Test
-  public void testBytes1() throws IOException {
-    ICompressor compressor = new ICompressor.LZMA2Compressor();
-    IUnCompressor unCompressor = new IUnCompressor.LZMA2UnCompressor();
-    int n = 500000;
-    String input = randomString(n);
-    byte[] uncom = input.getBytes(StandardCharsets.UTF_8);
-    byte[] compressed = compressor.compress(uncom);
-    byte[] uncompressed = unCompressor.uncompress(compressed);
-    Assert.assertArrayEquals(uncom, uncompressed);
-  }
-
-  @Test
-  public void testBytes2() throws IOException {
-    String input = randomString(2000000);
-    byte[] uncom = input.getBytes(StandardCharsets.UTF_8);
-    long time = System.currentTimeMillis();
-    ICompressor compressor = new ICompressor.LZMA2Compressor();
-
-    byte[] compressed = compressor.compress(uncom);
-    System.out.println("compression time cost:" + (System.currentTimeMillis() - time));
-    time = System.currentTimeMillis();
-    System.out.println("ratio: " + (double) compressed.length / uncom.length);
-
-    IUnCompressor unCompressor = new IUnCompressor.LZMA2UnCompressor();
-    byte[] uncompressed = new byte[uncom.length];
-    unCompressor.uncompress(compressed, 0, compressed.length, uncompressed, 0);
-    System.out.println("decompression time cost:" + (System.currentTimeMillis() - time));
-
-    Assert.assertArrayEquals(uncom, uncompressed);
-  }
-
-  @Test
-  public void testBytes3() throws IOException {
-    for (int i = 0; i < 500; i += 1) {
-      String input = randomString(i);
-      ByteBuffer source = ByteBuffer.allocateDirect(input.getBytes().length);
-      source.put(input.getBytes());
-      source.flip();
-
-      ICompressor compressor = new ICompressor.LZMA2Compressor();
-      ByteBuffer compressed =
-          ByteBuffer.allocateDirect(compressor.getMaxBytesForCompression(input.getBytes().length));
-      compressor.compress(source, compressed);
-      IUnCompressor unCompressor = new IUnCompressor.LZMA2UnCompressor();
-      ByteBuffer uncompressedByteBuffer = ByteBuffer.allocateDirect(input.getBytes().length);
-      compressed.flip();
-      unCompressor.uncompress(compressed, uncompressedByteBuffer);
-
-      uncompressedByteBuffer.flip();
-      String afterDecode = ReadWriteIOUtils.readStringFromDirectByteBuffer(uncompressedByteBuffer);
-      Assert.assertEquals(afterDecode, input);
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/compress/SnappyTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/compress/SnappyTest.java
deleted file mode 100644
index 3bd26b6..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/compress/SnappyTest.java
+++ /dev/null
@@ -1,101 +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.compress;
-
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.xerial.snappy.Snappy;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
-import java.util.concurrent.ThreadLocalRandom;
-
-public class SnappyTest {
-
-  private String randomString(int length) {
-    StringBuilder builder = new StringBuilder(length);
-    for (int i = 0; i < length; i++) {
-      builder.append((char) (ThreadLocalRandom.current().nextInt(33, 128)));
-    }
-    return builder.toString();
-  }
-
-  @Before
-  public void setUp() {}
-
-  @After
-  public void tearDown() {}
-
-  @Test
-  public void testBytes1() throws IOException {
-    int n = 500000;
-    String input = randomString(n);
-    byte[] uncom = input.getBytes(StandardCharsets.UTF_8);
-    long time = System.nanoTime();
-    byte[] compressed = Snappy.compress(uncom);
-    System.out.println("compression time cost:" + ((System.nanoTime() - time)) / 1000 / 1000);
-    System.out.println("ratio: " + (double) compressed.length / uncom.length);
-    time = System.nanoTime();
-    byte[] uncompressed = Snappy.uncompress(compressed);
-    System.out.println("decompression time cost:" + ((System.nanoTime() - time)) / 1000 / 1000);
-
-    Assert.assertArrayEquals(uncom, uncompressed);
-  }
-
-  @Test
-  public void testBytes2() throws IOException {
-    ICompressor.SnappyCompressor compressor = new ICompressor.SnappyCompressor();
-    IUnCompressor.SnappyUnCompressor unCompressor = new IUnCompressor.SnappyUnCompressor();
-
-    int n = 500000;
-    String input = randomString(n);
-    byte[] uncom = input.getBytes(StandardCharsets.UTF_8);
-    byte[] compressed = compressor.compress(uncom, 0, uncom.length);
-    // length should be same
-    Assert.assertEquals(compressor.compress(uncom).length, compressed.length);
-    byte[] uncompressed = unCompressor.uncompress(compressed);
-    Assert.assertArrayEquals(uncom, uncompressed);
-  }
-
-  @Test
-  public void testByteBuffer() throws IOException {
-    String input = randomString(5000);
-    ByteBuffer source = ByteBuffer.allocateDirect(input.getBytes().length);
-    source.put(input.getBytes());
-    source.flip();
-
-    long time = System.currentTimeMillis();
-    ByteBuffer compressed =
-        ByteBuffer.allocateDirect(Snappy.maxCompressedLength(source.remaining()));
-    Snappy.compress(source, compressed);
-    System.out.println("compression time cost:" + (System.currentTimeMillis() - time));
-    Snappy.uncompressedLength(compressed);
-    time = System.currentTimeMillis();
-    ByteBuffer uncompressedByteBuffer =
-        ByteBuffer.allocateDirect(Snappy.uncompressedLength(compressed) + 1);
-    Snappy.uncompress(compressed, uncompressedByteBuffer);
-    System.out.println("decompression time cost:" + (System.currentTimeMillis() - time));
-    assert input.equals(ReadWriteIOUtils.readStringFromDirectByteBuffer(uncompressedByteBuffer));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/compress/ZstdTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/compress/ZstdTest.java
deleted file mode 100644
index 348d1bd..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/compress/ZstdTest.java
+++ /dev/null
@@ -1,88 +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.compress;
-
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
-import java.util.concurrent.ThreadLocalRandom;
-
-public class ZstdTest {
-
-  private String randomString(int length) {
-    StringBuilder builder = new StringBuilder(length);
-    for (int i = 0; i < length; i++) {
-      builder.append((char) (ThreadLocalRandom.current().nextInt(33, 128)));
-    }
-    return builder.toString();
-  }
-
-  @Before
-  public void setUp() {}
-
-  @After
-  public void tearDown() {}
-
-  @Test
-  public void testBytes1() throws IOException {
-    for (int i = 1; i < 500000; i += 100000) {
-      String input = randomString(i);
-      ByteBuffer source = ByteBuffer.allocateDirect(input.getBytes().length);
-      source.put(input.getBytes());
-      source.flip();
-
-      ICompressor compressor = new ICompressor.ZstdCompressor();
-      ByteBuffer compressed =
-          ByteBuffer.allocateDirect(compressor.getMaxBytesForCompression(input.getBytes().length));
-      compressor.compress(source, compressed);
-
-      IUnCompressor unCompressor = new IUnCompressor.ZstdUnCompressor();
-      ByteBuffer uncompressedByteBuffer = ByteBuffer.allocateDirect(input.getBytes().length);
-      compressed.flip();
-      unCompressor.uncompress(compressed, uncompressedByteBuffer);
-
-      uncompressedByteBuffer.flip();
-      String afterDecode = ReadWriteIOUtils.readStringFromDirectByteBuffer(uncompressedByteBuffer);
-      Assert.assertEquals(afterDecode, input);
-    }
-  }
-
-  @Test
-  public void testBytes2() throws IOException {
-    ICompressor compressor = new ICompressor.ZstdCompressor();
-    IUnCompressor unCompressor = new IUnCompressor.ZstdUnCompressor();
-
-    int n = 500000;
-    String input = randomString(n);
-    byte[] uncom = input.getBytes(StandardCharsets.UTF_8);
-    byte[] compressed = compressor.compress(uncom, 0, uncom.length);
-    // length should be same
-    Assert.assertEquals(compressor.compress(uncom).length, compressed.length);
-    byte[] uncompressed = unCompressor.uncompress(compressed);
-    Assert.assertArrayEquals(uncom, uncompressed);
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/constant/TestConstant.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/constant/TestConstant.java
deleted file mode 100644
index 76e44c6..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/constant/TestConstant.java
+++ /dev/null
@@ -1,34 +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.constant;
-
-import java.io.File;
-import java.util.Random;
-
-public class TestConstant {
-  public static final String BASE_OUTPUT_PATH = "target".concat(File.separator);
-  public static final String PARTIAL_PATH_STRING =
-      "%s" + File.separator + "%d" + File.separator + "%d" + File.separator;
-  public static final String TEST_TSFILE_PATH =
-      BASE_OUTPUT_PATH + "testTsFile".concat(File.separator) + PARTIAL_PATH_STRING;
-  public static final float float_min_delta = 0.00001f;
-  public static final double double_min_delta = 0.00001d;
-  public static final Random random = new Random(System.currentTimeMillis());
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/SDTEncoderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/SDTEncoderTest.java
deleted file mode 100644
index 901bc60..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/SDTEncoderTest.java
+++ /dev/null
@@ -1,177 +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.encoding;
-
-import org.apache.iotdb.tsfile.encoding.encoder.SDTEncoder;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-public class SDTEncoderTest {
-
-  @Test
-  public void testIntSingleValue() {
-    SDTEncoder encoder = new SDTEncoder();
-    encoder.setCompDeviation(0.01);
-
-    int degree = 0;
-    int count = 0;
-    for (long time = 0; time < 100; time++) {
-      // generate data in sine wave pattern
-      int value = (int) (10 * Math.sin(degree++ * 3.141592653589793D / 180.0D));
-      if (encoder.encodeInt(time, value)) {
-        count++;
-      }
-    }
-    assertEquals(22, count);
-  }
-
-  @Test
-  public void testDoubleSingleValue() {
-    SDTEncoder encoder = new SDTEncoder();
-    encoder.setCompDeviation(0.01);
-
-    int degree = 0;
-    int count = 0;
-    for (long time = 0; time < 100; time++) {
-      // generate data in sine wave pattern
-      double value = 10 * Math.sin(degree++ * 3.141592653589793D / 180.0D);
-      if (encoder.encodeDouble(time, value)) {
-        count++;
-      }
-    }
-    assertEquals(14, count);
-  }
-
-  @Test
-  public void testLongSingleValue() {
-    SDTEncoder encoder = new SDTEncoder();
-    encoder.setCompDeviation(0.01);
-
-    int degree = 0;
-    int count = 0;
-    for (long time = 0; time < 100; time++) {
-      // generate data in sine wave pattern
-      long value = (long) (10 * Math.sin(degree++ * 3.141592653589793D / 180.0D));
-      if (encoder.encodeLong(time, value)) {
-        count++;
-      }
-    }
-    assertEquals(22, count);
-  }
-
-  @Test
-  public void testFloatSingleValue() {
-    SDTEncoder encoder = new SDTEncoder();
-    encoder.setCompDeviation(0.01);
-
-    int degree = 0;
-    int count = 0;
-    for (long time = 0; time < 100; time++) {
-      // generate data in sine wave pattern
-      float value = (float) (10 * Math.sin(degree++ * 3.141592653589793D / 180.0D));
-      if (encoder.encodeFloat(time, value)) {
-        count++;
-      }
-    }
-    assertEquals(14, count);
-  }
-
-  @Test
-  public void testIntValueArray() {
-    SDTEncoder encoder = new SDTEncoder();
-    encoder.setCompDeviation(0.01);
-
-    int degree = 0;
-    long[] timestamps = new long[100];
-    int[] values = new int[100];
-
-    for (int time = 0; time < 100; time++) {
-      // generate data in sine wave pattern
-      int value = (int) (10 * Math.sin(degree++ * 3.141592653589793D / 180.0D));
-      timestamps[time] = time;
-      values[time] = value;
-    }
-    int size = encoder.encode(timestamps, values, timestamps.length);
-
-    assertEquals(22, size);
-  }
-
-  @Test
-  public void testDoubleValueArray() {
-    SDTEncoder encoder = new SDTEncoder();
-    encoder.setCompDeviation(0.01);
-
-    int degree = 0;
-    long[] timestamps = new long[100];
-    double[] values = new double[100];
-
-    for (int time = 0; time < 100; time++) {
-      // generate data in sine wave pattern
-      double value = (10 * Math.sin(degree++ * 3.141592653589793D / 180.0D));
-      timestamps[time] = time;
-      values[time] = value;
-    }
-    int size = encoder.encode(timestamps, values, timestamps.length);
-
-    assertEquals(14, size);
-  }
-
-  @Test
-  public void testLongValueArray() {
-    SDTEncoder encoder = new SDTEncoder();
-    encoder.setCompDeviation(0.01);
-
-    int degree = 0;
-    long[] timestamps = new long[100];
-    long[] values = new long[100];
-
-    for (int time = 0; time < 100; time++) {
-      // generate data in sine wave pattern
-      long value = (long) (10 * Math.sin(degree++ * 3.141592653589793D / 180.0D));
-      timestamps[time] = time;
-      values[time] = value;
-    }
-    int size = encoder.encode(timestamps, values, timestamps.length);
-
-    assertEquals(22, size);
-  }
-
-  @Test
-  public void testFloatValueArray() {
-    SDTEncoder encoder = new SDTEncoder();
-    encoder.setCompDeviation(0.01);
-
-    int degree = 0;
-    long[] timestamps = new long[100];
-    float[] values = new float[100];
-
-    for (int time = 0; time < 100; time++) {
-      // generate data in sine wave pattern
-      float value = (float) (10 * Math.sin(degree++ * 3.141592653589793D / 180.0D));
-      timestamps[time] = time;
-      values[time] = value;
-    }
-    int size = encoder.encode(timestamps, values, timestamps.length);
-
-    assertEquals(14, size);
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/bitpacking/IntPackerTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/bitpacking/IntPackerTest.java
deleted file mode 100644
index 745766c..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/bitpacking/IntPackerTest.java
+++ /dev/null
@@ -1,79 +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.encoding.bitpacking;
-
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.Random;
-
-import static org.junit.Assert.assertEquals;
-
-public class IntPackerTest {
-
-  @Test
-  public void test() {
-    Random rand = new Random();
-    int width = 31;
-
-    int count = 100000;
-    ArrayList<Integer> preValues = new ArrayList<Integer>();
-    IntPacker packer = new IntPacker(width);
-    byte[] bb = new byte[count * width];
-    int idx = 0;
-    for (int i = 0; i < count; i++) {
-      int[] vs = new int[8];
-      for (int j = 0; j < 8; j++) {
-        vs[j] = rand.nextInt(Integer.MAX_VALUE);
-        preValues.add(vs[j]);
-      }
-      byte[] tb = new byte[width];
-      packer.pack8Values(vs, 0, tb);
-      for (int j = 0; j < tb.length; j++) {
-        bb[idx++] = tb[j];
-      }
-    }
-    int[] res = new int[count * 8];
-    packer.unpackAllValues(bb, bb.length, res);
-
-    for (int i = 0; i < count * 8; i++) {
-      int v = preValues.get(i);
-      assertEquals(res[i], v);
-    }
-  }
-
-  @Test
-  public void test2() {
-    for (int width = 4; width < 32; width++) {
-      int[] arr = new int[8];
-      int[] res = new int[8];
-      for (int i = 0; i < 8; i++) {
-        arr[i] = i;
-      }
-      IntPacker packer = new IntPacker(width);
-      byte[] buf = new byte[width];
-      packer.pack8Values(arr, 0, buf);
-      packer.unpack8Values(buf, 0, res);
-      for (int i = 0; i < 8; i++) {
-        assertEquals(arr[i], res[i]);
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/bitpacking/LongPackerTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/bitpacking/LongPackerTest.java
deleted file mode 100644
index 0615865..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/bitpacking/LongPackerTest.java
+++ /dev/null
@@ -1,131 +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.encoding.bitpacking;
-
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import org.junit.Test;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.DataInputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-
-import static org.junit.Assert.assertEquals;
-
-public class LongPackerTest {
-
-  @Test
-  public void test() {
-    Random rand = new Random();
-    int byteCount = 63;
-
-    LongPacker packer = new LongPacker(byteCount);
-    ArrayList<Long> preValues = new ArrayList<>();
-    int count = 1;
-    byte[] bb = new byte[count * byteCount];
-    int idx = 0;
-    for (int i = 0; i < count; i++) {
-      long[] vs = new long[8];
-      for (int j = 0; j < 8; j++) {
-        long v = rand.nextLong();
-        vs[j] = v < 0 ? -v : v;
-        preValues.add(vs[j]);
-      }
-
-      byte[] tb = new byte[byteCount];
-      packer.pack8Values(vs, 0, tb);
-      for (int j = 0; j < tb.length; j++) {
-        bb[idx++] = tb[j];
-      }
-    }
-    long[] tres = new long[count * 8];
-    packer.unpackAllValues(bb, bb.length, tres);
-
-    for (int i = 0; i < count * 8; i++) {
-      long v = preValues.get(i);
-      assertEquals(tres[i], v);
-    }
-  }
-
-  @Test
-  public void testPackAll() throws IOException {
-    List<Long> bpList = new ArrayList<Long>();
-    int bpCount = 15;
-    long bpStart = 11;
-    for (int i = 0; i < bpCount; i++) {
-      bpList.add(bpStart);
-      bpStart *= 3;
-    }
-    bpList.add(0L);
-    int bpBitWidth = ReadWriteForEncodingUtils.getLongMaxBitWidth(bpList);
-
-    LongPacker packer = new LongPacker(bpBitWidth);
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-
-    long[] value1 = new long[8];
-    long[] value2 = new long[8];
-    for (int i = 0; i < 8; i++) {
-      value1[i] = bpList.get(i);
-      value2[i] = bpList.get(i + 8);
-    }
-    byte[] bytes1 = new byte[bpBitWidth];
-    byte[] bytes2 = new byte[bpBitWidth];
-    packer.pack8Values(value1, 0, bytes1);
-    baos.write(bytes1);
-    packer.pack8Values(value2, 0, bytes2);
-    baos.write(bytes2);
-
-    long[] readArray = new long[16];
-    byte[] bytes = new byte[2 * bpBitWidth];
-    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
-    int bytesToRead = 2 * bpBitWidth;
-    bytesToRead = Math.min(bytesToRead, bais.available());
-    new DataInputStream(bais).readFully(bytes, 0, bytesToRead);
-
-    // save all long values in currentBuffer
-    packer.unpackAllValues(bytes, bytesToRead, readArray);
-    for (int i = 0; i < 16; i++) {
-      long v = bpList.get(i);
-      assertEquals(readArray[i], v);
-    }
-  }
-
-  @Test
-  public void test2() {
-    for (int width = 4; width < 63; width++) {
-      long[] arr = new long[8];
-      long[] res = new long[8];
-      for (int i = 0; i < 8; i++) {
-        arr[i] = i;
-      }
-      LongPacker packer = new LongPacker(width);
-      byte[] buf = new byte[width];
-      packer.pack8Values(arr, 0, buf);
-      packer.unpack8Values(buf, 0, res);
-      for (int i = 0; i < 8; i++) {
-        assertEquals(arr[i], res[i]);
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/BitmapDecoderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/BitmapDecoderTest.java
deleted file mode 100644
index d9a9a4d..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/BitmapDecoderTest.java
+++ /dev/null
@@ -1,97 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.encoding.encoder.BitmapEncoder;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayOutputStream;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-
-@Deprecated
-public class BitmapDecoderTest {
-
-  private static final Logger logger = LoggerFactory.getLogger(BitmapDecoderTest.class);
-
-  private List<Integer> intList;
-  private List<Boolean> booleanList;
-
-  @Before
-  public void setUp() {
-    intList = new ArrayList<Integer>();
-    int[] int_array = {0, 1, 2, 3, 4, 5, 6, 7, 8};
-    int int_len = int_array.length;
-    int int_num = 100000;
-    for (int i = 0; i < int_num; i++) {
-      intList.add(int_array[i % int_len]);
-    }
-
-    booleanList = new ArrayList<Boolean>();
-    boolean[] boolean_array = {true, false, true, true, false, true, false, false};
-    int boolean_len = boolean_array.length;
-    int boolean_num = 100000;
-    for (int i = 0; i < boolean_num; i++) {
-      booleanList.add(boolean_array[i % boolean_len]);
-    }
-  }
-
-  @After
-  public void tearDown() {}
-
-  @Test
-  public void testBitmapReadInt() throws Exception {
-    for (int i = 1; i < 10; i++) {
-      testInt(intList, false, i);
-    }
-  }
-
-  private void testInt(List<Integer> list, boolean isDebug, int repeatCount) throws Exception {
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    Encoder encoder = new BitmapEncoder();
-    for (int i = 0; i < repeatCount; i++) {
-      for (int value : list) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer bais = ByteBuffer.wrap(baos.toByteArray());
-    Decoder decoder = new BitmapDecoder();
-    for (int i = 0; i < repeatCount; i++) {
-      for (int value : list) {
-        int value_ = decoder.readInt(bais);
-        if (isDebug) {
-          logger.debug("{} // {}", value_, value);
-        }
-        assertEquals(value, value_);
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/ChimpDecoderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/ChimpDecoderTest.java
deleted file mode 100644
index 5912e28..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/ChimpDecoderTest.java
+++ /dev/null
@@ -1,594 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.encoding.encoder.DoublePrecisionChimpEncoder;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.IntChimpEncoder;
-import org.apache.iotdb.tsfile.encoding.encoder.LongChimpEncoder;
-import org.apache.iotdb.tsfile.encoding.encoder.SinglePrecisionChimpEncoder;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-public class ChimpDecoderTest {
-
-  private static final double DELTA = 0;
-  private static final int FLOAT_MAX_POINT_VALUE = 10000;
-  private static final long DOUBLE_MAX_POINT_VALUE = 1000000000000000L;
-
-  private static final List<Float> floatList = new ArrayList<>();
-  private static final List<Double> doubleList = new ArrayList<>();
-  private static final List<Integer> intList = new ArrayList<>();
-  private static final List<Long> longList = new ArrayList<>();
-
-  private static final List<Integer> iterations = new ArrayList<>();
-
-  @BeforeClass
-  public static void setUp() {
-    int hybridCount = 11;
-    int hybridNum = 50;
-    int hybridStart = 2000;
-    for (int i = 0; i < hybridNum; i++) {
-      for (int j = 0; j < hybridCount; j++) {
-        floatList.add((float) hybridStart / FLOAT_MAX_POINT_VALUE);
-        doubleList.add((double) hybridStart / DOUBLE_MAX_POINT_VALUE);
-        intList.add(hybridStart);
-        longList.add((long) hybridStart);
-      }
-      for (int j = 0; j < hybridCount; j++) {
-        floatList.add((float) hybridStart / FLOAT_MAX_POINT_VALUE);
-        doubleList.add((double) hybridStart / DOUBLE_MAX_POINT_VALUE);
-        intList.add(hybridStart);
-        longList.add((long) hybridStart);
-        hybridStart += 3;
-      }
-      hybridCount += 2;
-    }
-
-    iterations.add(1);
-    iterations.add(3);
-    iterations.add(8);
-    iterations.add(16);
-    iterations.add(1000);
-    iterations.add(10000);
-  }
-
-  @Test
-  public void testIntSingleValue() throws IOException {
-    Encoder encoder = new IntChimpEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    encoder.encode(777, baos);
-    encoder.flush(baos);
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    Decoder decoder = new IntChimpDecoder();
-    if (decoder.hasNext(buffer)) {
-      assertEquals(777, decoder.readInt(buffer));
-    }
-    if (decoder.hasNext(buffer)) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testFloatSingleValue() throws IOException {
-    Encoder encoder = new SinglePrecisionChimpEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    encoder.encode(Float.MAX_VALUE, baos);
-    encoder.flush(baos);
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    Decoder decoder = new SinglePrecisionChimpDecoder();
-    if (decoder.hasNext(buffer)) {
-      assertEquals(Float.MAX_VALUE, decoder.readFloat(buffer), DELTA);
-    }
-    if (decoder.hasNext(buffer)) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testLongSingleValue() throws IOException {
-    Encoder encoder = new LongChimpEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    encoder.encode((long) Integer.MAX_VALUE + 10, baos);
-    encoder.flush(baos);
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    Decoder decoder = new LongChimpDecoder();
-    if (decoder.hasNext(buffer)) {
-      assertEquals((long) Integer.MAX_VALUE + 10, decoder.readLong(buffer));
-    }
-    if (decoder.hasNext(buffer)) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testDoubleSingleValue() throws IOException {
-    Encoder encoder = new DoublePrecisionChimpEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    encoder.encode(Double.MAX_VALUE, baos);
-    encoder.flush(baos);
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    Decoder decoder = new DoublePrecisionChimpDecoder();
-    if (decoder.hasNext(buffer)) {
-      assertEquals(Double.MAX_VALUE, decoder.readDouble(buffer), DELTA);
-    }
-    if (decoder.hasNext(buffer)) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testIntZeroNumber() throws IOException {
-    Encoder encoder = new IntChimpEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    int value = 0;
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    for (int i = 0; i < 2; i++) {
-      Decoder decoder = new IntChimpDecoder();
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readInt(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readInt(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readInt(buffer), DELTA);
-      }
-    }
-  }
-
-  @Test
-  public void testFloatZeroNumber() throws IOException {
-    Encoder encoder = new SinglePrecisionChimpEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    float value = 0f;
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    for (int i = 0; i < 2; i++) {
-      Decoder decoder = new SinglePrecisionChimpDecoder();
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readFloat(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readFloat(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readFloat(buffer), DELTA);
-      }
-    }
-  }
-
-  @Test
-  public void testLongZeroNumber() throws IOException {
-    Encoder encoder = new LongChimpEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    long value = 0;
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    for (int i = 0; i < 2; i++) {
-      Decoder decoder = new LongChimpDecoder();
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readLong(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readLong(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readLong(buffer), DELTA);
-      }
-    }
-  }
-
-  @Test
-  public void testDoubleZeroNumber() throws IOException {
-    Encoder encoder = new DoublePrecisionChimpEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    double value = 0f;
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    for (int i = 0; i < 2; i++) {
-      Decoder decoder = new DoublePrecisionChimpDecoder();
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readDouble(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readDouble(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readDouble(buffer), DELTA);
-      }
-    }
-  }
-
-  @Test
-  public void testInteger() throws IOException {
-    for (Integer num : iterations) {
-      Encoder encoder = new IntChimpEncoder();
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      int value = 7;
-      for (int i = 0; i < num; i++) {
-        encoder.encode(value + 2 * i, baos);
-      }
-      encoder.flush(baos);
-
-      ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-      Decoder decoder = new IntChimpDecoder();
-      for (int i = 0; i < num; i++) {
-        if (decoder.hasNext(buffer)) {
-          assertEquals(value + 2 * i, decoder.readInt(buffer));
-          continue;
-        }
-        fail();
-      }
-      if (decoder.hasNext(buffer)) {
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testFloat() throws IOException {
-    for (Integer num : iterations) {
-      Encoder encoder = new SinglePrecisionChimpEncoder();
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      float value = 7.101f;
-      for (int i = 0; i < num; i++) {
-        encoder.encode(value + 2 * i, baos);
-      }
-      encoder.flush(baos);
-
-      ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-      Decoder decoder = new SinglePrecisionChimpDecoder();
-      for (int i = 0; i < num; i++) {
-        if (decoder.hasNext(buffer)) {
-          assertEquals(value + 2 * i, decoder.readFloat(buffer), DELTA);
-          continue;
-        }
-        fail();
-      }
-      if (decoder.hasNext(buffer)) {
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testLong() throws IOException {
-    for (Integer num : iterations) {
-      Encoder encoder = new LongChimpEncoder();
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      long value = 7;
-      for (int i = 0; i < num; i++) {
-        encoder.encode(value + 2 * i, baos);
-      }
-      encoder.flush(baos);
-
-      ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-      Decoder decoder = new LongChimpDecoder();
-      for (int i = 0; i < num; i++) {
-        if (decoder.hasNext(buffer)) {
-          long temp = decoder.readLong(buffer);
-          assertEquals(value + 2 * i, temp);
-          continue;
-        }
-        fail();
-      }
-      if (decoder.hasNext(buffer)) {
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testDouble() throws IOException {
-    for (Integer num : iterations) {
-      Encoder encoder = new DoublePrecisionChimpEncoder();
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      double value = 7.101f;
-      for (int i = 0; i < num; i++) {
-        encoder.encode(value + 2 * i, baos);
-      }
-      encoder.flush(baos);
-
-      ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-      Decoder decoder = new DoublePrecisionChimpDecoder();
-      for (int i = 0; i < num; i++) {
-        if (decoder.hasNext(buffer)) {
-          assertEquals(value + 2 * i, decoder.readDouble(buffer), DELTA);
-          continue;
-        }
-        fail();
-      }
-      if (decoder.hasNext(buffer)) {
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testIntegerRepeat() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testInteger(i);
-    }
-  }
-
-  private void testInteger(int repeatCount) throws Exception {
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    Encoder encoder = new IntChimpEncoder();
-    for (int i = 0; i < repeatCount; i++) {
-      for (int value : ChimpDecoderTest.intList) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new IntChimpDecoder();
-      for (int expected : ChimpDecoderTest.intList) {
-        if (decoder.hasNext(buffer)) {
-          int actual = decoder.readInt(buffer);
-          assertEquals(expected, actual);
-          continue;
-        }
-        fail();
-      }
-    }
-
-    baos = new ByteArrayOutputStream();
-    encoder = new IntChimpEncoder();
-    for (int i = 0; i < repeatCount; i++) {
-      for (int value : ChimpDecoderTest.intList) {
-        encoder.encode(-value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new IntChimpDecoder();
-      for (int expected : ChimpDecoderTest.intList) {
-        if (decoder.hasNext(buffer)) {
-          int actual = decoder.readInt(buffer);
-          assertEquals(expected, -actual);
-          continue;
-        }
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testFloatRepeat() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testFloat(i);
-    }
-  }
-
-  private void testFloat(int repeatCount) throws Exception {
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    Encoder encoder = new SinglePrecisionChimpEncoder();
-    for (int i = 0; i < repeatCount; i++) {
-      for (float value : ChimpDecoderTest.floatList) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new SinglePrecisionChimpDecoder();
-      for (float expected : ChimpDecoderTest.floatList) {
-        if (decoder.hasNext(buffer)) {
-          float actual = decoder.readFloat(buffer);
-          assertEquals(expected, actual, DELTA);
-          continue;
-        }
-        fail();
-      }
-    }
-
-    baos = new ByteArrayOutputStream();
-    encoder = new SinglePrecisionChimpEncoder();
-    for (int i = 0; i < repeatCount; i++) {
-      for (float value : ChimpDecoderTest.floatList) {
-        encoder.encode(-value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new SinglePrecisionChimpDecoder();
-      for (float expected : ChimpDecoderTest.floatList) {
-        if (decoder.hasNext(buffer)) {
-          float actual = decoder.readFloat(buffer);
-          assertEquals(expected, -actual, DELTA);
-          continue;
-        }
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testLongRepeat() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testLong(i);
-    }
-  }
-
-  private void testLong(int repeatCount) throws Exception {
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    Encoder encoder = new LongChimpEncoder();
-    for (int i = 0; i < repeatCount; i++) {
-      for (long value : ChimpDecoderTest.longList) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new LongChimpDecoder();
-      for (long expected : ChimpDecoderTest.longList) {
-        if (decoder.hasNext(buffer)) {
-          long actual = decoder.readLong(buffer);
-          assertEquals(expected, actual);
-          continue;
-        }
-        fail();
-      }
-    }
-
-    baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      encoder = new LongChimpEncoder();
-      for (long value : ChimpDecoderTest.longList) {
-        encoder.encode(-value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new LongChimpDecoder();
-      for (long expected : ChimpDecoderTest.longList) {
-        if (decoder.hasNext(buffer)) {
-          long actual = decoder.readLong(buffer);
-          assertEquals(expected, -actual);
-          continue;
-        }
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testDoubleRepeat() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testDouble(i);
-    }
-  }
-
-  private void testDouble(int repeatCount) throws Exception {
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    Encoder encoder = new DoublePrecisionChimpEncoder();
-    for (int i = 0; i < repeatCount; i++) {
-      for (double value : ChimpDecoderTest.doubleList) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new DoublePrecisionChimpDecoder();
-      for (double expected : ChimpDecoderTest.doubleList) {
-        if (decoder.hasNext(buffer)) {
-          double actual = decoder.readDouble(buffer);
-          assertEquals(expected, actual, DELTA);
-          continue;
-        }
-        fail();
-      }
-    }
-    baos = new ByteArrayOutputStream();
-    encoder = new DoublePrecisionChimpEncoder();
-    for (int i = 0; i < repeatCount; i++) {
-      for (double value : ChimpDecoderTest.doubleList) {
-        encoder.encode(-value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new DoublePrecisionChimpDecoder();
-      for (double expected : ChimpDecoderTest.doubleList) {
-        if (decoder.hasNext(buffer)) {
-          double actual = decoder.readDouble(buffer);
-          assertEquals(expected, -actual, DELTA);
-          continue;
-        }
-        fail();
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/DictionaryDecoderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/DictionaryDecoderTest.java
deleted file mode 100644
index fb2bead..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/DictionaryDecoderTest.java
+++ /dev/null
@@ -1,86 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.encoding.encoder.DictionaryEncoder;
-import org.apache.iotdb.tsfile.utils.Binary;
-
-import org.junit.Test;
-
-import java.io.ByteArrayOutputStream;
-import java.nio.ByteBuffer;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-public class DictionaryDecoderTest {
-  private DictionaryEncoder encoder = new DictionaryEncoder();
-  private DictionaryDecoder decoder = new DictionaryDecoder();
-  private ByteArrayOutputStream baos = new ByteArrayOutputStream();
-
-  @Test
-  public void testSingle() {
-    testAll("a");
-    testAll("b");
-    testAll("c");
-  }
-
-  @Test
-  public void testAllUnique() {
-    testAll("a", "b", "c");
-    testAll("x", "o", "q");
-    testAll(",", ".", "c", "b", "e");
-  }
-
-  @Test
-  public void testAllSame() {
-    testAll("a", "a", "a");
-    testAll("b", "b", "b");
-  }
-
-  @Test
-  public void testMixed() {
-    // all characters
-    String[] allChars = new String[256];
-    allChars[0] = "" + (char) ('a' + 1);
-    for (int i = 0; i < 256; i++) {
-      allChars[i] = "" + (char) (i) + (char) (i) + (char) (i);
-    }
-    testAll(allChars);
-  }
-
-  private void testAll(String... all) {
-    for (String s : all) {
-      encoder.encode(new Binary(s, TSFileConfig.STRING_CHARSET), baos);
-    }
-    encoder.flush(baos);
-
-    ByteBuffer out = ByteBuffer.wrap(baos.toByteArray());
-
-    for (String s : all) {
-      assertTrue(decoder.hasNext(out));
-      assertEquals(s, decoder.readBinary(out).getStringValue(TSFileConfig.STRING_CHARSET));
-    }
-
-    decoder.reset();
-    baos.reset();
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/FloatDecoderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/FloatDecoderTest.java
deleted file mode 100644
index cbbdc8e..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/FloatDecoderTest.java
+++ /dev/null
@@ -1,233 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.FloatEncoder;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayOutputStream;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-
-public class FloatDecoderTest {
-
-  private static final Logger logger = LoggerFactory.getLogger(FloatDecoderTest.class);
-  private final double delta = 0.0000001;
-  private final int floatMaxPointValue = 10000;
-  private final int floatMaxPointNumber = 4;
-  private final long doubleMaxPointValue = 1000000000000000L;
-  private final int doubleMaxPointNumber = 15;
-  private List<Float> floatList;
-  private List<Double> doubleList;
-
-  @Before
-  public void setUp() {
-    floatList = new ArrayList<Float>();
-    int hybridCount = 11;
-    int hybridNum = 5;
-    int hybridStart = 20;
-    for (int i = 0; i < hybridNum; i++) {
-      for (int j = 0; j < hybridCount; j++) {
-        floatList.add((float) hybridStart / floatMaxPointValue);
-        hybridStart += 3;
-      }
-      for (int j = 0; j < hybridCount; j++) {
-        floatList.add((float) hybridStart / floatMaxPointValue);
-      }
-      hybridCount += 2;
-    }
-
-    doubleList = new ArrayList<Double>();
-    int hybridCountDouble = 11;
-    int hybridNumDouble = 5;
-    long hybridStartDouble = 20;
-
-    for (int i = 0; i < hybridNumDouble; i++) {
-      for (int j = 0; j < hybridCountDouble; j++) {
-        doubleList.add((double) hybridStartDouble / doubleMaxPointValue);
-        hybridStart += 3;
-      }
-      for (int j = 0; j < hybridCountDouble; j++) {
-        doubleList.add((double) hybridStartDouble / doubleMaxPointValue);
-      }
-      hybridCountDouble += 2;
-    }
-  }
-
-  @After
-  public void tearDown() {}
-
-  @Test
-  public void testRLEFloat() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testFloatLength(TSEncoding.RLE, floatList, floatMaxPointNumber, false, i);
-    }
-  }
-
-  @Test
-  public void testRLEDouble() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testDoubleLength(TSEncoding.RLE, doubleList, doubleMaxPointNumber, false, i);
-    }
-  }
-
-  @Test
-  public void testDIFFFloat() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testFloatLength(TSEncoding.TS_2DIFF, floatList, floatMaxPointNumber, false, i);
-    }
-  }
-
-  @Test
-  public void testDIFFDouble() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testDoubleLength(TSEncoding.TS_2DIFF, doubleList, doubleMaxPointNumber, false, i);
-    }
-  }
-
-  // @Test
-  // public void testBigDecimal() throws Exception {
-  // for (int i = 1; i <= 5; i++) {
-  // testDecimalLenght(TSEncoding.TS_2DIFF, doubleList, doubleMaxPointNumber,
-  // false, i);
-  // testDecimalLenght(TSEncoding.RLE, doubleList, doubleMaxPointNumber, false,
-  // i);
-  // }
-  // }
-
-  @Test
-  public void test() throws Exception {
-
-    float value = 7.101f;
-    Encoder encoder = new FloatEncoder(TSEncoding.RLE, TSDataType.FLOAT, 3);
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    encoder.encode(value + 2, baos);
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    Decoder decoder1 = new FloatDecoder(TSEncoding.RLE, TSDataType.FLOAT);
-    Decoder decoder2 = new FloatDecoder(TSEncoding.RLE, TSDataType.FLOAT);
-    float value1_ = decoder1.readFloat(buffer);
-    float value2_ = decoder2.readFloat(buffer);
-    assertEquals(value, value1_, delta);
-    assertEquals(value + 2, value2_, delta);
-    logger.debug("{} // {}", value, value1_);
-    logger.debug("{} // {}", value + 2, value2_);
-  }
-
-  private void testFloatLength(
-      TSEncoding encoding,
-      List<Float> valueList,
-      int maxPointValue,
-      boolean isDebug,
-      int repeatCount)
-      throws Exception {
-    Encoder encoder = new FloatEncoder(encoding, TSDataType.FLOAT, maxPointValue);
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (float value : valueList) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new FloatDecoder(encoding, TSDataType.FLOAT);
-      for (float value : valueList) {
-        float value_ = decoder.readFloat(buffer);
-        if (isDebug) {
-          logger.debug("{} // {}", value_, value);
-        }
-        assertEquals(value, value_, delta);
-      }
-    }
-  }
-
-  private void testDoubleLength(
-      TSEncoding encoding,
-      List<Double> valueList,
-      int maxPointValue,
-      boolean isDebug,
-      int repeatCount)
-      throws Exception {
-    Encoder encoder = new FloatEncoder(encoding, TSDataType.DOUBLE, maxPointValue);
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (double value : valueList) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new FloatDecoder(encoding, TSDataType.DOUBLE);
-      for (double value : valueList) {
-        double value_ = decoder.readDouble(buffer);
-        if (isDebug) {
-          logger.debug("{} // {}", value_, value);
-        }
-        assertEquals(value, value_, delta);
-      }
-    }
-  }
-
-  // private void testDecimalLenght(TSEncoding encoding, List<Double> valueList,
-  // int maxPointValue,
-  // boolean isDebug, int repeatCount) throws Exception {
-  // Encoder encoder = new FloatEncoder(encoding, TSDataType.BIGDECIMAL,
-  // maxPointValue);
-  // ByteArrayOutputStream baos = new ByteArrayOutputStream();
-  // for (int i = 0; i < repeatCount; i++) {
-  // for (double value : valueList) {
-  // encoder.encode(new BigDecimal(value), baos);
-  // }
-  // encoder.flush(baos);
-  // }
-  // logger.debug("Repeated {} encoding done ", repeatCount);
-  // ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
-  //
-  // for (int i = 0; i < repeatCount; i++) {
-  // Decoder decoder = new FloatDecoder(encoding, TSDataType.BIGDECIMAL);
-  // for (double value : valueList) {
-  // double value_ = decoder.readBigDecimal(bais).doubleValue();
-  // if (isDebug) {
-  // logger.debug("{} // {}", value_, value);
-  // }
-  // assertEquals(value, value_, delta);
-  // }
-  // logger.debug("Repeated {} turn ", repeatCount, i);
-  // }
-  // }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/GorillaDecoderV1Test.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/GorillaDecoderV1Test.java
deleted file mode 100644
index 6d83183..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/GorillaDecoderV1Test.java
+++ /dev/null
@@ -1,258 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.encoding.encoder.DoublePrecisionEncoderV1;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.SinglePrecisionEncoderV1;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-public class GorillaDecoderV1Test {
-
-  private static final Logger logger = LoggerFactory.getLogger(GorillaDecoderV1Test.class);
-  private final double delta = 0.0000001;
-  private final int floatMaxPointValue = 10000;
-  private final long doubleMaxPointValue = 1000000000000000L;
-  private List<Float> floatList;
-  private List<Double> doubleList;
-
-  @Before
-  public void setUp() {
-    floatList = new ArrayList<Float>();
-    int hybridCount = 11;
-    int hybridNum = 50;
-    int hybridStart = 2000;
-    for (int i = 0; i < hybridNum; i++) {
-      for (int j = 0; j < hybridCount; j++) {
-        floatList.add((float) hybridStart / floatMaxPointValue);
-      }
-      for (int j = 0; j < hybridCount; j++) {
-        floatList.add((float) hybridStart / floatMaxPointValue);
-        hybridStart += 3;
-      }
-
-      hybridCount += 2;
-    }
-
-    doubleList = new ArrayList<Double>();
-    int hybridCountDouble = 11;
-    int hybridNumDouble = 50;
-    long hybridStartDouble = 2000;
-
-    for (int i = 0; i < hybridNumDouble; i++) {
-      for (int j = 0; j < hybridCountDouble; j++) {
-        doubleList.add((double) hybridStartDouble / doubleMaxPointValue);
-      }
-      for (int j = 0; j < hybridCountDouble; j++) {
-        doubleList.add((double) hybridStartDouble / doubleMaxPointValue);
-        hybridStart += 3;
-      }
-
-      hybridCountDouble += 2;
-    }
-  }
-
-  @After
-  public void tearDown() {}
-
-  @Test
-  public void testNegativeNumber() throws IOException {
-    Encoder encoder = new SinglePrecisionEncoderV1();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    float value = -7.101f;
-    encoder.encode(value, baos);
-    encoder.encode(value - 2, baos);
-    encoder.encode(value - 4, baos);
-    encoder.flush(baos);
-    encoder.encode(value, baos);
-    encoder.encode(value - 2, baos);
-    encoder.encode(value - 4, baos);
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    for (int i = 0; i < 2; i++) {
-      Decoder decoder = new SinglePrecisionDecoderV1();
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readFloat(buffer), delta);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value - 2, decoder.readFloat(buffer), delta);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value - 4, decoder.readFloat(buffer), delta);
-      }
-    }
-  }
-
-  @Test
-  public void testZeroNumber() throws IOException {
-    Encoder encoder = new DoublePrecisionEncoderV1();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    double value = 0f;
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    for (int i = 0; i < 2; i++) {
-      Decoder decoder = new DoublePrecisionDecoderV1();
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readDouble(buffer), delta);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readDouble(buffer), delta);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readDouble(buffer), delta);
-      }
-    }
-  }
-
-  @Test
-  public void testFloatRepeat() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testFloatLength(floatList, false, i);
-    }
-  }
-
-  @Test
-  public void testDoubleRepeat() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testDoubleLength(doubleList, false, i);
-    }
-  }
-
-  @Test
-  public void testFloat() throws IOException {
-    Encoder encoder = new SinglePrecisionEncoderV1();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    float value = 7.101f;
-    int num = 10000;
-    for (int i = 0; i < num; i++) {
-      encoder.encode(value + 2 * i, baos);
-    }
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    Decoder decoder = new SinglePrecisionDecoderV1();
-    for (int i = 0; i < num; i++) {
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value + 2 * i, decoder.readFloat(buffer), delta);
-        continue;
-      }
-      fail();
-    }
-  }
-
-  @Test
-  public void testDouble() throws IOException {
-    Encoder encoder = new DoublePrecisionEncoderV1();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    double value = 7.101f;
-    int num = 1000;
-    for (int i = 0; i < num; i++) {
-      encoder.encode(value + 2 * i, baos);
-    }
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    Decoder decoder = new DoublePrecisionDecoderV1();
-    for (int i = 0; i < num; i++) {
-      if (decoder.hasNext(buffer)) {
-        // System.out.println("turn "+i);
-        assertEquals(value + 2 * i, decoder.readDouble(buffer), delta);
-        continue;
-      }
-      fail();
-    }
-  }
-
-  private void testFloatLength(List<Float> valueList, boolean isDebug, int repeatCount)
-      throws Exception {
-    Encoder encoder = new SinglePrecisionEncoderV1();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (float value : valueList) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    for (int i = 0; i < repeatCount; i++) {
-
-      Decoder decoder = new SinglePrecisionDecoderV1();
-      for (float value : valueList) {
-        // System.out.println("Repeat: "+i+" value: "+value);
-        if (decoder.hasNext(buffer)) {
-          float value_ = decoder.readFloat(buffer);
-          if (isDebug) {
-            logger.debug("{} // {}", value_, value);
-          }
-          assertEquals(value, value_, delta);
-          continue;
-        }
-        fail();
-      }
-    }
-  }
-
-  private void testDoubleLength(List<Double> valueList, boolean isDebug, int repeatCount)
-      throws Exception {
-    Encoder encoder = new DoublePrecisionEncoderV1();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (double value : valueList) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new DoublePrecisionDecoderV1();
-      for (double value : valueList) {
-        if (decoder.hasNext(buffer)) {
-          double value_ = decoder.readDouble(buffer);
-          if (isDebug) {
-            logger.debug("{} // {}", value_, value);
-          }
-          assertEquals(value, value_, delta);
-          continue;
-        }
-        fail();
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/GorillaDecoderV2Test.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/GorillaDecoderV2Test.java
deleted file mode 100644
index a0c8dfc..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/GorillaDecoderV2Test.java
+++ /dev/null
@@ -1,594 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.encoding.encoder.DoublePrecisionEncoderV2;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.IntGorillaEncoder;
-import org.apache.iotdb.tsfile.encoding.encoder.LongGorillaEncoder;
-import org.apache.iotdb.tsfile.encoding.encoder.SinglePrecisionEncoderV2;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-public class GorillaDecoderV2Test {
-
-  private static final double DELTA = 0;
-  private static final int FLOAT_MAX_POINT_VALUE = 10000;
-  private static final long DOUBLE_MAX_POINT_VALUE = 1000000000000000L;
-
-  private static final List<Float> floatList = new ArrayList<>();
-  private static final List<Double> doubleList = new ArrayList<>();
-  private static final List<Integer> intList = new ArrayList<>();
-  private static final List<Long> longList = new ArrayList<>();
-
-  private static final List<Integer> iterations = new ArrayList<>();
-
-  @BeforeClass
-  public static void setUp() {
-    int hybridCount = 11;
-    int hybridNum = 50;
-    int hybridStart = 2000;
-    for (int i = 0; i < hybridNum; i++) {
-      for (int j = 0; j < hybridCount; j++) {
-        floatList.add((float) hybridStart / FLOAT_MAX_POINT_VALUE);
-        doubleList.add((double) hybridStart / DOUBLE_MAX_POINT_VALUE);
-        intList.add(hybridStart);
-        longList.add((long) hybridStart);
-      }
-      for (int j = 0; j < hybridCount; j++) {
-        floatList.add((float) hybridStart / FLOAT_MAX_POINT_VALUE);
-        doubleList.add((double) hybridStart / DOUBLE_MAX_POINT_VALUE);
-        intList.add(hybridStart);
-        longList.add((long) hybridStart);
-        hybridStart += 3;
-      }
-      hybridCount += 2;
-    }
-
-    iterations.add(1);
-    iterations.add(3);
-    iterations.add(8);
-    iterations.add(16);
-    iterations.add(1000);
-    iterations.add(10000);
-  }
-
-  @Test
-  public void testIntSingleValue() throws IOException {
-    Encoder encoder = new IntGorillaEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    encoder.encode(777, baos);
-    encoder.flush(baos);
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    Decoder decoder = new IntGorillaDecoder();
-    if (decoder.hasNext(buffer)) {
-      assertEquals(777, decoder.readInt(buffer));
-    }
-    if (decoder.hasNext(buffer)) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testFloatSingleValue() throws IOException {
-    Encoder encoder = new SinglePrecisionEncoderV2();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    encoder.encode(Float.MAX_VALUE, baos);
-    encoder.flush(baos);
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    Decoder decoder = new SinglePrecisionDecoderV2();
-    if (decoder.hasNext(buffer)) {
-      assertEquals(Float.MAX_VALUE, decoder.readFloat(buffer), DELTA);
-    }
-    if (decoder.hasNext(buffer)) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testLongSingleValue() throws IOException {
-    Encoder encoder = new LongGorillaEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    encoder.encode((long) Integer.MAX_VALUE + 10, baos);
-    encoder.flush(baos);
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    Decoder decoder = new LongGorillaDecoder();
-    if (decoder.hasNext(buffer)) {
-      assertEquals((long) Integer.MAX_VALUE + 10, decoder.readLong(buffer));
-    }
-    if (decoder.hasNext(buffer)) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testDoubleSingleValue() throws IOException {
-    Encoder encoder = new DoublePrecisionEncoderV2();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    encoder.encode(Double.MAX_VALUE, baos);
-    encoder.flush(baos);
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    Decoder decoder = new DoublePrecisionDecoderV2();
-    if (decoder.hasNext(buffer)) {
-      assertEquals(Double.MAX_VALUE, decoder.readDouble(buffer), DELTA);
-    }
-    if (decoder.hasNext(buffer)) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testIntZeroNumber() throws IOException {
-    Encoder encoder = new IntGorillaEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    int value = 0;
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    for (int i = 0; i < 2; i++) {
-      Decoder decoder = new IntGorillaDecoder();
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readInt(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readInt(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readInt(buffer), DELTA);
-      }
-    }
-  }
-
-  @Test
-  public void testFloatZeroNumber() throws IOException {
-    Encoder encoder = new SinglePrecisionEncoderV2();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    float value = 0f;
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    for (int i = 0; i < 2; i++) {
-      Decoder decoder = new SinglePrecisionDecoderV2();
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readFloat(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readFloat(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readFloat(buffer), DELTA);
-      }
-    }
-  }
-
-  @Test
-  public void testLongZeroNumber() throws IOException {
-    Encoder encoder = new LongGorillaEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    long value = 0;
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    for (int i = 0; i < 2; i++) {
-      Decoder decoder = new LongGorillaDecoder();
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readLong(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readLong(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readLong(buffer), DELTA);
-      }
-    }
-  }
-
-  @Test
-  public void testDoubleZeroNumber() throws IOException {
-    Encoder encoder = new DoublePrecisionEncoderV2();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    double value = 0f;
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    for (int i = 0; i < 2; i++) {
-      Decoder decoder = new DoublePrecisionDecoderV2();
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readDouble(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readDouble(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readDouble(buffer), DELTA);
-      }
-    }
-  }
-
-  @Test
-  public void testInteger() throws IOException {
-    for (Integer num : iterations) {
-      Encoder encoder = new IntGorillaEncoder();
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      int value = 7;
-      for (int i = 0; i < num; i++) {
-        encoder.encode(value + 2 * i, baos);
-      }
-      encoder.flush(baos);
-
-      ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-      Decoder decoder = new IntGorillaDecoder();
-      for (int i = 0; i < num; i++) {
-        if (decoder.hasNext(buffer)) {
-          assertEquals(value + 2 * i, decoder.readInt(buffer));
-          continue;
-        }
-        fail();
-      }
-      if (decoder.hasNext(buffer)) {
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testFloat() throws IOException {
-    for (Integer num : iterations) {
-      Encoder encoder = new SinglePrecisionEncoderV2();
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      float value = 7.101f;
-      for (int i = 0; i < num; i++) {
-        encoder.encode(value + 2 * i, baos);
-      }
-      encoder.flush(baos);
-
-      ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-      Decoder decoder = new SinglePrecisionDecoderV2();
-      for (int i = 0; i < num; i++) {
-        if (decoder.hasNext(buffer)) {
-          assertEquals(value + 2 * i, decoder.readFloat(buffer), DELTA);
-          continue;
-        }
-        fail();
-      }
-      if (decoder.hasNext(buffer)) {
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testLong() throws IOException {
-    for (Integer num : iterations) {
-      Encoder encoder = new LongGorillaEncoder();
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      long value = 7;
-      for (int i = 0; i < num; i++) {
-        encoder.encode(value + 2 * i, baos);
-      }
-      encoder.flush(baos);
-
-      ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-      Decoder decoder = new LongGorillaDecoder();
-      for (int i = 0; i < num; i++) {
-        if (decoder.hasNext(buffer)) {
-          assertEquals(value + 2 * i, decoder.readLong(buffer));
-          continue;
-        }
-        fail();
-      }
-      if (decoder.hasNext(buffer)) {
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testDouble() throws IOException {
-    for (Integer num : iterations) {
-      Encoder encoder = new DoublePrecisionEncoderV2();
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      double value = 7.101f;
-      for (int i = 0; i < num; i++) {
-        encoder.encode(value + 2 * i, baos);
-      }
-      encoder.flush(baos);
-
-      ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-      Decoder decoder = new DoublePrecisionDecoderV2();
-      for (int i = 0; i < num; i++) {
-        if (decoder.hasNext(buffer)) {
-          assertEquals(value + 2 * i, decoder.readDouble(buffer), DELTA);
-          continue;
-        }
-        fail();
-      }
-      if (decoder.hasNext(buffer)) {
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testIntegerRepeat() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testInteger(i);
-    }
-  }
-
-  private void testInteger(int repeatCount) throws Exception {
-    Encoder encoder = new IntGorillaEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (int value : GorillaDecoderV2Test.intList) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new IntGorillaDecoder();
-      for (int expected : GorillaDecoderV2Test.intList) {
-        if (decoder.hasNext(buffer)) {
-          int actual = decoder.readInt(buffer);
-          assertEquals(expected, actual);
-          continue;
-        }
-        fail();
-      }
-    }
-
-    encoder = new IntGorillaEncoder();
-    baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (int value : GorillaDecoderV2Test.intList) {
-        encoder.encode(-value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new IntGorillaDecoder();
-      for (int expected : GorillaDecoderV2Test.intList) {
-        if (decoder.hasNext(buffer)) {
-          int actual = decoder.readInt(buffer);
-          assertEquals(expected, -actual);
-          continue;
-        }
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testFloatRepeat() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testFloat(i);
-    }
-  }
-
-  private void testFloat(int repeatCount) throws Exception {
-    Encoder encoder = new SinglePrecisionEncoderV2();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (float value : GorillaDecoderV2Test.floatList) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new SinglePrecisionDecoderV2();
-      for (float expected : GorillaDecoderV2Test.floatList) {
-        if (decoder.hasNext(buffer)) {
-          float actual = decoder.readFloat(buffer);
-          assertEquals(expected, actual, DELTA);
-          continue;
-        }
-        fail();
-      }
-    }
-
-    encoder = new SinglePrecisionEncoderV2();
-    baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (float value : GorillaDecoderV2Test.floatList) {
-        encoder.encode(-value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new SinglePrecisionDecoderV2();
-      for (float expected : GorillaDecoderV2Test.floatList) {
-        if (decoder.hasNext(buffer)) {
-          float actual = decoder.readFloat(buffer);
-          assertEquals(expected, -actual, DELTA);
-          continue;
-        }
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testLongRepeat() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testLong(i);
-    }
-  }
-
-  private void testLong(int repeatCount) throws Exception {
-    Encoder encoder = new LongGorillaEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (long value : GorillaDecoderV2Test.longList) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new LongGorillaDecoder();
-      for (long expected : GorillaDecoderV2Test.longList) {
-        if (decoder.hasNext(buffer)) {
-          long actual = decoder.readLong(buffer);
-          assertEquals(expected, actual);
-          continue;
-        }
-        fail();
-      }
-    }
-
-    encoder = new LongGorillaEncoder();
-    baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (long value : GorillaDecoderV2Test.longList) {
-        encoder.encode(-value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new LongGorillaDecoder();
-      for (long expected : GorillaDecoderV2Test.longList) {
-        if (decoder.hasNext(buffer)) {
-          long actual = decoder.readLong(buffer);
-          assertEquals(expected, -actual);
-          continue;
-        }
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testDoubleRepeat() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testDouble(i);
-    }
-  }
-
-  private void testDouble(int repeatCount) throws Exception {
-    Encoder encoder = new DoublePrecisionEncoderV2();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (double value : GorillaDecoderV2Test.doubleList) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new DoublePrecisionDecoderV2();
-      for (double expected : GorillaDecoderV2Test.doubleList) {
-        if (decoder.hasNext(buffer)) {
-          double actual = decoder.readDouble(buffer);
-          assertEquals(expected, actual, DELTA);
-          continue;
-        }
-        fail();
-      }
-    }
-
-    encoder = new DoublePrecisionEncoderV2();
-    baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (double value : GorillaDecoderV2Test.doubleList) {
-        encoder.encode(-value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new DoublePrecisionDecoderV2();
-      for (double expected : GorillaDecoderV2Test.doubleList) {
-        if (decoder.hasNext(buffer)) {
-          double actual = decoder.readDouble(buffer);
-          assertEquals(expected, -actual, DELTA);
-          continue;
-        }
-        fail();
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/IntRleDecoderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/IntRleDecoderTest.java
deleted file mode 100644
index d33a5d6..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/IntRleDecoderTest.java
+++ /dev/null
@@ -1,217 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.encoding.encoder.IntRleEncoder;
-import org.apache.iotdb.tsfile.encoding.encoder.RleEncoder;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-
-public class IntRleDecoderTest {
-
-  private List<Integer> rleList;
-  private List<Integer> bpList;
-  private List<Integer> hybridList;
-
-  @Before
-  public void setUp() {
-    rleList = new ArrayList<>();
-    int rleCount = 11;
-    int rleNum = 18;
-    int rleStart = 11;
-    for (int i = 0; i < rleNum; i++) {
-      for (int j = 0; j < rleCount; j++) {
-        rleList.add(rleStart);
-      }
-      for (int j = 0; j < rleCount; j++) {
-        rleList.add(rleStart - 1);
-      }
-      rleCount += 2;
-      rleStart *= -3;
-    }
-
-    bpList = new ArrayList<>(100000);
-    int bpCount = 100000;
-    int bpStart = 11;
-    for (int i = 0; i < bpCount; i++) {
-      bpStart += 3;
-      if (i % 2 == 1) {
-        bpList.add(bpStart * -1);
-      } else {
-        bpList.add(bpStart);
-      }
-    }
-
-    int hybridCount = 11;
-    int hybridNum = 1000;
-    int hybridStart = 20;
-    hybridList = new ArrayList<>(hybridCount * 2 * hybridNum);
-    for (int i = 0; i < hybridNum; i++) {
-      for (int j = 0; j < hybridCount; j++) {
-        hybridStart += 3;
-        if (j % 2 == 1) {
-          hybridList.add(hybridStart * -1);
-        } else {
-          hybridList.add(hybridStart);
-        }
-      }
-      for (int j = 0; j < hybridCount; j++) {
-        if (i % 2 == 1) {
-          hybridList.add(hybridStart * -1);
-        } else {
-          hybridList.add(hybridStart);
-        }
-      }
-      hybridCount += 2;
-    }
-  }
-
-  @After
-  public void tearDown() {}
-
-  @Test
-  public void testRleReadBigInt() throws IOException {
-    List<Integer> list = new ArrayList<>(3000000);
-    for (int i = 7000000; i < 10000000; i++) {
-      list.add(i);
-    }
-    testLength(list, false, 1);
-    for (int i = 1; i < 10; i++) {
-      testLength(list, false, i);
-    }
-  }
-
-  @Test
-  public void testRleReadInt() throws IOException {
-    for (int i = 1; i < 10; i++) {
-      testLength(rleList, false, i);
-    }
-  }
-
-  @Test
-  public void testMaxRLERepeatNUM() throws IOException {
-    List<Integer> repeatList = new ArrayList<>();
-    int rleCount = 17;
-    int rleNum = 5;
-    int rleStart = 11;
-    for (int i = 0; i < rleNum; i++) {
-      for (int j = 0; j < rleCount; j++) {
-        repeatList.add(rleStart);
-      }
-      for (int j = 0; j < rleCount; j++) {
-        repeatList.add(rleStart / 3);
-      }
-      rleCount *= 7;
-      rleStart *= -3;
-    }
-    for (int i = 1; i < 10; i++) {
-      testLength(repeatList, false, i);
-    }
-  }
-
-  @Test
-  public void testBitPackingReadInt() throws IOException {
-    for (int i = 1; i < 10; i++) {
-      testLength(bpList, false, i);
-    }
-  }
-
-  @Test
-  public void testHybridReadInt() throws IOException {
-    for (int i = 1; i < 3; i++) {
-      testLength(hybridList, false, i);
-    }
-  }
-
-  @Test
-  public void testHybridReadBoolean() throws IOException {
-    for (int i = 1; i < 10; i++) {
-      testLength(hybridList, false, i);
-    }
-  }
-
-  @Test
-  public void testBitPackingReadHeader() throws IOException {
-    for (int i = 1; i < 505; i++) {
-      testBitPackedReadHeader(i);
-    }
-  }
-
-  public void testLength(List<Integer> list, boolean isDebug, int repeatCount) throws IOException {
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    RleEncoder<Integer> encoder = new IntRleEncoder();
-    for (int i = 0; i < repeatCount; i++) {
-      for (int value : list) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    RleDecoder decoder = new IntRleDecoder();
-    for (int i = 0; i < repeatCount; i++) {
-      for (int value : list) {
-        int value_ = decoder.readInt(buffer);
-        if (isDebug) {
-          System.out.println(value_ + "/" + value);
-        }
-        assertEquals(value, value_);
-      }
-    }
-  }
-
-  private void testBitPackedReadHeader(int num) throws IOException {
-    List<Integer> list = new ArrayList<>();
-
-    for (int i = 0; i < num; i++) {
-      list.add(i);
-    }
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    int bitWidth = ReadWriteForEncodingUtils.getIntMaxBitWidth(list);
-    RleEncoder<Integer> encoder = new IntRleEncoder();
-    for (int value : list) {
-      encoder.encode(value, baos);
-    }
-    encoder.flush(baos);
-    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
-    ReadWriteForEncodingUtils.readUnsignedVarInt(bais);
-    assertEquals(bitWidth, bais.read());
-    int header = ReadWriteForEncodingUtils.readUnsignedVarInt(bais);
-    int group = header >> 1;
-    assertEquals(group, (num + 7) / 8);
-    int lastBitPackedNum = bais.read();
-    if (num % 8 == 0) {
-      assertEquals(lastBitPackedNum, 8);
-    } else {
-      assertEquals(lastBitPackedNum, num % 8);
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/IntZigzagDecoderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/IntZigzagDecoderTest.java
deleted file mode 100644
index 5dd3882..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/IntZigzagDecoderTest.java
+++ /dev/null
@@ -1,99 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.IntZigzagEncoder;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayOutputStream;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-
-import static org.junit.Assert.assertEquals;
-
-public class IntZigzagDecoderTest {
-
-  private static final Logger logger = LoggerFactory.getLogger(IntZigzagDecoderTest.class);
-
-  private List<Integer> intList;
-  private List<Boolean> booleanList;
-  private Random rand = new Random();
-
-  private List<Integer> randomIntList;
-
-  @Before
-  public void setUp() {
-    intList = new ArrayList<>();
-    randomIntList = new ArrayList<>();
-    int int_num = 100000;
-    for (int i = 0; i < int_num; i++) {
-      intList.add(i);
-      intList.add(-i);
-    }
-    for (int i = 0; i < int_num; i++) {
-      randomIntList.add(rand.nextInt(int_num));
-    }
-  }
-
-  @After
-  public void tearDown() {
-    randomIntList.clear();
-    intList.clear();
-  }
-
-  @Test
-  public void testZigzagReadInt() throws Exception {
-    for (int i = 1; i < 10; i++) {
-      testInt(intList, false, i);
-      testInt(randomIntList, false, i);
-    }
-  }
-
-  private void testInt(List<Integer> list, boolean isDebug, int repeatCount) throws Exception {
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    Encoder encoder = new IntZigzagEncoder();
-    for (int i = 0; i < repeatCount; i++) {
-      for (int value : list) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer bais = ByteBuffer.wrap(baos.toByteArray());
-    Decoder decoder = new IntZigzagDecoder();
-    for (int i = 0; i < repeatCount; i++) {
-      for (int value : list) {
-        int value_ = decoder.readInt(bais);
-        if (isDebug) {
-          logger.debug("{} // {}", value_, value);
-        }
-        assertEquals(value, value_);
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/LongRleDecoderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/LongRleDecoderTest.java
deleted file mode 100644
index 072d235..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/LongRleDecoderTest.java
+++ /dev/null
@@ -1,221 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.encoding.encoder.LongRleEncoder;
-import org.apache.iotdb.tsfile.encoding.encoder.RleEncoder;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-
-public class LongRleDecoderTest {
-
-  private List<Long> rleList;
-  private List<Long> bpList;
-  private List<Long> hybridList;
-  private int rleBitWidth;
-  private int bpBitWidth;
-  private int hybridWidth;
-
-  @Before
-  public void setUp() {
-    rleList = new ArrayList<Long>();
-    int rleCount = 11;
-    int rleNum = 38;
-    long rleStart = 11;
-    for (int i = 0; i < rleNum; i++) {
-      for (int j = 0; j < rleCount; j++) {
-        rleList.add(rleStart);
-      }
-      for (int j = 0; j < rleCount; j++) {
-        rleList.add(rleStart - 1);
-      }
-      rleCount += 2;
-      rleStart *= -3;
-    }
-    rleBitWidth = ReadWriteForEncodingUtils.getLongMaxBitWidth(rleList);
-
-    bpList = new ArrayList<Long>();
-    int bpCount = 15;
-    long bpStart = 11;
-    for (int i = 0; i < bpCount; i++) {
-      bpStart *= 3;
-      if (i % 2 == 1) {
-        bpList.add(bpStart * -1);
-      } else {
-        bpList.add(bpStart);
-      }
-    }
-    bpBitWidth = ReadWriteForEncodingUtils.getLongMaxBitWidth(bpList);
-
-    hybridList = new ArrayList<Long>();
-    int hybridCount = 11;
-    int hybridNum = 1000;
-    long hybridStart = 20;
-
-    for (int i = 0; i < hybridNum; i++) {
-      for (int j = 0; j < hybridCount; j++) {
-        hybridStart += 3;
-        if (j % 2 == 1) {
-          hybridList.add(hybridStart * -1);
-        } else {
-          hybridList.add(hybridStart);
-        }
-      }
-      for (int j = 0; j < hybridCount; j++) {
-        if (i % 2 == 1) {
-          hybridList.add(hybridStart * -1);
-        } else {
-          hybridList.add(hybridStart);
-        }
-      }
-      hybridCount += 2;
-    }
-
-    hybridWidth = ReadWriteForEncodingUtils.getLongMaxBitWidth(hybridList);
-  }
-
-  @After
-  public void tearDown() {}
-
-  @Test
-  public void testRleReadBigLong() throws IOException {
-    List<Long> list = new ArrayList<>();
-    for (long i = 8000000; i < 8400000; i++) {
-      list.add(i);
-    }
-    int width = ReadWriteForEncodingUtils.getLongMaxBitWidth(list);
-    testLength(list, false, 1);
-    for (int i = 1; i < 10; i++) {
-      testLength(list, false, i);
-    }
-  }
-
-  @Test
-  public void testRleReadLong() throws IOException {
-    for (int i = 1; i < 2; i++) {
-      testLength(rleList, false, i);
-    }
-  }
-
-  @Test
-  public void testMaxRLERepeatNUM() throws IOException {
-    List<Long> repeatList = new ArrayList<>();
-    int rleCount = 17;
-    int rleNum = 5;
-    long rleStart = 11;
-    for (int i = 0; i < rleNum; i++) {
-      for (int j = 0; j < rleCount; j++) {
-        repeatList.add(rleStart);
-      }
-      for (int j = 0; j < rleCount; j++) {
-        repeatList.add(rleStart / 3);
-      }
-      rleCount *= 7;
-      rleStart *= -3;
-    }
-    int bitWidth = ReadWriteForEncodingUtils.getLongMaxBitWidth(repeatList);
-    for (int i = 1; i < 10; i++) {
-      testLength(repeatList, false, i);
-    }
-  }
-
-  @Test
-  public void testBitPackingReadLong() throws IOException {
-    for (int i = 1; i < 10; i++) {
-      testLength(bpList, false, i);
-    }
-  }
-
-  @Test
-  public void testHybridReadLong() throws IOException {
-    for (int i = 1; i < 10; i++) {
-      testLength(hybridList, false, i);
-    }
-  }
-
-  @Test
-  public void testBitPackingReadHeader() throws IOException {
-    for (int i = 1; i < 505; i++) {
-      testBitPackedReadHeader(i);
-    }
-  }
-
-  private void testBitPackedReadHeader(int num) throws IOException {
-    List<Long> list = new ArrayList<Long>();
-
-    for (long i = 0; i < num; i++) {
-      list.add(i);
-    }
-
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    int bitWidth = ReadWriteForEncodingUtils.getLongMaxBitWidth(list);
-    RleEncoder<Long> encoder = new LongRleEncoder();
-    for (long value : list) {
-      encoder.encode(value, baos);
-    }
-    encoder.flush(baos);
-    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
-    ReadWriteForEncodingUtils.readUnsignedVarInt(bais);
-    assertEquals(bitWidth, bais.read());
-    int header = ReadWriteForEncodingUtils.readUnsignedVarInt(bais);
-    int group = header >> 1;
-    assertEquals(group, (num + 7) / 8);
-    int lastBitPackedNum = bais.read();
-    if (num % 8 == 0) {
-      assertEquals(lastBitPackedNum, 8);
-    } else {
-      assertEquals(lastBitPackedNum, num % 8);
-    }
-  }
-
-  public void testLength(List<Long> list, boolean isDebug, int repeatCount) throws IOException {
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    RleEncoder<Long> encoder = new LongRleEncoder();
-    for (int i = 0; i < repeatCount; i++) {
-      for (long value : list) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    RleDecoder decoder = new LongRleDecoder();
-    for (int i = 0; i < repeatCount; i++) {
-      for (long value : list) {
-        long value_ = decoder.readLong(buffer);
-        if (isDebug) {
-          System.out.println(value_ + "/" + value);
-        }
-        assertEquals(value, value_);
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/LongZigzagDecoderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/LongZigzagDecoderTest.java
deleted file mode 100644
index 9dac687..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/LongZigzagDecoderTest.java
+++ /dev/null
@@ -1,94 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.LongZigzagEncoder;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayOutputStream;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-
-import static org.junit.Assert.assertEquals;
-
-public class LongZigzagDecoderTest {
-  private static final Logger logger = LoggerFactory.getLogger(LongZigzagDecoderTest.class);
-  private List<Long> longList;
-  private Random rand = new Random();
-  private List<Long> randomLongList;
-
-  @Before
-  public void setUp() {
-    longList = new ArrayList<>();
-    int int_num = 10000;
-    randomLongList = new ArrayList<>();
-    for (int i = 0; i < int_num; i++) {
-      longList.add((long) (i + ((long) 1 << 31)));
-    }
-    for (int i = 0; i < int_num; i++) {
-      randomLongList.add(rand.nextLong());
-    }
-  }
-
-  @After
-  public void tearDown() {
-    randomLongList.clear();
-    longList.clear();
-  }
-
-  @Test
-  public void testZigzagReadLong() throws Exception {
-    for (int i = 1; i < 10; i++) {
-      testLong(longList, false, i);
-      testLong(randomLongList, false, i);
-    }
-  }
-
-  private void testLong(List<Long> list, boolean isDebug, int repeatCount) throws Exception {
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    Encoder encoder = new LongZigzagEncoder();
-    for (int i = 0; i < repeatCount; i++) {
-      for (long value : list) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer bais = ByteBuffer.wrap(baos.toByteArray());
-    Decoder decoder = new LongZigzagDecoder();
-    for (int i = 0; i < repeatCount; i++) {
-      for (long value : list) {
-        long value_ = decoder.readLong(bais);
-        if (isDebug) {
-          logger.debug("{} // {}", value_, value);
-        }
-        assertEquals(value, value_);
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/RLBEDecoderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/RLBEDecoderTest.java
deleted file mode 100644
index c18f334..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/RLBEDecoderTest.java
+++ /dev/null
@@ -1,257 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.encoding.encoder.DoublePrecisionEncoderV1;
-import org.apache.iotdb.tsfile.encoding.encoder.DoubleRLBE;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.FloatRLBE;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-public class RLBEDecoderTest {
-
-  private static final Logger logger = LoggerFactory.getLogger(RLBEDecoderTest.class);
-  private final double delta = 0.0000001;
-  private final int floatMaxPointValue = 10000;
-  private final long doubleMaxPointValue = 1000000000000000L;
-  private List<Float> floatList;
-  private List<Double> doubleList;
-
-  @Before
-  public void setUp() {
-    floatList = new ArrayList<Float>();
-    int hybridCount = 11;
-    int hybridNum = 50;
-    int hybridStart = 2000;
-    for (int i = 0; i < hybridNum; i++) {
-      for (int j = 0; j < hybridCount; j++) {
-        floatList.add((float) hybridStart / floatMaxPointValue);
-      }
-      for (int j = 0; j < hybridCount; j++) {
-        floatList.add((float) hybridStart / floatMaxPointValue);
-        hybridStart += 3;
-      }
-
-      hybridCount += 2;
-    }
-
-    doubleList = new ArrayList<Double>();
-    int hybridCountDouble = 11;
-    int hybridNumDouble = 50;
-    long hybridStartDouble = 2000;
-
-    for (int i = 0; i < hybridNumDouble; i++) {
-      for (int j = 0; j < hybridCountDouble; j++) {
-        doubleList.add((double) hybridStartDouble / doubleMaxPointValue);
-      }
-      for (int j = 0; j < hybridCountDouble; j++) {
-        doubleList.add((double) hybridStartDouble / doubleMaxPointValue);
-        hybridStart += 3;
-      }
-
-      hybridCountDouble += 2;
-    }
-  }
-
-  @After
-  public void tearDown() {}
-
-  @Test
-  public void testNegativeNumber() throws IOException {
-    Encoder encoder = new DoubleRLBE();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    double value = -7.101f;
-    encoder.encode(value, baos);
-    encoder.encode(value - 2, baos);
-    encoder.encode(value - 4, baos);
-    encoder.flush(baos);
-    encoder.encode(value, baos);
-    encoder.encode(value - 2, baos);
-    encoder.encode(value - 4, baos);
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    for (int i = 0; i < 2; i++) {
-      Decoder decoder = new DoubleRLBEDecoder();
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readDouble(buffer), delta);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value - 2, decoder.readDouble(buffer), delta);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value - 4, decoder.readDouble(buffer), delta);
-      }
-    }
-  }
-
-  @Test
-  public void testZeroNumber() throws IOException {
-    Encoder encoder = new DoubleRLBE();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    double value = 0f;
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    for (int i = 0; i < 2; i++) {
-      Decoder decoder = new DoubleRLBEDecoder();
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readDouble(buffer), delta);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readDouble(buffer), delta);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readDouble(buffer), delta);
-      }
-    }
-  }
-
-  @Test
-  public void testFloatRepeat() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testFloatLength(floatList, false, i);
-    }
-  }
-
-  @Test
-  public void testDoubleRepeat() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testDoubleLength(doubleList, false, i);
-    }
-  }
-
-  @Test
-  public void testFloat() throws IOException {
-    Encoder encoder = new FloatRLBE();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    float value = 7.101f;
-    int num = 10000;
-    for (int i = 0; i < num; i++) {
-      encoder.encode(value + 2 * i, baos);
-    }
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    Decoder decoder = new FloatRLBEDecoder();
-    for (int i = 0; i < num; i++) {
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value + 2 * i, decoder.readFloat(buffer), delta);
-        continue;
-      }
-      fail();
-    }
-  }
-
-  @Test
-  public void testDouble() throws IOException {
-    Encoder encoder = new DoublePrecisionEncoderV1();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    double value = 7.101f;
-    int num = 1000;
-    for (int i = 0; i < num; i++) {
-      encoder.encode(value + 2 * i, baos);
-    }
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    Decoder decoder = new DoublePrecisionDecoderV1();
-    for (int i = 0; i < num; i++) {
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value + 2 * i, decoder.readDouble(buffer), delta);
-        continue;
-      }
-      fail();
-    }
-  }
-
-  private void testFloatLength(List<Float> valueList, boolean isDebug, int repeatCount)
-      throws Exception {
-    Encoder encoder = new FloatRLBE();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (float value : valueList) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    for (int i = 0; i < repeatCount; i++) {
-
-      Decoder decoder = new FloatRLBEDecoder();
-      for (float value : valueList) {
-        if (decoder.hasNext(buffer)) {
-          float value_ = decoder.readFloat(buffer);
-          if (isDebug) {
-            logger.debug("{} // {}", value_, value);
-          }
-          assertEquals(value, value_, delta);
-          continue;
-        }
-        fail();
-      }
-    }
-  }
-
-  private void testDoubleLength(List<Double> valueList, boolean isDebug, int repeatCount)
-      throws Exception {
-    Encoder encoder = new DoublePrecisionEncoderV1();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (double value : valueList) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new DoublePrecisionDecoderV1();
-      for (double value : valueList) {
-        if (decoder.hasNext(buffer)) {
-          double value_ = decoder.readDouble(buffer);
-          if (isDebug) {
-            logger.debug("{} // {}", value_, value);
-          }
-          assertEquals(value, value_, delta);
-          continue;
-        }
-        fail();
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/SprintzDecoderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/SprintzDecoderTest.java
deleted file mode 100644
index 0166c88..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/SprintzDecoderTest.java
+++ /dev/null
@@ -1,593 +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.encoding.decoder;
-
-import org.apache.iotdb.tsfile.encoding.encoder.DoubleSprintzEncoder;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.FloatSprintzEncoder;
-import org.apache.iotdb.tsfile.encoding.encoder.IntSprintzEncoder;
-import org.apache.iotdb.tsfile.encoding.encoder.LongSprintzEncoder;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-public class SprintzDecoderTest {
-  private static final double DELTA = 0;
-  private static final int FLOAT_MAX_POINT_VALUE = 10000;
-  private static final long DOUBLE_MAX_POINT_VALUE = 1000000000000000L;
-
-  private static final List<Float> floatList = new ArrayList<>();
-  private static final List<Double> doubleList = new ArrayList<>();
-  private static final List<Integer> intList = new ArrayList<>();
-  private static final List<Long> longList = new ArrayList<>();
-
-  private static final List<Integer> iterations = new ArrayList<>();
-
-  @BeforeClass
-  public static void setUp() {
-    int hybridCount = 11;
-    int hybridNum = 50;
-    int hybridStart = 2000;
-    for (int i = 0; i < hybridNum; i++) {
-      for (int j = 0; j < hybridCount; j++) {
-        floatList.add((float) hybridStart / FLOAT_MAX_POINT_VALUE);
-        doubleList.add((double) hybridStart / DOUBLE_MAX_POINT_VALUE);
-        intList.add(hybridStart);
-        longList.add((long) hybridStart);
-      }
-      for (int j = 0; j < hybridCount; j++) {
-        floatList.add((float) hybridStart / FLOAT_MAX_POINT_VALUE);
-        doubleList.add((double) hybridStart / DOUBLE_MAX_POINT_VALUE);
-        intList.add(hybridStart);
-        longList.add((long) hybridStart);
-        hybridStart += 3;
-      }
-      hybridCount += 2;
-    }
-
-    iterations.add(1);
-    iterations.add(3);
-    iterations.add(8);
-    iterations.add(16);
-    iterations.add(1000);
-    iterations.add(10000);
-  }
-
-  @Test
-  public void testIntSingleValue() throws IOException {
-    Encoder encoder = new IntSprintzEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    encoder.encode(777, baos);
-    encoder.flush(baos);
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    Decoder decoder = new IntSprintzDecoder();
-    if (decoder.hasNext(buffer)) {
-      assertEquals(777, decoder.readInt(buffer));
-    }
-    if (decoder.hasNext(buffer)) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testLongSingleValue() throws IOException {
-    Encoder encoder = new LongSprintzEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    encoder.encode((long) Integer.MAX_VALUE + 10, baos);
-    encoder.flush(baos);
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    Decoder decoder = new LongSprintzDecoder();
-    if (decoder.hasNext(buffer)) {
-      assertEquals((long) Integer.MAX_VALUE + 10, decoder.readLong(buffer));
-    }
-    if (decoder.hasNext(buffer)) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testIntZeroNumber() throws IOException {
-    Encoder encoder = new IntSprintzEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    int value = 0;
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    for (int i = 0; i < 2; i++) {
-      Decoder decoder = new IntSprintzDecoder();
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readInt(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readInt(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readInt(buffer), DELTA);
-      }
-    }
-  }
-
-  @Test
-  public void testLongZeroNumber() throws IOException {
-    Encoder encoder = new LongSprintzEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    long value = 0;
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    for (int i = 0; i < 2; i++) {
-      Decoder decoder = new LongSprintzDecoder();
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readLong(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readLong(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readLong(buffer), DELTA);
-      }
-    }
-  }
-
-  @Test
-  public void testInteger() throws IOException {
-    for (Integer num : iterations) {
-      Encoder encoder = new IntSprintzEncoder();
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      int value = 7;
-      for (int i = 0; i < num; i++) {
-        encoder.encode(value + 2 * i, baos);
-      }
-      encoder.flush(baos);
-
-      ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-      Decoder decoder = new IntSprintzDecoder();
-      for (int i = 0; i < num; i++) {
-        if (decoder.hasNext(buffer)) {
-          assertEquals(value + 2 * i, decoder.readInt(buffer));
-          continue;
-        }
-        fail();
-      }
-      if (decoder.hasNext(buffer)) {
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testLong() throws IOException {
-    for (Integer num : iterations) {
-      Encoder encoder = new LongSprintzEncoder();
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      long value = 7;
-      for (int i = 0; i < num; i++) {
-        encoder.encode(value + 2 * i, baos);
-      }
-      encoder.flush(baos);
-
-      ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-      Decoder decoder = new LongSprintzDecoder();
-      for (int i = 0; i < num; i++) {
-        if (decoder.hasNext(buffer)) {
-          assertEquals(value + 2 * i, decoder.readLong(buffer));
-          continue;
-        }
-        fail();
-      }
-      if (decoder.hasNext(buffer)) {
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testIntegerRepeat() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testInteger(i);
-    }
-  }
-
-  private void testInteger(int repeatCount) throws Exception {
-    Encoder encoder = new IntSprintzEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (int value : SprintzDecoderTest.intList) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new IntSprintzDecoder();
-      for (int expected : SprintzDecoderTest.intList) {
-        if (decoder.hasNext(buffer)) {
-          int actual = decoder.readInt(buffer);
-          assertEquals(expected, actual);
-          continue;
-        }
-        fail();
-      }
-    }
-
-    encoder = new IntSprintzEncoder();
-    baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (int value : SprintzDecoderTest.intList) {
-        encoder.encode(-value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new IntSprintzDecoder();
-      for (int expected : SprintzDecoderTest.intList) {
-        if (decoder.hasNext(buffer)) {
-          int actual = decoder.readInt(buffer);
-          assertEquals(expected, -actual);
-          continue;
-        }
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testLongRepeat() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testLong(i);
-    }
-  }
-
-  private void testLong(int repeatCount) throws Exception {
-    Encoder encoder = new LongSprintzEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (long value : SprintzDecoderTest.longList) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new LongSprintzDecoder();
-      for (long expected : SprintzDecoderTest.longList) {
-        if (decoder.hasNext(buffer)) {
-          long actual = decoder.readLong(buffer);
-          assertEquals(expected, actual);
-          continue;
-        }
-        fail();
-      }
-    }
-
-    encoder = new LongSprintzEncoder();
-    baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (long value : SprintzDecoderTest.longList) {
-        encoder.encode(-value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new LongSprintzDecoder();
-      for (long expected : SprintzDecoderTest.longList) {
-        if (decoder.hasNext(buffer)) {
-          long actual = decoder.readLong(buffer);
-          assertEquals(expected, -actual);
-          continue;
-        }
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testFloatSingleValue() throws IOException {
-    Encoder encoder = new FloatSprintzEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    encoder.encode(Float.MAX_VALUE, baos);
-    encoder.flush(baos);
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    Decoder decoder = new FloatSprintzDecoder();
-    if (decoder.hasNext(buffer)) {
-      assertEquals(Float.MAX_VALUE, decoder.readFloat(buffer), DELTA);
-    }
-    if (decoder.hasNext(buffer)) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testDoubleSingleValue() throws IOException {
-    Encoder encoder = new DoubleSprintzEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    encoder.encode(Double.MAX_VALUE, baos);
-    encoder.flush(baos);
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    Decoder decoder = new DoubleSprintzDecoder();
-    if (decoder.hasNext(buffer)) {
-      assertEquals(Double.MAX_VALUE, decoder.readDouble(buffer), DELTA);
-    }
-    if (decoder.hasNext(buffer)) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testFloatZeroNumber() throws IOException {
-    Encoder encoder = new FloatSprintzEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    float value = 0f;
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    for (int i = 0; i < 2; i++) {
-      Decoder decoder = new FloatSprintzDecoder();
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readFloat(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readFloat(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readFloat(buffer), DELTA);
-      }
-    }
-  }
-
-  @Test
-  public void testDoubleZeroNumber() throws IOException {
-    Encoder encoder = new DoubleSprintzEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    double value = 0f;
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.encode(value, baos);
-    encoder.flush(baos);
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-    for (int i = 0; i < 2; i++) {
-      Decoder decoder = new DoubleSprintzDecoder();
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readDouble(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readDouble(buffer), DELTA);
-      }
-      if (decoder.hasNext(buffer)) {
-        assertEquals(value, decoder.readDouble(buffer), DELTA);
-      }
-    }
-  }
-
-  @Test
-  public void testFloat() throws IOException {
-    for (Integer num : iterations) {
-      Encoder encoder = new FloatSprintzEncoder();
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      float value = 7.101f;
-      for (int i = 0; i < num; i++) {
-        encoder.encode(value + 2 * i, baos);
-      }
-      encoder.flush(baos);
-
-      ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-      Decoder decoder = new FloatSprintzDecoder();
-      for (int i = 0; i < num; i++) {
-        if (decoder.hasNext(buffer)) {
-          assertEquals(value + 2 * i, decoder.readFloat(buffer), DELTA);
-          continue;
-        }
-        fail();
-      }
-      if (decoder.hasNext(buffer)) {
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testDouble() throws IOException {
-    for (Integer num : iterations) {
-      Encoder encoder = new DoubleSprintzEncoder();
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      double value = 7.101f;
-      for (int i = 0; i < num; i++) {
-        encoder.encode(value + 2 * i, baos);
-      }
-      encoder.flush(baos);
-
-      ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-      Decoder decoder = new DoubleSprintzDecoder();
-      for (int i = 0; i < num; i++) {
-        if (decoder.hasNext(buffer)) {
-          assertEquals(value + 2 * i, decoder.readDouble(buffer), DELTA);
-          continue;
-        }
-        fail();
-      }
-      if (decoder.hasNext(buffer)) {
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testFloatRepeat() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testFloat(i);
-    }
-  }
-
-  private void testFloat(int repeatCount) throws Exception {
-    Encoder encoder = new FloatSprintzEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (float value : SprintzDecoderTest.floatList) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new FloatSprintzDecoder();
-      for (float expected : SprintzDecoderTest.floatList) {
-        if (decoder.hasNext(buffer)) {
-          float actual = decoder.readFloat(buffer);
-          assertEquals(expected, actual, DELTA);
-          continue;
-        }
-        fail();
-      }
-    }
-
-    encoder = new FloatSprintzEncoder();
-    baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (float value : SprintzDecoderTest.floatList) {
-        encoder.encode(-value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new FloatSprintzDecoder();
-      for (float expected : SprintzDecoderTest.floatList) {
-        if (decoder.hasNext(buffer)) {
-          float actual = decoder.readFloat(buffer);
-          assertEquals(expected, -actual, DELTA);
-          continue;
-        }
-        fail();
-      }
-    }
-  }
-
-  @Test
-  public void testDoubleRepeat() throws Exception {
-    for (int i = 1; i <= 10; i++) {
-      testDouble(i);
-    }
-  }
-
-  private void testDouble(int repeatCount) throws Exception {
-    Encoder encoder = new DoubleSprintzEncoder();
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (double value : SprintzDecoderTest.doubleList) {
-        encoder.encode(value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new DoubleSprintzDecoder();
-      for (double expected : SprintzDecoderTest.doubleList) {
-        if (decoder.hasNext(buffer)) {
-          double actual = decoder.readDouble(buffer);
-          assertEquals(expected, actual, DELTA);
-          continue;
-        }
-        fail();
-      }
-    }
-
-    encoder = new DoubleSprintzEncoder();
-    baos = new ByteArrayOutputStream();
-    for (int i = 0; i < repeatCount; i++) {
-      for (double value : SprintzDecoderTest.doubleList) {
-        encoder.encode(-value, baos);
-      }
-      encoder.flush(baos);
-    }
-
-    buffer = ByteBuffer.wrap(baos.toByteArray());
-
-    for (int i = 0; i < repeatCount; i++) {
-      Decoder decoder = new DoubleSprintzDecoder();
-      for (double expected : SprintzDecoderTest.doubleList) {
-        if (decoder.hasNext(buffer)) {
-          double actual = decoder.readDouble(buffer);
-          assertEquals(expected, -actual, DELTA);
-          continue;
-        }
-        fail();
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/delta/DeltaBinaryEncoderIntegerTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/delta/DeltaBinaryEncoderIntegerTest.java
deleted file mode 100644
index 5043a23..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/delta/DeltaBinaryEncoderIntegerTest.java
+++ /dev/null
@@ -1,110 +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.encoding.decoder.delta;
-
-import org.apache.iotdb.tsfile.encoding.decoder.DeltaBinaryDecoder;
-import org.apache.iotdb.tsfile.encoding.encoder.DeltaBinaryEncoder;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Random;
-
-import static org.junit.Assert.assertEquals;
-
-public class DeltaBinaryEncoderIntegerTest {
-
-  private static final int ROW_NUM = 10000;
-  ByteArrayOutputStream out;
-  private DeltaBinaryEncoder writer;
-  private DeltaBinaryDecoder reader;
-  private Random ran = new Random();
-  private ByteBuffer buffer;
-
-  @Before
-  public void test() {
-    writer = new DeltaBinaryEncoder.IntDeltaEncoder();
-    reader = new DeltaBinaryDecoder.IntDeltaDecoder();
-  }
-
-  @Test
-  public void testBasic() throws IOException {
-    int[] data = new int[ROW_NUM];
-    for (int i = 0; i < ROW_NUM; i++) {
-      data[i] = i * i;
-    }
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testBoundInt() throws IOException {
-    int[] data = new int[ROW_NUM];
-    for (int i = 0; i < 10; i++) {
-      boundInt(i, data);
-    }
-  }
-
-  private void boundInt(int power, int[] data) throws IOException {
-    for (int i = 0; i < ROW_NUM; i++) {
-      data[i] = ran.nextInt((int) Math.pow(2, power));
-    }
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testRandom() throws IOException {
-    int[] data = new int[ROW_NUM];
-    for (int i = 0; i < ROW_NUM; i++) {
-      data[i] = ran.nextInt();
-    }
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testMaxMin() throws IOException {
-    int[] data = new int[ROW_NUM];
-    for (int i = 0; i < ROW_NUM; i++) {
-      data[i] = (i & 1) == 0 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
-    }
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  private void writeData(int[] data, int length) {
-    for (int i = 0; i < length; i++) {
-      writer.encode(data[i], out);
-    }
-    writer.flush(out);
-  }
-
-  private void shouldReadAndWrite(int[] data, int length) throws IOException {
-    // System.out.println("source data size:" + 4 * length + " byte");
-    out = new ByteArrayOutputStream();
-    writeData(data, length);
-    byte[] page = out.toByteArray();
-    // System.out.println("encoding data size:" + page.length + " byte");
-    buffer = ByteBuffer.wrap(page);
-    int i = 0;
-    while (reader.hasNext(buffer)) {
-      assertEquals(data[i++], reader.readInt(buffer));
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/delta/DeltaBinaryEncoderLongTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/delta/DeltaBinaryEncoderLongTest.java
deleted file mode 100644
index fdc5a5b..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/delta/DeltaBinaryEncoderLongTest.java
+++ /dev/null
@@ -1,201 +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.encoding.decoder.delta;
-
-import org.apache.iotdb.tsfile.encoding.decoder.DeltaBinaryDecoder;
-import org.apache.iotdb.tsfile.encoding.encoder.DeltaBinaryEncoder;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.time.LocalDate;
-import java.time.temporal.ChronoUnit;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Random;
-import java.util.stream.Stream;
-
-import static org.junit.Assert.assertEquals;
-
-public class DeltaBinaryEncoderLongTest {
-
-  private static int ROW_NUM = 10000;
-  private final long BASIC_FACTOR = 1l << 32;
-  ByteArrayOutputStream out;
-  private DeltaBinaryEncoder writer;
-  private DeltaBinaryDecoder reader;
-  private Random ran = new Random();
-  private ByteBuffer buffer;
-
-  @Before
-  public void test() {
-    writer = new DeltaBinaryEncoder.LongDeltaEncoder();
-    reader = new DeltaBinaryDecoder.LongDeltaDecoder();
-  }
-
-  @Test
-  public void testBasic() throws IOException {
-    reader.reset();
-    long[] data = new long[ROW_NUM];
-    for (int i = 0; i < ROW_NUM; i++) {
-      data[i] = i * i * BASIC_FACTOR;
-    }
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testBoundInt() throws IOException {
-    reader.reset();
-    long[] data = new long[ROW_NUM];
-    for (int i = 2; i < 21; i++) {
-      boundInt(i, data);
-    }
-  }
-
-  private void boundInt(int power, long[] data) throws IOException {
-    reader.reset();
-    for (int i = 0; i < ROW_NUM; i++) {
-      data[i] = ran.nextInt((int) Math.pow(2, power)) * BASIC_FACTOR;
-    }
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testRandom() throws IOException {
-    reader.reset();
-    long[] data = new long[ROW_NUM];
-    for (int i = 0; i < ROW_NUM; i++) {
-      data[i] = ran.nextLong();
-    }
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testMaxMin() throws IOException {
-    reader.reset();
-    long[] data = new long[ROW_NUM];
-    for (int i = 0; i < ROW_NUM; i++) {
-      data[i] = (i & 1) == 0 ? Long.MAX_VALUE : Long.MIN_VALUE;
-    }
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testRegularEncoding() throws IOException {
-    reader.reset();
-    List<String> dates = getBetweenDate("1970-01-08", "1978-01-08");
-
-    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
-
-    ROW_NUM = dates.size();
-
-    long[] data = new long[ROW_NUM];
-    for (int i = 0; i < dates.size(); i++) {
-      try {
-        Date date = dateFormat.parse(dates.get(i));
-        data[i] = date.getTime();
-      } catch (ParseException e) {
-        e.printStackTrace();
-      }
-    }
-
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testRegularWithMissingPoints() throws IOException {
-    reader.reset();
-    List<String> dates = getBetweenDate("1970-01-08", "1978-01-08");
-
-    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
-
-    int kong = 0;
-    for (int i = 0; i < dates.size(); i++) {
-      if (i % 500 == 0) {
-        kong++;
-      }
-    }
-
-    ROW_NUM = dates.size() - kong;
-
-    long[] data = new long[ROW_NUM];
-    int j = 0;
-    for (int i = 0; i < dates.size(); i++) {
-      if (i % 500 == 0) {
-        continue;
-      }
-
-      try {
-        Date date = dateFormat.parse(dates.get(i));
-        data[j++] = date.getTime();
-      } catch (ParseException e) {
-        e.printStackTrace();
-      }
-    }
-
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  private List<String> getBetweenDate(String start, String end) {
-    List<String> list = new ArrayList<>();
-    LocalDate startDate = LocalDate.parse(start);
-    LocalDate endDate = LocalDate.parse(end);
-
-    long distance = ChronoUnit.DAYS.between(startDate, endDate);
-    if (distance < 1) {
-      return list;
-    }
-    Stream.iterate(
-            startDate,
-            d -> {
-              return d.plusDays(1);
-            })
-        .limit(distance + 1)
-        .forEach(
-            f -> {
-              list.add(f.toString());
-            });
-    return list;
-  }
-
-  private void writeData(long[] data, int length) {
-    for (int i = 0; i < length; i++) {
-      writer.encode(data[i], out);
-    }
-    writer.flush(out);
-  }
-
-  private void shouldReadAndWrite(long[] data, int length) throws IOException {
-    out = new ByteArrayOutputStream();
-    writeData(data, length);
-    byte[] page = out.toByteArray();
-    buffer = ByteBuffer.wrap(page);
-    int i = 0;
-    while (reader.hasNext(buffer)) {
-      assertEquals(data[i++], reader.readLong(buffer));
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/regular/RegularDataEncoderIntegerTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/regular/RegularDataEncoderIntegerTest.java
deleted file mode 100644
index 388b705..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/regular/RegularDataEncoderIntegerTest.java
+++ /dev/null
@@ -1,157 +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.encoding.decoder.regular;
-
-import org.apache.iotdb.tsfile.encoding.decoder.RegularDataDecoder;
-import org.apache.iotdb.tsfile.encoding.encoder.RegularDataEncoder;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-import static org.junit.Assert.assertEquals;
-
-public class RegularDataEncoderIntegerTest {
-
-  private static int ROW_NUM;
-  ByteArrayOutputStream out;
-  private RegularDataEncoder regularDataEncoder;
-  private RegularDataDecoder regularDataDecoder;
-  private ByteBuffer buffer;
-
-  @Before
-  public void test() {
-    regularDataEncoder = new RegularDataEncoder.IntRegularEncoder();
-    regularDataDecoder = new RegularDataDecoder.IntRegularDecoder();
-  }
-
-  @Test
-  public void testRegularEncodingWithoutMissingPoint() throws IOException {
-    ROW_NUM = 2000000;
-
-    int[] data = new int[ROW_NUM];
-    for (int i = 0; i < ROW_NUM; i++) {
-      data[i] = i;
-    }
-
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testRegularWithOnePercentMissingPoints() throws IOException {
-    int[] data = getMissingPointData(2000000, 80);
-
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testRegularWithFivePercentMissingPoints() throws IOException {
-    int[] data = getMissingPointData(2000000, 20);
-
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testRegularWithTenPercentMissingPoints() throws IOException {
-    int[] data = getMissingPointData(2000000, 10);
-
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testRegularWithTwentyPercentMissingPoints() throws IOException {
-    int[] data = getMissingPointData(2000000, 5);
-
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testRegularWithLowMissingPoints1() throws IOException {
-    int[] data = getMissingPointData(2000000, 1700);
-
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testRegularWithLowMissingPoints2() throws IOException {
-    int[] data = getMissingPointData(2000000, 40000);
-
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testMissingPointsDataSize() throws IOException {
-    int[] originalData = new int[] {1000, 1100, 1200, 1300, 1500, 2000};
-    out = new ByteArrayOutputStream();
-    writeData(originalData, 6);
-    byte[] page = out.toByteArray();
-    buffer = ByteBuffer.wrap(page);
-    int i = 0;
-    while (regularDataDecoder.hasNext(buffer)) {
-      assertEquals(originalData[i++], regularDataDecoder.readInt(buffer));
-    }
-  }
-
-  private int[] getMissingPointData(int dataSize, int missingPointInterval) {
-    ROW_NUM = dataSize;
-
-    int originalRowNum = ROW_NUM;
-
-    int kong = 0;
-    for (int i = 0; i < ROW_NUM; i++) {
-      if (i % missingPointInterval == 0) {
-        kong++;
-      }
-    }
-
-    ROW_NUM = originalRowNum - kong;
-
-    int[] data = new int[ROW_NUM];
-    int j = 0;
-    for (int i = 0; i < originalRowNum; i++) {
-      if (i % missingPointInterval == 0) {
-        continue;
-      }
-      data[j++] = i;
-    }
-
-    return data;
-  }
-
-  private void writeData(int[] data, int length) {
-    for (int i = 0; i < length; i++) {
-      regularDataEncoder.encode(data[i], out);
-    }
-    regularDataEncoder.flush(out);
-  }
-
-  private void shouldReadAndWrite(int[] data, int length) throws IOException {
-    out = new ByteArrayOutputStream();
-    writeData(data, length);
-    byte[] page = out.toByteArray();
-    buffer = ByteBuffer.wrap(page);
-    int i = 0;
-    while (regularDataDecoder.hasNext(buffer)) {
-      assertEquals(data[i++], regularDataDecoder.readInt(buffer));
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/regular/RegularDataEncoderLongTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/regular/RegularDataEncoderLongTest.java
deleted file mode 100644
index ebe776e..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/regular/RegularDataEncoderLongTest.java
+++ /dev/null
@@ -1,252 +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.encoding.decoder.regular;
-
-import org.apache.iotdb.tsfile.encoding.decoder.RegularDataDecoder;
-import org.apache.iotdb.tsfile.encoding.encoder.RegularDataEncoder;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.time.temporal.ChronoUnit;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.TimeZone;
-import java.util.stream.Stream;
-
-import static org.junit.Assert.assertEquals;
-
-public class RegularDataEncoderLongTest {
-
-  private static int ROW_NUM;
-  ByteArrayOutputStream out;
-  private RegularDataEncoder regularDataEncoder;
-  private RegularDataDecoder regularDataDecoder;
-  private ByteBuffer buffer;
-
-  @Before
-  public void test() {
-    regularDataEncoder = new RegularDataEncoder.LongRegularEncoder();
-    regularDataDecoder = new RegularDataDecoder.LongRegularDecoder();
-  }
-
-  @Test
-  public void testRegularEncodingWithoutMissingPoint() throws IOException {
-    List<String> dates = getBetweenDateWithOneSecond("1980-01-01T01:00:00", "1980-01-28T01:00:00");
-
-    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
-    ROW_NUM = dates.size();
-
-    long[] data = new long[ROW_NUM];
-    for (int i = 0; i < dates.size(); i++) {
-      try {
-        Date date = dateFormat.parse(dates.get(i));
-        data[i] = date.getTime();
-      } catch (ParseException e) {
-        e.printStackTrace();
-      }
-    }
-
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testRegularWithOnePercentMissingPoints1() throws IOException {
-    long[] data =
-        getMissingPointData(
-            getBetweenDateWithOneSecond("1980-01-01T01:00:00", "1980-01-28T01:00:00"), 80);
-
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testRegularWithOnePercentMissingPoints2() throws IOException {
-    long[] data =
-        getMissingPointData(
-            getBetweenDateWithTwoSecond("1980-01-01T01:00:00", "1980-01-28T01:00:00"), 80);
-
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testRegularWithFivePercentMissingPoints() throws IOException {
-    long[] data =
-        getMissingPointData(
-            getBetweenDateWithOneSecond("1980-01-01T01:00:00", "1980-01-28T01:00:00"), 20);
-
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testRegularWithTenPercentMissingPoints() throws IOException {
-    long[] data =
-        getMissingPointData(
-            getBetweenDateWithOneSecond("1980-01-01T01:00:00", "1980-01-28T01:00:00"), 10);
-
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testRegularWithTwentyPercentMissingPoints() throws IOException {
-    long[] data =
-        getMissingPointData(
-            getBetweenDateWithOneSecond("1980-01-01T01:00:00", "1980-01-28T01:00:00"), 5);
-
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testRegularWithLowMissingPoints1() throws IOException {
-    long[] data =
-        getMissingPointData(
-            getBetweenDateWithOneSecond("1980-01-01T01:00:00", "1980-01-28T01:00:00"), 1700);
-
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testRegularWithLowMissingPoints2() throws IOException {
-    long[] data =
-        getMissingPointData(
-            getBetweenDateWithOneSecond("1980-01-01T01:00:00", "1980-01-28T01:00:00"), 40000);
-
-    shouldReadAndWrite(data, ROW_NUM);
-  }
-
-  @Test
-  public void testMissingPointsDataSize() throws IOException {
-    long[] originalData = new long[] {1000, 1100, 1200, 1300, 1500, 2000};
-    out = new ByteArrayOutputStream();
-    writeData(originalData, 6);
-    byte[] page = out.toByteArray();
-    buffer = ByteBuffer.wrap(page);
-    int i = 0;
-    while (regularDataDecoder.hasNext(buffer)) {
-      assertEquals(originalData[i++], regularDataDecoder.readLong(buffer));
-    }
-  }
-
-  private long[] getMissingPointData(List<String> originalData, int missingPointInterval) {
-    List<String> dates = originalData;
-
-    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
-    int kong = 0;
-    for (int i = 0; i < dates.size(); i++) {
-      if (i % missingPointInterval == 0) {
-        kong++;
-      }
-    }
-
-    ROW_NUM = dates.size() - kong;
-
-    long[] data = new long[ROW_NUM];
-    int j = 0;
-    for (int i = 0; i < dates.size(); i++) {
-      if (i % missingPointInterval == 0) {
-        continue;
-      }
-
-      try {
-        Date date = dateFormat.parse(dates.get(i));
-        data[j++] = date.getTime();
-      } catch (ParseException e) {
-        e.printStackTrace();
-      }
-    }
-
-    return data;
-  }
-
-  private List<String> getBetweenDateWithOneSecond(String start, String end) {
-    TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
-    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-    List<String> list = new ArrayList<>();
-    LocalDateTime startDate = LocalDateTime.parse(start);
-    LocalDateTime endDate = LocalDateTime.parse(end);
-
-    long distance = ChronoUnit.SECONDS.between(startDate, endDate);
-    if (distance < 1) {
-      return list;
-    }
-    Stream.iterate(
-            startDate,
-            d -> {
-              return d.plusSeconds(1);
-            })
-        .limit(distance + 1)
-        .forEach(
-            f -> {
-              list.add(f.format(formatter));
-            });
-    return list;
-  }
-
-  private List<String> getBetweenDateWithTwoSecond(String start, String end) {
-    TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
-    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-    LocalDateTime startDate = LocalDateTime.parse(start);
-    LocalDateTime endDate = LocalDateTime.parse(end);
-
-    long distance = ChronoUnit.SECONDS.between(startDate, endDate);
-    List<String> list = new ArrayList<>((int) distance / 2 + 1);
-    if (distance < 1) {
-      return list;
-    }
-    Stream.iterate(
-            startDate,
-            d -> {
-              return d.plusSeconds(2);
-            })
-        .limit((distance / 2) + 1)
-        .forEach(
-            f -> {
-              list.add(f.format(formatter));
-            });
-    return list;
-  }
-
-  private void writeData(long[] data, int length) {
-    for (int i = 0; i < length; i++) {
-      regularDataEncoder.encode(data[i], out);
-    }
-    regularDataEncoder.flush(out);
-  }
-
-  private void shouldReadAndWrite(long[] data, int length) throws IOException {
-    out = new ByteArrayOutputStream(data.length * 16);
-    writeData(data, length);
-    byte[] page = out.toByteArray();
-    buffer = ByteBuffer.wrap(page);
-    int i = 0;
-    while (regularDataDecoder.hasNext(buffer)) {
-      assertEquals(data[i++], regularDataDecoder.readLong(buffer));
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/exception/TsFileExceptionTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/exception/TsFileExceptionTest.java
deleted file mode 100644
index eec8883..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/exception/TsFileExceptionTest.java
+++ /dev/null
@@ -1,187 +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.exception;
-
-import org.apache.iotdb.tsfile.exception.cache.CacheException;
-import org.apache.iotdb.tsfile.exception.compress.CompressionTypeNotSupportedException;
-import org.apache.iotdb.tsfile.exception.compress.GZIPCompressOverflowException;
-import org.apache.iotdb.tsfile.exception.encoding.TsFileDecodingException;
-import org.apache.iotdb.tsfile.exception.encoding.TsFileEncodingException;
-import org.apache.iotdb.tsfile.exception.filter.QueryFilterOptimizationException;
-import org.apache.iotdb.tsfile.exception.filter.StatisticsClassException;
-import org.apache.iotdb.tsfile.exception.filter.UnSupportFilterDataTypeException;
-import org.apache.iotdb.tsfile.exception.write.NoMeasurementException;
-import org.apache.iotdb.tsfile.exception.write.PageException;
-import org.apache.iotdb.tsfile.exception.write.TsFileNotCompleteException;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.exception.write.UnknownColumnTypeException;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-
-import org.junit.Test;
-
-import java.io.IOException;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
-public class TsFileExceptionTest {
-
-  private static final String MOCK = "mock";
-
-  @Test
-  public void testNotCompatibleTsFileException() {
-    NotCompatibleTsFileException e = new NotCompatibleTsFileException(MOCK);
-    assertEquals(MOCK, e.getMessage());
-  }
-
-  @Test
-  public void testNotImplementedException() {
-    NotImplementedException e = new NotImplementedException(MOCK);
-    assertEquals(MOCK, e.getMessage());
-
-    e = new NotImplementedException();
-    assertNull(e.getMessage());
-  }
-
-  @Test
-  public void testNullFieldException() {
-    NullFieldException e = new NullFieldException();
-    assertEquals("Field is null", e.getMessage());
-  }
-
-  @Test
-  public void testPathParseException() {
-    PathParseException e = new PathParseException(MOCK);
-    assertEquals("mock is not a legal path.", e.getMessage());
-  }
-
-  @Test
-  public void testTsFileRuntimeException() {
-    TsFileRuntimeException e = new TsFileRuntimeException(MOCK);
-    assertEquals(MOCK, e.getMessage());
-  }
-
-  @Test
-  public void testTsFileStatisticsMistakesException() {
-    TsFileStatisticsMistakesException e = new TsFileStatisticsMistakesException(MOCK);
-    assertEquals(MOCK, e.getMessage());
-  }
-
-  // test for cache exception
-  @Test
-  public void testCacheException() {
-    CacheException e = new CacheException(MOCK);
-    assertEquals(MOCK, e.getMessage());
-  }
-
-  // test for compress exception
-  @Test
-  public void testCompressionTypeNotSupportedException() {
-    CompressionTypeNotSupportedException e = new CompressionTypeNotSupportedException(MOCK);
-    assertEquals("codec not supported: " + MOCK, e.getMessage());
-  }
-
-  @Test
-  public void testGZIPCompressOverflowException() {
-    GZIPCompressOverflowException e = new GZIPCompressOverflowException();
-    assertEquals("compressed data is larger than the given byte container.", e.getMessage());
-  }
-
-  // test for encoding exception
-  @Test
-  public void testTsFileDecodingException() {
-    TsFileDecodingException e = new TsFileDecodingException(MOCK);
-    assertEquals(MOCK, e.getMessage());
-  }
-
-  @Test
-  public void testTsFileEncodingException() {
-    TsFileEncodingException e = new TsFileEncodingException(MOCK);
-    assertEquals(MOCK, e.getMessage());
-  }
-
-  // test for filter exception
-  @Test
-  public void testQueryFilterOptimizationException() {
-    QueryFilterOptimizationException e = new QueryFilterOptimizationException(MOCK);
-    assertEquals(MOCK, e.getMessage());
-  }
-
-  @Test
-  public void testStatisticsClassException() {
-    StatisticsClassException e = new StatisticsClassException(MOCK);
-    assertEquals(MOCK, e.getMessage());
-  }
-
-  @Test
-  public void testUnSupportFilterDataTypeException() {
-    UnSupportFilterDataTypeException e = new UnSupportFilterDataTypeException(MOCK);
-    assertEquals(MOCK, e.getMessage());
-  }
-
-  // test for write exception
-  @Test
-  public void testNoMeasurementException() {
-    NoMeasurementException e = new NoMeasurementException(MOCK);
-    assertEquals(MOCK, e.getMessage());
-  }
-
-  @Test
-  public void testPageException() {
-    PageException e = new PageException(MOCK);
-    assertEquals(MOCK, e.getMessage());
-
-    e = new PageException(MOCK, new IOException());
-    assertEquals(MOCK, e.getMessage());
-
-    e = new PageException(new IOException());
-    assertEquals("java.io.IOException", e.getMessage());
-  }
-
-  @Test
-  public void testTsFileNotCompleteException() {
-    TsFileNotCompleteException e = new TsFileNotCompleteException(MOCK);
-    assertEquals(MOCK, e.getMessage());
-  }
-
-  @Test
-  public void testUnknownColumnTypeException() {
-    UnknownColumnTypeException e = new UnknownColumnTypeException(MOCK);
-    assertEquals("Column type not found: " + MOCK, e.getMessage());
-  }
-
-  @Test
-  public void testUnSupportedDataTypeException() {
-    UnSupportedDataTypeException e = new UnSupportedDataTypeException(MOCK);
-    assertEquals("Unsupported dataType: " + MOCK, e.getMessage());
-  }
-
-  @Test
-  public void testWriteProcessException() {
-    WriteProcessException e = new WriteProcessException(MOCK);
-    assertEquals(MOCK, e.getMessage());
-
-    e = new WriteProcessException(MOCK, new IOException());
-    assertEquals(MOCK, e.getMessage());
-
-    e = new WriteProcessException(new IOException());
-    assertEquals("java.io.IOException", e.getMessage());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/header/PageHeaderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/header/PageHeaderTest.java
deleted file mode 100644
index 20ee9b7..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/header/PageHeaderTest.java
+++ /dev/null
@@ -1,108 +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.file.header;
-
-import org.apache.iotdb.tsfile.constant.TestConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.utils.TestHelper;
-import org.apache.iotdb.tsfile.file.metadata.utils.Utils;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-public class PageHeaderTest {
-  public static final int UNCOMPRESSED_SIZE = 123456;
-  public static final int COMPRESSED_SIZE = 100000;
-  public static final int NUM_OF_VALUES = 10000;
-  public static final long MAX_TIMESTAMO = 523372036854775806L;
-  public static final long MIN_TIMESTAMO = 423372036854775806L;
-  public static final TSDataType DATA_TYPE = TSDataType.INT64;
-  private final String PATH = TestConstant.BASE_OUTPUT_PATH.concat("outputPageHeader.tsfile");
-
-  @Before
-  public void setUp() {}
-
-  @After
-  public void tearDown() {
-    File file = new File(PATH);
-    if (file.exists()) {
-      Assert.assertTrue(file.delete());
-    }
-  }
-
-  @Test
-  public void testWriteIntoFile() {
-    PageHeader header = TestHelper.createTestPageHeader();
-    serialized(header);
-    PageHeader readHeader = deSerialized();
-    Utils.isPageHeaderEqual(header, readHeader);
-    serialized(readHeader);
-  }
-
-  private PageHeader deSerialized() {
-    FileInputStream fis = null;
-    PageHeader header = null;
-    try {
-      fis = new FileInputStream(new File(PATH));
-      header = PageHeader.deserializeFrom(fis, DATA_TYPE, true);
-      return header;
-    } catch (IOException e) {
-      e.printStackTrace();
-    } finally {
-      if (fis != null) {
-        try {
-          fis.close();
-        } catch (IOException e) {
-          e.printStackTrace();
-        }
-      }
-    }
-    return header;
-  }
-
-  private void serialized(PageHeader header) {
-    File file = new File(PATH);
-    if (file.exists()) {
-      Assert.assertTrue(file.delete());
-    }
-    FileOutputStream fos = null;
-    try {
-      fos = new FileOutputStream(file);
-      header.serializeTo(fos);
-    } catch (IOException e) {
-      e.printStackTrace();
-    } finally {
-      if (fos != null) {
-        try {
-          fos.close();
-        } catch (IOException e) {
-          e.printStackTrace();
-        }
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/ChunkMetadataTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/ChunkMetadataTest.java
deleted file mode 100644
index 75129d9..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/ChunkMetadataTest.java
+++ /dev/null
@@ -1,70 +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.file.metadata;
-
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-public class ChunkMetadataTest {
-  @Test
-  public void testInsertIntoSortedDeletions() {
-    ChunkMetadata chunkMetadata = new ChunkMetadata();
-    // add into empty list
-    chunkMetadata.insertIntoSortedDeletions(new TimeRange(6, 27));
-    Assert.assertArrayEquals(
-        new TimeRange[] {new TimeRange(6, 27)},
-        chunkMetadata.getDeleteIntervalList().toArray(new TimeRange[0]));
-    // add not overlap
-    chunkMetadata.insertIntoSortedDeletions(new TimeRange(61, 69));
-    Assert.assertArrayEquals(
-        new TimeRange[] {new TimeRange(6, 27), new TimeRange(61, 69)},
-        chunkMetadata.getDeleteIntervalList().toArray(new TimeRange[0]));
-    // add left overlap
-    chunkMetadata.insertIntoSortedDeletions(new TimeRange(0, 19));
-    Assert.assertArrayEquals(
-        new TimeRange[] {new TimeRange(0, 27), new TimeRange(61, 69)},
-        chunkMetadata.getDeleteIntervalList().toArray(new TimeRange[0]));
-    chunkMetadata.insertIntoSortedDeletions(new TimeRange(59, 60));
-    Assert.assertArrayEquals(
-        new TimeRange[] {new TimeRange(0, 27), new TimeRange(59, 60), new TimeRange(61, 69)},
-        chunkMetadata.getDeleteIntervalList().toArray(new TimeRange[0]));
-    // add right overlap
-    chunkMetadata.insertIntoSortedDeletions(new TimeRange(27, 30));
-    Assert.assertArrayEquals(
-        new TimeRange[] {new TimeRange(0, 30), new TimeRange(59, 60), new TimeRange(61, 69)},
-        chunkMetadata.getDeleteIntervalList().toArray(new TimeRange[0]));
-    chunkMetadata.insertIntoSortedDeletions(new TimeRange(65, 70));
-    Assert.assertArrayEquals(
-        new TimeRange[] {new TimeRange(0, 30), new TimeRange(59, 60), new TimeRange(61, 70)},
-        chunkMetadata.getDeleteIntervalList().toArray(new TimeRange[0]));
-    // add internal
-    chunkMetadata.insertIntoSortedDeletions(new TimeRange(40, 50));
-    Assert.assertArrayEquals(
-        new TimeRange[] {
-          new TimeRange(0, 30), new TimeRange(40, 50), new TimeRange(59, 60), new TimeRange(61, 70)
-        },
-        chunkMetadata.getDeleteIntervalList().toArray(new TimeRange[0]));
-    chunkMetadata.insertIntoSortedDeletions(new TimeRange(30, 40));
-    Assert.assertArrayEquals(
-        new TimeRange[] {new TimeRange(0, 50), new TimeRange(59, 60), new TimeRange(61, 70)},
-        chunkMetadata.getDeleteIntervalList().toArray(new TimeRange[0]));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/MetadataIndexNodeTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/MetadataIndexNodeTest.java
deleted file mode 100644
index 4b52965..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/MetadataIndexNodeTest.java
+++ /dev/null
@@ -1,51 +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.file.metadata;
-
-import org.apache.iotdb.tsfile.file.IMetadataIndexEntry;
-import org.apache.iotdb.tsfile.file.metadata.enums.MetadataIndexNodeType;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class MetadataIndexNodeTest {
-
-  @Test
-  public void testBinarySearchInChildren() {
-    List<IMetadataIndexEntry> list = new ArrayList<>();
-    list.add(new MeasurementMetadataIndexEntry("s0", -1L));
-    list.add(new MeasurementMetadataIndexEntry("s5", -1L));
-    list.add(new MeasurementMetadataIndexEntry("s10", -1L));
-    list.add(new MeasurementMetadataIndexEntry("s15", -1L));
-    list.add(new MeasurementMetadataIndexEntry("s20", -1L));
-
-    MetadataIndexNode metadataIndexNode =
-        new MetadataIndexNode(list, -1L, MetadataIndexNodeType.LEAF_MEASUREMENT);
-    Assert.assertEquals(0, metadataIndexNode.binarySearchInChildren("s0", false));
-    Assert.assertEquals(2, metadataIndexNode.binarySearchInChildren("s10", false));
-    Assert.assertEquals(2, metadataIndexNode.binarySearchInChildren("s13", false));
-    Assert.assertEquals(4, metadataIndexNode.binarySearchInChildren("s23", false));
-    Assert.assertEquals(-1, metadataIndexNode.binarySearchInChildren("s13", true));
-    Assert.assertEquals(-1, metadataIndexNode.binarySearchInChildren("s23", true));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/TimeseriesMetadataTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/TimeseriesMetadataTest.java
deleted file mode 100644
index d153a9e..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/TimeseriesMetadataTest.java
+++ /dev/null
@@ -1,138 +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.file.metadata;
-
-import org.apache.iotdb.tsfile.constant.TestConstant;
-import org.apache.iotdb.tsfile.file.metadata.utils.TestHelper;
-import org.apache.iotdb.tsfile.read.reader.LocalTsFileInput;
-import org.apache.iotdb.tsfile.read.reader.TsFileInput;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.FileChannel;
-import java.nio.file.Paths;
-
-public class TimeseriesMetadataTest {
-
-  public static final String measurementUID = "sensor01";
-  public static final int typeLength = 1024;
-  final String PATH = TestConstant.BASE_OUTPUT_PATH.concat("outputTimeSeries.tsfile");
-
-  @Before
-  public void setUp() {}
-
-  @After
-  public void tearDown() {
-    File file = new File(PATH);
-    if (file.exists()) {
-      file.delete();
-    }
-  }
-
-  @Test
-  public void testWriteIntoFile() {
-    TimeseriesMetadata timeseriesMetadata =
-        TestHelper.createSimpleTimeseriesMetaData(measurementUID);
-    serialized(timeseriesMetadata);
-    TimeseriesMetadata readMetadata = deSerialized();
-    Assert.assertEquals(timeseriesMetadata.toString(), readMetadata.toString());
-    readMetadata = deSerializedByTsFileInput();
-    Assert.assertEquals(timeseriesMetadata.toString(), readMetadata.toString());
-    serialized(readMetadata);
-  }
-
-  private TimeseriesMetadata deSerialized() {
-    FileInputStream fis = null;
-    TimeseriesMetadata metaData = null;
-    try {
-      fis = new FileInputStream(PATH);
-      FileChannel fch = fis.getChannel();
-      ByteBuffer buffer = ByteBuffer.allocate((int) fch.size());
-      fch.read(buffer);
-      buffer.flip();
-      metaData = TimeseriesMetadata.deserializeFrom(buffer, true);
-      metaData.setChunkMetadataListBuffer(new PublicBAOS());
-      return metaData;
-    } catch (IOException e) {
-      e.printStackTrace();
-    } finally {
-      if (fis != null) {
-        try {
-          fis.close();
-        } catch (IOException e) {
-          e.printStackTrace();
-        }
-      }
-    }
-    return metaData;
-  }
-
-  private TimeseriesMetadata deSerializedByTsFileInput() {
-    TsFileInput tsFileInput = null;
-    TimeseriesMetadata metaData = null;
-    try {
-      tsFileInput = new LocalTsFileInput(Paths.get(PATH));
-      metaData = TimeseriesMetadata.deserializeFrom(tsFileInput, true);
-      metaData.setChunkMetadataListBuffer(new PublicBAOS());
-      return metaData;
-    } catch (IOException e) {
-      e.printStackTrace();
-    } finally {
-      if (tsFileInput != null) {
-        try {
-          tsFileInput.close();
-        } catch (IOException e) {
-          e.printStackTrace();
-        }
-      }
-    }
-    return metaData;
-  }
-
-  private void serialized(TimeseriesMetadata metaData) {
-    File file = new File(PATH);
-    if (file.exists()) {
-      file.delete();
-    }
-    FileOutputStream fos = null;
-    try {
-      fos = new FileOutputStream(file);
-      metaData.serializeTo(fos);
-    } catch (IOException e) {
-      e.printStackTrace();
-    } finally {
-      if (fos != null) {
-        try {
-          fos.close();
-        } catch (IOException e) {
-          e.printStackTrace();
-        }
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/TsFileMetadataTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/TsFileMetadataTest.java
deleted file mode 100644
index 6b8fc2d..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/TsFileMetadataTest.java
+++ /dev/null
@@ -1,106 +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.file.metadata;
-
-import org.apache.iotdb.tsfile.constant.TestConstant;
-import org.apache.iotdb.tsfile.file.metadata.utils.TestHelper;
-import org.apache.iotdb.tsfile.file.metadata.utils.Utils;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.FileChannel;
-
-public class TsFileMetadataTest {
-
-  final String PATH = TestConstant.BASE_OUTPUT_PATH.concat("output1.tsfile");
-
-  @Before
-  public void setUp() {}
-
-  @After
-  public void tearDown() {
-    File file = new File(PATH);
-    if (file.exists()) {
-      file.delete();
-    }
-  }
-
-  @Test
-  public void testWriteFileMetaData() {
-    TsFileMetadata tsfMetaData = TestHelper.createSimpleFileMetaData();
-    serialized(tsfMetaData);
-    TsFileMetadata readMetaData = deSerialized();
-    Assert.assertTrue(Utils.isFileMetaDataEqual(tsfMetaData, readMetaData));
-  }
-
-  private TsFileMetadata deSerialized() {
-    FileInputStream fileInputStream = null;
-    TsFileMetadata metaData = null;
-    try {
-      fileInputStream = new FileInputStream(new File(PATH));
-      FileChannel channel = fileInputStream.getChannel();
-      ByteBuffer buffer = ByteBuffer.allocate((int) channel.size());
-      channel.read(buffer);
-      buffer.rewind();
-      metaData = TsFileMetadata.deserializeFrom(buffer);
-      return metaData;
-    } catch (IOException e) {
-      e.printStackTrace();
-    } finally {
-      if (fileInputStream != null) {
-        try {
-          fileInputStream.close();
-        } catch (IOException e) {
-          e.printStackTrace();
-        }
-      }
-    }
-    return metaData;
-  }
-
-  private void serialized(TsFileMetadata metaData) {
-    File file = new File(PATH);
-    if (file.exists()) {
-      file.delete();
-    }
-    FileOutputStream fos = null;
-    try {
-      fos = new FileOutputStream(file);
-      metaData.serializeTo(fos);
-    } catch (IOException e) {
-      e.printStackTrace();
-    } finally {
-      if (fos != null) {
-        try {
-          fos.close();
-        } catch (IOException e) {
-          e.printStackTrace();
-        }
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/statistics/BooleanStatisticsTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/statistics/BooleanStatisticsTest.java
deleted file mode 100644
index 726e10d..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/statistics/BooleanStatisticsTest.java
+++ /dev/null
@@ -1,83 +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.file.metadata.statistics;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-public class BooleanStatisticsTest {
-
-  private static final double maxError = 0.0001d;
-
-  @Test
-  public void testUpdate() {
-    Statistics<Boolean> booleanStatistics = new BooleanStatistics();
-    booleanStatistics.updateStats(true);
-    assertFalse(booleanStatistics.isEmpty());
-    booleanStatistics.updateStats(false);
-    assertFalse(booleanStatistics.isEmpty());
-    assertTrue(booleanStatistics.getFirstValue());
-    assertFalse(booleanStatistics.getLastValue());
-  }
-
-  @Test
-  public void testMerge() {
-    Statistics<Boolean> booleanStats1 = new BooleanStatistics();
-    booleanStats1.setStartTime(0);
-    booleanStats1.setEndTime(2);
-    Statistics<Boolean> booleanStats2 = new BooleanStatistics();
-    booleanStats2.setStartTime(3);
-    booleanStats2.setEndTime(5);
-
-    booleanStats1.updateStats(false);
-    booleanStats1.updateStats(false);
-
-    booleanStats2.updateStats(true);
-
-    Statistics<Boolean> booleanStats3 = new BooleanStatistics();
-    booleanStats3.mergeStatistics(booleanStats1);
-    assertFalse(booleanStats3.isEmpty());
-    assertFalse(booleanStats3.getFirstValue());
-    assertFalse(booleanStats3.getLastValue());
-
-    booleanStats3.mergeStatistics(booleanStats2);
-    assertFalse(booleanStats3.getFirstValue());
-    assertTrue(booleanStats3.getLastValue());
-
-    // unseq merge
-    Statistics<Boolean> booleanStats4 = new BooleanStatistics();
-    booleanStats4.setStartTime(0);
-    booleanStats4.setEndTime(5);
-    booleanStats4.updateStats(true);
-
-    booleanStats3.mergeStatistics(booleanStats4);
-    assertTrue(booleanStats3.getFirstValue());
-    assertTrue(booleanStats3.getLastValue());
-
-    Statistics<Boolean> booleanStats5 = new BooleanStatistics();
-    booleanStats5.setStartTime(1);
-    booleanStats5.setEndTime(4);
-    booleanStats5.updateStats(false);
-    booleanStats3.mergeStatistics(booleanStats5);
-    assertTrue(booleanStats3.getFirstValue());
-    assertTrue(booleanStats3.getLastValue());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/statistics/DoubleStatisticsTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/statistics/DoubleStatisticsTest.java
deleted file mode 100644
index f3c0682..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/statistics/DoubleStatisticsTest.java
+++ /dev/null
@@ -1,94 +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.file.metadata.statistics;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-public class DoubleStatisticsTest {
-
-  private static final double maxError = 0.0001d;
-
-  @Test
-  public void testUpdate() {
-    Statistics<Double> doubleStats = new DoubleStatistics();
-    doubleStats.updateStats(1.34d);
-    assertFalse(doubleStats.isEmpty());
-    doubleStats.updateStats(2.32d);
-    assertFalse(doubleStats.isEmpty());
-    assertEquals(2.32d, doubleStats.getMaxValue(), maxError);
-    assertEquals(1.34d, doubleStats.getMinValue(), maxError);
-    assertEquals(2.32d + 1.34d, doubleStats.getSumDoubleValue(), maxError);
-    assertEquals(1.34d, doubleStats.getFirstValue(), maxError);
-    assertEquals(2.32d, doubleStats.getLastValue(), maxError);
-  }
-
-  @Test
-  public void testMerge() {
-    Statistics<Double> doubleStats1 = new DoubleStatistics();
-    doubleStats1.setStartTime(0);
-    doubleStats1.setEndTime(2);
-    Statistics<Double> doubleStats2 = new DoubleStatistics();
-    doubleStats2.setStartTime(3);
-    doubleStats2.setEndTime(5);
-
-    doubleStats1.updateStats(1.34d);
-    doubleStats1.updateStats(100.13453d);
-
-    doubleStats2.updateStats(200.435d);
-
-    Statistics<Double> doubleStats3 = new DoubleStatistics();
-    doubleStats3.mergeStatistics(doubleStats1);
-    assertFalse(doubleStats3.isEmpty());
-    assertEquals(100.13453d, doubleStats3.getMaxValue(), maxError);
-    assertEquals(1.34d, doubleStats3.getMinValue(), maxError);
-    assertEquals(100.13453d + 1.34d, doubleStats3.getSumDoubleValue(), maxError);
-    assertEquals(1.34d, doubleStats3.getFirstValue(), maxError);
-    assertEquals(100.13453d, doubleStats3.getLastValue(), maxError);
-
-    doubleStats3.mergeStatistics(doubleStats2);
-    assertEquals(200.435d, doubleStats3.getMaxValue(), maxError);
-    assertEquals(1.34d, doubleStats3.getMinValue(), maxError);
-    assertEquals(100.13453d + 1.34d + 200.435d, doubleStats3.getSumDoubleValue(), maxError);
-    assertEquals(1.34d, doubleStats3.getFirstValue(), maxError);
-    assertEquals(200.435d, doubleStats3.getLastValue(), maxError);
-
-    // Unseq merge
-    Statistics<Double> doubleStats4 = new DoubleStatistics();
-    doubleStats4.setStartTime(0);
-    doubleStats4.setEndTime(5);
-    Statistics<Double> doubleStats5 = new DoubleStatistics();
-    doubleStats5.setStartTime(1);
-    doubleStats5.setEndTime(4);
-
-    doubleStats4.updateStats(122.34d);
-    doubleStats4.updateStats(125.34d);
-    doubleStats5.updateStats(111.1d);
-
-    doubleStats3.mergeStatistics(doubleStats4);
-    assertEquals(122.34d, doubleStats3.getFirstValue(), maxError);
-    assertEquals(125.34d, doubleStats3.getLastValue(), maxError);
-
-    doubleStats3.mergeStatistics(doubleStats5);
-    assertEquals(122.34d, doubleStats3.getFirstValue(), maxError);
-    assertEquals(125.34d, doubleStats3.getLastValue(), maxError);
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/statistics/FloatStatisticsTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/statistics/FloatStatisticsTest.java
deleted file mode 100644
index affc5db..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/statistics/FloatStatisticsTest.java
+++ /dev/null
@@ -1,94 +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.file.metadata.statistics;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-public class FloatStatisticsTest {
-
-  private static final float maxError = 0.0001f;
-
-  @Test
-  public void testUpdate() {
-    Statistics<Float> floatStats = new FloatStatistics();
-    floatStats.updateStats(1.34f);
-    assertFalse(floatStats.isEmpty());
-    floatStats.updateStats(2.32f);
-    assertFalse(floatStats.isEmpty());
-    assertEquals(2.32f, (double) floatStats.getMaxValue(), maxError);
-    assertEquals(1.34f, (double) floatStats.getMinValue(), maxError);
-    assertEquals(2.32f + 1.34f, (double) floatStats.getSumDoubleValue(), maxError);
-    assertEquals(1.34f, (double) floatStats.getFirstValue(), maxError);
-    assertEquals(2.32f, (double) floatStats.getLastValue(), maxError);
-  }
-
-  @Test
-  public void testMerge() {
-    Statistics<Float> floatStats1 = new FloatStatistics();
-    floatStats1.setStartTime(0);
-    floatStats1.setEndTime(2);
-    Statistics<Float> floatStats2 = new FloatStatistics();
-    floatStats2.setStartTime(3);
-    floatStats2.setEndTime(5);
-
-    floatStats1.updateStats(1.34f);
-    floatStats1.updateStats(100.13453f);
-
-    floatStats2.updateStats(200.435f);
-
-    Statistics<Float> floatStats3 = new FloatStatistics();
-    floatStats3.mergeStatistics(floatStats1);
-    assertFalse(floatStats3.isEmpty());
-    assertEquals(100.13453f, floatStats3.getMaxValue(), maxError);
-    assertEquals(1.34f, floatStats3.getMinValue(), maxError);
-    assertEquals(100.13453f + 1.34f, (float) floatStats3.getSumDoubleValue(), maxError);
-    assertEquals(1.34f, floatStats3.getFirstValue(), maxError);
-    assertEquals(100.13453f, floatStats3.getLastValue(), maxError);
-
-    floatStats3.mergeStatistics(floatStats2);
-    assertEquals(200.435f, floatStats3.getMaxValue(), maxError);
-    assertEquals(1.34f, floatStats3.getMinValue(), maxError);
-    assertEquals(100.13453f + 1.34f + 200.435f, (float) floatStats3.getSumDoubleValue(), maxError);
-    assertEquals(1.34f, floatStats3.getFirstValue(), maxError);
-    assertEquals(200.435f, floatStats3.getLastValue(), maxError);
-
-    // Unseq merge
-    Statistics<Float> floatStats4 = new FloatStatistics();
-    floatStats4.setStartTime(0);
-    floatStats4.setEndTime(5);
-    Statistics<Float> floatStats5 = new FloatStatistics();
-    floatStats5.setStartTime(1);
-    floatStats5.setEndTime(4);
-
-    floatStats4.updateStats(122.34f);
-    floatStats4.updateStats(125.34f);
-    floatStats5.updateStats(111.1f);
-
-    floatStats3.mergeStatistics(floatStats4);
-    assertEquals(122.34f, floatStats3.getFirstValue(), maxError);
-    assertEquals(125.34f, floatStats3.getLastValue(), maxError);
-
-    floatStats3.mergeStatistics(floatStats5);
-    assertEquals(122.34f, floatStats3.getFirstValue(), maxError);
-    assertEquals(125.34f, floatStats3.getLastValue(), maxError);
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/statistics/IntegerStatisticsTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/statistics/IntegerStatisticsTest.java
deleted file mode 100644
index e3949e8..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/statistics/IntegerStatisticsTest.java
+++ /dev/null
@@ -1,93 +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.file.metadata.statistics;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-public class IntegerStatisticsTest {
-
-  @Test
-  public void testUpdate() {
-    Statistics<Integer> intStats = new IntegerStatistics();
-    intStats.updateStats(1);
-    assertFalse(intStats.isEmpty());
-    intStats.updateStats(2);
-    assertFalse(intStats.isEmpty());
-    assertEquals(2, (int) intStats.getMaxValue());
-    assertEquals(1, (int) intStats.getMinValue());
-    assertEquals(1, (int) intStats.getFirstValue());
-    assertEquals(3, (int) intStats.getSumLongValue());
-    assertEquals(2, (int) intStats.getLastValue());
-  }
-
-  @Test
-  public void testMerge() {
-    Statistics<Integer> intStats1 = new IntegerStatistics();
-    intStats1.setStartTime(0);
-    intStats1.setEndTime(2);
-    Statistics<Integer> intStats2 = new IntegerStatistics();
-    intStats2.setStartTime(3);
-    intStats2.setEndTime(5);
-
-    intStats1.updateStats(1);
-    intStats1.updateStats(100);
-
-    intStats2.updateStats(200);
-
-    Statistics<Integer> intStats3 = new IntegerStatistics();
-    intStats3.mergeStatistics(intStats1);
-    assertFalse(intStats3.isEmpty());
-    assertEquals(100, (int) intStats3.getMaxValue());
-    assertEquals(1, (int) intStats3.getMinValue());
-    assertEquals(1, (int) intStats3.getFirstValue());
-    assertEquals(1 + 100, (int) intStats3.getSumLongValue());
-    assertEquals(100, (int) intStats3.getLastValue());
-
-    intStats3.mergeStatistics(intStats2);
-    assertEquals(200, (int) intStats3.getMaxValue());
-    assertEquals(1, (int) intStats3.getMinValue());
-    assertEquals(1, (int) intStats3.getFirstValue());
-    assertEquals(101 + 200, (int) intStats3.getSumLongValue());
-    assertEquals(200, (int) intStats3.getLastValue());
-
-    // Unseq merge
-    Statistics<Integer> intStats4 = new IntegerStatistics();
-    intStats4.setStartTime(0);
-    intStats4.setEndTime(5);
-    Statistics<Integer> intStats5 = new IntegerStatistics();
-    intStats5.setStartTime(1);
-    intStats5.setEndTime(4);
-
-    intStats4.updateStats(11);
-    intStats4.updateStats(15);
-
-    intStats5.updateStats(20);
-
-    intStats3.mergeStatistics(intStats4);
-    assertEquals(11, (int) intStats3.getFirstValue());
-    assertEquals(15, (int) intStats3.getLastValue());
-
-    intStats3.mergeStatistics(intStats5);
-    assertEquals(11, (int) intStats3.getFirstValue());
-    assertEquals(15, (int) intStats3.getLastValue());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/statistics/LongStatisticsTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/statistics/LongStatisticsTest.java
deleted file mode 100644
index a67cf14..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/statistics/LongStatisticsTest.java
+++ /dev/null
@@ -1,121 +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.file.metadata.statistics;
-
-import org.apache.iotdb.tsfile.exception.filter.StatisticsClassException;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-public class LongStatisticsTest {
-
-  @Test
-  public void testUpdate() {
-    Statistics<Long> longStats = new LongStatistics();
-    assertTrue(longStats.isEmpty());
-    long firstValue = -120985402913209L;
-    long secondValue = 1251465332132513L;
-    longStats.updateStats(firstValue);
-    assertFalse(longStats.isEmpty());
-    longStats.updateStats(secondValue);
-    assertFalse(longStats.isEmpty());
-    assertEquals(secondValue, (long) longStats.getMaxValue());
-    assertEquals(firstValue, (long) longStats.getMinValue());
-    assertEquals(firstValue, (long) longStats.getFirstValue());
-    assertEquals(firstValue + secondValue, (long) longStats.getSumDoubleValue());
-    assertEquals(secondValue, (long) longStats.getLastValue());
-  }
-
-  @Test
-  public void testMerge() {
-    Statistics<Long> longStats1 = new LongStatistics();
-    longStats1.setStartTime(0);
-    longStats1.setEndTime(2);
-    Statistics<Long> longStats2 = new LongStatistics();
-    longStats2.setStartTime(3);
-    longStats2.setEndTime(5);
-    assertTrue(longStats1.isEmpty());
-    assertTrue(longStats2.isEmpty());
-    long max1 = 100000000000L;
-    long max2 = 200000000000L;
-    longStats1.updateStats(1L);
-    longStats1.updateStats(max1);
-    longStats2.updateStats(max2);
-
-    Statistics<Long> longStats3 = new LongStatistics();
-    longStats3.mergeStatistics(longStats1);
-    assertFalse(longStats3.isEmpty());
-    assertEquals(max1, (long) longStats3.getMaxValue());
-    assertEquals(1, (long) longStats3.getMinValue());
-    assertEquals(max1 + 1, (long) longStats3.getSumDoubleValue());
-    assertEquals(1, (long) longStats3.getFirstValue());
-    assertEquals(max1, (long) longStats3.getLastValue());
-
-    longStats3.mergeStatistics(longStats2);
-    assertEquals(max2, (long) longStats3.getMaxValue());
-    assertEquals(1, (long) longStats3.getMinValue());
-    assertEquals(max2 + max1 + 1, (long) longStats3.getSumDoubleValue());
-    assertEquals(1, (long) longStats3.getFirstValue());
-    assertEquals(max2, (long) longStats3.getLastValue());
-
-    // Test mismatch
-    IntegerStatistics intStats5 = new IntegerStatistics();
-    intStats5.updateStats(-10000);
-    try {
-      longStats3.mergeStatistics(intStats5);
-    } catch (StatisticsClassException e) {
-      // that's true route
-    } catch (Exception e) {
-      fail();
-    }
-
-    assertEquals(max2, (long) longStats3.getMaxValue());
-    // if not merge, the min value will not be changed by smaller value in
-    // intStats5
-    assertEquals(1, (long) longStats3.getMinValue());
-    assertEquals(max2 + max1 + 1, (long) longStats3.getSumDoubleValue());
-    assertEquals(1, (long) longStats3.getFirstValue());
-    assertEquals(max2, (long) longStats3.getLastValue());
-
-    // Unseq Merge
-    LongStatistics longStats4 = new LongStatistics();
-    longStats4.setStartTime(0);
-    longStats4.setEndTime(5);
-    LongStatistics longStats5 = new LongStatistics();
-    longStats5.setStartTime(1);
-    longStats5.setEndTime(4);
-
-    longStats4.updateStats(111L);
-    longStats4.updateStats(114L);
-
-    longStats5.updateStats(116L);
-
-    longStats3.mergeStatistics(longStats4);
-    assertEquals(111L, (long) longStats3.getFirstValue());
-    assertEquals(114L, (long) longStats3.getLastValue());
-
-    longStats3.mergeStatistics(longStats5);
-    assertEquals(111L, (long) longStats3.getFirstValue());
-    assertEquals(114L, (long) longStats3.getLastValue());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/statistics/StringStatisticsTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/statistics/StringStatisticsTest.java
deleted file mode 100644
index 68a3e05..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/statistics/StringStatisticsTest.java
+++ /dev/null
@@ -1,86 +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.file.metadata.statistics;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.utils.Binary;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-public class StringStatisticsTest {
-
-  @Test
-  public void testUpdate() {
-    Statistics<Binary> binaryStats = new BinaryStatistics();
-    binaryStats.updateStats(new Binary("aaa", TSFileConfig.STRING_CHARSET));
-    assertFalse(binaryStats.isEmpty());
-    binaryStats.updateStats(new Binary("bbb", TSFileConfig.STRING_CHARSET));
-    assertFalse(binaryStats.isEmpty());
-    assertEquals("aaa", binaryStats.getFirstValue().getStringValue(TSFileConfig.STRING_CHARSET));
-    assertEquals("bbb", binaryStats.getLastValue().getStringValue(TSFileConfig.STRING_CHARSET));
-  }
-
-  @Test
-  public void testMerge() {
-    Statistics<Binary> stringStats1 = new BinaryStatistics();
-    stringStats1.setStartTime(0);
-    stringStats1.setEndTime(2);
-    Statistics<Binary> stringStats2 = new BinaryStatistics();
-    stringStats2.setStartTime(3);
-    stringStats2.setEndTime(5);
-
-    stringStats1.updateStats(new Binary("aaa", TSFileConfig.STRING_CHARSET));
-    stringStats1.updateStats(new Binary("ccc", TSFileConfig.STRING_CHARSET));
-
-    stringStats2.updateStats(new Binary("ddd", TSFileConfig.STRING_CHARSET));
-
-    Statistics<Binary> stringStats3 = new BinaryStatistics();
-    stringStats3.mergeStatistics(stringStats1);
-    assertFalse(stringStats3.isEmpty());
-    assertEquals("aaa", stringStats3.getFirstValue().getStringValue(TSFileConfig.STRING_CHARSET));
-    assertEquals("ccc", stringStats3.getLastValue().getStringValue(TSFileConfig.STRING_CHARSET));
-
-    stringStats3.mergeStatistics(stringStats2);
-    assertEquals("aaa", stringStats3.getFirstValue().getStringValue(TSFileConfig.STRING_CHARSET));
-    assertEquals("ddd", stringStats3.getLastValue().getStringValue(TSFileConfig.STRING_CHARSET));
-
-    Statistics<Binary> stringStats4 = new BinaryStatistics();
-    stringStats4.setStartTime(0);
-    stringStats4.setEndTime(5);
-    Statistics<Binary> stringStats5 = new BinaryStatistics();
-    stringStats5.setStartTime(1);
-    stringStats5.setEndTime(4);
-
-    stringStats4.updateStats(new Binary("eee", TSFileConfig.STRING_CHARSET));
-    stringStats4.updateStats(new Binary("fff", TSFileConfig.STRING_CHARSET));
-
-    stringStats5.updateStats(new Binary("ggg", TSFileConfig.STRING_CHARSET));
-
-    stringStats3.mergeStatistics(stringStats4);
-    assertEquals("eee", stringStats3.getFirstValue().getStringValue(TSFileConfig.STRING_CHARSET));
-    assertEquals("fff", stringStats3.getLastValue().getStringValue(TSFileConfig.STRING_CHARSET));
-
-    stringStats3.mergeStatistics(stringStats5);
-    assertEquals("eee", stringStats3.getFirstValue().getStringValue(TSFileConfig.STRING_CHARSET));
-    assertEquals("fff", stringStats3.getLastValue().getStringValue(TSFileConfig.STRING_CHARSET));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/utils/TestHelper.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/utils/TestHelper.java
deleted file mode 100644
index d58dfb3..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/utils/TestHelper.java
+++ /dev/null
@@ -1,78 +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.file.metadata.utils;
-
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeaderTest;
-import org.apache.iotdb.tsfile.file.metadata.MeasurementMetadataIndexEntry;
-import org.apache.iotdb.tsfile.file.metadata.MetadataIndexNode;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.MetadataIndexNodeType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-
-public class TestHelper {
-
-  public static TsFileMetadata createSimpleFileMetaData() {
-    TsFileMetadata metaData = new TsFileMetadata();
-    metaData.setMetadataIndex(generateMetaDataIndex());
-    return metaData;
-  }
-
-  private static MetadataIndexNode generateMetaDataIndex() {
-    MetadataIndexNode metaDataIndex = new MetadataIndexNode(MetadataIndexNodeType.LEAF_MEASUREMENT);
-    for (int i = 0; i < 5; i++) {
-      metaDataIndex.addEntry(new MeasurementMetadataIndexEntry("d" + i, (long) i * 5));
-    }
-    return metaDataIndex;
-  }
-
-  public static MeasurementSchema createSimpleMeasurementSchema(String measurementuid) {
-    return new MeasurementSchema(measurementuid, TSDataType.INT64, TSEncoding.RLE);
-  }
-
-  public static TimeseriesMetadata createSimpleTimeseriesMetaData(String measurementuid) {
-    Statistics<? extends Serializable> statistics =
-        Statistics.getStatsByType(PageHeaderTest.DATA_TYPE);
-    statistics.setEmpty(false);
-    TimeseriesMetadata timeseriesMetaData = new TimeseriesMetadata();
-    timeseriesMetaData.setMeasurementId(measurementuid);
-    timeseriesMetaData.setTsDataType(PageHeaderTest.DATA_TYPE);
-    timeseriesMetaData.setDataSizeOfChunkMetaDataList(0);
-    timeseriesMetaData.setChunkMetadataListBuffer(new PublicBAOS());
-    timeseriesMetaData.setStatistics(statistics);
-    timeseriesMetaData.setChunkMetadataList(new ArrayList<>());
-    return timeseriesMetaData;
-  }
-
-  public static PageHeader createTestPageHeader() {
-    Statistics<? extends Serializable> statistics =
-        Statistics.getStatsByType(PageHeaderTest.DATA_TYPE);
-    statistics.setEmpty(false);
-    return new PageHeader(
-        PageHeaderTest.UNCOMPRESSED_SIZE, PageHeaderTest.COMPRESSED_SIZE, statistics);
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/utils/Utils.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/utils/Utils.java
deleted file mode 100644
index dbd1fa2..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/utils/Utils.java
+++ /dev/null
@@ -1,97 +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.file.metadata.utils;
-
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.MetadataIndexNode;
-import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata;
-import org.apache.iotdb.tsfile.file.metadata.statistics.BooleanStatistics;
-import org.apache.iotdb.tsfile.file.metadata.statistics.IntegerStatistics;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-public class Utils {
-
-  private static final double maxError = 0.0001d;
-
-  /**
-   * when one of A and B is Null, A != B, so test case fails.
-   *
-   * @return false - A and B both are NULL, so we do not need to check whether their members are
-   *     equal true - A and B both are not NULL, so we need to check their members
-   */
-  public static boolean isTwoObjectsNotNULL(Object objectA, Object objectB, String name) {
-    if ((objectA == null) && (objectB == null)) {
-      return false;
-    }
-    if ((objectA == null) ^ (objectB == null)) {
-      fail(String.format("one of %s is null", name));
-    }
-    return true;
-  }
-
-  public static boolean isFileMetaDataEqual(TsFileMetadata metadata1, TsFileMetadata metadata2) {
-    if (Utils.isTwoObjectsNotNULL(metadata1, metadata2, "File MetaData")) {
-      if (Utils.isTwoObjectsNotNULL(
-          metadata1.getMetadataIndex(), metadata2.getMetadataIndex(), "Metadata Index")) {
-        MetadataIndexNode metaDataIndex1 = metadata1.getMetadataIndex();
-        MetadataIndexNode metaDataIndex2 = metadata2.getMetadataIndex();
-        return metaDataIndex1.getChildren().size() == metaDataIndex2.getChildren().size();
-      }
-    }
-    return false;
-  }
-
-  public static void isPageHeaderEqual(PageHeader header1, PageHeader header2) {
-    if (Utils.isTwoObjectsNotNULL(header1, header2, "PageHeader")) {
-      assertEquals(header1.getUncompressedSize(), header2.getUncompressedSize());
-      assertEquals(header1.getCompressedSize(), header2.getCompressedSize());
-      assertEquals(header1.getNumOfValues(), header2.getNumOfValues());
-      assertEquals(header1.getEndTime(), header2.getEndTime());
-      assertEquals(header1.getStartTime(), header2.getStartTime());
-      if (Utils.isTwoObjectsNotNULL(
-          header1.getStatistics(), header2.getStatistics(), "statistics")) {
-        Utils.isStatisticsEqual(header1.getStatistics(), header2.getStatistics());
-      }
-    }
-  }
-
-  public static void isStatisticsEqual(Statistics statistics1, Statistics statistics2) {
-    if ((statistics1 == null) || (statistics2 == null)) {
-      System.out.println("error");
-      fail("one of statistics is null");
-    }
-    if (statistics1.isEmpty() || statistics2.isEmpty()) {
-      fail("one of statistics is empty while the other one is not");
-    }
-    if (!statistics1.isEmpty() && !statistics2.isEmpty()) {
-      assertEquals(statistics1.getMinValue(), statistics2.getMinValue());
-      assertEquals(statistics1.getMaxValue(), statistics2.getMaxValue());
-      assertEquals(statistics1.getFirstValue(), statistics2.getFirstValue());
-      if (statistics1 instanceof IntegerStatistics || statistics1 instanceof BooleanStatistics) {
-        assertEquals(statistics1.getSumLongValue(), statistics2.getSumLongValue());
-      } else {
-        assertEquals(statistics1.getSumDoubleValue(), statistics2.getSumDoubleValue(), maxError);
-      }
-      assertEquals(statistics1.getLastValue(), statistics2.getLastValue());
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/ExpressionTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/ExpressionTest.java
deleted file mode 100644
index c2e8227..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/ExpressionTest.java
+++ /dev/null
@@ -1,65 +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;
-
-import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-public class ExpressionTest {
-
-  @Test
-  public void testGlobalTime() {
-    GlobalTimeExpression globalTimeExpression = new GlobalTimeExpression(TimeFilterApi.eq(10L));
-    globalTimeExpression.setFilter(TimeFilterApi.eq(100L));
-    Assert.assertEquals(
-        TimeFilterApi.eq(100L), ((GlobalTimeExpression) globalTimeExpression.clone()).getFilter());
-  }
-
-  @Test
-  public void TestAndBinary() {
-    GlobalTimeExpression left = new GlobalTimeExpression(TimeFilterApi.eq(1L));
-    GlobalTimeExpression right = new GlobalTimeExpression(TimeFilterApi.eq(2L));
-    BinaryExpression binaryExpression = BinaryExpression.and(left, right);
-    binaryExpression.setLeft(new GlobalTimeExpression(TimeFilterApi.eq(10L)));
-    binaryExpression.setRight(new GlobalTimeExpression(TimeFilterApi.eq(20L)));
-    BinaryExpression clone = (BinaryExpression) binaryExpression.clone();
-    Assert.assertEquals(
-        TimeFilterApi.eq(10L), ((GlobalTimeExpression) clone.getLeft()).getFilter());
-    Assert.assertEquals(
-        TimeFilterApi.eq(20L), ((GlobalTimeExpression) clone.getRight()).getFilter());
-  }
-
-  @Test
-  public void TestOrBinary() {
-    GlobalTimeExpression left = new GlobalTimeExpression(TimeFilterApi.eq(1L));
-    GlobalTimeExpression right = new GlobalTimeExpression(TimeFilterApi.eq(2L));
-    BinaryExpression binaryExpression = BinaryExpression.or(left, right);
-    binaryExpression.setLeft(new GlobalTimeExpression(TimeFilterApi.eq(10L)));
-    binaryExpression.setRight(new GlobalTimeExpression(TimeFilterApi.eq(20L)));
-    BinaryExpression clone = (BinaryExpression) binaryExpression.clone();
-    Assert.assertEquals(
-        TimeFilterApi.eq(10L), ((GlobalTimeExpression) clone.getLeft()).getFilter());
-    Assert.assertEquals(
-        TimeFilterApi.eq(20L), ((GlobalTimeExpression) clone.getRight()).getFilter());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/GetAllDevicesTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/GetAllDevicesTest.java
deleted file mode 100644
index a673853..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/GetAllDevicesTest.java
+++ /dev/null
@@ -1,89 +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;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.utils.FileGenerator;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.List;
-
-public class GetAllDevicesTest {
-
-  private final TSFileConfig conf = TSFileDescriptor.getInstance().getConfig();
-  private int maxDegreeOfIndexNode;
-  private static final String FILE_PATH = FileGenerator.outputDataFile;
-
-  @Before
-  public void before() {
-    maxDegreeOfIndexNode = conf.getMaxDegreeOfIndexNode();
-    conf.setMaxDegreeOfIndexNode(3);
-  }
-
-  @After
-  public void after() {
-    FileGenerator.after();
-    conf.setMaxDegreeOfIndexNode(maxDegreeOfIndexNode);
-  }
-
-  @Test
-  public void testGetAllDevices1() throws IOException {
-    testGetAllDevices(2, 2);
-  }
-
-  @Test
-  public void testGetAllDevices2() throws IOException {
-    testGetAllDevices(2, 50);
-  }
-
-  @Test
-  public void testGetAllDevices3() throws IOException {
-    testGetAllDevices(50, 2);
-  }
-
-  @Test
-  public void testGetAllDevices4() throws IOException {
-    testGetAllDevices(50, 50);
-  }
-
-  public void testGetAllDevices(int deviceNum, int measurementNum) throws IOException {
-    FileGenerator.generateFile(10000, deviceNum, measurementNum);
-    try (TsFileSequenceReader fileReader = new TsFileSequenceReader(FILE_PATH)) {
-
-      List<IDeviceID> devices = fileReader.getAllDevices();
-      Assert.assertEquals(deviceNum, devices.size());
-      for (int i = 0; i < deviceNum; i++) {
-        Assert.assertEquals(
-            new PlainDeviceID("d" + FileGenerator.generateIndexString(i, deviceNum)),
-            devices.get(i));
-      }
-
-      FileGenerator.after();
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/MeasurementChunkMetadataListMapIteratorTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/MeasurementChunkMetadataListMapIteratorTest.java
deleted file mode 100644
index 4bee548..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/MeasurementChunkMetadataListMapIteratorTest.java
+++ /dev/null
@@ -1,205 +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;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.FileGenerator;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-public class MeasurementChunkMetadataListMapIteratorTest {
-
-  private static final String FILE_PATH = FileGenerator.outputDataFile;
-  private final TSFileConfig conf = TSFileDescriptor.getInstance().getConfig();
-
-  private int maxDegreeOfIndexNode;
-
-  @Before
-  public void before() {
-    maxDegreeOfIndexNode = conf.getMaxDegreeOfIndexNode();
-    conf.setMaxDegreeOfIndexNode(3);
-  }
-
-  @After
-  public void after() {
-    FileGenerator.after();
-    conf.setMaxDegreeOfIndexNode(maxDegreeOfIndexNode);
-  }
-
-  @Test
-  public void test0() throws IOException {
-    testCorrectness(1, 1);
-    testSequentiality(1, 1);
-  }
-
-  @Test
-  public void test1() throws IOException {
-    testCorrectness(1, 10);
-    testSequentiality(1, 10);
-  }
-
-  @Test
-  public void test2() throws IOException {
-    testCorrectness(2, 1);
-    testSequentiality(2, 1);
-  }
-
-  @Test
-  public void test3() throws IOException {
-    testCorrectness(2, 2);
-    testSequentiality(2, 2);
-  }
-
-  @Test
-  public void test4() throws IOException {
-    testCorrectness(2, 100);
-    testSequentiality(2, 100);
-  }
-
-  @Test
-  public void test5() throws IOException {
-    testCorrectness(50, 2);
-    testSequentiality(50, 2);
-  }
-
-  @Test
-  public void test6() throws IOException {
-    testCorrectness(50, 50);
-    testSequentiality(50, 50);
-  }
-
-  @Test
-  public void test7() throws IOException {
-    testCorrectness(50, 100);
-    testSequentiality(50, 100);
-  }
-
-  @Test
-  public void test8() throws IOException {
-    testCorrectness(33, 733);
-    testSequentiality(33, 733);
-  }
-
-  @Test
-  public void test9() throws IOException {
-    testCorrectness(733, 33);
-    testSequentiality(733, 33);
-  }
-
-  public void testCorrectness(int deviceNum, int measurementNum) throws IOException {
-    FileGenerator.generateFile(10000, deviceNum, measurementNum);
-
-    try (TsFileSequenceReader fileReader = new TsFileSequenceReader(FILE_PATH)) {
-      Map<IDeviceID, List<String>> deviceMeasurementListMap = fileReader.getDeviceMeasurementsMap();
-
-      List<IDeviceID> devices = fileReader.getAllDevices();
-
-      Map<IDeviceID, Map<String, List<IChunkMetadata>>>
-          expectedDeviceMeasurementChunkMetadataListMap = new HashMap<>();
-      for (IDeviceID device : devices) {
-        for (String measurement : deviceMeasurementListMap.get(device)) {
-          expectedDeviceMeasurementChunkMetadataListMap
-              .computeIfAbsent(device, d -> new HashMap<>())
-              .computeIfAbsent(measurement, m -> new ArrayList<>())
-              .addAll(fileReader.getChunkMetadataList(new Path(device, measurement, true)));
-        }
-      }
-
-      for (IDeviceID device : devices) {
-        Map<String, List<IChunkMetadata>> expected =
-            expectedDeviceMeasurementChunkMetadataListMap.get(device);
-
-        Map<String, List<IChunkMetadata>> actual = new HashMap<>();
-        Iterator<Map<String, List<ChunkMetadata>>> iterator =
-            fileReader.getMeasurementChunkMetadataListMapIterator(device);
-        while (iterator.hasNext()) {
-          Map<String, List<ChunkMetadata>> next = iterator.next();
-          for (Entry<String, List<ChunkMetadata>> entry : next.entrySet()) {
-            actual.computeIfAbsent(entry.getKey(), m -> new ArrayList<>()).addAll(entry.getValue());
-          }
-        }
-
-        checkCorrectness(expected, actual);
-      }
-
-      // test not exist device
-      Iterator<Map<String, List<ChunkMetadata>>> iterator =
-          fileReader.getMeasurementChunkMetadataListMapIterator(new PlainDeviceID("dd"));
-      Assert.assertFalse(iterator.hasNext());
-    }
-
-    FileGenerator.after();
-  }
-
-  private void checkCorrectness(
-      Map<String, List<IChunkMetadata>> expected, Map<String, List<IChunkMetadata>> actual) {
-    Assert.assertEquals(expected.keySet(), actual.keySet());
-    for (String measurement : expected.keySet()) {
-      List<IChunkMetadata> expectedChunkMetadataList = expected.get(measurement);
-      List<IChunkMetadata> actualChunkMetadataList = actual.get(measurement);
-      Assert.assertEquals(expectedChunkMetadataList.size(), actualChunkMetadataList.size());
-      final int size = expectedChunkMetadataList.size();
-      for (int i = 0; i < size; ++i) {
-        Assert.assertEquals(
-            expectedChunkMetadataList.get(i).toString(), actualChunkMetadataList.get(i).toString());
-      }
-    }
-  }
-
-  public void testSequentiality(int deviceNum, int measurementNum) throws IOException {
-    FileGenerator.generateFile(10000, deviceNum, measurementNum);
-
-    try (TsFileSequenceReader fileReader = new TsFileSequenceReader(FILE_PATH)) {
-      for (IDeviceID device : fileReader.getAllDevices()) {
-        Iterator<Map<String, List<ChunkMetadata>>> iterator =
-            fileReader.getMeasurementChunkMetadataListMapIterator(device);
-
-        String lastMeasurement = null;
-        while (iterator.hasNext()) {
-          for (String measurement : iterator.next().keySet()) {
-            if (lastMeasurement != null) {
-              Assert.assertTrue(lastMeasurement.compareTo(measurement) < 0);
-            }
-            lastMeasurement = measurement;
-          }
-        }
-      }
-    }
-
-    FileGenerator.after();
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/ReadInPartitionTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/ReadInPartitionTest.java
deleted file mode 100644
index b5e8be2..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/ReadInPartitionTest.java
+++ /dev/null
@@ -1,230 +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;
-
-import org.apache.iotdb.tsfile.exception.filter.QueryFilterOptimizationException;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.expression.ExpressionType;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.expression.util.ExpressionOptimizer;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorForTest;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-/*
- This test is designed for the TsFileExecutor's execute(queryExpression, params) function.
-
- The test target here is the logic of converting the query partition constraint to an additional time filter.
-
- Note that the correctness of the constructed additional time filter, which is guaranteed and tested in
- IMetadataQuerierByFileImplTest and TimeRangeTest, is not the test focus here.
-
-*/
-public class ReadInPartitionTest {
-
-  private static final String FILE_PATH = TsFileGeneratorForTest.outputDataFile;
-  private static TsFileReader roTsFile = null;
-  private ArrayList<TimeRange> d1s6timeRangeList = new ArrayList<>();
-  private ArrayList<TimeRange> d2s1timeRangeList = new ArrayList<>();
-  private ArrayList<long[]> d1chunkGroupMetaDataOffsetList = new ArrayList<>();
-
-  @Before
-  public void before() throws IOException {
-    TsFileGeneratorForTest.generateFile(10000, 1024, 100);
-    TsFileSequenceReader reader = new TsFileSequenceReader(FILE_PATH);
-    roTsFile = new TsFileReader(reader);
-
-    // Because the size of the generated chunkGroupMetaData may differ under
-    // different test environments,
-    // we get metadata from the real-time generated TsFile instead of using a fixed
-    // parameter setting.
-    List<ChunkMetadata> d1s6List = reader.getChunkMetadataList(new Path("d1", "s6", true));
-    for (ChunkMetadata chunkMetaData : d1s6List) {
-      // get a series of [startTime, endTime] of d1.s6 from the chunkGroupMetaData of
-      // d1
-      d1s6timeRangeList.add(
-          new TimeRange(chunkMetaData.getStartTime(), chunkMetaData.getEndTime()));
-      long[] startEndOffsets = new long[2];
-      startEndOffsets[0] = chunkMetaData.getOffsetOfChunkHeader();
-      startEndOffsets[1] =
-          chunkMetaData.getOffsetOfChunkHeader()
-              + chunkMetaData.getMeasurementUid().getBytes().length
-              + Long.BYTES
-              + Short.BYTES
-              + chunkMetaData.getStatistics().getSerializedSize();
-      d1chunkGroupMetaDataOffsetList.add(startEndOffsets);
-    }
-
-    List<ChunkMetadata> d2s1List = reader.getChunkMetadataList(new Path("d2", "s1", true));
-    for (ChunkMetadata chunkMetaData : d2s1List) {
-      d2s1timeRangeList.add(
-          new TimeRange(chunkMetaData.getStartTime(), chunkMetaData.getEndTime()));
-    }
-  }
-
-  @After
-  public void after() throws IOException {
-    roTsFile.close();
-    TsFileGeneratorForTest.after();
-  }
-
-  @Test
-  public void test0() throws IOException {
-    ArrayList<Path> paths = new ArrayList<>();
-    paths.add(new Path("d1", "s6", true));
-    paths.add(new Path("d2", "s1", true));
-    QueryExpression queryExpression = QueryExpression.create(paths, null);
-
-    QueryDataSet queryDataSet = roTsFile.query(queryExpression, 0L, 0L);
-
-    // test the transformed expression
-    Assert.assertNull(queryExpression.getExpression());
-
-    // test the equivalence of the query result
-    Assert.assertFalse(queryDataSet.hasNext());
-  }
-
-  @Test
-  public void test1() throws IOException, QueryFilterOptimizationException {
-    ArrayList<Path> paths = new ArrayList<>();
-    paths.add(new Path("d1", "s6", true));
-    paths.add(new Path("d2", "s1", true));
-    QueryExpression queryExpression = QueryExpression.create(paths, null);
-
-    QueryDataSet queryDataSet =
-        roTsFile.query(
-            queryExpression,
-            d1chunkGroupMetaDataOffsetList.get(0)[0],
-            d1chunkGroupMetaDataOffsetList.get(0)[1]);
-    // get the transformed expression
-    IExpression transformedExpression = queryExpression.getExpression();
-
-    // test the transformed expression
-    Assert.assertEquals(ExpressionType.GLOBAL_TIME, transformedExpression.getType());
-
-    IExpression expectedTimeExpression = d1s6timeRangeList.get(0).getExpression();
-    String expected =
-        ExpressionOptimizer.getInstance()
-            .optimize(expectedTimeExpression, queryExpression.getSelectedSeries())
-            .toString();
-    Assert.assertEquals(expected, transformedExpression.toString());
-
-    // test the equivalence of the query result:
-    QueryDataSet queryDataSet_eq = roTsFile.query(queryExpression);
-    while (queryDataSet.hasNext() && queryDataSet_eq.hasNext()) {
-      RowRecord r = queryDataSet.next();
-      RowRecord r2 = queryDataSet_eq.next();
-      Assert.assertEquals(r2.toString(), r.toString());
-    }
-    Assert.assertEquals(queryDataSet_eq.hasNext(), queryDataSet.hasNext());
-  }
-
-  @Test
-  public void test2() throws IOException, QueryFilterOptimizationException {
-    ArrayList<Path> paths = new ArrayList<>();
-    paths.add(new Path("d1", "s6", true));
-    paths.add(new Path("d2", "s1", true));
-    IExpression expression = new GlobalTimeExpression(TimeFilterApi.gt(50L));
-    QueryExpression queryExpression = QueryExpression.create(paths, expression);
-
-    QueryDataSet queryDataSet =
-        roTsFile.query(
-            queryExpression,
-            d1chunkGroupMetaDataOffsetList.get(0)[0],
-            d1chunkGroupMetaDataOffsetList.get(0)[1]);
-    // get the transformed expression
-    IExpression transformedExpression = queryExpression.getExpression();
-
-    // test the transformed expression
-    Assert.assertEquals(ExpressionType.GLOBAL_TIME, transformedExpression.getType());
-
-    IExpression expectedTimeExpression =
-        BinaryExpression.and(expression, d1s6timeRangeList.get(0).getExpression());
-    String expected =
-        ExpressionOptimizer.getInstance()
-            .optimize(expectedTimeExpression, queryExpression.getSelectedSeries())
-            .toString();
-    Assert.assertEquals(expected, transformedExpression.toString());
-
-    // test the equivalence of the query result:
-    QueryDataSet queryDataSet_eq = roTsFile.query(queryExpression);
-    while (queryDataSet.hasNext() && queryDataSet_eq.hasNext()) {
-      RowRecord r = queryDataSet.next();
-      RowRecord r2 = queryDataSet_eq.next();
-      Assert.assertEquals(r2.toString(), r.toString());
-    }
-    Assert.assertEquals(queryDataSet_eq.hasNext(), queryDataSet.hasNext());
-  }
-
-  @Test
-  public void test3() throws IOException, QueryFilterOptimizationException {
-    ArrayList<Path> paths = new ArrayList<>();
-    paths.add(new Path("d1", "s6", true));
-    paths.add(new Path("d2", "s1", true));
-    Filter filter = ValueFilterApi.gt(10L);
-    IExpression expression = new SingleSeriesExpression(new Path("d1", "s3", true), filter);
-    QueryExpression queryExpression = QueryExpression.create(paths, expression);
-
-    QueryDataSet queryDataSet =
-        roTsFile.query(
-            queryExpression,
-            d1chunkGroupMetaDataOffsetList.get(0)[0],
-            d1chunkGroupMetaDataOffsetList.get(0)[1]);
-    // get the transformed expression
-    IExpression transformedExpression = queryExpression.getExpression();
-
-    // test the transformed expression
-    Assert.assertEquals(ExpressionType.SERIES, transformedExpression.getType());
-
-    IExpression expectedTimeExpression =
-        BinaryExpression.and(expression, d1s6timeRangeList.get(0).getExpression());
-    String expected =
-        ExpressionOptimizer.getInstance()
-            .optimize(expectedTimeExpression, queryExpression.getSelectedSeries())
-            .toString();
-    Assert.assertEquals(expected, transformedExpression.toString());
-
-    // test the equivalence of the query result:
-    QueryDataSet queryDataSet_eq = roTsFile.query(queryExpression);
-    while (queryDataSet.hasNext() && queryDataSet_eq.hasNext()) {
-      RowRecord r = queryDataSet.next();
-      RowRecord r2 = queryDataSet_eq.next();
-      Assert.assertEquals(r2.toString(), r.toString());
-    }
-    Assert.assertEquals(queryDataSet_eq.hasNext(), queryDataSet.hasNext());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/ReadTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/ReadTest.java
deleted file mode 100755
index e9efd9d..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/ReadTest.java
+++ /dev/null
@@ -1,390 +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;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.utils.FileGenerator;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-public class ReadTest {
-
-  private static final String fileName = FileGenerator.outputDataFile;
-  private static TsFileReader roTsFile = null;
-
-  @Before
-  public void prepare() throws IOException {
-    FileGenerator.generateFile(1000, 100);
-    TsFileSequenceReader reader = new TsFileSequenceReader(fileName);
-    roTsFile = new TsFileReader(reader);
-  }
-
-  @After
-  public void after() throws IOException {
-    if (roTsFile != null) {
-      roTsFile.close();
-    }
-    FileGenerator.after();
-  }
-
-  @Test
-  public void queryOneMeasurementWithoutFilterTest() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s1", true));
-    QueryExpression queryExpression = QueryExpression.create(pathList, null);
-    QueryDataSet dataSet = roTsFile.query(queryExpression);
-
-    int count = 0;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (count == 0) {
-        assertEquals(1480562618010L, r.getTimestamp());
-      }
-      if (count == 499) {
-        assertEquals(1480562618999L, r.getTimestamp());
-      }
-      count++;
-    }
-    assertEquals(500, count);
-  }
-
-  @Test
-  public void queryTwoMeasurementsWithoutFilterTest() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s1", true));
-    pathList.add(new Path("d2", "s2", true));
-    QueryExpression queryExpression = QueryExpression.create(pathList, null);
-    QueryDataSet dataSet = roTsFile.query(queryExpression);
-
-    int count = 0;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (count == 0) {
-        assertEquals(1480562618005L, r.getTimestamp());
-      }
-      count++;
-    }
-    assertEquals(750, count);
-  }
-
-  @Test
-  public void queryTwoMeasurementsWithSingleFilterTest() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d2", "s1", true));
-    pathList.add(new Path("d2", "s4", true));
-    IExpression valFilter =
-        new SingleSeriesExpression(new Path("d2", "s2", true), ValueFilterApi.gt(9722L));
-    IExpression tFilter =
-        BinaryExpression.and(
-            new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618970L)),
-            new GlobalTimeExpression(TimeFilterApi.lt(1480562618977L)));
-    IExpression finalFilter = BinaryExpression.and(valFilter, tFilter);
-    QueryExpression queryExpression = QueryExpression.create(pathList, finalFilter);
-    QueryDataSet dataSet = roTsFile.query(queryExpression);
-
-    int cnt = 0;
-    while (dataSet.hasNext()) {
-      dataSet.next();
-      cnt++;
-    }
-  }
-
-  @Test
-  public void queryOneMeasurementsWithSameFilterTest() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d2", "s2", true));
-    IExpression valFilter =
-        new SingleSeriesExpression(new Path("d2", "s2", true), ValueFilterApi.gt(9722L));
-    QueryExpression queryExpression = QueryExpression.create(pathList, valFilter);
-    QueryDataSet dataSet = roTsFile.query(queryExpression);
-
-    int cnt = 0;
-    while (dataSet.hasNext()) {
-      RowRecord record = dataSet.next();
-      Field value = record.getFields().get(0);
-      if (cnt == 0) {
-        assertEquals(1480562618973L, record.getTimestamp());
-        assertEquals(9732, value.getLongV());
-      } else if (cnt == 1) {
-        assertEquals(1480562618974L, record.getTimestamp());
-        assertEquals(9742, value.getLongV());
-      } else if (cnt == 7) {
-        assertEquals(1480562618985L, record.getTimestamp());
-        assertEquals(9852, value.getLongV());
-      }
-
-      cnt++;
-    }
-  }
-
-  @Test
-  public void queryWithTwoSeriesTimeValueFilterCrossTest() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s1", true));
-    pathList.add(new Path("d2", "s2", true));
-    IExpression valFilter =
-        new SingleSeriesExpression(new Path("d2", "s2", true), ValueFilterApi.notEq(9722L));
-    IExpression tFilter =
-        BinaryExpression.and(
-            new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618970L)),
-            new GlobalTimeExpression(TimeFilterApi.lt(1480562618977L)));
-    IExpression finalFilter = BinaryExpression.and(valFilter, tFilter);
-    QueryExpression queryExpression = QueryExpression.create(pathList, finalFilter);
-    QueryDataSet dataSet = roTsFile.query(queryExpression);
-
-    // time filter & value filter
-    // verify d1.s1, d2.s1
-    int cnt = 1;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (cnt == 1) {
-        assertEquals(1480562618970L, r.getTimestamp());
-      } else if (cnt == 2) {
-        assertEquals(1480562618971L, r.getTimestamp());
-      } else if (cnt == 3) {
-        assertEquals(1480562618973L, r.getTimestamp());
-      }
-      cnt++;
-    }
-    assertEquals(7, cnt);
-  }
-
-  @Test
-  public void queryWithCrossSeriesTimeValueFilterTest() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s1", true));
-    pathList.add(new Path("d2", "s2", true));
-    IExpression valFilter =
-        new SingleSeriesExpression(new Path("d2", "s2", true), ValueFilterApi.notEq(9722L));
-    IExpression tFilter =
-        BinaryExpression.and(
-            new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618970L)),
-            new GlobalTimeExpression(TimeFilterApi.lt(1480562618975L)));
-    IExpression finalFilter = BinaryExpression.and(valFilter, tFilter);
-    QueryExpression queryExpression = QueryExpression.create(pathList, finalFilter);
-    QueryDataSet dataSet = roTsFile.query(queryExpression);
-
-    // time filter & value filter
-    // verify d1.s1, d2.s1
-    /**
-     * 1480562618950 9501 9502 1480562618954 9541 9542 1480562618955 9551 9552 1480562618956 9561
-     * 9562
-     */
-    int cnt = 1;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (cnt == 1) {
-        assertEquals(1480562618970L, r.getTimestamp());
-      } else if (cnt == 2) {
-        assertEquals(1480562618971L, r.getTimestamp());
-      } else if (cnt == 3) {
-        assertEquals(1480562618973L, r.getTimestamp());
-      } else if (cnt == 4) {
-        assertEquals(1480562618974L, r.getTimestamp());
-      }
-      cnt++;
-    }
-    assertEquals(5, cnt);
-
-    pathList.clear();
-    pathList.add(new Path("d1", "s1", true));
-    pathList.add(new Path("d2", "s2", true));
-    valFilter = new SingleSeriesExpression(new Path("d2", "s2", true), ValueFilterApi.ltEq(9082L));
-    tFilter =
-        BinaryExpression.and(
-            new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618906L)),
-            new GlobalTimeExpression(TimeFilterApi.ltEq(1480562618915L)));
-    tFilter =
-        BinaryExpression.or(
-            tFilter,
-            BinaryExpression.and(
-                new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618928L)),
-                new GlobalTimeExpression(TimeFilterApi.ltEq(1480562618933L))));
-    finalFilter = BinaryExpression.and(valFilter, tFilter);
-    queryExpression = QueryExpression.create(pathList, finalFilter);
-    dataSet = roTsFile.query(queryExpression);
-
-    // time filter & value filter
-    // verify d1.s1, d2.s1
-    cnt = 1;
-    while (dataSet.hasNext()) {
-      dataSet.next();
-      cnt++;
-    }
-    assertEquals(4, cnt);
-  }
-
-  @Test
-  public void queryBooleanTest() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s5", true));
-    IExpression valFilter =
-        new SingleSeriesExpression(new Path("d1", "s5", true), ValueFilterApi.eq(false));
-    IExpression tFilter =
-        BinaryExpression.and(
-            new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618970L)),
-            new GlobalTimeExpression(TimeFilterApi.lt(1480562618981L)));
-    IExpression finalFilter = BinaryExpression.and(valFilter, tFilter);
-    QueryExpression queryExpression = QueryExpression.create(pathList, finalFilter);
-    QueryDataSet dataSet = roTsFile.query(queryExpression);
-
-    int cnt = 1;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (cnt == 1) {
-        assertEquals(1480562618972L, r.getTimestamp());
-        Field f1 = r.getFields().get(0);
-        assertFalse(f1.getBoolV());
-      }
-      if (cnt == 2) {
-        assertEquals(1480562618981L, r.getTimestamp());
-        Field f2 = r.getFields().get(0);
-        assertFalse(f2.getBoolV());
-      }
-      cnt++;
-    }
-  }
-
-  @Test
-  public void queryStringTest() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s4", true));
-    IExpression tFilter =
-        BinaryExpression.and(
-            new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618970L)),
-            new GlobalTimeExpression(TimeFilterApi.ltEq(1480562618981L)));
-    QueryExpression queryExpression = QueryExpression.create(pathList, tFilter);
-    QueryDataSet dataSet = roTsFile.query(queryExpression);
-
-    int cnt = 0;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (cnt == 0) {
-        assertEquals(1480562618976L, r.getTimestamp());
-        Field f1 = r.getFields().get(0);
-        assertEquals("dog976", f1.toString());
-      }
-      cnt++;
-    }
-    Assert.assertEquals(1, cnt);
-
-    pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s4", true));
-    tFilter =
-        BinaryExpression.and(
-            new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618970L)),
-            new GlobalTimeExpression(TimeFilterApi.ltEq(1480562618981L)));
-    queryExpression = QueryExpression.create(pathList, tFilter);
-    dataSet = roTsFile.query(queryExpression);
-    cnt = 0;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (cnt == 1) {
-        assertEquals(1480562618976L, r.getTimestamp());
-        Field f1 = r.getFields().get(0);
-        assertEquals("dog976", f1.getBinaryV().getStringValue(TSFileConfig.STRING_CHARSET));
-      }
-      cnt++;
-    }
-    Assert.assertEquals(1, cnt);
-  }
-
-  @Test
-  public void queryFloatTest() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s6", true));
-    IExpression valFilter =
-        new SingleSeriesExpression(new Path("d1", "s6", true), ValueFilterApi.gt(103.0f));
-    IExpression tFilter =
-        BinaryExpression.and(
-            new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618970L)),
-            new GlobalTimeExpression(TimeFilterApi.ltEq(1480562618981L)));
-    IExpression finalFilter = BinaryExpression.and(valFilter, tFilter);
-    QueryExpression queryExpression = QueryExpression.create(pathList, finalFilter);
-    QueryDataSet dataSet = roTsFile.query(queryExpression);
-
-    int cnt = 0;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (cnt == 1) {
-        assertEquals(1480562618980L, r.getTimestamp());
-        Field f1 = r.getFields().get(0);
-        assertEquals(108.0, f1.getFloatV(), 0.0);
-      }
-      if (cnt == 2) {
-        assertEquals(1480562618990L, r.getTimestamp());
-        Field f2 = r.getFields().get(0);
-        assertEquals(110.0, f2.getFloatV(), 0.0);
-      }
-      cnt++;
-    }
-  }
-
-  @Test
-  public void queryDoubleTest() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s7", true));
-    IExpression valFilter =
-        new SingleSeriesExpression(new Path("d1", "s7", true), ValueFilterApi.gt(1.0));
-    IExpression tFilter =
-        BinaryExpression.and(
-            new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618011L)),
-            new GlobalTimeExpression(TimeFilterApi.ltEq(1480562618033L)));
-    IExpression finalFilter = BinaryExpression.and(valFilter, tFilter);
-    QueryExpression queryExpression = QueryExpression.create(pathList, finalFilter);
-    QueryDataSet dataSet = roTsFile.query(queryExpression);
-
-    int cnt = 1;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (cnt == 1) {
-        assertEquals(1480562618022L, r.getTimestamp());
-        Field f1 = r.getFields().get(0);
-        assertEquals(2.0, f1.getDoubleV(), 0.0);
-      }
-      if (cnt == 2) {
-        assertEquals(1480562618033L, r.getTimestamp());
-        Field f1 = r.getFields().get(0);
-        assertEquals(3.0, f1.getDoubleV(), 0.0);
-      }
-      cnt++;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TimePlainEncodeReadTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TimePlainEncodeReadTest.java
deleted file mode 100755
index 9f879ff..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TimePlainEncodeReadTest.java
+++ /dev/null
@@ -1,388 +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;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.FileGenerator;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-public class TimePlainEncodeReadTest {
-
-  private static final String fileName = FileGenerator.outputDataFile;
-  private static TsFileReader roTsFile = null;
-
-  @Before
-  public void prepare() throws IOException {
-    TSFileDescriptor.getInstance().getConfig().setTimeEncoder("PLAIN");
-    FileGenerator.generateFile();
-    TsFileSequenceReader reader = new TsFileSequenceReader(fileName);
-    roTsFile = new TsFileReader(reader);
-  }
-
-  @After
-  public void after() throws IOException {
-    if (roTsFile != null) {
-      roTsFile.close();
-    }
-    FileGenerator.after();
-  }
-
-  @Test
-  public void queryOneMeasurementWithoutFilterTest() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s1", true));
-    QueryExpression queryExpression = QueryExpression.create(pathList, null);
-    QueryDataSet dataSet = roTsFile.query(queryExpression);
-
-    int count = 0;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (count == 0) {
-        assertEquals(1480562618010L, r.getTimestamp());
-      }
-      if (count == 499) {
-        assertEquals(1480562618999L, r.getTimestamp());
-      }
-      count++;
-    }
-    assertEquals(500, count);
-  }
-
-  @Test
-  public void queryTwoMeasurementsWithoutFilterTest() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s1", true));
-    pathList.add(new Path("d2", "s2", true));
-    QueryExpression queryExpression = QueryExpression.create(pathList, null);
-    QueryDataSet dataSet = roTsFile.query(queryExpression);
-
-    int count = 0;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (count == 0) {
-        if (count == 0) {
-          assertEquals(1480562618005L, r.getTimestamp());
-        }
-      }
-      count++;
-    }
-    assertEquals(750, count);
-  }
-
-  @Test
-  public void queryTwoMeasurementsWithSingleFilterTest() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d2", "s1", true));
-    pathList.add(new Path("d2", "s4", true));
-    IExpression valFilter =
-        new SingleSeriesExpression(new Path("d2", "s2", true), ValueFilterApi.gt(9722L));
-    IExpression tFilter =
-        BinaryExpression.and(
-            new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618970L)),
-            new GlobalTimeExpression(TimeFilterApi.lt(1480562618977L)));
-    IExpression finalFilter = BinaryExpression.and(valFilter, tFilter);
-    QueryExpression queryExpression = QueryExpression.create(pathList, finalFilter);
-    QueryDataSet dataSet = roTsFile.query(queryExpression);
-
-    while (dataSet.hasNext()) {
-      dataSet.next();
-    }
-  }
-
-  @Test
-  public void queryWithTwoSeriesTimeValueFilterCrossTest() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d2", "s2", true));
-    IExpression valFilter =
-        new SingleSeriesExpression(new Path("d2", "s2", true), ValueFilterApi.notEq(9722L));
-    IExpression tFilter =
-        BinaryExpression.and(
-            new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618970L)),
-            new GlobalTimeExpression(TimeFilterApi.lt(1480562618977L)));
-    IExpression finalFilter = BinaryExpression.and(valFilter, tFilter);
-    QueryExpression queryExpression = QueryExpression.create(pathList, finalFilter);
-    QueryDataSet dataSet = roTsFile.query(queryExpression);
-
-    // time filter & value filter
-    // verify d1.s1, d2.s1
-    int cnt = 1;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (cnt == 1) {
-        assertEquals(1480562618970L, r.getTimestamp());
-      } else if (cnt == 2) {
-        assertEquals(1480562618971L, r.getTimestamp());
-      } else if (cnt == 3) {
-        assertEquals(1480562618973L, r.getTimestamp());
-      }
-      cnt++;
-    }
-    assertEquals(7, cnt);
-  }
-
-  @Test
-  public void queryWithCrossSeriesTimeValueFilterTest() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s1", true));
-    pathList.add(new Path("d2", "s2", true));
-    IExpression valFilter =
-        new SingleSeriesExpression(new Path("d2", "s2", true), ValueFilterApi.gt(9722L));
-    IExpression tFilter =
-        BinaryExpression.and(
-            new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618970L)),
-            new GlobalTimeExpression(TimeFilterApi.lt(1480562618977L)));
-    IExpression finalFilter = BinaryExpression.and(valFilter, tFilter);
-    QueryExpression queryExpression = QueryExpression.create(pathList, finalFilter);
-    QueryDataSet dataSet = roTsFile.query(queryExpression);
-
-    // time filter & value filter
-    // verify d1.s1, d2.s1
-    /**
-     * 1480562618950 9501 9502 1480562618954 9541 9542 1480562618955 9551 9552 1480562618956 9561
-     * 9562
-     */
-    int cnt = 1;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (cnt == 1) {
-        assertEquals(1480562618973L, r.getTimestamp());
-      } else if (cnt == 2) {
-        assertEquals(1480562618974L, r.getTimestamp());
-      } else if (cnt == 3) {
-        assertEquals(1480562618975L, r.getTimestamp());
-      } else if (cnt == 4) {
-        assertEquals(1480562618976L, r.getTimestamp());
-      }
-      cnt++;
-    }
-    assertEquals(5, cnt);
-
-    pathList.clear();
-    pathList.add(new Path("d1", "s1", true));
-    pathList.add(new Path("d2", "s2", true));
-    valFilter = new SingleSeriesExpression(new Path("d1", "s1", true), ValueFilterApi.ltEq(9321));
-    valFilter =
-        BinaryExpression.and(
-            new SingleSeriesExpression(new Path("d2", "s2", true), ValueFilterApi.ltEq(9312L)),
-            valFilter);
-    tFilter =
-        BinaryExpression.and(
-            new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618906L)),
-            new GlobalTimeExpression(TimeFilterApi.ltEq(1480562618915L)));
-    tFilter =
-        BinaryExpression.or(
-            tFilter,
-            BinaryExpression.and(
-                new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618928L)),
-                new GlobalTimeExpression(TimeFilterApi.ltEq(1480562618933L))));
-    finalFilter = BinaryExpression.and(valFilter, tFilter);
-    queryExpression = QueryExpression.create(pathList, finalFilter);
-    dataSet = roTsFile.query(queryExpression);
-
-    // time filter & value filter
-    // verify d1.s1, d2.s1
-    /**
-     * 1480562618910 9101 9102 1480562618911 9111 9112 1480562618912 9121 9122 1480562618913 9131
-     * 9132 1480562618914 9141 9142 1480562618915 9151 9152 1480562618930 9301 9302 1480562618931
-     * 9311 9312 1480562618932 9321 9322 1480562618933 9331 9332
-     */
-    cnt = 1;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (cnt == 4) {
-        assertEquals(1480562618913L, r.getTimestamp());
-      } else if (cnt == 7) {
-        assertEquals(1480562618930L, r.getTimestamp());
-      }
-      cnt++;
-    }
-    assertEquals(9, cnt);
-  }
-
-  @Test
-  public void queryBooleanTest() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s5", true));
-    IExpression valFilter =
-        new SingleSeriesExpression(new Path("d1", "s5", true), ValueFilterApi.eq(false));
-    IExpression tFilter =
-        BinaryExpression.and(
-            new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618970L)),
-            new GlobalTimeExpression(TimeFilterApi.lt(1480562618981L)));
-    IExpression finalFilter = BinaryExpression.and(valFilter, tFilter);
-    QueryExpression queryExpression = QueryExpression.create(pathList, finalFilter);
-    QueryDataSet dataSet = roTsFile.query(queryExpression);
-
-    int cnt = 1;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (cnt == 1) {
-        assertEquals(1480562618972L, r.getTimestamp());
-        Field f1 = r.getFields().get(0);
-        assertFalse(f1.getBoolV());
-      }
-      if (cnt == 2) {
-        assertEquals(1480562618981L, r.getTimestamp());
-        Field f2 = r.getFields().get(0);
-        assertFalse(f2.getBoolV());
-      }
-      cnt++;
-    }
-  }
-
-  @Test
-  public void queryStringTest() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s4", true));
-    IExpression valFilter =
-        new SingleSeriesExpression(
-            new Path("d1", "s4", true),
-            ValueFilterApi.gt(new Binary("dog97", TSFileConfig.STRING_CHARSET)));
-    IExpression tFilter =
-        BinaryExpression.and(
-            new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618970L)),
-            new GlobalTimeExpression(TimeFilterApi.ltEq(1480562618981L)));
-    IExpression finalFilter = BinaryExpression.and(valFilter, tFilter);
-    QueryExpression queryExpression = QueryExpression.create(pathList, finalFilter);
-    QueryDataSet dataSet = roTsFile.query(queryExpression);
-
-    int cnt = 0;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (cnt == 0) {
-        assertEquals(1480562618976L, r.getTimestamp());
-        Field f1 = r.getFields().get(0);
-        assertEquals("dog976", f1.toString());
-      }
-      cnt++;
-    }
-    Assert.assertEquals(1, cnt);
-
-    pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s4", true));
-    valFilter =
-        new SingleSeriesExpression(
-            new Path("d1", "s4", true),
-            ValueFilterApi.lt(new Binary("dog97", TSFileConfig.STRING_CHARSET)));
-    tFilter =
-        BinaryExpression.and(
-            new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618970L)),
-            new GlobalTimeExpression(TimeFilterApi.ltEq(1480562618981L)));
-    finalFilter = BinaryExpression.and(valFilter, tFilter);
-    queryExpression = QueryExpression.create(pathList, finalFilter);
-    dataSet = roTsFile.query(queryExpression);
-    cnt = 0;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (cnt == 1) {
-        assertEquals(1480562618976L, r.getTimestamp());
-        Field f1 = r.getFields().get(0);
-        assertEquals("dog976", f1.getBinaryV().toString());
-      }
-      cnt++;
-    }
-    Assert.assertEquals(0, cnt);
-  }
-
-  @Test
-  public void queryFloatTest() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s6", true));
-    IExpression valFilter =
-        new SingleSeriesExpression(new Path("d1", "s6", true), ValueFilterApi.gt(103.0f));
-    IExpression tFilter =
-        BinaryExpression.and(
-            new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618970L)),
-            new GlobalTimeExpression(TimeFilterApi.ltEq(1480562618981L)));
-    IExpression finalFilter = BinaryExpression.and(valFilter, tFilter);
-    QueryExpression queryExpression = QueryExpression.create(pathList, finalFilter);
-    QueryDataSet dataSet = roTsFile.query(queryExpression);
-
-    int cnt = 0;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (cnt == 1) {
-        assertEquals(1480562618980L, r.getTimestamp());
-        Field f1 = r.getFields().get(0);
-        assertEquals(108.0, f1.getFloatV(), 0.0);
-      }
-      if (cnt == 2) {
-        assertEquals(1480562618990L, r.getTimestamp());
-        Field f2 = r.getFields().get(0);
-        assertEquals(110.0, f2.getFloatV(), 0.0);
-      }
-      cnt++;
-    }
-  }
-
-  @Test
-  public void queryDoubleTest() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s7", true));
-    IExpression valFilter =
-        new SingleSeriesExpression(new Path("d1", "s7", true), ValueFilterApi.gt(7.0));
-    IExpression tFilter =
-        BinaryExpression.and(
-            new GlobalTimeExpression(TimeFilterApi.gtEq(1480562618021L)),
-            new GlobalTimeExpression(TimeFilterApi.ltEq(1480562618033L)));
-    IExpression finalFilter = BinaryExpression.and(valFilter, tFilter);
-    QueryExpression queryExpression = QueryExpression.create(pathList, finalFilter);
-    QueryDataSet dataSet = roTsFile.query(queryExpression);
-
-    int cnt = 1;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (cnt == 1) {
-        assertEquals(1480562618022L, r.getTimestamp());
-        Field f1 = r.getFields().get(0);
-        assertEquals(2.0, f1.getDoubleV(), 0.0);
-      }
-      if (cnt == 2) {
-        assertEquals(1480562618033L, r.getTimestamp());
-        Field f1 = r.getFields().get(0);
-        assertEquals(3.0, f1.getDoubleV(), 0.0);
-      }
-      cnt++;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TimeSeriesMetadataReadTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TimeSeriesMetadataReadTest.java
deleted file mode 100644
index 114aef6..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TimeSeriesMetadataReadTest.java
+++ /dev/null
@@ -1,96 +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;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.constant.TestConstant;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.FileGenerator;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-public class TimeSeriesMetadataReadTest {
-
-  private static final String FILE_PATH =
-      TestConstant.BASE_OUTPUT_PATH.concat("TimeseriesMetadataReadTest.tsfile");
-  private final TSFileConfig conf = TSFileDescriptor.getInstance().getConfig();
-  private int maxDegreeOfIndexNode;
-
-  @Before
-  public void before() throws IOException {
-    int rowCount = 100;
-    maxDegreeOfIndexNode = conf.getMaxDegreeOfIndexNode();
-    conf.setMaxDegreeOfIndexNode(3);
-    FileGenerator.generateFile(rowCount, 10000, FILE_PATH);
-  }
-
-  @After
-  public void after() {
-    FileGenerator.after();
-    conf.setMaxDegreeOfIndexNode(maxDegreeOfIndexNode);
-    File file = new File(FILE_PATH);
-    if (file.exists()) {
-      file.delete();
-    }
-  }
-
-  @Test
-  public void testReadTimeseriesMetadata() throws IOException {
-    TsFileSequenceReader reader = new TsFileSequenceReader(FILE_PATH);
-    Path path = new Path("d1", "s1", true);
-    Set<String> set = new HashSet<>();
-    set.add("s1");
-    set.add("s2");
-    set.add("s3");
-    // the Max Degree Of Index Node is set to be 3, so the leaf node should only contains 3 sensors
-    // s4 should not be returned as result
-    set.add("s4");
-    List<TimeseriesMetadata> timeseriesMetadataList =
-        reader.readTimeseriesMetadata(path.getIDeviceID(), path.getMeasurement(), set);
-    Assert.assertEquals(3, timeseriesMetadataList.size());
-    for (int i = 1; i <= timeseriesMetadataList.size(); i++) {
-      Assert.assertEquals("s" + i, timeseriesMetadataList.get(i - 1).getMeasurementId());
-    }
-
-    path = new Path("d1", "s5", true);
-    set.clear();
-    set.add("s5");
-    set.add("s6");
-    // this is a fake one, this file doesn't contain this measurement
-    // so the result is not supposed to contain this measurement's timeseries metadata
-    set.add("s8");
-    timeseriesMetadataList =
-        reader.readTimeseriesMetadata(path.getIDeviceID(), path.getMeasurement(), set);
-    Assert.assertEquals(2, timeseriesMetadataList.size());
-    for (int i = 5; i < 7; i++) {
-      Assert.assertEquals("s" + i, timeseriesMetadataList.get(i - 5).getMeasurementId());
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TsFileReaderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TsFileReaderTest.java
deleted file mode 100644
index 3085228..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TsFileReaderTest.java
+++ /dev/null
@@ -1,523 +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;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorForTest;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public class TsFileReaderTest {
-
-  private static final String FILE_PATH = TsFileGeneratorForTest.outputDataFile;
-  private TsFileSequenceReader fileReader;
-  private TsFileReader tsFile;
-
-  @Test
-  public void multiPagesTest() throws IOException, WriteProcessException {
-    final String filePath = TsFileGeneratorForTest.getTestTsFilePath("root.sg1", 0, 0, 1);
-    File file = new File(filePath);
-    if (!file.getParentFile().exists()) {
-      Assert.assertTrue(file.getParentFile().mkdirs());
-    }
-
-    TSFileConfig tsFileConfig = TSFileDescriptor.getInstance().getConfig();
-    // make multi pages in one group
-    int oldPointNumInPage = tsFileConfig.getMaxNumberOfPointsInPage();
-    int oldGroupSizeInByte = tsFileConfig.getGroupSizeInByte();
-    tsFileConfig.setMaxNumberOfPointsInPage(100);
-    tsFileConfig.setGroupSizeInByte(100 * 1024 * 1024);
-    TsFileWriter tsFileWriter = new TsFileWriter(file, new Schema(), tsFileConfig);
-
-    Path path = new Path("t", "id", true);
-    tsFileWriter.registerTimeseries(
-        new Path(path.getDevice()),
-        new MeasurementSchema("id", TSDataType.INT32, TSEncoding.PLAIN, CompressionType.LZ4));
-
-    for (int i = 0; i < 11000000; i++) {
-      TSRecord t = new TSRecord(i, "t");
-      if (i % 100 == 0) {
-        // Add a large max_value to the page statistics,
-        // and get a very large number of invalid pages when the query is executed
-        t.addTuple(new IntDataPoint("id", 9000001));
-      } else {
-        t.addTuple(new IntDataPoint("id", i));
-      }
-      tsFileWriter.write(t);
-    }
-    // make same value to filter
-    TSRecord t = new TSRecord(101011000000L, "t");
-    t.addTuple(new IntDataPoint("id", 8000001));
-    tsFileWriter.write(t);
-    tsFileWriter.flushAllChunkGroups();
-    tsFileWriter.close();
-
-    TsFileReader tsFileReader = new TsFileReader(new TsFileSequenceReader(filePath));
-
-    SingleSeriesExpression filter = new SingleSeriesExpression(path, ValueFilterApi.eq(8000001));
-    QueryExpression queryExpression = QueryExpression.create(Arrays.asList(path), filter);
-    QueryDataSet query = tsFileReader.query(queryExpression);
-
-    int i = 0;
-    Assert.assertTrue(query.hasNext());
-    while (query.hasNext()) {
-      RowRecord next = query.next();
-      if (i == 0) {
-        Assert.assertEquals(next.getTimestamp(), 8000001);
-        Assert.assertEquals(next.getFields().get(0).getIntV(), 8000001);
-        i++;
-      } else {
-        Assert.assertEquals(next.getTimestamp(), 101011000000L);
-        Assert.assertEquals(next.getFields().get(0).getIntV(), 8000001);
-      }
-    }
-
-    tsFileReader.close();
-    file.delete();
-    tsFileConfig.setGroupSizeInByte(oldGroupSizeInByte);
-    tsFileConfig.setMaxNumberOfPointsInPage(oldPointNumInPage);
-  }
-
-  @Test
-  public void test1() throws IOException {
-    TSFileDescriptor.getInstance().getConfig().setTimeEncoder("TS_2DIFF");
-    int rowCount = 1000;
-    TsFileGeneratorForTest.generateFile(rowCount, 16 * 1024 * 1024, 10000);
-    fileReader = new TsFileSequenceReader(FILE_PATH);
-    tsFile = new TsFileReader(fileReader);
-    queryTest(rowCount);
-    tsFile.close();
-    TsFileGeneratorForTest.after();
-  }
-
-  private void queryTest(int rowCount) throws IOException {
-    Filter filter = TimeFilterApi.lt(1480562618100L);
-    Filter filter2 = ValueFilterApi.gt(new Binary("dog", TSFileConfig.STRING_CHARSET));
-    Filter filter3 =
-        FilterFactory.and(TimeFilterApi.gtEq(1480562618000L), TimeFilterApi.ltEq(1480562618100L));
-
-    IExpression IExpression =
-        BinaryExpression.or(
-            BinaryExpression.and(
-                new SingleSeriesExpression(new Path("d1", "s1", true), filter),
-                new SingleSeriesExpression(new Path("d1", "s4", true), filter2)),
-            new GlobalTimeExpression(filter3));
-
-    QueryExpression queryExpression =
-        QueryExpression.create()
-            .addSelectedPath(new Path("d1", "s1", true))
-            .addSelectedPath(new Path("d1", "s4", true))
-            .setExpression(IExpression);
-    QueryDataSet queryDataSet = tsFile.query(queryExpression);
-    long aimedTimestamp = 1480562618000L;
-    while (queryDataSet.hasNext()) {
-      RowRecord rowRecord = queryDataSet.next();
-      Assert.assertEquals(aimedTimestamp, rowRecord.getTimestamp());
-      aimedTimestamp++;
-    }
-
-    queryExpression =
-        QueryExpression.create()
-            .addSelectedPath(new Path("d1", "s1", true))
-            .addSelectedPath(new Path("d1", "s4", true));
-    queryDataSet = tsFile.query(queryExpression);
-    aimedTimestamp = 1480562618000L;
-    int count = 0;
-    while (queryDataSet.hasNext()) {
-      RowRecord rowRecord = queryDataSet.next();
-      Assert.assertEquals(aimedTimestamp, rowRecord.getTimestamp());
-      aimedTimestamp++;
-      count++;
-    }
-    Assert.assertEquals(rowCount, count);
-
-    queryExpression =
-        QueryExpression.create()
-            .addSelectedPath(new Path("d1", "s1", true))
-            .addSelectedPath(new Path("d1", "s4", true))
-            .setExpression(new GlobalTimeExpression(filter3));
-    queryDataSet = tsFile.query(queryExpression);
-    aimedTimestamp = 1480562618000L;
-    count = 0;
-    while (queryDataSet.hasNext()) {
-      RowRecord rowRecord = queryDataSet.next();
-      Assert.assertEquals(aimedTimestamp, rowRecord.getTimestamp());
-      aimedTimestamp++;
-      count++;
-    }
-    Assert.assertEquals(101, count);
-  }
-
-  @Test
-  public void test2() throws Exception {
-    int minRowCount = 1000, maxRowCount = 100000;
-    TSFileDescriptor.getInstance().getConfig().setTimeEncoder("TS_2DIFF");
-    TsFileGeneratorForTest.generateFile(minRowCount, maxRowCount, 16 * 1024 * 1024, 10000);
-    fileReader = new TsFileSequenceReader(FILE_PATH);
-    tsFile = new TsFileReader(fileReader);
-    queryTest2();
-    queryNonExistPathTest();
-    tsFile.close();
-    TsFileGeneratorForTest.after();
-  }
-
-  void queryTest2() throws IOException {
-    ArrayList<Path> paths = new ArrayList<>();
-    paths.add(new Path("d1", "s6", true));
-    paths.add(new Path("d2", "s1", true));
-
-    IExpression expression = new GlobalTimeExpression(TimeFilterApi.gt(1480562664760L));
-
-    QueryExpression queryExpression = QueryExpression.create(paths, expression);
-
-    QueryDataSet queryDataSet = tsFile.query(queryExpression);
-
-    int cnt = 0;
-    while (queryDataSet.hasNext()) {
-      RowRecord r = queryDataSet.next();
-      cnt++;
-    }
-    Assert.assertEquals(10647, cnt);
-  }
-
-  void queryNonExistPathTest() throws Exception {
-    ArrayList<Path> paths = new ArrayList<>();
-    paths.add(new Path("d1", "s1", true));
-    paths.add(new Path("d2", "s1", true));
-    IExpression expression = new GlobalTimeExpression(TimeFilterApi.gt(1480562664760L));
-    QueryExpression queryExpression = QueryExpression.create(paths, expression);
-    try {
-      QueryDataSet queryDataSet = tsFile.query(queryExpression);
-    } catch (Exception e) {
-      throw new Exception(e);
-      // fail();
-    }
-  }
-
-  @Test
-  public void queryWithoutFilter() throws IOException {
-    TsFileGeneratorForTest.generateAlignedTsFile(10, 100, 30);
-    String filePath = TsFileGeneratorForTest.alignedOutputDataFile;
-    try (TsFileReader tsFileReader = new TsFileReader(new TsFileSequenceReader(filePath)); ) {
-      // timeseries path for query
-      ArrayList<Path> paths = new ArrayList<>();
-      paths.add(new Path("d1", "s1", true));
-      paths.add(new Path("d1", "s2", true));
-      paths.add(new Path("d1", "s3", true));
-      paths.add(new Path("d2", "s1", true));
-
-      long rowCount = queryAndPrint(paths, tsFileReader, null);
-      Assert.assertNotEquals(0, rowCount);
-    }
-    TsFileGeneratorForTest.closeAlignedTsFile();
-  }
-
-  @Test
-  public void queryWithTimeFilter() throws IOException {
-    TsFileGeneratorForTest.generateAlignedTsFile(100000, 1024, 100);
-    String filePath = TsFileGeneratorForTest.alignedOutputDataFile;
-    try (TsFileReader tsFileReader = new TsFileReader(new TsFileSequenceReader(filePath)); ) {
-      // timeseries path for query
-      ArrayList<Path> paths = new ArrayList<>();
-      paths.add(new Path("d1", "s1", true));
-      paths.add(new Path("d1", "s2", true));
-      paths.add(new Path("d1", "s3", true));
-      paths.add(new Path("d2", "s2", true));
-
-      IExpression timeFilter =
-          BinaryExpression.and(
-              new GlobalTimeExpression(TimeFilterApi.gtEq(29990L)),
-              new GlobalTimeExpression(TimeFilterApi.ltEq(30009L)));
-      long rowCount = queryAndPrint(paths, tsFileReader, timeFilter);
-      Assert.assertNotEquals(0, rowCount);
-    }
-    TsFileGeneratorForTest.closeAlignedTsFile();
-  }
-
-  @Test
-  public void queryWithValueFilter() throws IOException {
-    TsFileGeneratorForTest.generateAlignedTsFile(100000, 1024, 100);
-    String filePath = TsFileGeneratorForTest.alignedOutputDataFile;
-    try (TsFileReader tsFileReader = new TsFileReader(new TsFileSequenceReader(filePath)); ) {
-      // timeseries path for query
-      ArrayList<Path> paths = new ArrayList<>();
-      paths.add(new Path("d1", "s1", true));
-      paths.add(new Path("d1", "s2", true));
-      paths.add(new Path("d1", "s3", true));
-      paths.add(new Path("d2", "s2", true));
-
-      IExpression valueFilter =
-          new SingleSeriesExpression(new Path("d2", "s1", true), ValueFilterApi.ltEq(9L));
-      long rowCount = queryAndPrint(paths, tsFileReader, valueFilter);
-      Assert.assertNotEquals(0, rowCount);
-    }
-    TsFileGeneratorForTest.closeAlignedTsFile();
-  }
-
-  @Test
-  public void queryWithValueFilter2() throws IOException {
-    TsFileGeneratorForTest.generateAlignedTsFile(100000, 1024, 100);
-    String filePath = TsFileGeneratorForTest.alignedOutputDataFile;
-    try (TsFileReader tsFileReader = new TsFileReader(new TsFileSequenceReader(filePath)); ) {
-      // timeseries path for query
-      ArrayList<Path> paths = new ArrayList<>();
-      paths.add(new Path("d1", "s1", true));
-      paths.add(new Path("d1", "s2", true));
-      paths.add(new Path("d1", "s3", true));
-      paths.add(new Path("d2", "s1", true));
-
-      IExpression valueFilter1 =
-          new SingleSeriesExpression(new Path("d2", "s1", true), ValueFilterApi.gtEq(100L));
-      IExpression valueFilter2 =
-          new SingleSeriesExpression(new Path("d1", "s2", true), ValueFilterApi.ltEq(10000L));
-      IExpression binaryExpression = BinaryExpression.and(valueFilter1, valueFilter2);
-      long rowCount = queryAndPrint(paths, tsFileReader, binaryExpression);
-      Assert.assertNotEquals(0, rowCount);
-    }
-    TsFileGeneratorForTest.closeAlignedTsFile();
-  }
-
-  @Test
-  public void queryWithAndBinaryFilter() throws IOException {
-    TsFileGeneratorForTest.generateAlignedTsFile(100000, 1024, 100);
-    String filePath = TsFileGeneratorForTest.alignedOutputDataFile;
-    try (TsFileReader tsFileReader = new TsFileReader(new TsFileSequenceReader(filePath)); ) {
-      // timeseries path for query
-      ArrayList<Path> paths = new ArrayList<>();
-      paths.add(new Path("d1", "s1", true));
-      paths.add(new Path("d1", "s2", true));
-      paths.add(new Path("d1", "s3", true));
-      paths.add(new Path("d2", "s1", true));
-
-      IExpression valueFilter =
-          BinaryExpression.and(
-              new SingleSeriesExpression(new Path("d2", "s1", true), ValueFilterApi.gtEq(7000L)),
-              new SingleSeriesExpression(new Path("d1", "s1", true), ValueFilterApi.ltEq(10000L)));
-      IExpression timeFilter =
-          BinaryExpression.and(
-              new GlobalTimeExpression(TimeFilterApi.gtEq(2000)),
-              new GlobalTimeExpression(TimeFilterApi.ltEq(10000L)));
-      IExpression binaryExpression = BinaryExpression.and(valueFilter, timeFilter);
-      long rowCount = queryAndPrint(paths, tsFileReader, binaryExpression);
-      Assert.assertNotEquals(0, rowCount);
-    }
-    TsFileGeneratorForTest.closeAlignedTsFile();
-  }
-
-  @Test
-  public void queryWithOrBinaryFilter() throws IOException {
-    TsFileGeneratorForTest.generateAlignedTsFile(100000, 1024, 100);
-    String filePath = TsFileGeneratorForTest.alignedOutputDataFile;
-    try (TsFileReader tsFileReader = new TsFileReader(new TsFileSequenceReader(filePath)); ) {
-      // timeseries path for query
-      ArrayList<Path> paths = new ArrayList<>();
-      paths.add(new Path("d1", "s1", true));
-      paths.add(new Path("d1", "s2", true));
-      paths.add(new Path("d1", "s3", true));
-      paths.add(new Path("d2", "s1", true));
-
-      IExpression valueFilter1 =
-          new SingleSeriesExpression(new Path("d2", "s1", true), ValueFilterApi.gtEq(100L));
-      IExpression valueFilter2 =
-          new SingleSeriesExpression(new Path("d1", "s2", true), ValueFilterApi.ltEq(10000L));
-      IExpression valueFilter = BinaryExpression.and(valueFilter1, valueFilter2);
-      IExpression timeFilter =
-          BinaryExpression.and(
-              new GlobalTimeExpression(TimeFilterApi.gtEq(19990L)),
-              new GlobalTimeExpression(TimeFilterApi.ltEq(18009L)));
-      IExpression binaryExpression = BinaryExpression.or(valueFilter, timeFilter);
-      long rowCount = queryAndPrint(paths, tsFileReader, binaryExpression);
-      Assert.assertNotEquals(0, rowCount);
-    }
-    TsFileGeneratorForTest.closeAlignedTsFile();
-  }
-
-  @Test
-  public void queryWithAndBinaryFilter2() throws IOException {
-    TsFileGeneratorForTest.generateAlignedTsFile(100000, 1024, 100);
-    String filePath = TsFileGeneratorForTest.alignedOutputDataFile;
-    try (TsFileReader tsFileReader = new TsFileReader(new TsFileSequenceReader(filePath)); ) {
-      // timeseries path for query
-      ArrayList<Path> paths = new ArrayList<>();
-      paths.add(new Path("d1", "s1", true));
-      paths.add(new Path("d1", "s3", true));
-      paths.add(new Path("d2", "s1", true));
-      paths.add(new Path("d2", "s2", true));
-
-      IExpression valueFilter1 =
-          new SingleSeriesExpression(new Path("d2", "s1", true), ValueFilterApi.gtEq(100L));
-      IExpression valueFilter2 =
-          new SingleSeriesExpression(new Path("d1", "s2", true), ValueFilterApi.ltEq(10000L));
-      IExpression valueFilter = BinaryExpression.and(valueFilter1, valueFilter2);
-      IExpression timeFilter =
-          BinaryExpression.and(
-              new GlobalTimeExpression(TimeFilterApi.gtEq(1799L)),
-              new GlobalTimeExpression(TimeFilterApi.ltEq(1900L)));
-      IExpression binaryExpression = BinaryExpression.and(valueFilter, timeFilter);
-      long rowCount = queryAndPrint(paths, tsFileReader, binaryExpression);
-      Assert.assertNotEquals(0, rowCount);
-    }
-    TsFileGeneratorForTest.closeAlignedTsFile();
-  }
-
-  @Test
-  public void queryWithUnRegisteredTimeseries() throws IOException {
-    TsFileGeneratorForTest.generateAlignedTsFile(100000, 1024, 100);
-    String filePath = TsFileGeneratorForTest.alignedOutputDataFile;
-    try (TsFileReader tsFileReader = new TsFileReader(new TsFileSequenceReader(filePath)); ) {
-      // timeseries path for query
-      ArrayList<Path> paths = new ArrayList<>();
-      paths.add(new Path("d1", "s1", true));
-      paths.add(new Path("d1", "s9", true));
-      paths.add(new Path("d2", "s1", true));
-      paths.add(new Path("d2", "s8", true));
-      paths.add(new Path("d9", "s8", true));
-
-      IExpression valueFilter1 =
-          new SingleSeriesExpression(new Path("d2", "s1", true), ValueFilterApi.gtEq(100L));
-      IExpression valueFilter2 =
-          new SingleSeriesExpression(new Path("d1", "s2", true), ValueFilterApi.ltEq(10000L));
-      IExpression valueFilter = BinaryExpression.and(valueFilter1, valueFilter2);
-      IExpression timeFilter =
-          BinaryExpression.and(
-              new GlobalTimeExpression(TimeFilterApi.gtEq(1799L)),
-              new GlobalTimeExpression(TimeFilterApi.ltEq(1900L)));
-      IExpression binaryExpression = BinaryExpression.and(valueFilter, timeFilter);
-      long rowCount = queryAndPrint(paths, tsFileReader, binaryExpression);
-      Assert.assertNotEquals(0, rowCount);
-    }
-    TsFileGeneratorForTest.closeAlignedTsFile();
-  }
-
-  @Test
-  public void queryWithValueFilterOnUnExistedTimeseries() throws IOException {
-    TsFileGeneratorForTest.generateAlignedTsFile(100000, 1024, 100);
-    String filePath = TsFileGeneratorForTest.alignedOutputDataFile;
-    try (TsFileReader tsFileReader = new TsFileReader(new TsFileSequenceReader(filePath)); ) {
-      // timeseries path for query
-      ArrayList<Path> paths = new ArrayList<>();
-      paths.add(new Path("d1", "s1", true));
-      paths.add(new Path("d1", "s9", true));
-      paths.add(new Path("d2", "s1", true));
-      paths.add(new Path("d9", "s8", true));
-
-      IExpression valueFilter1 =
-          new SingleSeriesExpression(new Path("d2", "s9", true), ValueFilterApi.gtEq(100L));
-      IExpression valueFilter2 =
-          new SingleSeriesExpression(new Path("d1", "s2", true), ValueFilterApi.ltEq(10000L));
-      IExpression valueFilter = BinaryExpression.and(valueFilter1, valueFilter2);
-      IExpression timeFilter =
-          BinaryExpression.and(
-              new GlobalTimeExpression(TimeFilterApi.gtEq(1799L)),
-              new GlobalTimeExpression(TimeFilterApi.ltEq(1900L)));
-      IExpression binaryExpression = BinaryExpression.and(valueFilter, timeFilter);
-      long rowCount = queryAndPrint(paths, tsFileReader, binaryExpression);
-      Assert.assertEquals(0, rowCount);
-    }
-    TsFileGeneratorForTest.closeAlignedTsFile();
-  }
-
-  private static long queryAndPrint(
-      ArrayList<Path> paths, TsFileReader readTsFile, IExpression statement) throws IOException {
-    QueryExpression queryExpression = QueryExpression.create(paths, statement);
-    QueryDataSet queryDataSet = readTsFile.query(queryExpression);
-    long rowCount = 0;
-    while (queryDataSet.hasNext()) {
-      // System.out.println(queryDataSet.next());
-      queryDataSet.next();
-      rowCount++;
-    }
-    return rowCount;
-  }
-
-  @Test
-  public void testGetAlignedChunkMetadata() throws IOException {
-    // generate aligned timeseries "d1.s1","d1.s2","d1.s3","d1.s4" and nonAligned timeseries
-    // "d2.s1","d2.s2","d2.s3"
-    TsFileGeneratorForTest.generateAlignedTsFile(10, 100, 30);
-    String filePath = TsFileGeneratorForTest.alignedOutputDataFile;
-    try (TsFileSequenceReader reader = new TsFileSequenceReader(filePath)) {
-      // query for non-exist device
-      IDeviceID d3 = new PlainDeviceID("d3");
-      try {
-        reader.getAlignedChunkMetadata(d3);
-      } catch (IOException e) {
-        Assert.assertEquals("Device {" + d3 + "} is not in tsFileMetaData", e.getMessage());
-      }
-
-      // query for non-aligned device
-      IDeviceID d2 = new PlainDeviceID("d2");
-      try {
-        reader.getAlignedChunkMetadata(d2);
-      } catch (IOException e) {
-        Assert.assertEquals("Timeseries of device {" + d2 + "} are not aligned", e.getMessage());
-      }
-
-      String[] expected = new String[] {"s1", "s2", "s3", "s4"};
-
-      List<AlignedChunkMetadata> chunkMetadataList =
-          reader.getAlignedChunkMetadata(new PlainDeviceID("d1"));
-      AlignedChunkMetadata alignedChunkMetadata = chunkMetadataList.get(0);
-      Assert.assertEquals("", alignedChunkMetadata.getTimeChunkMetadata().getMeasurementUid());
-      int i = 0;
-      for (IChunkMetadata chunkMetadata : alignedChunkMetadata.getValueChunkMetadataList()) {
-        Assert.assertEquals(expected[i], chunkMetadata.getMeasurementUid());
-        i++;
-      }
-
-      Assert.assertEquals(expected.length, i);
-    }
-    TsFileGeneratorForTest.closeAlignedTsFile();
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TsFileRestorableReaderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TsFileRestorableReaderTest.java
deleted file mode 100644
index 2b006a8..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TsFileRestorableReaderTest.java
+++ /dev/null
@@ -1,65 +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;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.fileSystem.fsFactory.FSFactory;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorForTest;
-
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-public class TsFileRestorableReaderTest {
-
-  private static final String FILE_PATH = TsFileGeneratorForTest.outputDataFile;
-  private FSFactory fsFactory = FSFactoryProducer.getFSFactory();
-
-  @Test
-  public void testToReadDamagedFileAndRepair() throws IOException {
-    File file = fsFactory.getFile(FILE_PATH);
-
-    TsFileGeneratorForTest.writeFileWithOneIncompleteChunkHeader(file);
-
-    TsFileSequenceReader reader = new TsFileRestorableReader(FILE_PATH, true);
-    String tailMagic = reader.readTailMagic();
-    reader.close();
-
-    // Check if the file was repaired
-    assertEquals(TSFileConfig.MAGIC_STRING, tailMagic);
-    assertTrue(file.delete());
-  }
-
-  @Test
-  public void testToReadDamagedFileNoRepair() throws IOException {
-    File file = fsFactory.getFile(FILE_PATH);
-
-    TsFileGeneratorForTest.writeFileWithOneIncompleteChunkHeader(file);
-    // This should throw an Illegal Argument Exception
-    TsFileSequenceReader reader = new TsFileRestorableReader(FILE_PATH, false);
-    assertFalse(reader.isComplete());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TsFileSequenceReaderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TsFileSequenceReaderTest.java
deleted file mode 100644
index 0fb29cf..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TsFileSequenceReaderTest.java
+++ /dev/null
@@ -1,179 +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;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkGroupHeader;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.FileGenerator;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorUtils;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class TsFileSequenceReaderTest {
-
-  private static final String FILE_PATH = FileGenerator.outputDataFile;
-  private TsFileReader tsFile;
-
-  @Before
-  public void before() throws IOException {
-    int rowCount = 100;
-    FileGenerator.generateFile(rowCount, 10000);
-    TsFileSequenceReader fileReader = new TsFileSequenceReader(FILE_PATH);
-    tsFile = new TsFileReader(fileReader);
-  }
-
-  @After
-  public void after() throws IOException {
-    tsFile.close();
-    FileGenerator.after();
-  }
-
-  @Test
-  public void testReadTsFileSequentially() throws IOException {
-    TsFileSequenceReader reader = new TsFileSequenceReader(FILE_PATH);
-    reader.position(TSFileConfig.MAGIC_STRING.getBytes().length + 1);
-    Map<IDeviceID, List<Pair<Long, Long>>> deviceChunkGroupMetadataOffsets = new HashMap<>();
-
-    long startOffset = reader.position();
-    byte marker;
-    while ((marker = reader.readMarker()) != MetaMarker.SEPARATOR) {
-      switch (marker) {
-        case MetaMarker.CHUNK_HEADER:
-        case MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER:
-          ChunkHeader header = reader.readChunkHeader(marker);
-          int dataSize = header.getDataSize();
-          while (dataSize > 0) {
-            PageHeader pageHeader =
-                reader.readPageHeader(
-                    header.getDataType(), header.getChunkType() == MetaMarker.CHUNK_HEADER);
-            ByteBuffer pageData = reader.readPage(pageHeader, header.getCompressionType());
-            dataSize -= pageHeader.getSerializedPageSize();
-          }
-          break;
-        case MetaMarker.CHUNK_GROUP_HEADER:
-          ChunkGroupHeader chunkGroupHeader = reader.readChunkGroupHeader();
-          long endOffset = reader.position();
-          Pair<Long, Long> pair = new Pair<>(startOffset, endOffset);
-          deviceChunkGroupMetadataOffsets.putIfAbsent(
-              chunkGroupHeader.getDeviceID(), new ArrayList<>());
-          List<Pair<Long, Long>> metadatas =
-              deviceChunkGroupMetadataOffsets.get(chunkGroupHeader.getDeviceID());
-          metadatas.add(pair);
-          startOffset = endOffset;
-          break;
-        case MetaMarker.OPERATION_INDEX_RANGE:
-          reader.readPlanIndex();
-          break;
-        default:
-          MetaMarker.handleUnexpectedMarker(marker);
-      }
-    }
-    reader.close();
-  }
-
-  @Test
-  public void testReadChunkMetadataInDevice() throws IOException {
-    TsFileSequenceReader reader = new TsFileSequenceReader(FILE_PATH);
-
-    // test for exist device "d2"
-    Map<String, List<ChunkMetadata>> chunkMetadataMap =
-        reader.readChunkMetadataInDevice(new PlainDeviceID("d2"));
-    int[] res = new int[] {20, 75, 100, 13};
-
-    Assert.assertEquals(4, chunkMetadataMap.size());
-    for (int i = 0; i < chunkMetadataMap.size(); i++) {
-      int id = i + 1;
-      List<ChunkMetadata> metadataList = chunkMetadataMap.get("s" + id);
-      int numOfPoints = 0;
-      for (ChunkMetadata metadata : metadataList) {
-        numOfPoints += (int) metadata.getNumOfPoints();
-      }
-      Assert.assertEquals(res[i], numOfPoints);
-    }
-
-    // test for non-exist device "d3"
-    Assert.assertTrue(reader.readChunkMetadataInDevice(new PlainDeviceID("d3")).isEmpty());
-    reader.close();
-  }
-
-  @Test
-  public void testReadEmptyPageInSelfCheck() throws IOException, WriteProcessException {
-    int oldMaxPagePointNum =
-        TSFileDescriptor.getInstance().getConfig().getMaxNumberOfPointsInPage();
-    TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(10);
-    File testFile = new File(FILE_PATH);
-
-    // create tsfile with empty page
-    try (TsFileWriter tsFileWriter = new TsFileWriter(testFile)) {
-      // register aligned timeseries
-      List<MeasurementSchema> alignedMeasurementSchemas = new ArrayList<>();
-      alignedMeasurementSchemas.add(
-          new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.PLAIN));
-      alignedMeasurementSchemas.add(
-          new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.PLAIN));
-      tsFileWriter.registerAlignedTimeseries(new Path("d1"), alignedMeasurementSchemas);
-
-      List<MeasurementSchema> writeMeasurementScheams = new ArrayList<>();
-      // only write s1
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(0));
-      TsFileGeneratorUtils.writeWithTsRecord(
-          tsFileWriter, "d1", writeMeasurementScheams, 25, 0, 0, true);
-
-      // write s1 and s2, fill 2 empty pages for s2
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(1));
-      TsFileGeneratorUtils.writeWithTsRecord(
-          tsFileWriter, "d1", writeMeasurementScheams, 10, 25, 0, true);
-    } finally {
-      TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(oldMaxPagePointNum);
-    }
-
-    // read tsfile with selfCheck method
-    try (TsFileSequenceReader reader = new TsFileSequenceReader(FILE_PATH)) {
-      Assert.assertEquals(
-          TsFileCheckStatus.COMPLETE_FILE,
-          reader.selfCheck(new HashMap<>(), new ArrayList<>(), false));
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TsFileSequenceReaderTimeseriesMetadataIteratorTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TsFileSequenceReaderTimeseriesMetadataIteratorTest.java
deleted file mode 100644
index 5648473..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TsFileSequenceReaderTimeseriesMetadataIteratorTest.java
+++ /dev/null
@@ -1,62 +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;
-
-import org.apache.iotdb.tsfile.utils.FileGenerator;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.List;
-
-public class TsFileSequenceReaderTimeseriesMetadataIteratorTest {
-
-  private static final String FILE_PATH = FileGenerator.outputDataFile;
-  private TsFileReader tsFile;
-
-  @Before
-  public void before() throws IOException {
-    // create 4040 timeseries, 101 measurements per device.
-    FileGenerator.generateFile(100, 40, 101);
-    TsFileSequenceReader fileReader = new TsFileSequenceReader(FILE_PATH);
-    tsFile = new TsFileReader(fileReader);
-  }
-
-  @After
-  public void after() throws IOException {
-    tsFile.close();
-    FileGenerator.after();
-  }
-
-  @Test
-  public void testReadTsFileTimeseriesMetadata() throws IOException {
-    TsFileSequenceReader fileReader = new TsFileSequenceReader(FILE_PATH);
-    TsFileSequenceReaderTimeseriesMetadataIterator iterator =
-        new TsFileSequenceReaderTimeseriesMetadataIterator(fileReader, false);
-
-    Assert.assertTrue(iterator.hasNext());
-    Assert.assertEquals(4000, iterator.next().values().stream().mapToLong(List::size).sum());
-    Assert.assertTrue(iterator.hasNext());
-    Assert.assertEquals(40, iterator.next().values().stream().mapToLong(List::size).sum());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/BatchDataTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/BatchDataTest.java
deleted file mode 100644
index 04d9470..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/BatchDataTest.java
+++ /dev/null
@@ -1,84 +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;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-
-import org.junit.Test;
-
-import java.io.IOException;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-public class BatchDataTest {
-
-  @Test
-  public void testInt() {
-    BatchData batchData = new BatchData(TSDataType.INT32);
-    assertTrue(batchData.isEmpty());
-    int value = 0;
-    for (long time = 0; time < 10; time++) {
-      batchData.putAnObject(time, value);
-      value++;
-    }
-    assertEquals(TSDataType.INT32, batchData.getDataType());
-    int res = 0;
-    long time = 0;
-    while (batchData.hasCurrent()) {
-      assertEquals(time, batchData.currentTime());
-      assertEquals(res, (int) batchData.currentValue());
-      assertEquals(res, batchData.currentTsPrimitiveType().getInt());
-      batchData.next();
-      res++;
-      time++;
-    }
-    batchData.resetBatchData();
-
-    IPointReader reader = batchData.getBatchDataIterator();
-    try {
-      res = 0;
-      time = 0;
-      while (reader.hasNextTimeValuePair()) {
-        TimeValuePair timeValuePair = reader.nextTimeValuePair();
-        assertEquals(time, timeValuePair.getTimestamp());
-        assertEquals(res, timeValuePair.getValue().getInt());
-        res++;
-        time++;
-      }
-    } catch (IOException e) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testSignal() {
-    BatchData batchData = SignalBatchData.getInstance();
-    try {
-      batchData.hasCurrent();
-    } catch (UnsupportedOperationException e) {
-      return;
-    }
-    fail();
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/ColumnTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/ColumnTest.java
deleted file mode 100644
index d8f9b70..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/ColumnTest.java
+++ /dev/null
@@ -1,198 +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;
-
-import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.BooleanColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.BooleanColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.DoubleColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.DoubleColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.FloatColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.FloatColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.IntColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.IntColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.LongColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.LongColumnBuilder;
-import org.apache.iotdb.tsfile.read.common.block.column.NullColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.RunLengthEncodedColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
-import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
-import org.apache.iotdb.tsfile.utils.BytesUtils;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-public class ColumnTest {
-
-  @Test
-  public void timeColumnSubColumnTest() {
-    TimeColumnBuilder columnBuilder = new TimeColumnBuilder(null, 10);
-    for (int i = 0; i < 10; i++) {
-      columnBuilder.writeLong(i);
-    }
-    TimeColumn timeColumn = (TimeColumn) columnBuilder.build();
-    timeColumn = (TimeColumn) timeColumn.subColumn(5);
-    Assert.assertEquals(5, timeColumn.getPositionCount());
-    Assert.assertEquals(5, timeColumn.getLong(0));
-    Assert.assertEquals(9, timeColumn.getLong(4));
-
-    timeColumn = (TimeColumn) timeColumn.subColumn(3);
-    Assert.assertEquals(2, timeColumn.getPositionCount());
-    Assert.assertEquals(8, timeColumn.getLong(0));
-    Assert.assertEquals(9, timeColumn.getLong(1));
-  }
-
-  @Test
-  public void binaryColumnSubColumnTest() {
-    BinaryColumnBuilder columnBuilder = new BinaryColumnBuilder(null, 10);
-    for (int i = 0; i < 10; i++) {
-      columnBuilder.writeBinary(BytesUtils.valueOf(String.valueOf(i)));
-    }
-    BinaryColumn binaryColumn = (BinaryColumn) columnBuilder.build();
-    binaryColumn = (BinaryColumn) binaryColumn.subColumn(5);
-    Assert.assertEquals(5, binaryColumn.getPositionCount());
-    Assert.assertEquals("5", binaryColumn.getBinary(0).toString());
-    Assert.assertEquals("9", binaryColumn.getBinary(4).toString());
-
-    binaryColumn = (BinaryColumn) binaryColumn.subColumn(3);
-    Assert.assertEquals(2, binaryColumn.getPositionCount());
-    Assert.assertEquals("8", binaryColumn.getBinary(0).toString());
-    Assert.assertEquals("9", binaryColumn.getBinary(1).toString());
-  }
-
-  @Test
-  public void booleanColumnSubColumnTest() {
-    BooleanColumnBuilder columnBuilder = new BooleanColumnBuilder(null, 10);
-    // 0: true, 1: false
-    for (int i = 0; i < 10; i++) {
-      columnBuilder.writeBoolean(i % 2 == 0);
-    }
-    BooleanColumn booleanColumn = (BooleanColumn) columnBuilder.build();
-    booleanColumn = (BooleanColumn) booleanColumn.subColumn(5);
-    Assert.assertEquals(5, booleanColumn.getPositionCount());
-    Assert.assertFalse(booleanColumn.getBoolean(0));
-    Assert.assertFalse(booleanColumn.getBoolean(4));
-
-    booleanColumn = (BooleanColumn) booleanColumn.subColumn(3);
-    Assert.assertEquals(2, booleanColumn.getPositionCount());
-    Assert.assertTrue(booleanColumn.getBoolean(0));
-    Assert.assertFalse(booleanColumn.getBoolean(1));
-  }
-
-  @Test
-  public void doubleColumnSubColumnTest() {
-    DoubleColumnBuilder columnBuilder = new DoubleColumnBuilder(null, 10);
-    for (int i = 0; i < 10; i++) {
-      columnBuilder.writeDouble(i);
-    }
-    DoubleColumn doubleColumn = (DoubleColumn) columnBuilder.build();
-    doubleColumn = (DoubleColumn) doubleColumn.subColumn(5);
-    Assert.assertEquals(5, doubleColumn.getPositionCount());
-    Assert.assertEquals(5.0, doubleColumn.getDouble(0), 0.001);
-    Assert.assertEquals(9.0, doubleColumn.getDouble(4), 0.001);
-
-    doubleColumn = (DoubleColumn) doubleColumn.subColumn(3);
-    Assert.assertEquals(2, doubleColumn.getPositionCount());
-    Assert.assertEquals(8.0, doubleColumn.getDouble(0), 0.001);
-    Assert.assertEquals(9.0, doubleColumn.getDouble(1), 0.001);
-  }
-
-  @Test
-  public void floatColumnSubColumnTest() {
-    FloatColumnBuilder columnBuilder = new FloatColumnBuilder(null, 10);
-    for (int i = 0; i < 10; i++) {
-      columnBuilder.writeFloat(i);
-    }
-    FloatColumn floatColumn = (FloatColumn) columnBuilder.build();
-    floatColumn = (FloatColumn) floatColumn.subColumn(5);
-    Assert.assertEquals(5, floatColumn.getPositionCount());
-    Assert.assertEquals(5.0, floatColumn.getFloat(0), 0.001);
-    Assert.assertEquals(9.0, floatColumn.getFloat(4), 0.001);
-
-    floatColumn = (FloatColumn) floatColumn.subColumn(3);
-    Assert.assertEquals(2, floatColumn.getPositionCount());
-    Assert.assertEquals(8.0, floatColumn.getFloat(0), 0.001);
-    Assert.assertEquals(9.0, floatColumn.getFloat(1), 0.001);
-  }
-
-  @Test
-  public void intColumnSubColumnTest() {
-    IntColumnBuilder columnBuilder = new IntColumnBuilder(null, 10);
-    for (int i = 0; i < 10; i++) {
-      columnBuilder.writeInt(i);
-    }
-    IntColumn intColumn = (IntColumn) columnBuilder.build();
-    intColumn = (IntColumn) intColumn.subColumn(5);
-    Assert.assertEquals(5, intColumn.getPositionCount());
-    Assert.assertEquals(5, intColumn.getInt(0));
-    Assert.assertEquals(9, intColumn.getInt(4));
-
-    intColumn = (IntColumn) intColumn.subColumn(3);
-    Assert.assertEquals(2, intColumn.getPositionCount());
-    Assert.assertEquals(8, intColumn.getInt(0));
-    Assert.assertEquals(9, intColumn.getInt(1));
-  }
-
-  @Test
-  public void longColumnSubColumnTest() {
-    LongColumnBuilder columnBuilder = new LongColumnBuilder(null, 10);
-    for (int i = 0; i < 10; i++) {
-      columnBuilder.writeLong(i);
-    }
-    LongColumn longColumn = (LongColumn) columnBuilder.build();
-    longColumn = (LongColumn) longColumn.subColumn(5);
-    Assert.assertEquals(5, longColumn.getPositionCount());
-    Assert.assertEquals(5, longColumn.getLong(0));
-    Assert.assertEquals(9, longColumn.getLong(4));
-
-    longColumn = (LongColumn) longColumn.subColumn(3);
-    Assert.assertEquals(2, longColumn.getPositionCount());
-    Assert.assertEquals(8, longColumn.getLong(0));
-    Assert.assertEquals(9, longColumn.getLong(1));
-  }
-
-  @Test
-  public void nullColumnTest() {
-    NullColumn nullColumn = new NullColumn(10);
-    Column subRegion = nullColumn.getRegion(7, 2);
-    Column subColumn = subRegion.subColumn(1);
-
-    Assert.assertEquals(2, subRegion.getPositionCount());
-    Assert.assertEquals(1, subColumn.getPositionCount());
-  }
-
-  @Test
-  public void runLengthEncodedColumnSubColumnTest() {
-    LongColumnBuilder longColumnBuilder = new LongColumnBuilder(null, 1);
-    longColumnBuilder.writeLong(1);
-    RunLengthEncodedColumn column = new RunLengthEncodedColumn(longColumnBuilder.build(), 10);
-    column = (RunLengthEncodedColumn) column.subColumn(5);
-    Assert.assertEquals(5, column.getPositionCount());
-    Assert.assertEquals(1, column.getLong(0));
-    Assert.assertEquals(1, column.getLong(4));
-
-    column = (RunLengthEncodedColumn) column.subColumn(3);
-    Assert.assertEquals(2, column.getPositionCount());
-    Assert.assertEquals(1, column.getLong(0));
-    Assert.assertEquals(1, column.getLong(1));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/FieldTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/FieldTest.java
deleted file mode 100644
index dfe48b4..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/FieldTest.java
+++ /dev/null
@@ -1,32 +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;
-
-import org.apache.iotdb.tsfile.exception.NullFieldException;
-
-import org.junit.Test;
-
-public class FieldTest {
-
-  @Test(expected = NullFieldException.class)
-  public void construct() {
-    Field field = new Field(null);
-    field.getIntV();
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/PathTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/PathTest.java
deleted file mode 100644
index 99a4e1b..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/PathTest.java
+++ /dev/null
@@ -1,206 +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;
-
-import org.apache.iotdb.tsfile.exception.PathParseException;
-import org.apache.iotdb.tsfile.read.common.parser.PathVisitor;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.junit.Assert.fail;
-
-public class PathTest {
-  @Test
-  public void testLegalPath() {
-    // empty path
-    Path a = new Path("", true);
-    Assert.assertEquals("", a.getDevice());
-    Assert.assertEquals("", a.getMeasurement());
-
-    // empty device
-    Path b = new Path("s1", true);
-    Assert.assertEquals("s1", b.getMeasurement());
-    Assert.assertEquals("", b.getDevice());
-
-    // normal node
-    Path c = new Path("root.sg.a", true);
-    Assert.assertEquals("root.sg", c.getDevice());
-    Assert.assertEquals("a", c.getMeasurement());
-
-    // quoted node
-    Path d = new Path("root.sg.`a.b`", true);
-    Assert.assertEquals("root.sg", d.getDevice());
-    Assert.assertEquals("`a.b`", d.getMeasurement());
-
-    Path e = new Path("root.sg.`a.``b`", true);
-    Assert.assertEquals("root.sg", e.getDevice());
-    Assert.assertEquals("`a.``b`", e.getMeasurement());
-
-    Path f = new Path("root.`sg\"`.`a.``b`", true);
-    Assert.assertEquals("root.`sg\"`", f.getDevice());
-    Assert.assertEquals("`a.``b`", f.getMeasurement());
-
-    Path g = new Path("root.sg.`a.b\\\\`", true);
-    Assert.assertEquals("root.sg", g.getDevice());
-    Assert.assertEquals("`a.b\\\\`", g.getMeasurement());
-
-    // quoted node of digits
-    Path h = new Path("root.sg.`111`", true);
-    Assert.assertEquals("root.sg", h.getDevice());
-    Assert.assertEquals("`111`", h.getMeasurement());
-
-    // quoted node of key word
-    Path i = new Path("root.sg.`select`", true);
-    Assert.assertEquals("root.sg", i.getDevice());
-    Assert.assertEquals("select", i.getMeasurement());
-
-    // wildcard
-    Path j = new Path("root.sg.`a*b`", true);
-    Assert.assertEquals("root.sg", j.getDevice());
-    Assert.assertEquals("`a*b`", j.getMeasurement());
-
-    Path k = new Path("root.sg.*", true);
-    Assert.assertEquals("root.sg", k.getDevice());
-    Assert.assertEquals("*", k.getMeasurement());
-
-    Path l = new Path("root.sg.**", true);
-    Assert.assertEquals("root.sg", l.getDevice());
-    Assert.assertEquals("**", l.getMeasurement());
-
-    // raw key word
-    Path m = new Path("root.sg.select", true);
-    Assert.assertEquals("root.sg", m.getDevice());
-    Assert.assertEquals("select", m.getMeasurement());
-
-    Path n = new Path("root.sg.device", true);
-    Assert.assertEquals("root.sg", n.getDevice());
-    Assert.assertEquals("device", n.getMeasurement());
-
-    Path o = new Path("root.sg.drop_trigger", true);
-    Assert.assertEquals("root.sg", o.getDevice());
-    Assert.assertEquals("drop_trigger", o.getMeasurement());
-
-    Path p = new Path("root.sg.and", true);
-    Assert.assertEquals("root.sg", p.getDevice());
-    Assert.assertEquals("and", p.getMeasurement());
-
-    p = new Path("root.sg.or", true);
-    Assert.assertEquals("root.sg", p.getDevice());
-    Assert.assertEquals("or", p.getMeasurement());
-
-    p = new Path("root.sg.not", true);
-    Assert.assertEquals("root.sg", p.getDevice());
-    Assert.assertEquals("not", p.getMeasurement());
-
-    p = new Path("root.sg.null", true);
-    Assert.assertEquals("root.sg", p.getDevice());
-    Assert.assertEquals("null", p.getMeasurement());
-
-    p = new Path("root.sg.contains", true);
-    Assert.assertEquals("root.sg", p.getDevice());
-    Assert.assertEquals("contains", p.getMeasurement());
-
-    p = new Path("root.sg.`0000`", true);
-    Assert.assertEquals("root.sg", p.getDevice());
-    Assert.assertEquals("`0000`", p.getMeasurement());
-
-    p = new Path("root.sg.`0e38`", true);
-    Assert.assertEquals("root.sg", p.getDevice());
-    Assert.assertEquals("`0e38`", p.getMeasurement());
-
-    p = new Path("root.sg.`00.12`", true);
-    Assert.assertEquals("root.sg", p.getDevice());
-    Assert.assertEquals("`00.12`", p.getMeasurement());
-  }
-
-  @Test
-  public void tesIllegalPath() {
-    try {
-      new Path("root.sg`", true);
-      fail();
-    } catch (PathParseException ignored) {
-
-    }
-
-    try {
-      new Path("root.sg\na", true);
-      fail();
-    } catch (PathParseException ignored) {
-    }
-
-    try {
-      new Path("root.select`", true);
-      fail();
-    } catch (PathParseException ignored) {
-    }
-
-    try {
-      // pure digits
-      new Path("root.111", true);
-      fail();
-    } catch (PathParseException ignored) {
-    }
-
-    try {
-      // single ` in quoted node
-      new Path("root.`a``", true);
-      fail();
-    } catch (PathParseException ignored) {
-    }
-
-    try {
-      // single ` in quoted node
-      new Path("root.``a`", true);
-      fail();
-    } catch (PathParseException ignored) {
-    }
-
-    try {
-      new Path("root.a*%", true);
-      fail();
-    } catch (PathParseException ignored) {
-    }
-
-    try {
-      new Path("root.a*b", true);
-      fail();
-    } catch (PathParseException ignored) {
-    }
-
-    try {
-      new Path("root.0e38", true);
-      fail();
-    } catch (PathParseException ignored) {
-    }
-
-    try {
-      new Path("root.0000", true);
-      fail();
-    } catch (PathParseException ignored) {
-    }
-  }
-
-  @Test
-  public void testRealNumber() {
-    Assert.assertTrue(PathVisitor.isRealNumber("0e38"));
-    Assert.assertTrue(PathVisitor.isRealNumber("0000"));
-    Assert.assertTrue(PathVisitor.isRealNumber("00.12"));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/TimeRangeTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/TimeRangeTest.java
deleted file mode 100644
index cd929d2..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/TimeRangeTest.java
+++ /dev/null
@@ -1,492 +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;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.util.ArrayList;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-public class TimeRangeTest {
-
-  @Test
-  /*
-   * [1,3] does not intersect with (4,5].
-   */
-  public void intersect1() {
-    TimeRange r1 = new TimeRange(1, 3);
-    TimeRange r2 = new TimeRange(4, 5);
-    r2.setLeftClose(false);
-    assertEquals("[ 1 : 3 ]", r1.toString());
-    assertEquals("( 4 : 5 ]", r2.toString());
-    assertFalse(r1.intersects(r2));
-    assertFalse(r2.intersects(r1));
-  }
-
-  @Test
-  /*
-   * [1,3) does not intersect with (3,5]
-   */
-  public void intersect2() {
-    TimeRange r1 = new TimeRange(1, 3);
-    r1.setRightClose(false);
-    TimeRange r2 = new TimeRange(3, 5);
-    r2.setLeftClose(false);
-    assertEquals("[ 1 : 3 )", r1.toString());
-    assertEquals("( 3 : 5 ]", r2.toString());
-    assertFalse(r1.intersects(r2));
-    assertFalse(r2.intersects(r1));
-  }
-
-  @Test
-  /*
-   * [1,3] does not intersect with [5,6].
-   */
-  public void intersect3() {
-    TimeRange r1 = new TimeRange(1, 3);
-    TimeRange r2 = new TimeRange(5, 6);
-    assertEquals("[ 1 : 3 ]", r1.toString());
-    assertEquals("[ 5 : 6 ]", r2.toString());
-    assertFalse(r1.intersects(r2));
-    assertFalse(r2.intersects(r1));
-  }
-
-  @Test
-  /*
-   * [1,3] intersects with [2,5].
-   */
-  public void intersect4() {
-    TimeRange r1 = new TimeRange(1, 3);
-    TimeRange r2 = new TimeRange(2, 5);
-    assertEquals("[ 1 : 3 ]", r1.toString());
-    assertEquals("[ 2 : 5 ]", r2.toString());
-    assertTrue(r1.intersects(r2));
-    assertTrue(r2.intersects(r1));
-  }
-
-  @Test
-  /*
-   * [1,3] intersects with (3,5].
-   */
-  public void intersect5() {
-    TimeRange r1 = new TimeRange(1, 3);
-    TimeRange r2 = new TimeRange(3, 5);
-    r2.setLeftClose(false);
-    assertEquals("[ 1 : 3 ]", r1.toString());
-    assertEquals("( 3 : 5 ]", r2.toString());
-    assertTrue(r1.intersects(r2));
-    assertTrue(r2.intersects(r1));
-  }
-
-  @Test
-  /*
-   * [1,3) intersects with (2,5].
-   */
-  public void intersect6() {
-    TimeRange r1 = new TimeRange(1, 3);
-    r1.setRightClose(false);
-    TimeRange r2 = new TimeRange(2, 5);
-    r2.setLeftClose(false);
-    assertEquals("[ 1 : 3 )", r1.toString());
-    assertEquals("( 2 : 5 ]", r2.toString());
-    assertTrue(r1.intersects(r2));
-    assertTrue(r2.intersects(r1));
-  }
-
-  @Test
-  public void overlap1() {
-    TimeRange r1 = new TimeRange(1, 4);
-    TimeRange r2 = new TimeRange(4, 5);
-    r2.setLeftClose(false);
-    assertEquals("[ 1 : 4 ]", r1.toString());
-    assertEquals("( 4 : 5 ]", r2.toString());
-    assertFalse(r1.overlaps(r2));
-  }
-
-  @Test
-  public void overlap2() {
-    TimeRange r1 = new TimeRange(1, 4);
-    r1.setRightClose(false);
-    TimeRange r2 = new TimeRange(3, 6);
-    r2.setLeftClose(false);
-    assertEquals("[ 1 : 4 )", r1.toString());
-    assertEquals("( 3 : 6 ]", r2.toString());
-    assertFalse(r1.overlaps(r2));
-  }
-
-  @Test
-  /*
-   * [1,3] does not intersect with [5,6].
-   */
-  public void overlap3() {
-    TimeRange r1 = new TimeRange(1, 4);
-    TimeRange r2 = new TimeRange(5, 8);
-    assertEquals("[ 1 : 4 ]", r1.toString());
-    assertEquals("[ 5 : 8 ]", r2.toString());
-    assertFalse(r1.overlaps(r2));
-  }
-
-  @Test
-  public void overlap4() {
-    TimeRange r1 = new TimeRange(1, 4);
-    TimeRange r2 = new TimeRange(2, 5);
-    assertEquals("[ 1 : 4 ]", r1.toString());
-    assertEquals("[ 2 : 5 ]", r2.toString());
-    assertTrue(r1.overlaps(r2));
-  }
-
-  @Test
-  public void overlap5() {
-    TimeRange r1 = new TimeRange(1, 4);
-    TimeRange r2 = new TimeRange(3, 5);
-    r2.setLeftClose(false);
-    assertEquals("[ 1 : 4 ]", r1.toString());
-    assertEquals("( 3 : 5 ]", r2.toString());
-    assertTrue(r1.overlaps(r2));
-  }
-
-  @Test
-  public void overlap6() {
-    TimeRange r1 = new TimeRange(1, 5);
-    r1.setRightClose(false);
-    TimeRange r2 = new TimeRange(2, 6);
-    r2.setLeftClose(false);
-    assertEquals("[ 1 : 5 )", r1.toString());
-    assertEquals("( 2 : 6 ]", r2.toString());
-    assertTrue(r1.overlaps(r2));
-  }
-
-  @Test
-  public void equalTest() {
-    TimeRange r1 = new TimeRange(5, 8);
-    TimeRange r2 = new TimeRange(5, 8);
-    assertTrue(r1.equals(r2));
-  }
-
-  @Test
-  public void mergeTest() {
-    ArrayList<TimeRange> unionCandidates = new ArrayList<>();
-    unionCandidates.add(new TimeRange(0L, 10L));
-    unionCandidates.add(new TimeRange(3L, 10L));
-    unionCandidates.add(new TimeRange(100L, 200L));
-    unionCandidates.add(new TimeRange(20L, 30L));
-    unionCandidates.add(new TimeRange(5L, 6L));
-
-    ArrayList<TimeRange> res = new ArrayList<>(TimeRange.sortAndMerge(unionCandidates));
-
-    Assert.assertEquals(3, res.size());
-    Assert.assertEquals("[ 0 : 10 ]", res.get(0).toString());
-    Assert.assertEquals("[ 20 : 30 ]", res.get(1).toString());
-    Assert.assertEquals("[ 100 : 200 ]", res.get(2).toString());
-  }
-
-  @Test
-  /*
-   * no overlap
-   */
-  public void getRemainsTest0() {
-    TimeRange r = new TimeRange(1, 10);
-
-    ArrayList<TimeRange> prevRanges = new ArrayList<>();
-    prevRanges.add(new TimeRange(20, 25));
-
-    ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
-    assertEquals(1, remainRanges.size());
-    assertEquals(1, remainRanges.get(0).getMin());
-    assertEquals(10, remainRanges.get(0).getMax());
-    assertTrue(remainRanges.get(0).getLeftClose());
-    assertTrue(remainRanges.get(0).getRightClose());
-  }
-
-  @Test
-  /*
-   * previous ranges contains current ranges
-   */
-  public void getRemainsTest1() {
-    TimeRange r = new TimeRange(1, 10);
-
-    ArrayList<TimeRange> prevRanges = new ArrayList<>();
-    prevRanges.add(new TimeRange(0, 10));
-
-    ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
-    assertEquals(0, remainRanges.size());
-  }
-
-  @Test
-  /*
-   * current ranges contains previous ranges. subcase 1
-   */
-  public void getRemainsTest2() {
-    TimeRange r = new TimeRange(1, 10);
-
-    ArrayList<TimeRange> prevRanges = new ArrayList<>();
-    prevRanges.add(new TimeRange(1, 3));
-
-    ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
-    assertEquals(1, remainRanges.size());
-    assertEquals(3, remainRanges.get(0).getMin());
-    assertEquals(10, remainRanges.get(0).getMax());
-    assertFalse(remainRanges.get(0).getLeftClose());
-    assertTrue(remainRanges.get(0).getRightClose());
-  }
-
-  @Test
-  /*
-   * current ranges contains previous ranges. subcase 2
-   */
-  public void getRemainsTest3() {
-    TimeRange r = new TimeRange(1, 10);
-
-    ArrayList<TimeRange> prevRanges = new ArrayList<>();
-    prevRanges.add(new TimeRange(5, 10));
-
-    ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
-    assertEquals(1, remainRanges.size());
-    assertEquals(1, remainRanges.get(0).getMin());
-    assertEquals(5, remainRanges.get(0).getMax());
-    assertTrue(remainRanges.get(0).getLeftClose());
-    assertFalse(remainRanges.get(0).getRightClose());
-  }
-
-  @Test
-  /*
-   * current ranges contains previous ranges. subcase 3
-   */
-  public void getRemainsTest4() {
-    TimeRange r = new TimeRange(1, 10);
-
-    ArrayList<TimeRange> prevRanges = new ArrayList<>();
-    prevRanges.add(new TimeRange(3, 8));
-
-    ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
-    assertEquals(2, remainRanges.size());
-    assertEquals(1, remainRanges.get(0).getMin());
-    assertEquals(3, remainRanges.get(0).getMax());
-    assertTrue(remainRanges.get(0).getLeftClose());
-    assertFalse(remainRanges.get(0).getRightClose());
-    assertEquals(8, remainRanges.get(1).getMin());
-    assertEquals(10, remainRanges.get(1).getMax());
-    assertFalse(remainRanges.get(1).getLeftClose());
-    assertTrue(remainRanges.get(1).getRightClose());
-  }
-
-  @Test
-  /*
-   * current ranges overlap with previous ranges. subcase 1
-   */
-  public void getRemainsTest5() {
-    TimeRange r = new TimeRange(1, 10);
-
-    ArrayList<TimeRange> prevRanges = new ArrayList<>();
-    prevRanges.add(new TimeRange(0, 5));
-
-    ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
-    assertEquals(1, remainRanges.size());
-    assertEquals(5, remainRanges.get(0).getMin());
-    assertEquals(10, remainRanges.get(0).getMax());
-    assertFalse(remainRanges.get(0).getLeftClose());
-    assertTrue(remainRanges.get(0).getRightClose());
-  }
-
-  @Test
-  /*
-   * current ranges overlap with previous ranges. subcase 2
-   */
-  public void getRemainsTest6() {
-    TimeRange r = new TimeRange(3, 10);
-
-    ArrayList<TimeRange> prevRanges = new ArrayList<>();
-    prevRanges.add(new TimeRange(0, 2));
-
-    ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
-    assertEquals(1, remainRanges.size());
-    assertEquals(2, remainRanges.get(0).getMin());
-    assertEquals(10, remainRanges.get(0).getMax());
-    assertFalse(remainRanges.get(0).getLeftClose());
-    assertTrue(remainRanges.get(0).getRightClose());
-  }
-
-  @Test
-  /*
-   * current ranges overlap with previous ranges. subcase 3
-   */
-  public void getRemainsTest7() {
-    TimeRange r = new TimeRange(1, 10);
-
-    ArrayList<TimeRange> prevRanges = new ArrayList<>();
-    prevRanges.add(new TimeRange(6, 12));
-
-    ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
-    assertEquals(1, remainRanges.size());
-    assertEquals(1, remainRanges.get(0).getMin());
-    assertEquals(6, remainRanges.get(0).getMax());
-    assertTrue(remainRanges.get(0).getLeftClose());
-    assertFalse(remainRanges.get(0).getRightClose());
-  }
-
-  @Test
-  /*
-   * current ranges overlap with previous ranges. subcase 4
-   */
-  public void getRemainsTest8() {
-    TimeRange r = new TimeRange(1, 10);
-
-    ArrayList<TimeRange> prevRanges = new ArrayList<>();
-    prevRanges.add(new TimeRange(11, 13));
-
-    ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
-    assertEquals(1, remainRanges.size());
-    assertEquals(1, remainRanges.get(0).getMin());
-    assertEquals(11, remainRanges.get(0).getMax());
-    assertTrue(remainRanges.get(0).getLeftClose());
-    assertFalse(remainRanges.get(0).getRightClose());
-  }
-
-  @Test
-  /*
-   * more than one time ranges in previous ranges
-   */
-  public void getRemainsTest9() {
-    TimeRange r = new TimeRange(1, 10);
-
-    ArrayList<TimeRange> prevRanges = new ArrayList<>();
-    prevRanges.add(new TimeRange(3, 4));
-    prevRanges.add(new TimeRange(6, 8));
-
-    ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
-    assertEquals(3, remainRanges.size());
-    assertEquals(1, remainRanges.get(0).getMin());
-    assertEquals(3, remainRanges.get(0).getMax());
-    assertTrue(remainRanges.get(0).getLeftClose());
-    assertFalse(remainRanges.get(0).getRightClose());
-    assertEquals(4, remainRanges.get(1).getMin());
-    assertEquals(6, remainRanges.get(1).getMax());
-    assertFalse(remainRanges.get(1).getLeftClose());
-    assertFalse(remainRanges.get(1).getRightClose());
-    assertEquals(8, remainRanges.get(2).getMin());
-    assertEquals(10, remainRanges.get(2).getMax());
-    assertFalse(remainRanges.get(2).getLeftClose());
-    assertTrue(remainRanges.get(2).getRightClose());
-  }
-
-  @Test
-  /*
-   * more than one time ranges in previous ranges
-   */
-  public void getRemainsTest10() {
-    TimeRange r = new TimeRange(1, 10);
-
-    ArrayList<TimeRange> prevRanges = new ArrayList<>();
-    prevRanges.add(new TimeRange(3, 4));
-    prevRanges.add(new TimeRange(11, 20));
-
-    ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
-    assertEquals(2, remainRanges.size());
-    assertEquals(1, remainRanges.get(0).getMin());
-    assertEquals(3, remainRanges.get(0).getMax());
-    assertTrue(remainRanges.get(0).getLeftClose());
-    assertFalse(remainRanges.get(0).getRightClose());
-    assertEquals(4, remainRanges.get(1).getMin());
-    assertEquals(11, remainRanges.get(1).getMax()); // NOTE here is the technical detail.
-    assertFalse(remainRanges.get(1).getLeftClose());
-    assertFalse(remainRanges.get(1).getRightClose());
-  }
-
-  @Test
-  /*
-   * current ranges DO NOT overlap with previous ranges.
-   */
-  public void getRemainsTest11() {
-    TimeRange r = new TimeRange(4, 10);
-
-    ArrayList<TimeRange> prevRanges = new ArrayList<>();
-    prevRanges.add(new TimeRange(1, 2));
-
-    ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
-    assertEquals(1, remainRanges.size());
-    assertEquals(4, remainRanges.get(0).getMin());
-    assertEquals(10, remainRanges.get(0).getMax());
-    assertEquals(remainRanges.get(0).getLeftClose(), true);
-    assertEquals(remainRanges.get(0).getRightClose(), true);
-  }
-
-  @Test
-  public void testCompareTo() {
-    Assert.assertTrue(new TimeRange(Long.MIN_VALUE, 1).compareTo(new TimeRange(5, 6)) < 0);
-    Assert.assertTrue(
-        new TimeRange(Long.MIN_VALUE, 1).compareTo(new TimeRange(Long.MIN_VALUE, 2)) < 0);
-    Assert.assertTrue(new TimeRange(Long.MIN_VALUE, 1).compareTo(new TimeRange(-1, 6)) < 0);
-    Assert.assertTrue(
-        new TimeRange(Long.MIN_VALUE, Long.MAX_VALUE).compareTo(new TimeRange(Long.MIN_VALUE, 2))
-            > 0);
-    Assert.assertTrue(
-        new TimeRange(Long.MIN_VALUE, 1).compareTo(new TimeRange(Long.MIN_VALUE, 0)) > 0);
-    Assert.assertTrue(new TimeRange(0, 3).compareTo(new TimeRange(0, 2)) > 0);
-    Assert.assertTrue(new TimeRange(0, 3).compareTo(new TimeRange(-2, -1)) > 0);
-    Assert.assertTrue(new TimeRange(0, 3).compareTo(new TimeRange(-2, 1)) > 0);
-    Assert.assertTrue(new TimeRange(0, 3).compareTo(new TimeRange(-2, 3)) > 0);
-    Assert.assertTrue(new TimeRange(0, 3).compareTo(new TimeRange(1, 2)) < 0);
-    Assert.assertTrue(new TimeRange(5, 6).compareTo(new TimeRange(5, 6)) == 0);
-  }
-
-  @Test
-  /*
-   * test min is Long.MIN_VALUE
-   */
-  public void intersect8() {
-    TimeRange r1 = new TimeRange(Long.MIN_VALUE, 3);
-    r1.setLeftClose(false);
-    TimeRange r2 = new TimeRange(Long.MIN_VALUE, 5);
-    r2.setLeftClose(false);
-    assertTrue(r1.intersects(r2));
-    assertTrue(r2.intersects(r1));
-  }
-
-  @Test
-  /*
-   * test max is Long.MAX_VALUE
-   */
-  public void intersect9() {
-    TimeRange r1 = new TimeRange(1, Long.MAX_VALUE);
-    r1.setRightClose(false);
-    TimeRange r2 = new TimeRange(3, Long.MAX_VALUE);
-    r2.setRightClose(false);
-    assertTrue(r1.intersects(r2));
-    assertTrue(r2.intersects(r1));
-  }
-
-  @Test
-  /*
-   * test min is Long.MIN_VALUE and max is Long.MAX_VALUE
-   */
-  public void intersect10() {
-    TimeRange r1 = new TimeRange(Long.MIN_VALUE, Long.MAX_VALUE);
-    r1.setLeftClose(false);
-    r1.setRightClose(false);
-    TimeRange r2 = new TimeRange(Long.MIN_VALUE, Long.MAX_VALUE);
-    r2.setLeftClose(false);
-    r2.setRightClose(false);
-    assertTrue(r1.intersects(r2));
-    assertTrue(r2.intersects(r1));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/controller/ChunkLoaderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/controller/ChunkLoaderTest.java
deleted file mode 100644
index 6a45815..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/controller/ChunkLoaderTest.java
+++ /dev/null
@@ -1,67 +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.controller;
-
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorForTest;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.List;
-
-public class ChunkLoaderTest {
-
-  private static final String FILE_PATH = TsFileGeneratorForTest.outputDataFile;
-  private TsFileSequenceReader fileReader;
-
-  @Before
-  public void before() throws IOException {
-    TsFileGeneratorForTest.generateFile(1000000, 1024 * 1024, 10000);
-  }
-
-  @After
-  public void after() throws IOException {
-    fileReader.close();
-    TsFileGeneratorForTest.after();
-  }
-
-  @Test
-  public void test() throws IOException {
-    fileReader = new TsFileSequenceReader(FILE_PATH);
-    MetadataQuerierByFileImpl metadataQuerierByFile = new MetadataQuerierByFileImpl(fileReader);
-    List<IChunkMetadata> chunkMetadataList =
-        metadataQuerierByFile.getChunkMetaDataList(new Path("d2", "s1", true));
-
-    CachedChunkLoaderImpl seriesChunkLoader = new CachedChunkLoaderImpl(fileReader);
-    for (IChunkMetadata chunkMetaData : chunkMetadataList) {
-      Chunk chunk = seriesChunkLoader.loadChunk((ChunkMetadata) chunkMetaData);
-      ChunkHeader chunkHeader = chunk.getHeader();
-      Assert.assertEquals(chunkHeader.getDataSize(), chunk.getData().remaining());
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/controller/IMetadataQuerierByFileImplTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/controller/IMetadataQuerierByFileImplTest.java
deleted file mode 100644
index 52fc8c7..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/controller/IMetadataQuerierByFileImplTest.java
+++ /dev/null
@@ -1,150 +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.controller;
-
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorForTest;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-public class IMetadataQuerierByFileImplTest {
-
-  private static final String FILE_PATH = TsFileGeneratorForTest.outputDataFile;
-  private TsFileSequenceReader reader;
-  private ArrayList<TimeRange> d1s6timeRangeList = new ArrayList<>();
-  private ArrayList<TimeRange> d2s1timeRangeList = new ArrayList<>();
-  private ArrayList<long[]> d1chunkGroupMetaDataOffsetList = new ArrayList<>();
-  private ArrayList<long[]> d2chunkGroupMetaDataOffsetList = new ArrayList<>();
-
-  @Before
-  public void before() throws IOException {
-    TsFileGeneratorForTest.generateFile(10000, 1024, 100);
-    reader = new TsFileSequenceReader(FILE_PATH);
-    List<ChunkMetadata> d1s6List = reader.getChunkMetadataList(new Path("d1", "s6", true));
-    for (ChunkMetadata chunkMetaData : d1s6List) {
-      // get a series of [startTime, endTime] of d1.s6 from the chunkGroupMetaData of
-      // d1
-      d1s6timeRangeList.add(
-          new TimeRange(chunkMetaData.getStartTime(), chunkMetaData.getEndTime()));
-      long[] startEndOffsets = new long[2];
-      startEndOffsets[0] = chunkMetaData.getOffsetOfChunkHeader();
-      startEndOffsets[1] =
-          chunkMetaData.getOffsetOfChunkHeader()
-              + chunkMetaData.getMeasurementUid().getBytes().length
-              + Long.BYTES
-              + Short.BYTES
-              + chunkMetaData.getStatistics().getSerializedSize();
-      d1chunkGroupMetaDataOffsetList.add(startEndOffsets);
-    }
-
-    List<ChunkMetadata> d2s1List = reader.getChunkMetadataList(new Path("d2", "s1", true));
-    for (ChunkMetadata chunkMetaData : d2s1List) {
-      d2s1timeRangeList.add(
-          new TimeRange(chunkMetaData.getStartTime(), chunkMetaData.getEndTime()));
-      long[] startEndOffsets = new long[2];
-      startEndOffsets[0] = chunkMetaData.getOffsetOfChunkHeader();
-      startEndOffsets[1] =
-          chunkMetaData.getOffsetOfChunkHeader()
-              + chunkMetaData.getMeasurementUid().getBytes().length
-              + Long.BYTES
-              + Short.BYTES
-              + chunkMetaData.getStatistics().getSerializedSize();
-      d2chunkGroupMetaDataOffsetList.add(startEndOffsets);
-    }
-  }
-
-  @After
-  public void after() throws IOException {
-    reader.close();
-    TsFileGeneratorForTest.after();
-  }
-
-  @Test
-  public void testEmpty() throws IOException {
-    MetadataQuerierByFileImpl metadataQuerierByFile = new MetadataQuerierByFileImpl(reader);
-
-    ArrayList<Path> paths = new ArrayList<>();
-    paths.add(new Path("d1", "s6", true));
-    paths.add(new Path("d2", "s1", true));
-
-    ArrayList<TimeRange> resTimeRanges =
-        new ArrayList<>(metadataQuerierByFile.convertSpace2TimePartition(paths, 0L, 0L));
-
-    Assert.assertEquals(0, resTimeRanges.size());
-  }
-
-  @Test
-  public void testConvert1() throws IOException {
-    MetadataQuerierByFileImpl metadataQuerierByFile = new MetadataQuerierByFileImpl(reader);
-
-    ArrayList<Path> paths = new ArrayList<>();
-    paths.add(new Path("d1", "s6", true));
-    paths.add(new Path("d2", "s1", true));
-
-    long spacePartitionStartPos = d1chunkGroupMetaDataOffsetList.get(0)[0];
-    long spacePartitionEndPos = d1chunkGroupMetaDataOffsetList.get(1)[1];
-    ArrayList<TimeRange> resTimeRanges =
-        new ArrayList<>(
-            metadataQuerierByFile.convertSpace2TimePartition(
-                paths, spacePartitionStartPos, spacePartitionEndPos));
-
-    ArrayList<TimeRange> unionCandidates = new ArrayList<>();
-    unionCandidates.add(d1s6timeRangeList.get(0));
-    unionCandidates.add(d2s1timeRangeList.get(0));
-    unionCandidates.add(d1s6timeRangeList.get(1));
-    ArrayList<TimeRange> expectedRanges = new ArrayList<>(TimeRange.sortAndMerge(unionCandidates));
-    Assert.assertEquals(expectedRanges.toString(), resTimeRanges.toString());
-  }
-
-  @Test
-  public void testConvert2() throws IOException {
-    MetadataQuerierByFileImpl metadataQuerierByFile = new MetadataQuerierByFileImpl(reader);
-
-    ArrayList<Path> paths = new ArrayList<>();
-    paths.add(new Path("d1", "s6", true));
-    paths.add(new Path("d2", "s1", true));
-
-    long spacePartitionStartPos = d2chunkGroupMetaDataOffsetList.get(0)[0];
-    long spacePartitionEndPos = d2chunkGroupMetaDataOffsetList.get(0)[1];
-    ArrayList<TimeRange> inCandidates = new ArrayList<>();
-    ArrayList<TimeRange> beforeCandidates = new ArrayList<>();
-    ArrayList<TimeRange> resTimeRanges =
-        new ArrayList<>(
-            metadataQuerierByFile.convertSpace2TimePartition(
-                paths, spacePartitionStartPos, spacePartitionEndPos));
-    inCandidates.add(d2s1timeRangeList.get(0));
-    beforeCandidates.add(d1s6timeRangeList.get(0));
-    ArrayList<TimeRange> expectedRanges = new ArrayList<>();
-    for (TimeRange in : inCandidates) {
-      ArrayList<TimeRange> remains = new ArrayList<>(in.getRemains(beforeCandidates));
-      expectedRanges.addAll(remains);
-    }
-    Assert.assertEquals(expectedRanges.toString(), resTimeRanges.toString());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/FilterSerializeTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/FilterSerializeTest.java
deleted file mode 100644
index 3044a2d..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/FilterSerializeTest.java
+++ /dev/null
@@ -1,147 +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.filter;
-
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
-
-import org.junit.Test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.TimeZone;
-import java.util.concurrent.TimeUnit;
-
-import static org.junit.Assert.assertEquals;
-
-public class FilterSerializeTest {
-
-  @Test
-  public void testValueFilter() throws IOException {
-    Filter[] filters =
-        new Filter[] {
-          ValueFilterApi.eq(1),
-          ValueFilterApi.gt(2L),
-          ValueFilterApi.gtEq("filter"),
-          ValueFilterApi.lt(0.1),
-          ValueFilterApi.ltEq(0.01f),
-          FilterFactory.not(ValueFilterApi.eq(true)),
-          ValueFilterApi.notEq(false),
-          ValueFilterApi.notEq(false),
-          ValueFilterApi.in(new HashSet<>(Arrays.asList("a", "b"))),
-          ValueFilterApi.notIn(new HashSet<>(Arrays.asList("c", "d"))),
-          ValueFilterApi.regexp("s.*"),
-          ValueFilterApi.like("s.*"),
-          ValueFilterApi.notRegexp("s.*"),
-          ValueFilterApi.notLike("s.*"),
-          ValueFilterApi.between(1, 100),
-          ValueFilterApi.notBetween(1, 100),
-          ValueFilterApi.isNull(),
-          ValueFilterApi.isNotNull()
-        };
-    for (Filter filter : filters) {
-      validateSerialization(filter);
-    }
-  }
-
-  @Test
-  public void testTimeFilter() throws IOException {
-    Filter[] filters =
-        new Filter[] {
-          TimeFilterApi.eq(1),
-          TimeFilterApi.notEq(7),
-          TimeFilterApi.gt(2),
-          TimeFilterApi.gtEq(3),
-          TimeFilterApi.lt(4),
-          TimeFilterApi.ltEq(5),
-          FilterFactory.not(TimeFilterApi.eq(6)),
-          TimeFilterApi.in(new HashSet<>(Arrays.asList(1L, 2L))),
-          TimeFilterApi.notIn(new HashSet<>(Arrays.asList(3L, 4L))),
-          TimeFilterApi.between(1, 100),
-          TimeFilterApi.notBetween(1, 100)
-        };
-    for (Filter filter : filters) {
-      validateSerialization(filter);
-    }
-  }
-
-  @Test
-  public void testBinaryFilter() throws IOException {
-    Filter[] filters =
-        new Filter[] {
-          FilterFactory.and(TimeFilterApi.eq(1), ValueFilterApi.eq(1)),
-          FilterFactory.or(ValueFilterApi.gt(2L), FilterFactory.not(ValueFilterApi.eq(6)))
-        };
-    for (Filter filter : filters) {
-      validateSerialization(filter);
-    }
-  }
-
-  @Test
-  public void testGroupByFilter() throws IOException {
-    Filter[] filters =
-        new Filter[] {
-          TimeFilterApi.groupBy(1, 2, 3, 4), TimeFilterApi.groupBy(4, 3, 2, 1),
-        };
-    for (Filter filter : filters) {
-      validateSerialization(filter);
-    }
-  }
-
-  @Test
-  public void testGroupByMonthFilter() throws IOException {
-    Filter[] filters =
-        new Filter[] {
-          TimeFilterApi.groupByMonth(
-              3,
-              4,
-              new TimeDuration(0, 1),
-              new TimeDuration(0, 2),
-              TimeZone.getTimeZone("Asia/Shanghai"),
-              TimeUnit.MILLISECONDS),
-          TimeFilterApi.groupByMonth(
-              2,
-              1,
-              new TimeDuration(0, 4),
-              new TimeDuration(0, 3),
-              TimeZone.getTimeZone("Atlantic/Faeroe"),
-              TimeUnit.MILLISECONDS),
-        };
-    for (Filter filter : filters) {
-      validateSerialization(filter);
-    }
-  }
-
-  private void validateSerialization(Filter filter) throws IOException {
-    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-    DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
-    filter.serialize(dataOutputStream);
-
-    ByteBuffer buffer = ByteBuffer.wrap(outputStream.toByteArray());
-    Filter serialized = Filter.deserialize(buffer);
-    assertEquals(filter, serialized);
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/FilterTestUtil.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/FilterTestUtil.java
deleted file mode 100644
index 07f7e9f..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/FilterTestUtil.java
+++ /dev/null
@@ -1,105 +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.filter;
-
-import org.apache.iotdb.tsfile.file.metadata.IMetadata;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.file.metadata.statistics.TimeStatistics;
-
-import java.io.Serializable;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
-public class FilterTestUtil {
-
-  private FilterTestUtil() {
-    // util class
-  }
-
-  public static IMetadata newMetadata(Statistics statistics) {
-    return new IMetadata() {
-      @Override
-      public Statistics getStatistics() {
-        return statistics;
-      }
-
-      @Override
-      public Statistics getTimeStatistics() {
-        return statistics;
-      }
-
-      @Override
-      public Optional<Statistics<? extends Serializable>> getMeasurementStatistics(
-          int measurementIndex) {
-        return Optional.ofNullable(statistics);
-      }
-
-      @Override
-      public boolean hasNullValue(int measurementIndex) {
-        return false;
-      }
-    };
-  }
-
-  public static IMetadata newAlignedMetadata(
-      TimeStatistics timeStatistics, Statistics<? extends Serializable> valueStatistics) {
-    return new AlignedMetadata(timeStatistics, Collections.singletonList(valueStatistics));
-  }
-
-  private static class AlignedMetadata implements IMetadata {
-
-    private final TimeStatistics timeStatistics;
-    private final List<Statistics<? extends Serializable>> statisticsList;
-
-    public AlignedMetadata(
-        TimeStatistics timeStatistics, List<Statistics<? extends Serializable>> statisticsList) {
-      this.timeStatistics = timeStatistics;
-      this.statisticsList = statisticsList;
-    }
-
-    @Override
-    public Statistics<? extends Serializable> getStatistics() {
-      if (statisticsList.size() == 1 && statisticsList.get(0) != null) {
-        return statisticsList.get(0);
-      }
-      return timeStatistics;
-    }
-
-    @Override
-    public Statistics<? extends Serializable> getTimeStatistics() {
-      return timeStatistics;
-    }
-
-    @Override
-    public Optional<Statistics<? extends Serializable>> getMeasurementStatistics(
-        int measurementIndex) {
-      return Optional.ofNullable(statisticsList.get(measurementIndex));
-    }
-
-    @Override
-    public boolean hasNullValue(int measurementIndex) {
-      long rowCount = getTimeStatistics().getCount();
-      Optional<Statistics<? extends Serializable>> statistics =
-          getMeasurementStatistics(measurementIndex);
-      return statistics.map(stat -> stat.hasNullValue(rowCount)).orElse(true);
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/GroupByFilterTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/GroupByFilterTest.java
deleted file mode 100644
index a0d6341..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/GroupByFilterTest.java
+++ /dev/null
@@ -1,127 +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.filter;
-
-import org.apache.iotdb.tsfile.file.metadata.IMetadata;
-import org.apache.iotdb.tsfile.file.metadata.statistics.LongStatistics;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.operator.GroupByFilter;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.apache.iotdb.tsfile.read.filter.FilterTestUtil.newMetadata;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-public class GroupByFilterTest {
-
-  private GroupByFilter groupByFilter;
-
-  @Before
-  public void setUp() {
-    groupByFilter = TimeFilterApi.groupBy(8, 8 + 30 * 24 + 3 + 6, 3, 24);
-  }
-
-  @Test
-  public void TestStatisticsSatisfy() {
-
-    LongStatistics statistics = new LongStatistics();
-    statistics.setStartTime(0);
-    statistics.setEndTime(7);
-    IMetadata metadata = newMetadata(statistics);
-
-    assertTrue(groupByFilter.canSkip(metadata));
-
-    statistics.setStartTime(8 + 30 * 24 + 3 + 6 + 1);
-    statistics.setEndTime(8 + 30 * 24 + 3 + 6 + 2);
-    assertTrue(groupByFilter.canSkip(metadata));
-
-    statistics.setStartTime(0);
-    statistics.setEndTime(9);
-    assertFalse(groupByFilter.canSkip(metadata));
-
-    statistics.setStartTime(32);
-    statistics.setEndTime(34);
-    assertFalse(groupByFilter.canSkip(metadata));
-
-    statistics.setStartTime(32);
-    statistics.setEndTime(36);
-    assertFalse(groupByFilter.canSkip(metadata));
-
-    statistics.setStartTime(36);
-    statistics.setEndTime(37);
-    assertTrue(groupByFilter.canSkip(metadata));
-
-    statistics.setStartTime(36);
-    statistics.setEndTime(55);
-    assertTrue(groupByFilter.canSkip(metadata));
-
-    statistics.setStartTime(35);
-    statistics.setEndTime(56);
-    assertFalse(groupByFilter.canSkip(metadata));
-
-    statistics.setStartTime(35);
-    statistics.setEndTime(58);
-    assertFalse(groupByFilter.canSkip(metadata));
-
-    statistics.setStartTime(8 + 30 * 24 + 3 + 1);
-    statistics.setEndTime(8 + 30 * 24 + 5);
-    assertTrue(groupByFilter.canSkip(metadata));
-
-    statistics.setStartTime(8 + 30 * 24 + 3 + 1);
-    statistics.setEndTime(8 + 30 * 24 + 8);
-    assertTrue(groupByFilter.canSkip(metadata));
-  }
-
-  @Test
-  public void TestSatisfy() {
-
-    assertFalse(groupByFilter.satisfy(0, null));
-
-    assertFalse(groupByFilter.satisfy(7, null));
-
-    assertFalse(groupByFilter.satisfy(12, null));
-
-    assertFalse(groupByFilter.satisfy(8 + 30 * 24 + 3 + 6, null));
-
-    assertTrue(groupByFilter.satisfy(8, null));
-
-    assertTrue(groupByFilter.satisfy(9, null));
-
-    assertFalse(groupByFilter.satisfy(11, null));
-  }
-
-  @Test
-  public void TestContainStartEndTime() {
-
-    assertTrue(groupByFilter.containStartEndTime(8, 9));
-
-    assertFalse(groupByFilter.containStartEndTime(8, 13));
-
-    assertFalse(groupByFilter.containStartEndTime(0, 3));
-
-    assertFalse(groupByFilter.containStartEndTime(0, 9));
-
-    assertFalse(groupByFilter.containStartEndTime(7, 8 + 30 * 24 + 3 + 6 + 1));
-
-    assertFalse(
-        groupByFilter.containStartEndTime(8 + 30 * 24 + 3 + 6 + 1, 8 + 30 * 24 + 3 + 6 + 2));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/GroupByMonthFilterTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/GroupByMonthFilterTest.java
deleted file mode 100644
index 84300c4..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/GroupByMonthFilterTest.java
+++ /dev/null
@@ -1,278 +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.filter;
-
-import org.apache.iotdb.tsfile.file.metadata.IMetadata;
-import org.apache.iotdb.tsfile.file.metadata.statistics.LongStatistics;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.operator.GroupByMonthFilter;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
-
-import org.junit.Test;
-
-import java.util.TimeZone;
-import java.util.concurrent.TimeUnit;
-
-import static org.apache.iotdb.tsfile.read.filter.FilterTestUtil.newMetadata;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-public class GroupByMonthFilterTest {
-
-  // The number of milliseconds in 30 days
-  private final long MS_TO_DAY = 86400_000L;
-  // 1970-12-31 23:59:59
-  private final long END_TIME = 31507199000L;
-
-  /** Test filter with slidingStep = 2 month, and timeInterval = 1 month */
-  @Test
-  public void TestSatisfy1() {
-    GroupByMonthFilter filter =
-        TimeFilterApi.groupByMonth(
-            0,
-            END_TIME,
-            new TimeDuration(1, 0),
-            new TimeDuration(2, 0),
-            TimeZone.getTimeZone("+08:00"),
-            TimeUnit.MILLISECONDS);
-
-    // 1970-01-01 08:00:00, timezone = GMT+08:00
-    assertTrue(filter.satisfy(0, null));
-
-    // 1970-02-01 07:59:59
-    assertTrue(filter.satisfy(2678399000L, null));
-
-    // 1970-02-01 08:00:00
-    assertFalse(filter.satisfy(2678400000L, null));
-
-    // 1970-03-01 07:59:59
-    assertFalse(filter.satisfy(5097599000L, null));
-
-    // 1970-03-01 08:00:00
-    assertTrue(filter.satisfy(5097600000L, null));
-
-    // 1970-04-05 00:00:00
-    assertFalse(filter.satisfy(8092800000L, null));
-
-    // 1970-07-01 07:59:59
-    assertFalse(filter.satisfy(15638399000L, null));
-
-    // 1970-11-30 23:59:59
-    assertTrue(filter.satisfy(28828799000L, null));
-
-    // 1970-12-31 23:59:59
-    assertFalse(filter.satisfy(31507199000L, null));
-  }
-
-  /** Test filter with slidingStep = 1 month, and timeInterval = 1 month */
-  @Test
-  public void TestSatisfy2() {
-    GroupByMonthFilter filter =
-        TimeFilterApi.groupByMonth(
-            0,
-            END_TIME,
-            new TimeDuration(1, 0),
-            new TimeDuration(1, 0),
-            TimeZone.getTimeZone("+08:00"),
-            TimeUnit.MILLISECONDS);
-
-    // 1970-01-01 08:00:00, timezone = GMT+08:00
-    assertTrue(filter.satisfy(0, null));
-
-    // 1970-02-01 07:59:59
-    assertTrue(filter.satisfy(2678399000L, null));
-
-    // 1970-02-01 08:00:00
-    assertTrue(filter.satisfy(2678400000L, null));
-
-    // 1970-03-01 07:59:59
-    assertTrue(filter.satisfy(5097599000L, null));
-
-    // 1970-03-01 08:00:00
-    assertTrue(filter.satisfy(5097600000L, null));
-
-    // 1970-12-30 08:00:00
-    assertTrue(filter.satisfy(31363200000L, null));
-
-    // 1970-12-31 23:59:58
-    assertTrue(filter.satisfy(31507198000L, null));
-
-    // 1970-12-31 23:59:59
-    assertFalse(filter.satisfy(31507199000L, null));
-  }
-
-  /** Test filter with slidingStep = 1 month, and timeInterval = 1 day */
-  @Test
-  public void TestSatisfy3() {
-    GroupByMonthFilter filter =
-        TimeFilterApi.groupByMonth(
-            0,
-            END_TIME,
-            new TimeDuration(0, MS_TO_DAY),
-            new TimeDuration(1, 0),
-            TimeZone.getTimeZone("+08:00"),
-            TimeUnit.MILLISECONDS);
-
-    // 1970-01-01 08:00:00, timezone = GMT+08:00
-    assertTrue(filter.satisfy(0, null));
-
-    // 1970-01-02 07:59:59
-    assertTrue(filter.satisfy(86399000L, null));
-
-    // 1970-01-02 08:00:00
-    assertFalse(filter.satisfy(86400000L, null));
-
-    // 1970-02-01 07:59:59
-    assertFalse(filter.satisfy(2678399000L, null));
-
-    // 1970-02-01 08:00:00
-    assertTrue(filter.satisfy(2678400000L, null));
-
-    // 1970-03-01 08:00:00
-    assertTrue(filter.satisfy(5097600000L, null));
-
-    // 1970-12-01 08:00:00
-    assertTrue(filter.satisfy(28857600000L, null));
-
-    // 1970-12-31 23:59:59
-    assertFalse(filter.satisfy(31507199000L, null));
-  }
-
-  /** Test filter with slidingStep = 100 days, and timeInterval = 1 mo */
-  @Test
-  public void TestSatisfy4() {
-    GroupByMonthFilter filter =
-        TimeFilterApi.groupByMonth(
-            0,
-            END_TIME,
-            new TimeDuration(1, 0),
-            new TimeDuration(0, MS_TO_DAY * 100),
-            TimeZone.getTimeZone("+08:00"),
-            TimeUnit.MILLISECONDS);
-
-    // 1970-01-01 08:00:00, timezone = GMT+08:00
-    assertTrue(filter.satisfy(0, null));
-
-    // 1970-02-01 07:59:59
-    assertTrue(filter.satisfy(2678399000L, null));
-
-    // 1970-03-01 08:00:00
-    assertFalse(filter.satisfy(5097600000L, null));
-
-    // 1970-05-01 08:00:00
-    assertTrue(filter.satisfy(10368000000L, null));
-  }
-
-  /** Test filter with slidingStep = 1 month, and timeInterval = 1 day */
-  @Test
-  public void TestSatisfyStartEndTime() {
-    GroupByMonthFilter filter =
-        TimeFilterApi.groupByMonth(
-            0,
-            END_TIME,
-            new TimeDuration(0, MS_TO_DAY),
-            new TimeDuration(1, 0),
-            TimeZone.getTimeZone("+08:00"),
-            TimeUnit.MILLISECONDS);
-
-    // 1970-01-01 08:00:00 - 1970-01-02 08:00:00, timezone = GMT+08:00
-    LongStatistics statistics = new LongStatistics();
-    statistics.setStartTime(0);
-    statistics.setEndTime(MS_TO_DAY);
-    IMetadata metadata = newMetadata(statistics);
-
-    assertFalse(filter.canSkip(metadata));
-
-    // 1970-01-01 20:00:00 - 1970-01-02 08:00:00
-    statistics.setStartTime(MS_TO_DAY / 2);
-    statistics.setEndTime(MS_TO_DAY);
-    assertFalse(filter.canSkip(metadata));
-
-    // 1970-01-01 20:00:00 - 1970-01-03 08:00:00
-    statistics.setStartTime(MS_TO_DAY / 2);
-    statistics.setEndTime(MS_TO_DAY * 2);
-    assertFalse(filter.canSkip(metadata));
-
-    // 1970-01-02 08:00:00 - 1970-01-03 08:00:00
-    statistics.setStartTime(MS_TO_DAY);
-    statistics.setEndTime(MS_TO_DAY * 2);
-    assertTrue(filter.canSkip(metadata));
-
-    // 1970-02-28 08:00:00 - 1970-03-01 07:59:59
-    statistics.setStartTime(5011200000L);
-    statistics.setEndTime(5097599000L);
-    assertTrue(filter.canSkip(metadata));
-
-    // 1970-03-01 09:00:00 - 1970-03-01 10:00:00
-    statistics.setStartTime(5101200000L);
-    statistics.setEndTime(5104800000L);
-    assertFalse(filter.canSkip(metadata));
-
-    // 1970-05-01 07:00:00 - 1970-05-01 08:00:00
-    statistics.setStartTime(10364400000L);
-    statistics.setEndTime(10368000000L);
-    assertFalse(filter.canSkip(metadata));
-
-    // 1970-01-02 07:59:59
-    assertTrue(filter.satisfy(86399000L, null));
-  }
-
-  /** Test filter with slidingStep = 1 month, and timeInterval = 1 day */
-  @Test
-  public void TestContainStartEndTime() {
-    GroupByMonthFilter filter =
-        TimeFilterApi.groupByMonth(
-            0,
-            END_TIME,
-            new TimeDuration(0, MS_TO_DAY),
-            new TimeDuration(1, 0),
-            TimeZone.getTimeZone("+08:00"),
-            TimeUnit.MILLISECONDS);
-
-    // 1970-01-01 08:00:00 - 1970-01-02 08:00:00, timezone = GMT+08:00
-    assertFalse(filter.containStartEndTime(0, MS_TO_DAY));
-
-    // 1970-01-01 08:00:00 - 1970-01-02 07:59:59
-    assertTrue(filter.containStartEndTime(0, MS_TO_DAY - 1000));
-
-    // 1970-02-01 07:59:59 - 1970-02-02 07:59:59
-    assertFalse(filter.containStartEndTime(2678399000L, 2764799000L));
-
-    // 1970-02-01 08:00:00 - 1970-02-02 07:59:59
-    assertTrue(filter.containStartEndTime(2678400000L, 2764799000L));
-
-    // 1970-02-01 08:00:00 - 1970-02-02 08:00:00
-    assertFalse(filter.containStartEndTime(2678400000L, 2764800000L));
-
-    // 1970-02-10 08:00:00 - 1970-02-11 08:00:00
-    assertFalse(filter.containStartEndTime(3456000000L, 3542400000L));
-
-    // 1970-10-01 10:00:00 - 1970-10-01 12:00:00
-    assertTrue(filter.containStartEndTime(23594400000L, 23601600000L));
-
-    // 1970-05-01 08:00:00 - 1970-05-01 10:00:00
-    assertTrue(filter.containStartEndTime(10368000000L, 10375200000L));
-
-    // 1970-03-01 08:00:00 - 1970-05-01 10:00:00
-    assertFalse(filter.containStartEndTime(5097600000L, 10375200000L));
-
-    // 1970-01-02 07:59:59
-    assertTrue(filter.satisfy(86399000L, null));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/IExpressionOptimizerTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/IExpressionOptimizerTest.java
deleted file mode 100644
index e388184..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/IExpressionOptimizerTest.java
+++ /dev/null
@@ -1,275 +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.filter;
-
-import org.apache.iotdb.tsfile.exception.filter.QueryFilterOptimizationException;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.expression.util.ExpressionOptimizer;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class IExpressionOptimizerTest {
-
-  private final ExpressionOptimizer expressionOptimizer = ExpressionOptimizer.getInstance();
-  private List<Path> selectedSeries;
-
-  @Before
-  public void before() {
-    selectedSeries = new ArrayList<>();
-    selectedSeries.add(new Path("d1", "s1", true));
-    selectedSeries.add(new Path("d2", "s1", true));
-    selectedSeries.add(new Path("d1", "s2", true));
-    selectedSeries.add(new Path("d2", "s2", true));
-  }
-
-  @After
-  public void after() {
-    selectedSeries.clear();
-  }
-
-  @Test
-  public void testTimeOnly() {
-    try {
-      Filter timeFilter = TimeFilterApi.lt(100L);
-      IExpression expression = new GlobalTimeExpression(timeFilter);
-      System.out.println(expressionOptimizer.optimize(expression, selectedSeries));
-
-      BinaryExpression.or(
-          BinaryExpression.and(
-              new GlobalTimeExpression(TimeFilterApi.lt(50L)),
-              new GlobalTimeExpression(TimeFilterApi.gt(10L))),
-          new GlobalTimeExpression(TimeFilterApi.gt(200L)));
-
-    } catch (QueryFilterOptimizationException e) {
-      Assert.fail();
-    }
-  }
-
-  @Test
-  public void testSeriesOnly() {
-    try {
-      Filter filter1 =
-          FilterFactory.and(
-              FilterFactory.or(ValueFilterApi.gt(100L), ValueFilterApi.lt(50L)),
-              TimeFilterApi.gt(1400L));
-      SingleSeriesExpression singleSeriesExp1 =
-          new SingleSeriesExpression(new Path("d2", "s1", true), filter1);
-
-      Filter filter2 =
-          FilterFactory.and(
-              FilterFactory.or(ValueFilterApi.gt(100.5f), ValueFilterApi.lt(50.6f)),
-              TimeFilterApi.gt(1400L));
-      SingleSeriesExpression singleSeriesExp2 =
-          new SingleSeriesExpression(new Path("d1", "s2", true), filter2);
-
-      Filter filter3 =
-          FilterFactory.or(
-              FilterFactory.or(ValueFilterApi.gt(100.5), ValueFilterApi.lt(50.6)),
-              TimeFilterApi.gt(1400L));
-      SingleSeriesExpression singleSeriesExp3 =
-          new SingleSeriesExpression(new Path("d2", "s2", true), filter3);
-
-      IExpression expression =
-          BinaryExpression.and(
-              BinaryExpression.or(singleSeriesExp1, singleSeriesExp2), singleSeriesExp3);
-      Assert.assertEquals(
-          expression.toString(),
-          expressionOptimizer.optimize(expression, selectedSeries).toString());
-
-    } catch (QueryFilterOptimizationException e) {
-      Assert.fail();
-    }
-  }
-
-  @Test
-  public void testOneTimeAndSeries() {
-    Filter filter1 = FilterFactory.or(ValueFilterApi.gt(100L), ValueFilterApi.lt(50L));
-    SingleSeriesExpression singleSeriesExp1 =
-        new SingleSeriesExpression(new Path("d2", "s1", true), filter1);
-
-    Filter filter2 = FilterFactory.or(ValueFilterApi.gt(100.5f), ValueFilterApi.lt(50.6f));
-    SingleSeriesExpression singleSeriesExp2 =
-        new SingleSeriesExpression(new Path("d1", "s2", true), filter2);
-
-    Filter timeFilter = TimeFilterApi.lt(14001234L);
-    IExpression globalTimeFilter = new GlobalTimeExpression(timeFilter);
-    IExpression expression =
-        BinaryExpression.and(
-            BinaryExpression.or(singleSeriesExp1, singleSeriesExp2), globalTimeFilter);
-    try {
-      String rightRet =
-          "[[d2.s1:((measurements[0] > 100 || measurements[0] < 50) && time < 14001234)] "
-              + "|| [d1.s2:((measurements[0] > 100.5 || measurements[0] < 50.6) "
-              + "&& time < 14001234)]]";
-      IExpression regularFilter = expressionOptimizer.optimize(expression, selectedSeries);
-      Assert.assertEquals(rightRet, regularFilter.toString());
-    } catch (QueryFilterOptimizationException e) {
-      Assert.fail();
-    }
-  }
-
-  @Test
-  public void testSeriesAndGlobalOrGlobal() {
-    Filter filter1 = FilterFactory.or(ValueFilterApi.gt(100L), ValueFilterApi.lt(50L));
-    SingleSeriesExpression singleSeriesExp1 =
-        new SingleSeriesExpression(new Path("d2", "s1", true), filter1);
-
-    Filter timeFilter = TimeFilterApi.lt(14001234L);
-    IExpression globalTimeFilter = new GlobalTimeExpression(timeFilter);
-
-    Filter timeFilter2 = TimeFilterApi.gt(1L);
-    IExpression globalTimeFilter2 = new GlobalTimeExpression(timeFilter2);
-
-    IExpression expression =
-        BinaryExpression.or(
-            BinaryExpression.and(singleSeriesExp1, globalTimeFilter), globalTimeFilter2);
-    try {
-      String rightRet =
-          "[[[[d1.s1:time > 1] || "
-              + "[d2.s1:(time > 1 || ((measurements[0] > 100 || measurements[0] < 50) "
-              + "&& time < 14001234))]] || [d1.s2:time > 1]] || [d2.s2:time > 1]]";
-      IExpression regularFilter = expressionOptimizer.optimize(expression, selectedSeries);
-      Assert.assertEquals(rightRet, regularFilter.toString());
-    } catch (QueryFilterOptimizationException e) {
-      Assert.fail();
-    }
-  }
-
-  @Test
-  public void testSeriesAndGlobal() {
-    Filter filter1 = FilterFactory.or(ValueFilterApi.gt(100L), ValueFilterApi.lt(50L));
-    SingleSeriesExpression singleSeriesExp1 =
-        new SingleSeriesExpression(new Path("d2", "s1", true), filter1);
-
-    Filter timeFilter = TimeFilterApi.lt(14001234L);
-    IExpression globalTimeFilter = new GlobalTimeExpression(timeFilter);
-
-    IExpression expression = BinaryExpression.and(singleSeriesExp1, globalTimeFilter);
-
-    try {
-      String rightRet =
-          "[d2.s1:((measurements[0] > 100 || measurements[0] < 50) && time < 14001234)]";
-      IExpression regularFilter = expressionOptimizer.optimize(expression, selectedSeries);
-      Assert.assertEquals(rightRet, regularFilter.toString());
-    } catch (QueryFilterOptimizationException e) {
-      Assert.fail();
-    }
-  }
-
-  @Test
-  public void testOneTimeOrSeries() {
-    Filter filter1 = FilterFactory.or(ValueFilterApi.gt(100L), ValueFilterApi.lt(50L));
-    SingleSeriesExpression singleSeriesExp1 =
-        new SingleSeriesExpression(new Path("d2", "s1", true), filter1);
-
-    Filter filter2 = FilterFactory.or(ValueFilterApi.gt(100.5f), ValueFilterApi.lt(50.6f));
-    SingleSeriesExpression singleSeriesExp2 =
-        new SingleSeriesExpression(new Path("d1", "s2", true), filter2);
-
-    Filter timeFilter = TimeFilterApi.lt(14001234L);
-    IExpression globalTimeFilter = new GlobalTimeExpression(timeFilter);
-    IExpression expression =
-        BinaryExpression.or(
-            BinaryExpression.or(singleSeriesExp1, singleSeriesExp2), globalTimeFilter);
-
-    try {
-      String rightRet =
-          "[[[[d1.s1:time < 14001234] "
-              + "|| [d2.s1:(time < 14001234 || "
-              + "(measurements[0] > 100 || measurements[0] < 50))]] "
-              + "|| [d1.s2:(time < 14001234 || "
-              + "(measurements[0] > 100.5 || measurements[0] < 50.6))]] "
-              + "|| [d2.s2:time < 14001234]]";
-      IExpression regularFilter = expressionOptimizer.optimize(expression, selectedSeries);
-      Assert.assertEquals(rightRet, regularFilter.toString());
-    } catch (QueryFilterOptimizationException e) {
-      Assert.fail();
-    }
-  }
-
-  @Test
-  public void testTwoTimeCombine() {
-    Filter filter1 = FilterFactory.or(ValueFilterApi.gt(100L), ValueFilterApi.lt(50L));
-    SingleSeriesExpression singleSeriesExp1 =
-        new SingleSeriesExpression(new Path("d2", "s1", true), filter1);
-
-    Filter filter2 = FilterFactory.or(ValueFilterApi.gt(100.5f), ValueFilterApi.lt(50.6f));
-    SingleSeriesExpression singleSeriesExp2 =
-        new SingleSeriesExpression(new Path("d1", "s2", true), filter2);
-
-    IExpression globalTimeFilter1 = new GlobalTimeExpression(TimeFilterApi.lt(14001234L));
-    IExpression globalTimeFilter2 = new GlobalTimeExpression(TimeFilterApi.gt(14001000L));
-    IExpression expression =
-        BinaryExpression.or(
-            BinaryExpression.or(singleSeriesExp1, singleSeriesExp2),
-            BinaryExpression.and(globalTimeFilter1, globalTimeFilter2));
-
-    try {
-      String rightRet =
-          "[[[[d1.s1:(time < 14001234 && time > 14001000)] "
-              + "|| [d2.s1:((time < 14001234 && time > 14001000) "
-              + "|| (measurements[0] > 100 || measurements[0] < 50))]] "
-              + "|| [d1.s2:((time < 14001234 && time > 14001000) "
-              + "|| (measurements[0] > 100.5 || measurements[0] < 50.6))]] "
-              + "|| [d2.s2:(time < 14001234 && time > 14001000)]]";
-      IExpression regularFilter = expressionOptimizer.optimize(expression, selectedSeries);
-      Assert.assertEquals(rightRet, regularFilter.toString());
-    } catch (QueryFilterOptimizationException e) {
-      Assert.fail();
-    }
-
-    IExpression expression2 =
-        BinaryExpression.and(
-            BinaryExpression.or(singleSeriesExp1, singleSeriesExp2),
-            BinaryExpression.and(globalTimeFilter1, globalTimeFilter2));
-
-    try {
-      String rightRet2 =
-          "[[d2.s1:((measurements[0] > 100 || measurements[0] < 50) "
-              + "&& (time < 14001234 && time > 14001000))] || "
-              + "[d1.s2:((measurements[0] > 100.5 || measurements[0] < 50.6) "
-              + "&& (time < 14001234 && time > 14001000))]]";
-      IExpression regularFilter2 = expressionOptimizer.optimize(expression2, selectedSeries);
-      Assert.assertEquals(rightRet2, regularFilter2.toString());
-    } catch (QueryFilterOptimizationException e) {
-      Assert.fail();
-    }
-
-    IExpression expression3 = BinaryExpression.or(expression2, expression);
-    try {
-      expressionOptimizer.optimize(expression3, selectedSeries);
-    } catch (QueryFilterOptimizationException e) {
-      Assert.fail();
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/MinTimeMaxTimeFilterTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/MinTimeMaxTimeFilterTest.java
deleted file mode 100644
index c0cd9dd..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/MinTimeMaxTimeFilterTest.java
+++ /dev/null
@@ -1,209 +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.filter;
-
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.apache.iotdb.tsfile.read.filter.operator.Not.CONTAIN_NOT_ERR_MSG;
-import static org.junit.Assert.fail;
-
-public class MinTimeMaxTimeFilterTest {
-
-  long minTime = 100;
-  long maxTime = 200;
-
-  @Test
-  public void testEq() {
-    Filter timeEq = TimeFilterApi.eq(10L);
-    Assert.assertFalse(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(timeEq.containStartEndTime(minTime, maxTime));
-
-    timeEq = TimeFilterApi.eq(100L);
-    Assert.assertTrue(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertTrue(timeEq.containStartEndTime(minTime, minTime));
-
-    timeEq = TimeFilterApi.eq(150L);
-    Assert.assertTrue(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(timeEq.containStartEndTime(minTime, maxTime));
-
-    timeEq = TimeFilterApi.eq(200L);
-    Assert.assertTrue(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(timeEq.containStartEndTime(minTime, maxTime));
-
-    timeEq = TimeFilterApi.eq(300L);
-    Assert.assertFalse(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(timeEq.containStartEndTime(minTime, maxTime));
-
-    Filter valueEq = ValueFilterApi.eq(100);
-    Assert.assertTrue(valueEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertTrue(valueEq.satisfyStartEndTime(minTime, maxTime));
-  }
-
-  @Test
-  public void testGt() {
-    Filter timeEq = TimeFilterApi.gt(10L);
-    Assert.assertTrue(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertTrue(timeEq.containStartEndTime(minTime, maxTime));
-
-    timeEq = TimeFilterApi.gt(100L);
-    Assert.assertTrue(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(timeEq.containStartEndTime(minTime, maxTime));
-
-    timeEq = TimeFilterApi.gt(200L);
-    Assert.assertFalse(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(timeEq.containStartEndTime(minTime, maxTime));
-
-    timeEq = TimeFilterApi.gt(300L);
-    Assert.assertFalse(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(timeEq.containStartEndTime(minTime, maxTime));
-
-    Filter valueEq = ValueFilterApi.gt(100);
-    Assert.assertTrue(valueEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(valueEq.containStartEndTime(minTime, maxTime));
-  }
-
-  @Test
-  public void testGtEq() {
-    Filter timeEq = TimeFilterApi.gtEq(10L);
-    Assert.assertTrue(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertTrue(timeEq.containStartEndTime(minTime, maxTime));
-
-    timeEq = TimeFilterApi.gtEq(100L);
-    Assert.assertTrue(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertTrue(timeEq.containStartEndTime(minTime, maxTime));
-
-    timeEq = TimeFilterApi.gtEq(200L);
-    Assert.assertTrue(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(timeEq.containStartEndTime(minTime, maxTime));
-
-    timeEq = TimeFilterApi.gtEq(300L);
-    Assert.assertFalse(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(timeEq.containStartEndTime(minTime, maxTime));
-
-    Filter valueEq = ValueFilterApi.gtEq(100);
-    Assert.assertTrue(valueEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(valueEq.containStartEndTime(minTime, maxTime));
-
-    valueEq = ValueFilterApi.gtEq(150);
-    Assert.assertTrue(valueEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(valueEq.containStartEndTime(minTime, maxTime));
-  }
-
-  @Test
-  public void testLt() {
-    Filter timeEq = TimeFilterApi.lt(10L);
-    Assert.assertFalse(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(timeEq.containStartEndTime(minTime, maxTime));
-
-    timeEq = TimeFilterApi.lt(100L);
-    Assert.assertFalse(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(timeEq.containStartEndTime(minTime, maxTime));
-
-    timeEq = TimeFilterApi.lt(200L);
-    Assert.assertTrue(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(timeEq.containStartEndTime(minTime, maxTime));
-
-    timeEq = TimeFilterApi.lt(300L);
-    Assert.assertTrue(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertTrue(timeEq.containStartEndTime(minTime, maxTime));
-
-    Filter valueEq = ValueFilterApi.lt(100);
-    Assert.assertTrue(valueEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(valueEq.containStartEndTime(minTime, maxTime));
-  }
-
-  @Test
-  public void testLtEq() {
-    Filter timeEq = TimeFilterApi.ltEq(10L);
-    Assert.assertFalse(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(timeEq.containStartEndTime(minTime, maxTime));
-
-    timeEq = TimeFilterApi.ltEq(100L);
-    Assert.assertTrue(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(timeEq.containStartEndTime(minTime, maxTime));
-
-    timeEq = TimeFilterApi.ltEq(200L);
-    Assert.assertTrue(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertTrue(timeEq.containStartEndTime(minTime, maxTime));
-
-    timeEq = TimeFilterApi.ltEq(300L);
-    Assert.assertTrue(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertTrue(timeEq.containStartEndTime(minTime, maxTime));
-
-    Filter valueEq = ValueFilterApi.ltEq(100);
-    Assert.assertTrue(valueEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(valueEq.containStartEndTime(minTime, maxTime));
-  }
-
-  @Test
-  public void testAnd() {
-    Filter andFilter = FilterFactory.and(TimeFilterApi.gt(10L), TimeFilterApi.lt(50));
-    Assert.assertFalse(andFilter.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(andFilter.containStartEndTime(minTime, maxTime));
-
-    andFilter = FilterFactory.and(TimeFilterApi.gt(100L), TimeFilterApi.lt(200));
-    Assert.assertTrue(andFilter.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertFalse(andFilter.containStartEndTime(minTime, maxTime));
-
-    andFilter = FilterFactory.and(TimeFilterApi.gt(99L), TimeFilterApi.lt(201));
-    Assert.assertTrue(andFilter.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertTrue(andFilter.containStartEndTime(minTime, maxTime));
-  }
-
-  @Test
-  public void testOr() {
-    Filter orFilter = FilterFactory.or(TimeFilterApi.gt(10L), TimeFilterApi.lt(50));
-    Assert.assertTrue(orFilter.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertTrue(orFilter.containStartEndTime(minTime, maxTime));
-  }
-
-  @Test
-  public void testNotEq() {
-    Filter timeEq = TimeFilterApi.notEq(10L);
-    Assert.assertTrue(timeEq.satisfyStartEndTime(minTime, maxTime));
-    Assert.assertTrue(timeEq.satisfyStartEndTime(minTime, maxTime));
-
-    long startTime = 10, endTime = 10;
-    Assert.assertFalse(timeEq.satisfyStartEndTime(startTime, endTime));
-    Assert.assertFalse(timeEq.containStartEndTime(5, 50));
-  }
-
-  @Test
-  public void testNot() {
-    Filter not = FilterFactory.not(TimeFilterApi.ltEq(10L));
-    try {
-      not.satisfyStartEndTime(minTime, maxTime);
-      fail();
-    } catch (Exception e) {
-      Assert.assertTrue(e.getMessage().contains(CONTAIN_NOT_ERR_MSG));
-    }
-    try {
-      not.containStartEndTime(minTime, maxTime);
-      fail();
-    } catch (Exception e) {
-      Assert.assertTrue(e.getMessage().contains(CONTAIN_NOT_ERR_MSG));
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/OperatorTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/OperatorTest.java
deleted file mode 100644
index cdffbb8..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/OperatorTest.java
+++ /dev/null
@@ -1,176 +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.filter;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.utils.Binary;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.apache.iotdb.tsfile.read.filter.operator.ValueFilterOperators.CANNOT_PUSH_DOWN_MSG;
-
-public class OperatorTest {
-
-  private static final long TESTED_TIMESTAMP = 1513585371L;
-
-  @Test
-  public void testEq() {
-    Filter timeEq = TimeFilterApi.eq(100L);
-    Assert.assertTrue(timeEq.satisfy(100, 100));
-    Assert.assertFalse(timeEq.satisfy(101, 100));
-
-    Filter filter2 = FilterFactory.and(TimeFilterApi.eq(100L), ValueFilterApi.eq(50));
-    Assert.assertTrue(filter2.satisfy(100, 50));
-    Assert.assertFalse(filter2.satisfy(100, 51));
-
-    Filter filter3 = ValueFilterApi.eq(true);
-    Assert.assertTrue(filter3.satisfy(100, true));
-    Assert.assertFalse(filter3.satisfy(100, false));
-  }
-
-  @Test
-  public void testIsNull() {
-    Filter isNullFilter = ValueFilterApi.isNull(0);
-    try {
-      isNullFilter.satisfyRow(100, new Object[] {null});
-      Assert.fail();
-    } catch (IllegalArgumentException e) {
-      Assert.assertTrue(e.getMessage().contains(CANNOT_PUSH_DOWN_MSG));
-    }
-  }
-
-  @Test
-  public void testGt() {
-    Filter timeGt = TimeFilterApi.gt(TESTED_TIMESTAMP);
-    Assert.assertTrue(timeGt.satisfy(TESTED_TIMESTAMP + 1, 100));
-    Assert.assertFalse(timeGt.satisfy(TESTED_TIMESTAMP, 100));
-    Assert.assertFalse(timeGt.satisfy(TESTED_TIMESTAMP - 1, 100));
-
-    Filter valueGt = ValueFilterApi.gt(0.01f);
-    Assert.assertTrue(valueGt.satisfy(TESTED_TIMESTAMP, 0.02f));
-    Assert.assertFalse(valueGt.satisfy(TESTED_TIMESTAMP, 0.01f));
-    Assert.assertFalse(valueGt.satisfy(TESTED_TIMESTAMP, -0.01f));
-
-    Filter binaryFilter = ValueFilterApi.gt(new Binary("test1", TSFileConfig.STRING_CHARSET));
-    Assert.assertTrue(
-        binaryFilter.satisfy(TESTED_TIMESTAMP, new Binary("test2", TSFileConfig.STRING_CHARSET)));
-    Assert.assertFalse(
-        binaryFilter.satisfy(TESTED_TIMESTAMP, new Binary("test0", TSFileConfig.STRING_CHARSET)));
-  }
-
-  @Test
-  public void testGtEq() {
-    Filter timeGtEq = TimeFilterApi.gtEq(TESTED_TIMESTAMP);
-    Assert.assertTrue(timeGtEq.satisfy(TESTED_TIMESTAMP + 1, 100));
-    Assert.assertTrue(timeGtEq.satisfy(TESTED_TIMESTAMP, 100));
-    Assert.assertFalse(timeGtEq.satisfy(TESTED_TIMESTAMP - 1, 100));
-
-    Filter valueGtEq = ValueFilterApi.gtEq(0.01);
-    Assert.assertTrue(valueGtEq.satisfy(TESTED_TIMESTAMP, 0.02));
-    Assert.assertTrue(valueGtEq.satisfy(TESTED_TIMESTAMP, 0.01));
-    Assert.assertFalse(valueGtEq.satisfy(TESTED_TIMESTAMP, -0.01));
-  }
-
-  @Test
-  public void testLt() {
-    Filter timeLt = TimeFilterApi.lt(TESTED_TIMESTAMP);
-    Assert.assertTrue(timeLt.satisfy(TESTED_TIMESTAMP - 1, 100));
-    Assert.assertFalse(timeLt.satisfy(TESTED_TIMESTAMP, 100));
-    Assert.assertFalse(timeLt.satisfy(TESTED_TIMESTAMP + 1, 100));
-
-    Filter valueLt = ValueFilterApi.lt(100L);
-    Assert.assertTrue(valueLt.satisfy(TESTED_TIMESTAMP, 99L));
-    Assert.assertFalse(valueLt.satisfy(TESTED_TIMESTAMP, 100L));
-    Assert.assertFalse(valueLt.satisfy(TESTED_TIMESTAMP, 101L));
-  }
-
-  @Test
-  public void testLtEq() {
-    Filter timeLtEq = TimeFilterApi.ltEq(TESTED_TIMESTAMP);
-    Assert.assertTrue(timeLtEq.satisfy(TESTED_TIMESTAMP - 1, 100));
-    Assert.assertTrue(timeLtEq.satisfy(TESTED_TIMESTAMP, 100));
-    Assert.assertFalse(timeLtEq.satisfy(TESTED_TIMESTAMP + 1, 100));
-
-    Filter valueLtEq = ValueFilterApi.ltEq(100L);
-    Assert.assertTrue(valueLtEq.satisfy(TESTED_TIMESTAMP, 99L));
-    Assert.assertTrue(valueLtEq.satisfy(TESTED_TIMESTAMP, 100L));
-    Assert.assertFalse(valueLtEq.satisfy(TESTED_TIMESTAMP, 101L));
-  }
-
-  @Test
-  public void testNot() {
-    Filter timeLt = FilterFactory.not(TimeFilterApi.lt(TESTED_TIMESTAMP));
-    Assert.assertFalse(timeLt.satisfy(TESTED_TIMESTAMP - 1, 100));
-    Assert.assertTrue(timeLt.satisfy(TESTED_TIMESTAMP, 100));
-    Assert.assertTrue(timeLt.satisfy(TESTED_TIMESTAMP + 1, 100));
-
-    Filter valueLt = FilterFactory.not(ValueFilterApi.lt(100L));
-    Assert.assertFalse(valueLt.satisfy(TESTED_TIMESTAMP, 99L));
-    Assert.assertTrue(valueLt.satisfy(TESTED_TIMESTAMP, 100L));
-    Assert.assertTrue(valueLt.satisfy(TESTED_TIMESTAMP, 101L));
-  }
-
-  @Test
-  public void testNotEq() {
-    Filter timeNotEq = TimeFilterApi.notEq(100L);
-    Assert.assertFalse(timeNotEq.satisfy(100, 100));
-    Assert.assertTrue(timeNotEq.satisfy(101, 100));
-
-    Filter valueNotEq = ValueFilterApi.notEq(50);
-    Assert.assertFalse(valueNotEq.satisfy(100, 50));
-    Assert.assertTrue(valueNotEq.satisfy(100, 51));
-  }
-
-  @Test
-  public void testIsNotNull() {
-    Filter isNotNullFilter = ValueFilterApi.isNotNull(0);
-    Assert.assertFalse(isNotNullFilter.satisfyRow(100, new Object[] {null}));
-    Assert.assertTrue(isNotNullFilter.satisfyRow(100, new Object[] {1}));
-  }
-
-  @Test
-  public void testAndOr() {
-    Filter andFilter = FilterFactory.and(TimeFilterApi.gt(100L), ValueFilterApi.lt(50.9));
-    Assert.assertTrue(andFilter.satisfy(101L, 50d));
-    Assert.assertFalse(andFilter.satisfy(101L, 60d));
-    Assert.assertFalse(andFilter.satisfy(99L, 50d));
-
-    Filter orFilter = FilterFactory.or(andFilter, TimeFilterApi.eq(1000L));
-    Assert.assertTrue(orFilter.satisfy(101L, 50d));
-    Assert.assertFalse(orFilter.satisfy(101L, 60d));
-    Assert.assertTrue(orFilter.satisfy(1000L, 50d));
-
-    Filter andFilter2 = FilterFactory.and(orFilter, ValueFilterApi.notEq(50.0));
-    Assert.assertFalse(andFilter2.satisfy(101L, 50d));
-    Assert.assertFalse(andFilter2.satisfy(101L, 60d));
-    Assert.assertTrue(andFilter2.satisfy(1000L, 51d));
-  }
-
-  @Test(expected = ClassCastException.class)
-  public void testWrongUsage() {
-    Filter andFilter = FilterFactory.and(TimeFilterApi.gt(100L), ValueFilterApi.lt(true));
-    andFilter.satisfy(101L, 50);
-    Assert.fail();
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/PredicateRemoveNotRewriterTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/PredicateRemoveNotRewriterTest.java
deleted file mode 100644
index b08acfa..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/PredicateRemoveNotRewriterTest.java
+++ /dev/null
@@ -1,82 +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.filter;
-
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.util.Arrays;
-import java.util.HashSet;
-
-public class PredicateRemoveNotRewriterTest {
-
-  @Test
-  public void testReverse() {
-    Assert.assertEquals(TimeFilterApi.gt(1), TimeFilterApi.ltEq(1).reverse());
-    Assert.assertEquals(TimeFilterApi.gtEq(1), TimeFilterApi.lt(1).reverse());
-    Assert.assertEquals(TimeFilterApi.lt(1), TimeFilterApi.gtEq(1).reverse());
-    Assert.assertEquals(TimeFilterApi.ltEq(1), TimeFilterApi.gt(1).reverse());
-    Assert.assertEquals(TimeFilterApi.eq(1), TimeFilterApi.notEq(1).reverse());
-    Assert.assertEquals(TimeFilterApi.notEq(1), TimeFilterApi.eq(1).reverse());
-    Assert.assertEquals(ValueFilterApi.like("s*"), ValueFilterApi.notLike("s*").reverse());
-    Assert.assertEquals(ValueFilterApi.notLike("s*"), ValueFilterApi.like("s*").reverse());
-    Assert.assertEquals(ValueFilterApi.regexp("s*"), ValueFilterApi.notRegexp("s*").reverse());
-    Assert.assertEquals(ValueFilterApi.notRegexp("s*"), ValueFilterApi.regexp("s*").reverse());
-    Assert.assertEquals(TimeFilterApi.between(1, 100), TimeFilterApi.notBetween(1, 100).reverse());
-    Assert.assertEquals(TimeFilterApi.notBetween(1, 100), TimeFilterApi.between(1, 100).reverse());
-    Assert.assertEquals(
-        ValueFilterApi.in(new HashSet<>(Arrays.asList("a", "b"))),
-        ValueFilterApi.notIn(new HashSet<>(Arrays.asList("a", "b"))).reverse());
-    Assert.assertEquals(
-        ValueFilterApi.notIn(new HashSet<>(Arrays.asList("a", "b"))),
-        ValueFilterApi.in(new HashSet<>(Arrays.asList("a", "b"))).reverse());
-    Assert.assertEquals(TimeFilterApi.gt(1), FilterFactory.not(TimeFilterApi.gt(1)).reverse());
-    Assert.assertEquals(
-        FilterFactory.and(TimeFilterApi.gt(1), TimeFilterApi.ltEq(1)),
-        FilterFactory.or(TimeFilterApi.ltEq(1), TimeFilterApi.gt(1)).reverse());
-    Assert.assertEquals(
-        FilterFactory.or(TimeFilterApi.ltEq(1), TimeFilterApi.gt(1)),
-        FilterFactory.and(TimeFilterApi.gt(1), TimeFilterApi.ltEq(1)).reverse());
-  }
-
-  @Test
-  public void testRemoveNot() {
-    Assert.assertEquals(
-        TimeFilterApi.ltEq(1),
-        PredicateRemoveNotRewriter.rewrite(FilterFactory.not(TimeFilterApi.gt(1))));
-    Assert.assertEquals(
-        ValueFilterApi.like("s*"),
-        PredicateRemoveNotRewriter.rewrite(FilterFactory.not(ValueFilterApi.notLike("s*"))));
-    Assert.assertEquals(
-        FilterFactory.or(TimeFilterApi.gt(1), TimeFilterApi.ltEq(1)),
-        PredicateRemoveNotRewriter.rewrite(
-            FilterFactory.or(
-                FilterFactory.not(TimeFilterApi.ltEq(1)), FilterFactory.not(TimeFilterApi.gt(1)))));
-    Assert.assertEquals(
-        FilterFactory.and(TimeFilterApi.gt(1), TimeFilterApi.ltEq(1)),
-        PredicateRemoveNotRewriter.rewrite(
-            FilterFactory.and(
-                FilterFactory.not(TimeFilterApi.ltEq(1)), FilterFactory.not(TimeFilterApi.gt(1)))));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/StatisticsFilterTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/StatisticsFilterTest.java
deleted file mode 100644
index 06051ad..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/StatisticsFilterTest.java
+++ /dev/null
@@ -1,283 +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.filter;
-
-import org.apache.iotdb.tsfile.file.metadata.IMetadata;
-import org.apache.iotdb.tsfile.file.metadata.statistics.LongStatistics;
-import org.apache.iotdb.tsfile.file.metadata.statistics.TimeStatistics;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.apache.iotdb.tsfile.read.filter.FilterTestUtil.newAlignedMetadata;
-import static org.apache.iotdb.tsfile.read.filter.FilterTestUtil.newMetadata;
-import static org.apache.iotdb.tsfile.read.filter.operator.Not.CONTAIN_NOT_ERR_MSG;
-import static org.apache.iotdb.tsfile.read.filter.operator.ValueFilterOperators.CANNOT_PUSH_DOWN_MSG;
-import static org.junit.Assert.fail;
-
-public class StatisticsFilterTest {
-
-  private IMetadata metadata1;
-  private IMetadata metadata2;
-  private IMetadata metadata3;
-
-  private IMetadata alignedMetadata1;
-  private IMetadata alignedMetadata2;
-  private IMetadata alignedMetadata3;
-
-  @Before
-  public void before() {
-    LongStatistics statistic1 = new LongStatistics();
-    statistic1.update(1L, 1L);
-    statistic1.update(100L, 100L);
-
-    TimeStatistics timeStatistics1 = new TimeStatistics();
-    timeStatistics1.update(1L);
-    timeStatistics1.update(100L);
-
-    LongStatistics statistic2 = new LongStatistics();
-    statistic2.update(101L, 101L);
-    statistic2.update(200L, 200L);
-
-    TimeStatistics timeStatistics2 = new TimeStatistics();
-    timeStatistics2.update(101L);
-    timeStatistics2.update(200L);
-    timeStatistics2.update(201L);
-
-    LongStatistics statistic3 = new LongStatistics();
-    statistic3.update(10L, 10L);
-
-    metadata1 = newMetadata(statistic1);
-    metadata2 = newMetadata(statistic2);
-    metadata3 = newMetadata(statistic3);
-
-    alignedMetadata1 = newAlignedMetadata(timeStatistics1, statistic1);
-    alignedMetadata2 = newAlignedMetadata(timeStatistics2, statistic2);
-    alignedMetadata3 = newAlignedMetadata(timeStatistics1, null);
-  }
-
-  @Test
-  public void testEq() {
-    Filter timeEq = TimeFilterApi.eq(10L);
-    Assert.assertFalse(timeEq.canSkip(metadata1));
-    Assert.assertTrue(timeEq.canSkip(metadata2));
-    Assert.assertFalse(timeEq.allSatisfy(metadata1));
-    Assert.assertFalse(timeEq.allSatisfy(metadata2));
-    Assert.assertTrue(timeEq.allSatisfy(metadata3));
-
-    Filter valueEq = ValueFilterApi.eq(101L);
-    Assert.assertTrue(valueEq.canSkip(metadata1));
-    Assert.assertFalse(valueEq.canSkip(metadata2));
-    Assert.assertFalse(valueEq.allSatisfy(metadata1));
-    Assert.assertFalse(valueEq.allSatisfy(metadata2));
-    Assert.assertFalse(valueEq.allSatisfy(metadata3));
-  }
-
-  @Test
-  public void testNotEq() {
-    Filter timeNotEq = TimeFilterApi.notEq(10L);
-    Assert.assertFalse(timeNotEq.canSkip(metadata1));
-    Assert.assertFalse(timeNotEq.canSkip(metadata2));
-    Assert.assertFalse(timeNotEq.allSatisfy(metadata1));
-    Assert.assertTrue(timeNotEq.allSatisfy(metadata2));
-    Assert.assertFalse(timeNotEq.allSatisfy(metadata3));
-
-    Filter valueNotEq = ValueFilterApi.notEq(101L);
-    Assert.assertFalse(valueNotEq.canSkip(metadata1));
-    Assert.assertFalse(valueNotEq.canSkip(metadata2));
-    Assert.assertTrue(valueNotEq.allSatisfy(metadata1));
-    Assert.assertFalse(valueNotEq.allSatisfy(metadata2));
-    Assert.assertTrue(valueNotEq.allSatisfy(metadata3));
-  }
-
-  @Test
-  public void testGt() {
-    Filter timeGt = TimeFilterApi.gt(10L);
-    Assert.assertFalse(timeGt.canSkip(metadata1));
-    Assert.assertFalse(timeGt.canSkip(metadata2));
-    Assert.assertFalse(timeGt.allSatisfy(metadata1));
-    Assert.assertTrue(timeGt.allSatisfy(metadata2));
-
-    Filter valueGt = ValueFilterApi.gt(100L);
-    Assert.assertTrue(valueGt.canSkip(metadata1));
-    Assert.assertFalse(valueGt.canSkip(metadata2));
-    Assert.assertFalse(valueGt.allSatisfy(metadata1));
-    Assert.assertTrue(valueGt.allSatisfy(metadata2));
-  }
-
-  @Test
-  public void testGtEq() {
-    Filter timeGtEq = TimeFilterApi.gtEq(10L);
-    Assert.assertFalse(timeGtEq.canSkip(metadata1));
-    Assert.assertFalse(timeGtEq.canSkip(metadata2));
-    Assert.assertFalse(timeGtEq.allSatisfy(metadata1));
-    Assert.assertTrue(timeGtEq.allSatisfy(metadata2));
-
-    Filter valueGtEq = ValueFilterApi.gtEq(100L);
-    Assert.assertFalse(valueGtEq.canSkip(metadata1));
-    Assert.assertFalse(valueGtEq.canSkip(metadata2));
-    Assert.assertFalse(valueGtEq.allSatisfy(metadata1));
-    Assert.assertTrue(valueGtEq.allSatisfy(metadata2));
-  }
-
-  @Test
-  public void testLt() {
-    Filter timeLt = TimeFilterApi.lt(101L);
-    Assert.assertFalse(timeLt.canSkip(metadata1));
-    Assert.assertTrue(timeLt.canSkip(metadata2));
-    Assert.assertTrue(timeLt.allSatisfy(metadata1));
-    Assert.assertFalse(timeLt.allSatisfy(metadata2));
-
-    Filter valueLt = ValueFilterApi.lt(11L);
-    Assert.assertFalse(valueLt.canSkip(metadata1));
-    Assert.assertTrue(valueLt.canSkip(metadata2));
-    Assert.assertFalse(valueLt.allSatisfy(metadata1));
-    Assert.assertFalse(valueLt.allSatisfy(metadata2));
-  }
-
-  @Test
-  public void testLtEq() {
-    Filter timeLtEq = TimeFilterApi.ltEq(101L);
-    Assert.assertFalse(timeLtEq.canSkip(metadata1));
-    Assert.assertFalse(timeLtEq.canSkip(metadata2));
-
-    Filter valueLtEq = ValueFilterApi.ltEq(11L);
-    Assert.assertFalse(valueLtEq.canSkip(metadata1));
-    Assert.assertTrue(valueLtEq.canSkip(metadata2));
-    Assert.assertFalse(valueLtEq.allSatisfy(metadata1));
-    Assert.assertFalse(valueLtEq.allSatisfy(metadata2));
-  }
-
-  @Test
-  public void testAndOr() {
-    Filter andFilter = FilterFactory.and(TimeFilterApi.gt(10L), ValueFilterApi.lt(50L));
-    Assert.assertFalse(andFilter.canSkip(metadata1));
-    Assert.assertTrue(andFilter.canSkip(metadata2));
-
-    Filter orFilter = FilterFactory.or(andFilter, TimeFilterApi.eq(200L));
-    Assert.assertFalse(orFilter.canSkip(metadata1));
-    Assert.assertFalse(orFilter.canSkip(metadata2));
-  }
-
-  @Test
-  public void testNot() {
-    Filter timeNotEq = FilterFactory.not(TimeFilterApi.eq(10L));
-    try {
-      timeNotEq.canSkip(metadata1);
-      fail();
-    } catch (Exception e) {
-      Assert.assertTrue(e.getMessage().contains(CONTAIN_NOT_ERR_MSG));
-    }
-    try {
-      timeNotEq.allSatisfy(metadata1);
-      fail();
-    } catch (Exception e) {
-      Assert.assertTrue(e.getMessage().contains(CONTAIN_NOT_ERR_MSG));
-    }
-
-    Filter valueNotEq = FilterFactory.not(ValueFilterApi.eq(101L));
-    try {
-      valueNotEq.canSkip(metadata1);
-      fail();
-    } catch (Exception e) {
-      Assert.assertTrue(e.getMessage().contains(CONTAIN_NOT_ERR_MSG));
-    }
-    try {
-      valueNotEq.allSatisfy(metadata1);
-      fail();
-    } catch (Exception e) {
-      Assert.assertTrue(e.getMessage().contains(CONTAIN_NOT_ERR_MSG));
-    }
-  }
-
-  @Test
-  public void testBetweenAnd() {
-    Filter timeBetweenAnd = TimeFilterApi.between(0L, 20L);
-    Assert.assertFalse(timeBetweenAnd.canSkip(metadata1));
-    Assert.assertTrue(timeBetweenAnd.canSkip(metadata2));
-    Assert.assertFalse(timeBetweenAnd.canSkip(metadata3));
-    Assert.assertFalse(timeBetweenAnd.allSatisfy(metadata1));
-    Assert.assertFalse(timeBetweenAnd.allSatisfy(metadata2));
-    Assert.assertTrue(timeBetweenAnd.allSatisfy(metadata3));
-
-    Filter valueBetweenAnd = ValueFilterApi.between(0L, 20L);
-    Assert.assertFalse(valueBetweenAnd.canSkip(metadata1));
-    Assert.assertTrue(valueBetweenAnd.canSkip(metadata2));
-    Assert.assertFalse(valueBetweenAnd.canSkip(metadata3));
-    Assert.assertFalse(valueBetweenAnd.allSatisfy(metadata1));
-    Assert.assertFalse(valueBetweenAnd.allSatisfy(metadata2));
-    Assert.assertTrue(valueBetweenAnd.allSatisfy(metadata3));
-  }
-
-  @Test
-  public void testNotBetweenAnd() {
-    Filter timeNotBetweenAnd = TimeFilterApi.notBetween(0L, 20L);
-    Assert.assertFalse(timeNotBetweenAnd.canSkip(metadata1));
-    Assert.assertFalse(timeNotBetweenAnd.canSkip(metadata2));
-    Assert.assertTrue(timeNotBetweenAnd.canSkip(metadata3));
-    Assert.assertFalse(timeNotBetweenAnd.allSatisfy(metadata1));
-    Assert.assertTrue(timeNotBetweenAnd.allSatisfy(metadata2));
-    Assert.assertFalse(timeNotBetweenAnd.allSatisfy(metadata3));
-
-    Filter valueNotBetweenAnd = ValueFilterApi.notBetween(0L, 20L);
-    Assert.assertFalse(valueNotBetweenAnd.canSkip(metadata1));
-    Assert.assertFalse(valueNotBetweenAnd.canSkip(metadata2));
-    Assert.assertTrue(valueNotBetweenAnd.canSkip(metadata3));
-    Assert.assertFalse(valueNotBetweenAnd.allSatisfy(metadata1));
-    Assert.assertTrue(valueNotBetweenAnd.allSatisfy(metadata2));
-    Assert.assertFalse(valueNotBetweenAnd.allSatisfy(metadata3));
-  }
-
-  @Test
-  public void testIsNull() {
-    Filter valueIsNull = ValueFilterApi.isNull(0);
-
-    try {
-      valueIsNull.canSkip(alignedMetadata1);
-      fail();
-    } catch (IllegalArgumentException e) {
-      Assert.assertTrue(e.getMessage().contains(CANNOT_PUSH_DOWN_MSG));
-    }
-
-    try {
-      valueIsNull.allSatisfy(alignedMetadata1);
-      fail();
-    } catch (IllegalArgumentException e) {
-      Assert.assertTrue(e.getMessage().contains(CANNOT_PUSH_DOWN_MSG));
-    }
-  }
-
-  @Test
-  public void testIsNotNull() {
-    Filter valueIsNotNull = ValueFilterApi.isNotNull(0);
-
-    Assert.assertFalse(valueIsNotNull.canSkip(alignedMetadata1));
-    Assert.assertFalse(valueIsNotNull.canSkip(alignedMetadata2));
-    Assert.assertTrue(valueIsNotNull.canSkip(alignedMetadata3));
-
-    Assert.assertTrue(valueIsNotNull.allSatisfy(alignedMetadata1));
-    Assert.assertFalse(valueIsNotNull.allSatisfy(alignedMetadata2));
-    Assert.assertFalse(valueIsNotNull.allSatisfy(alignedMetadata3));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/executor/QueryExecutorTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/executor/QueryExecutorTest.java
deleted file mode 100644
index 3f38052..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/executor/QueryExecutorTest.java
+++ /dev/null
@@ -1,158 +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.query.executor;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.controller.CachedChunkLoaderImpl;
-import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
-import org.apache.iotdb.tsfile.read.controller.MetadataQuerierByFileImpl;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorForTest;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-
-public class QueryExecutorTest {
-
-  private static final String FILE_PATH = TsFileGeneratorForTest.outputDataFile;
-  private TsFileSequenceReader fileReader;
-  private MetadataQuerierByFileImpl metadataQuerierByFile;
-  private IChunkLoader chunkLoader;
-  private int rowCount = 10000;
-  private TsFileExecutor queryExecutorWithQueryFilter;
-
-  @Before
-  public void before() throws IOException {
-    TSFileDescriptor.getInstance().getConfig().setTimeEncoder("TS_2DIFF");
-    TsFileGeneratorForTest.generateFile(rowCount, 16 * 1024 * 1024, 10000);
-    fileReader = new TsFileSequenceReader(FILE_PATH);
-    metadataQuerierByFile = new MetadataQuerierByFileImpl(fileReader);
-    chunkLoader = new CachedChunkLoaderImpl(fileReader);
-    queryExecutorWithQueryFilter = new TsFileExecutor(metadataQuerierByFile, chunkLoader);
-  }
-
-  @After
-  public void after() throws IOException {
-    fileReader.close();
-    TsFileGeneratorForTest.after();
-  }
-
-  @Test
-  public void query1() throws IOException {
-    Filter filter = TimeFilterApi.lt(1480562618100L);
-    Filter filter2 = ValueFilterApi.gt(new Binary("dog", TSFileConfig.STRING_CHARSET));
-
-    IExpression IExpression =
-        BinaryExpression.and(
-            new SingleSeriesExpression(new Path("d1", "s1", true), filter),
-            new SingleSeriesExpression(new Path("d1", "s4", true), filter2));
-
-    QueryExpression queryExpression =
-        QueryExpression.create()
-            .addSelectedPath(new Path("d1", "s1", true))
-            .addSelectedPath(new Path("d1", "s2", true))
-            .addSelectedPath(new Path("d1", "s4", true))
-            .addSelectedPath(new Path("d1", "s5", true))
-            .setExpression(IExpression);
-    long startTimestamp = System.currentTimeMillis();
-    QueryDataSet queryDataSet = queryExecutorWithQueryFilter.execute(queryExpression);
-    long aimedTimestamp = 1480562618000L;
-    while (queryDataSet.hasNext()) {
-      RowRecord rowRecord = queryDataSet.next();
-      Assert.assertEquals(aimedTimestamp, rowRecord.getTimestamp());
-      aimedTimestamp += 8;
-    }
-    long endTimestamp = System.currentTimeMillis();
-  }
-
-  @Test
-  public void queryWithoutFilter() throws IOException {
-    QueryExecutor queryExecutor = new TsFileExecutor(metadataQuerierByFile, chunkLoader);
-
-    QueryExpression queryExpression =
-        QueryExpression.create()
-            .addSelectedPath(new Path("d1", "s1", true))
-            .addSelectedPath(new Path("d1", "s2", true))
-            .addSelectedPath(new Path("d1", "s3", true))
-            .addSelectedPath(new Path("d1", "s4", true))
-            .addSelectedPath(new Path("d1", "s5", true));
-
-    long aimedTimestamp = 1480562618000L;
-    int count = 0;
-    long startTimestamp = System.currentTimeMillis();
-    QueryDataSet queryDataSet = queryExecutor.execute(queryExpression);
-    while (queryDataSet.hasNext()) {
-      RowRecord rowRecord = queryDataSet.next();
-      Assert.assertEquals(aimedTimestamp, rowRecord.getTimestamp());
-      aimedTimestamp++;
-      count++;
-    }
-    Assert.assertEquals(rowCount, count);
-    long endTimestamp = System.currentTimeMillis();
-  }
-
-  @Test
-  public void queryWithGlobalTimeFilter() throws IOException {
-    QueryExecutor queryExecutor = new TsFileExecutor(metadataQuerierByFile, chunkLoader);
-
-    IExpression IExpression =
-        new GlobalTimeExpression(
-            FilterFactory.and(
-                TimeFilterApi.gtEq(1480562618100L), TimeFilterApi.lt(1480562618200L)));
-    QueryExpression queryExpression =
-        QueryExpression.create()
-            .addSelectedPath(new Path("d1", "s1", true))
-            .addSelectedPath(new Path("d1", "s2", true))
-            .addSelectedPath(new Path("d1", "s3", true))
-            .addSelectedPath(new Path("d1", "s4", true))
-            .addSelectedPath(new Path("d1", "s5", true))
-            .setExpression(IExpression);
-
-    long aimedTimestamp = 1480562618100L;
-    int count = 0;
-    long startTimestamp = System.currentTimeMillis();
-    QueryDataSet queryDataSet = queryExecutor.execute(queryExpression);
-    while (queryDataSet.hasNext()) {
-      RowRecord rowRecord = queryDataSet.next();
-      Assert.assertEquals(aimedTimestamp, rowRecord.getTimestamp());
-      aimedTimestamp++;
-      count++;
-    }
-    Assert.assertEquals(100, count);
-    long endTimestamp = System.currentTimeMillis();
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/NodeTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/NodeTest.java
deleted file mode 100644
index 20b3a93..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/NodeTest.java
+++ /dev/null
@@ -1,100 +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.query.timegenerator;
-
-import org.apache.iotdb.tsfile.read.query.timegenerator.node.AndNode;
-import org.apache.iotdb.tsfile.read.query.timegenerator.node.LeafNode;
-import org.apache.iotdb.tsfile.read.query.timegenerator.node.Node;
-import org.apache.iotdb.tsfile.read.query.timegenerator.node.NodeType;
-import org.apache.iotdb.tsfile.read.query.timegenerator.node.OrNode;
-import org.apache.iotdb.tsfile.read.reader.FakedBatchReader;
-import org.apache.iotdb.tsfile.read.reader.IBatchReader;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.IOException;
-
-public class NodeTest {
-
-  @Test
-  public void testType() {
-    Assert.assertEquals(NodeType.LEAF, new LeafNode(null).getType());
-    Assert.assertEquals(NodeType.AND, new AndNode(null, null).getType());
-    Assert.assertEquals(NodeType.OR, new OrNode(null, null).getType());
-  }
-
-  @Test
-  public void testLeafNode() throws IOException {
-    int index = 0;
-    long[] timestamps = new long[] {1, 2, 3, 4, 5, 6, 7};
-    IBatchReader batchReader = new FakedBatchReader(timestamps);
-    Node leafNode = new LeafNode(batchReader);
-    while (leafNode.hasNext()) {
-      Assert.assertEquals(timestamps[index++], leafNode.next());
-    }
-  }
-
-  @Test
-  public void testOrNode() throws IOException {
-    long[] ret = new long[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20};
-    long[] left = new long[] {1, 3, 5, 7, 9, 10, 20};
-    long[] right = new long[] {2, 3, 4, 5, 6, 7, 8};
-    testOr(ret, left, right);
-    testOr(new long[] {}, new long[] {}, new long[] {});
-    testOr(new long[] {1}, new long[] {1}, new long[] {});
-    testOr(new long[] {1}, new long[] {1}, new long[] {1});
-    testOr(new long[] {1, 2}, new long[] {1}, new long[] {1, 2});
-    testOr(new long[] {1, 2}, new long[] {1, 2}, new long[] {1, 2});
-    testOr(new long[] {1, 2, 3}, new long[] {1, 2}, new long[] {1, 2, 3});
-  }
-
-  private void testOr(long[] ret, long[] left, long[] right) throws IOException {
-    int index = 0;
-    Node orNode =
-        new OrNode(
-            new LeafNode(new FakedBatchReader(left)), new LeafNode(new FakedBatchReader(right)));
-    while (orNode.hasNext()) {
-      long value = orNode.next();
-      Assert.assertEquals(ret[index++], value);
-    }
-    Assert.assertEquals(ret.length, index);
-  }
-
-  @Test
-  public void testAndNode() throws IOException {
-    testAnd(new long[] {}, new long[] {1, 2, 3, 4}, new long[] {});
-    testAnd(new long[] {}, new long[] {1, 2, 3, 4, 8}, new long[] {5, 6, 7});
-    testAnd(new long[] {2}, new long[] {1, 2, 3, 4}, new long[] {2, 5, 6});
-    testAnd(new long[] {1, 2, 3}, new long[] {1, 2, 3, 4}, new long[] {1, 2, 3});
-    testAnd(new long[] {1, 2, 3, 9}, new long[] {1, 2, 3, 4, 9}, new long[] {1, 2, 3, 8, 9});
-  }
-
-  private void testAnd(long[] ret, long[] left, long[] right) throws IOException {
-    int index = 0;
-    Node andNode =
-        new AndNode(
-            new LeafNode(new FakedBatchReader(left)), new LeafNode(new FakedBatchReader(right)));
-    while (andNode.hasNext()) {
-      long value = andNode.next();
-      Assert.assertEquals(ret[index++], value);
-    }
-    Assert.assertEquals(ret.length, index);
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/ReadWriteTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/ReadWriteTest.java
deleted file mode 100644
index efc487b..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/ReadWriteTest.java
+++ /dev/null
@@ -1,185 +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.query.timegenerator;
-
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorForTest;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-
-public class ReadWriteTest {
-
-  private final String TEMPLATE_NAME = "template";
-  private final String tsfilePath = TsFileGeneratorForTest.getTestTsFilePath("root.sg1", 0, 0, 1);
-
-  @Before
-  public void before() throws IOException, WriteProcessException {
-    writeFile(tsfilePath);
-  }
-
-  @After
-  public void after() {
-    File file = new File(tsfilePath);
-    if (file.exists()) {
-      file.delete();
-    }
-  }
-
-  @Test
-  public void testFilterAnd() throws IOException {
-    Filter timeFilter = FilterFactory.and(TimeFilterApi.gtEq(1L), TimeFilterApi.ltEq(8L));
-    IExpression timeExpression = new GlobalTimeExpression(timeFilter);
-
-    IExpression valueExpression =
-        BinaryExpression.and(
-            new SingleSeriesExpression(new Path("d1", "s1", true), ValueFilterApi.gt(1.0f)),
-            new SingleSeriesExpression(new Path("d1", "s2", true), ValueFilterApi.lt(22)));
-
-    IExpression finalExpression = BinaryExpression.and(valueExpression, timeExpression);
-
-    QueryExpression queryExpression =
-        QueryExpression.create()
-            .addSelectedPath(new Path("d1", "s1", true))
-            .addSelectedPath(new Path("d1", "s2", true))
-            .setExpression(finalExpression);
-
-    try (TsFileSequenceReader fileReader = new TsFileSequenceReader(tsfilePath)) {
-      TsFileReader tsFileReader = new TsFileReader(fileReader);
-      QueryDataSet dataSet = tsFileReader.query(queryExpression);
-      int i = 0;
-      String[] expected =
-          new String[] {"1\t1.2\t20", "3\t1.4\t21", "4\t1.2\t20", "6\t7.2\t10", "7\t6.2\t20"};
-      while (dataSet.hasNext()) {
-        Assert.assertEquals(expected[i], dataSet.next().toString());
-        i++;
-      }
-      Assert.assertEquals(5, i);
-    }
-  }
-
-  private void writeFile(String tsfilePath) throws IOException, WriteProcessException {
-    File f = new File(tsfilePath);
-    if (f.exists()) {
-      f.delete();
-    }
-    if (!f.getParentFile().exists()) {
-      Assert.assertTrue(f.getParentFile().mkdirs());
-    }
-    Schema schema = new Schema();
-    schema.extendTemplate(
-        TEMPLATE_NAME, new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
-    schema.extendTemplate(
-        TEMPLATE_NAME, new MeasurementSchema("s2", TSDataType.INT32, TSEncoding.TS_2DIFF));
-    schema.extendTemplate(
-        TEMPLATE_NAME, new MeasurementSchema("s3", TSDataType.INT32, TSEncoding.TS_2DIFF));
-
-    TsFileWriter tsFileWriter = new TsFileWriter(f, schema);
-
-    // construct TSRecord
-    TSRecord tsRecord = new TSRecord(1, "d1");
-    DataPoint dPoint1 = new FloatDataPoint("s1", 1.2f);
-    DataPoint dPoint2 = new IntDataPoint("s2", 20);
-    tsRecord.addTuple(dPoint1);
-    tsRecord.addTuple(dPoint2);
-
-    // write a TSRecord to TsFile
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(2, "d1");
-    dPoint2 = new IntDataPoint("s2", 20);
-    DataPoint dPoint3 = new IntDataPoint("s3", 50);
-    tsRecord.addTuple(dPoint2);
-    tsRecord.addTuple(dPoint3);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(3, "d1");
-    dPoint1 = new FloatDataPoint("s1", 1.4f);
-    dPoint2 = new IntDataPoint("s2", 21);
-    tsRecord.addTuple(dPoint1);
-    tsRecord.addTuple(dPoint2);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(4, "d1");
-    dPoint1 = new FloatDataPoint("s1", 1.2f);
-    dPoint2 = new IntDataPoint("s2", 20);
-    dPoint3 = new IntDataPoint("s3", 51);
-    tsRecord.addTuple(dPoint1);
-    tsRecord.addTuple(dPoint2);
-    tsRecord.addTuple(dPoint3);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(6, "d1");
-    dPoint1 = new FloatDataPoint("s1", 7.2f);
-    dPoint2 = new IntDataPoint("s2", 10);
-    dPoint3 = new IntDataPoint("s3", 11);
-    tsRecord.addTuple(dPoint1);
-    tsRecord.addTuple(dPoint2);
-    tsRecord.addTuple(dPoint3);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(7, "d1");
-    dPoint1 = new FloatDataPoint("s1", 6.2f);
-    dPoint2 = new IntDataPoint("s2", 20);
-    dPoint3 = new IntDataPoint("s3", 21);
-    tsRecord.addTuple(dPoint1);
-    tsRecord.addTuple(dPoint2);
-    tsRecord.addTuple(dPoint3);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(8, "d1");
-    dPoint1 = new FloatDataPoint("s1", 9.2f);
-    dPoint2 = new IntDataPoint("s2", 30);
-    dPoint3 = new IntDataPoint("s3", 31);
-    tsRecord.addTuple(dPoint1);
-    tsRecord.addTuple(dPoint2);
-    tsRecord.addTuple(dPoint3);
-    tsFileWriter.write(tsRecord);
-
-    // close TsFile
-    tsFileWriter.close();
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/ReaderByTimestampTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/ReaderByTimestampTest.java
deleted file mode 100644
index b302d0b..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/ReaderByTimestampTest.java
+++ /dev/null
@@ -1,109 +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.query.timegenerator;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.controller.CachedChunkLoaderImpl;
-import org.apache.iotdb.tsfile.read.controller.MetadataQuerierByFileImpl;
-import org.apache.iotdb.tsfile.read.reader.series.AbstractFileSeriesReader;
-import org.apache.iotdb.tsfile.read.reader.series.FileSeriesReader;
-import org.apache.iotdb.tsfile.read.reader.series.FileSeriesReaderByTimestamp;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-public class ReaderByTimestampTest {
-
-  private static final String FILE_PATH = TsFileGeneratorForSeriesReaderByTimestamp.outputDataFile;
-  private TsFileSequenceReader fileReader;
-  private MetadataQuerierByFileImpl metadataQuerierByFile;
-  private int rowCount = 1000000;
-
-  @Before
-  public void before() throws IOException {
-    TSFileDescriptor.getInstance().getConfig().setTimeEncoder("TS_2DIFF");
-    TsFileGeneratorForSeriesReaderByTimestamp.generateFile(rowCount, 10 * 1024 * 1024, 10000);
-    fileReader = new TsFileSequenceReader(FILE_PATH); // TODO remove this class
-    metadataQuerierByFile = new MetadataQuerierByFileImpl(fileReader);
-  }
-
-  @After
-  public void after() throws IOException {
-    fileReader.close();
-    TsFileGeneratorForSeriesReaderByTimestamp.after();
-  }
-
-  @Test
-  public void readByTimestamp() throws IOException {
-    CachedChunkLoaderImpl seriesChunkLoader = new CachedChunkLoaderImpl(fileReader);
-    List<IChunkMetadata> chunkMetadataList =
-        metadataQuerierByFile.getChunkMetaDataList(new Path("d1", "s1", true));
-    AbstractFileSeriesReader seriesReader =
-        new FileSeriesReader(seriesChunkLoader, chunkMetadataList, null);
-
-    List<Long> timeList = new ArrayList<>();
-    List<Object> valueList = new ArrayList<>();
-    int count = 0;
-    BatchData data = null;
-
-    while (seriesReader.hasNextBatch()) {
-      data = seriesReader.nextBatch();
-      while (data.hasCurrent()) {
-        timeList.add(data.currentTime() - 1);
-        valueList.add(null);
-        timeList.add(data.currentTime());
-        valueList.add(data.currentValue());
-        data.next();
-        count++;
-      }
-    }
-
-    long startTimestamp = System.currentTimeMillis();
-    count = 0;
-
-    FileSeriesReaderByTimestamp seriesReaderFromSingleFileByTimestamp =
-        new FileSeriesReaderByTimestamp(seriesChunkLoader, chunkMetadataList);
-
-    for (long time : timeList) {
-      Object value = seriesReaderFromSingleFileByTimestamp.getValueInTimestamp(time);
-      if (value == null) {
-        Assert.assertNull(valueList.get(count));
-      } else {
-        Assert.assertEquals(valueList.get(count), value);
-      }
-      count++;
-    }
-    long endTimestamp = System.currentTimeMillis();
-    System.out.println(
-        "SeriesReadWithFilterTest. [Time used]: "
-            + (endTimestamp - startTimestamp)
-            + " ms. [Read Count]: "
-            + count);
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/TimeGeneratorReadEmptyTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/TimeGeneratorReadEmptyTest.java
deleted file mode 100644
index d98a570..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/TimeGeneratorReadEmptyTest.java
+++ /dev/null
@@ -1,149 +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.query.timegenerator;
-
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorForTest;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-
-public class TimeGeneratorReadEmptyTest {
-
-  private final String TEMPLATE_NAME = "template";
-  private final String tsfilePath = TsFileGeneratorForTest.getTestTsFilePath("root.sg1", 0, 0, 1);
-
-  @Before
-  public void before() throws IOException, WriteProcessException {
-    writeTsFile(tsfilePath);
-  }
-
-  @After
-  public void after() {
-    File file = new File(tsfilePath);
-    if (file.exists()) {
-      file.delete();
-    }
-  }
-
-  @Test
-  public void testFilterAnd() throws IOException {
-    Filter timeFilter = FilterFactory.and(TimeFilterApi.gtEq(2L), TimeFilterApi.ltEq(2L));
-    IExpression timeExpression = new GlobalTimeExpression(timeFilter);
-
-    IExpression valueExpression =
-        BinaryExpression.or(
-            new SingleSeriesExpression(new Path("d1", "s1", true), ValueFilterApi.gt(1.0f)),
-            new SingleSeriesExpression(new Path("d1", "s2", true), ValueFilterApi.lt(22)));
-
-    IExpression finalExpression = BinaryExpression.and(valueExpression, timeExpression);
-
-    QueryExpression queryExpression =
-        QueryExpression.create()
-            .addSelectedPath(new Path("d1", "s1", true))
-            .addSelectedPath(new Path("d1", "s2", true))
-            .setExpression(finalExpression);
-
-    try (TsFileSequenceReader fileReader = new TsFileSequenceReader(tsfilePath)) {
-      TsFileReader tsFileReader = new TsFileReader(fileReader);
-      QueryDataSet dataSet = tsFileReader.query(queryExpression);
-      int i = 0;
-      while (dataSet.hasNext()) {
-        dataSet.next();
-        i++;
-      }
-      Assert.assertEquals(0, i);
-    }
-  }
-
-  /** s1 -> 1, 3 s2 -> 5, 6 */
-  private void writeTsFile(String tsfilePath) throws IOException, WriteProcessException {
-
-    File f = new File(tsfilePath);
-    if (f.exists()) {
-      f.delete();
-    }
-    if (!f.getParentFile().exists()) {
-      Assert.assertTrue(f.getParentFile().mkdirs());
-    }
-
-    Schema schema = new Schema();
-    schema.extendTemplate(
-        TEMPLATE_NAME, new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
-    schema.extendTemplate(
-        TEMPLATE_NAME, new MeasurementSchema("s2", TSDataType.INT32, TSEncoding.TS_2DIFF));
-
-    TsFileWriter tsFileWriter = new TsFileWriter(new File(tsfilePath), schema);
-
-    // s1 -> 1, 3
-    TSRecord tsRecord = new TSRecord(1, "d1");
-    DataPoint dPoint1 = new FloatDataPoint("s1", 1.2f);
-    tsRecord.addTuple(dPoint1);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(3, "d1");
-    dPoint1 = new FloatDataPoint("s1", 1.2f);
-    tsRecord.addTuple(dPoint1);
-    tsFileWriter.write(tsRecord);
-
-    tsFileWriter.flushAllChunkGroups();
-
-    // s2 -> 5, 6
-    tsRecord = new TSRecord(5, "d1");
-    DataPoint dPoint2 = new IntDataPoint("s2", 20);
-    tsRecord.addTuple(dPoint2);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(6, "d1");
-    dPoint2 = new IntDataPoint("s2", 20);
-    tsRecord.addTuple(dPoint2);
-    tsFileWriter.write(tsRecord);
-
-    // close TsFile
-    tsFileWriter.close();
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/TimeGeneratorReadWriteTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/TimeGeneratorReadWriteTest.java
deleted file mode 100644
index 368d0b6..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/TimeGeneratorReadWriteTest.java
+++ /dev/null
@@ -1,185 +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.query.timegenerator;
-
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorForTest;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-
-public class TimeGeneratorReadWriteTest {
-
-  private final String TEMPLATE_NAME = "template";
-  private final String tsfilePath = TsFileGeneratorForTest.getTestTsFilePath("root.sg1", 0, 0, 1);
-
-  @Before
-  public void before() throws IOException, WriteProcessException {
-    writeTsFile(tsfilePath);
-  }
-
-  @After
-  public void after() {
-    File file = new File(tsfilePath);
-    if (file.exists()) {
-      file.delete();
-    }
-  }
-
-  @Test
-  public void testFilterAnd() throws IOException {
-    Filter timeFilter = FilterFactory.and(TimeFilterApi.gtEq(1L), TimeFilterApi.ltEq(8L));
-    IExpression timeExpression = new GlobalTimeExpression(timeFilter);
-
-    IExpression valueExpression =
-        BinaryExpression.and(
-            new SingleSeriesExpression(new Path("d1", "s1", true), ValueFilterApi.gt(1.0f)),
-            new SingleSeriesExpression(new Path("d1", "s2", true), ValueFilterApi.lt(22)));
-
-    IExpression finalExpression = BinaryExpression.and(valueExpression, timeExpression);
-
-    QueryExpression queryExpression =
-        QueryExpression.create()
-            .addSelectedPath(new Path("d1", "s1", true))
-            .addSelectedPath(new Path("d1", "s2", true))
-            .setExpression(finalExpression);
-
-    try (TsFileSequenceReader fileReader = new TsFileSequenceReader(tsfilePath)) {
-      TsFileReader tsFileReader = new TsFileReader(fileReader);
-      QueryDataSet dataSet = tsFileReader.query(queryExpression);
-      int i = 0;
-      String[] expected = new String[] {"2\t1.2\t20", "3\t1.2\t20", "4\t1.2\t20", "5\t1.2\t20"};
-      while (dataSet.hasNext()) {
-        Assert.assertEquals(expected[i], dataSet.next().toString());
-        i++;
-      }
-      Assert.assertEquals(4, i);
-    }
-  }
-
-  /** s1 -> 1, 2, 3, 4, 5 s2 -> 2, 3, 4, 5, 6 */
-  private void writeTsFile(String tsfilePath) throws IOException, WriteProcessException {
-    File f = new File(tsfilePath);
-    if (f.exists()) {
-      f.delete();
-    }
-    if (!f.getParentFile().exists()) {
-      Assert.assertTrue(f.getParentFile().mkdirs());
-    }
-
-    Schema schema = new Schema();
-    schema.extendTemplate(
-        TEMPLATE_NAME, new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
-    schema.extendTemplate(
-        TEMPLATE_NAME, new MeasurementSchema("s2", TSDataType.INT32, TSEncoding.TS_2DIFF));
-
-    TsFileWriter tsFileWriter = new TsFileWriter(new File(tsfilePath), schema);
-
-    // s1 -> 1, 2, 3
-    TSRecord tsRecord = new TSRecord(1, "d1");
-    DataPoint dPoint1 = new FloatDataPoint("s1", 1.2f);
-    tsRecord.addTuple(dPoint1);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(2, "d1");
-    dPoint1 = new FloatDataPoint("s1", 1.2f);
-    tsRecord.addTuple(dPoint1);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(3, "d1");
-    dPoint1 = new FloatDataPoint("s1", 1.2f);
-    tsRecord.addTuple(dPoint1);
-    tsFileWriter.write(tsRecord);
-
-    tsFileWriter.flushAllChunkGroups();
-
-    // s2 -> 2, 3, 4
-    tsRecord = new TSRecord(2, "d1");
-    DataPoint dPoint2 = new IntDataPoint("s2", 20);
-    tsRecord.addTuple(dPoint2);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(3, "d1");
-    dPoint2 = new IntDataPoint("s2", 20);
-    tsRecord.addTuple(dPoint2);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(4, "d1");
-    dPoint2 = new IntDataPoint("s2", 20);
-    tsRecord.addTuple(dPoint2);
-    tsFileWriter.write(tsRecord);
-
-    tsFileWriter.flushAllChunkGroups();
-
-    // s1 -> 4, 5
-    tsRecord = new TSRecord(4, "d1");
-    dPoint1 = new FloatDataPoint("s1", 1.2f);
-    tsRecord.addTuple(dPoint1);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(5, "d1");
-    dPoint1 = new FloatDataPoint("s1", 1.2f);
-    tsRecord.addTuple(dPoint1);
-    tsFileWriter.write(tsRecord);
-
-    tsFileWriter.flushAllChunkGroups();
-
-    // s2 -> 5, 6
-    tsRecord = new TSRecord(5, "d1");
-    dPoint2 = new IntDataPoint("s2", 20);
-    tsRecord.addTuple(dPoint2);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(6, "d1");
-    dPoint2 = new IntDataPoint("s2", 20);
-    tsRecord.addTuple(dPoint2);
-    tsFileWriter.write(tsRecord);
-
-    // close TsFile
-    tsFileWriter.close();
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/TimeGeneratorTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/TimeGeneratorTest.java
deleted file mode 100644
index 8251827..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/TimeGeneratorTest.java
+++ /dev/null
@@ -1,91 +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.query.timegenerator;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.controller.CachedChunkLoaderImpl;
-import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
-import org.apache.iotdb.tsfile.read.controller.MetadataQuerierByFileImpl;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorForTest;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-
-public class TimeGeneratorTest {
-
-  private static final String FILE_PATH = TsFileGeneratorForTest.outputDataFile;
-  private TsFileSequenceReader fileReader;
-  private MetadataQuerierByFileImpl metadataQuerierByFile;
-  private IChunkLoader chunkLoader;
-
-  @Before
-  public void before() throws IOException {
-    TSFileDescriptor.getInstance().getConfig().setTimeEncoder("TS_2DIFF");
-    TsFileGeneratorForTest.generateFile(1000, 10 * 1024 * 1024, 10000);
-    fileReader = new TsFileSequenceReader(FILE_PATH);
-    metadataQuerierByFile = new MetadataQuerierByFileImpl(fileReader);
-    chunkLoader = new CachedChunkLoaderImpl(fileReader);
-  }
-
-  @After
-  public void after() throws IOException {
-    fileReader.close();
-    TsFileGeneratorForTest.after();
-  }
-
-  @Test
-  public void testTimeGenerator() throws IOException {
-    long startTimestamp = 1480562618000L;
-    Filter filter = TimeFilterApi.lt(1480562618100L);
-    Filter filter2 = ValueFilterApi.gt(new Binary("dog", TSFileConfig.STRING_CHARSET));
-    Filter filter3 =
-        FilterFactory.and(TimeFilterApi.gtEq(1480562618000L), TimeFilterApi.ltEq(1480562618100L));
-
-    IExpression IExpression =
-        BinaryExpression.or(
-            BinaryExpression.and(
-                new SingleSeriesExpression(new Path("d1", "s1", true), filter),
-                new SingleSeriesExpression(new Path("d1", "s4", true), filter2)),
-            new SingleSeriesExpression(new Path("d1", "s1", true), filter3));
-
-    TsFileTimeGenerator timestampGenerator =
-        new TsFileTimeGenerator(IExpression, chunkLoader, metadataQuerierByFile);
-    while (timestampGenerator.hasNext()) {
-      // System.out.println(timestampGenerator.next());
-      Assert.assertEquals(startTimestamp, timestampGenerator.next());
-      startTimestamp += 1;
-    }
-    Assert.assertEquals(1480562618101L, startTimestamp);
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/TsFileGeneratorForSeriesReaderByTimestamp.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/TsFileGeneratorForSeriesReaderByTimestamp.java
deleted file mode 100755
index 230cf0f..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/query/timegenerator/TsFileGeneratorForSeriesReaderByTimestamp.java
+++ /dev/null
@@ -1,280 +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.query.timegenerator;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.FileUtils;
-import org.apache.iotdb.tsfile.utils.FileUtils.Unit;
-import org.apache.iotdb.tsfile.utils.RecordUtils;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorForTest;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.Scanner;
-
-@Ignore
-public class TsFileGeneratorForSeriesReaderByTimestamp {
-
-  public static final long START_TIMESTAMP = 1480562618000L;
-  private static final Logger LOG =
-      LoggerFactory.getLogger(TsFileGeneratorForSeriesReaderByTimestamp.class);
-  public static TsFileWriter innerWriter;
-  public static String inputDataFile;
-  public static String outputDataFile =
-      TsFileGeneratorForTest.getTestTsFilePath("root.sg1", 0, 0, 0);
-  public static String errorOutputDataFile;
-  public static Schema schema;
-  private static int rowCount;
-  private static int chunkGroupSize;
-  private static int pageSize;
-  private static int preChunkGroupSize;
-  private static int prePageSize;
-
-  public static void generateFile(int rc, int rs, int ps) throws IOException {
-    rowCount = rc;
-    chunkGroupSize = rs;
-    pageSize = ps;
-    prepare();
-    write();
-  }
-
-  public static void prepare() throws IOException {
-    File file = new File(outputDataFile);
-    if (!file.getParentFile().exists()) {
-      Assert.assertTrue(file.getParentFile().mkdirs());
-    }
-    inputDataFile = TsFileGeneratorForTest.getTestTsFilePath("root.sg1", 0, 0, 1);
-    file = new File(inputDataFile);
-    if (!file.getParentFile().exists()) {
-      Assert.assertTrue(file.getParentFile().mkdirs());
-    }
-    errorOutputDataFile = TsFileGeneratorForTest.getTestTsFilePath("root.sg1", 0, 0, 2);
-    file = new File(errorOutputDataFile);
-    if (!file.getParentFile().exists()) {
-      Assert.assertTrue(file.getParentFile().mkdirs());
-    }
-    generateTestData();
-    generateSampleInputDataFile();
-  }
-
-  public static void after() {
-    TSFileDescriptor.getInstance().getConfig().setGroupSizeInByte(preChunkGroupSize);
-    TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(prePageSize);
-    File file = new File(inputDataFile);
-    if (file.exists()) {
-      Assert.assertTrue(file.delete());
-    }
-    file = new File(outputDataFile);
-    if (file.exists()) {
-      Assert.assertTrue(file.delete());
-    }
-    file = new File(errorOutputDataFile);
-    if (file.exists()) {
-      Assert.assertTrue(file.delete());
-    }
-  }
-
-  private static void generateSampleInputDataFile() throws IOException {
-    File file = new File(inputDataFile);
-    if (file.exists()) {
-      Assert.assertTrue(file.delete());
-    }
-    file.getParentFile().mkdirs();
-    FileWriter fw = new FileWriter(file);
-
-    long startTime = START_TIMESTAMP;
-    for (int i = 0; i < rowCount; i += 2) {
-      // write d1
-      String d1 = "d1," + (startTime + i) + ",s1," + (i * 10 + 1) + ",s2," + (i * 10 + 2);
-      if (i % 5 == 0) {
-        d1 += ",s3," + (i * 10 + 3);
-      }
-      if (i % 8 == 0) {
-        d1 += ",s4," + "dog" + i;
-      }
-      if (i % 9 == 0) {
-        d1 += ",s5," + "false";
-      }
-      if (i % 10 == 0) {
-        d1 += ",s6," + ((int) (i / 9.0) * 100) / 100.0;
-      }
-      if (i % 11 == 0) {
-        d1 += ",s7," + ((int) (i / 10.0) * 100) / 100.0;
-      }
-      fw.write(d1 + "\r\n");
-
-      // write d2
-      String d2 = "d2," + (startTime + i) + ",s2," + (i * 10 + 2) + ",s3," + (i * 10 + 3);
-      if (i % 20 < 5) {
-        // LOG.info("write null to d2:" + (startTime + i));
-        d2 = "d2," + (startTime + i) + ",s2,,s3," + (i * 10 + 3);
-      }
-      if (i % 5 == 0) {
-        d2 += ",s1," + (i * 10 + 1);
-      }
-      if (i % 8 == 0) {
-        d2 += ",s4," + "dog" + i % 4;
-      }
-      fw.write(d2 + "\r\n");
-    }
-    // write error
-    String d =
-        "d2,3,"
-            + (startTime + rowCount)
-            + ",s2,"
-            + (rowCount * 10 + 2)
-            + ",s3,"
-            + (rowCount * 10 + 3);
-    fw.write(d + "\r\n");
-    d = "d2," + (startTime + rowCount + 1) + ",2,s-1," + (rowCount * 10 + 2);
-    fw.write(d + "\r\n");
-    fw.close();
-  }
-
-  public static void write() throws IOException {
-    File file = new File(outputDataFile);
-    File errorFile = new File(errorOutputDataFile);
-    if (file.exists()) {
-      Assert.assertTrue(file.delete());
-    }
-    if (errorFile.exists()) {
-      Assert.assertTrue(errorFile.delete());
-    }
-
-    // LOG.info(jsonSchema.toString());
-    preChunkGroupSize = TSFileDescriptor.getInstance().getConfig().getGroupSizeInByte();
-    prePageSize = TSFileDescriptor.getInstance().getConfig().getMaxNumberOfPointsInPage();
-    TSFileDescriptor.getInstance().getConfig().setGroupSizeInByte(chunkGroupSize);
-    TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(pageSize);
-    innerWriter = new TsFileWriter(file, schema, TSFileDescriptor.getInstance().getConfig());
-
-    // write
-    try {
-      writeToFile(schema);
-    } catch (WriteProcessException e) {
-      e.printStackTrace();
-    }
-    LOG.info("write to file successfully!!");
-  }
-
-  private static void generateTestData() {
-    TSFileConfig conf = TSFileDescriptor.getInstance().getConfig();
-    schema = new Schema();
-    schema.registerTimeseries(
-        new Path("d1"),
-        new MeasurementSchema("s1", TSDataType.INT32, TSEncoding.valueOf(conf.getValueEncoder())));
-    schema.registerTimeseries(
-        new Path("d1"),
-        new MeasurementSchema(
-            "s2",
-            TSDataType.INT64,
-            TSEncoding.valueOf(conf.getValueEncoder()),
-            CompressionType.UNCOMPRESSED));
-    schema.registerTimeseries(
-        new Path("d1"),
-        new MeasurementSchema(
-            "s3",
-            TSDataType.INT64,
-            TSEncoding.valueOf(conf.getValueEncoder()),
-            CompressionType.SNAPPY));
-    schema.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s4", TSDataType.TEXT, TSEncoding.PLAIN));
-    schema.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s5", TSDataType.BOOLEAN, TSEncoding.PLAIN));
-    schema.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s6", TSDataType.FLOAT, TSEncoding.RLE));
-    schema.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s7", TSDataType.DOUBLE, TSEncoding.RLE));
-    schema.registerTimeseries(
-        new Path("d2"),
-        new MeasurementSchema("s1", TSDataType.INT32, TSEncoding.valueOf(conf.getValueEncoder())));
-    schema.registerTimeseries(
-        new Path("d2"),
-        new MeasurementSchema(
-            "s2",
-            TSDataType.INT64,
-            TSEncoding.valueOf(conf.getValueEncoder()),
-            CompressionType.UNCOMPRESSED));
-    schema.registerTimeseries(
-        new Path("d2"),
-        new MeasurementSchema(
-            "s3",
-            TSDataType.INT64,
-            TSEncoding.valueOf(conf.getValueEncoder()),
-            CompressionType.SNAPPY));
-    schema.registerTimeseries(
-        new Path("d2"), new MeasurementSchema("s4", TSDataType.TEXT, TSEncoding.PLAIN));
-  }
-
-  public static void writeToFile(Schema schema) throws IOException, WriteProcessException {
-    Scanner in = getDataFile(inputDataFile);
-    long lineCount = 0;
-    long startTime = System.currentTimeMillis();
-    long endTime = System.currentTimeMillis();
-    assert in != null;
-    while (in.hasNextLine()) {
-      if (lineCount % 1000000 == 0) {
-        endTime = System.currentTimeMillis();
-        // logger.info("write line:{},inner space consumer:{},use
-        // time:{}",lineCount,innerWriter.calculateMemSizeForEachGroup(),endTime);
-        LOG.info("write line:{},use time:{}s", lineCount, (endTime - startTime) / 1000);
-      }
-      String str = in.nextLine();
-      TSRecord record = RecordUtils.parseSimpleTupleRecord(str, schema);
-      innerWriter.write(record);
-      lineCount++;
-    }
-    endTime = System.currentTimeMillis();
-    LOG.info("write line:{},use time:{}s", lineCount, (endTime - startTime) / 1000);
-    innerWriter.close();
-    in.close();
-    endTime = System.currentTimeMillis();
-    LOG.info("write total:{},use time:{}s", lineCount, (endTime - startTime) / 1000);
-    LOG.info("src file size:{}GB", FileUtils.getLocalFileByte(inputDataFile, Unit.GB));
-    LOG.info("src file size:{}MB", FileUtils.getLocalFileByte(outputDataFile, Unit.MB));
-  }
-
-  private static Scanner getDataFile(String path) {
-    File file = new File(path);
-    try {
-      Scanner in = new Scanner(file);
-      return in;
-    } catch (FileNotFoundException e) {
-      e.printStackTrace();
-      return null;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/AlignedPageReaderPushDownTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/AlignedPageReaderPushDownTest.java
deleted file mode 100644
index 6df11f0..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/AlignedPageReaderPushDownTest.java
+++ /dev/null
@@ -1,322 +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.reader;
-
-import org.apache.iotdb.tsfile.compress.ICompressor;
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.encoding.decoder.DeltaBinaryDecoder;
-import org.apache.iotdb.tsfile.encoding.decoder.IntRleDecoder;
-import org.apache.iotdb.tsfile.encoding.encoder.DeltaBinaryEncoder;
-import org.apache.iotdb.tsfile.encoding.encoder.IntRleEncoder;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.read.reader.page.AlignedPageReader;
-import org.apache.iotdb.tsfile.read.reader.series.PaginationController;
-import org.apache.iotdb.tsfile.write.page.TimePageWriter;
-import org.apache.iotdb.tsfile.write.page.ValuePageWriter;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-public class AlignedPageReaderPushDownTest {
-
-  private static final PageHeader testTimePageHeader;
-  private static ByteBuffer testTimePageData;
-
-  private static final PageHeader testValuePageHeader1;
-  private static ByteBuffer testValuePageData1;
-
-  private static final PageHeader testValuePageHeader2;
-  private static ByteBuffer testValuePageData2;
-
-  static {
-    TimePageWriter timePageWriter =
-        new TimePageWriter(
-            new DeltaBinaryEncoder.LongDeltaEncoder(),
-            ICompressor.getCompressor(CompressionType.LZ4));
-    for (long i = 0; i < 100; i++) {
-      timePageWriter.write(i);
-    }
-    testTimePageHeader = new PageHeader(0, 0, timePageWriter.getStatistics());
-    testTimePageData = null;
-    try {
-      testTimePageData = ByteBuffer.wrap(timePageWriter.getUncompressedBytes().array());
-    } catch (IOException e) {
-      e.printStackTrace();
-      Assert.fail(e.getMessage());
-    }
-
-    ValuePageWriter valuePageWriter1 =
-        new ValuePageWriter(
-            new IntRleEncoder(), ICompressor.getCompressor(CompressionType.LZ4), TSDataType.INT32);
-    for (int i = 0; i < 100; i++) {
-      valuePageWriter1.write(i, i, false);
-    }
-    testValuePageHeader1 = new PageHeader(0, 0, valuePageWriter1.getStatistics());
-    testValuePageData1 = null;
-    try {
-      testValuePageData1 = ByteBuffer.wrap(valuePageWriter1.getUncompressedBytes().array());
-    } catch (IOException e) {
-      e.printStackTrace();
-      Assert.fail(e.getMessage());
-    }
-
-    ValuePageWriter valuePageWriter2 =
-        new ValuePageWriter(
-            new IntRleEncoder(), ICompressor.getCompressor(CompressionType.LZ4), TSDataType.INT32);
-    for (int i = 0; i < 10; i++) {
-      valuePageWriter2.write(i, i, true);
-    }
-    for (int i = 10; i < 90; i++) {
-      valuePageWriter2.write(i, i, false);
-    }
-    for (int i = 90; i < 100; i++) {
-      valuePageWriter2.write(i, i, true);
-    }
-    testValuePageHeader2 = new PageHeader(0, 0, valuePageWriter2.getStatistics());
-    testValuePageData2 = null;
-    try {
-      testValuePageData2 = ByteBuffer.wrap(valuePageWriter2.getUncompressedBytes().array());
-    } catch (IOException e) {
-      e.printStackTrace();
-      Assert.fail(e.getMessage());
-    }
-  }
-
-  private void resetDataBuffer() {
-    testTimePageData.position(0);
-    testValuePageData1.position(0);
-    testValuePageData2.position(0);
-  }
-
-  private AlignedPageReader generateAlignedPageReader(
-      Filter globalTimeFilter, List<Boolean> modified) throws IOException {
-    resetDataBuffer();
-    testValuePageHeader1.setModified(modified.get(0));
-    testValuePageHeader2.setModified(modified.get(1));
-    List<PageHeader> valuePageHeaderList =
-        Arrays.asList(testValuePageHeader1, testValuePageHeader2);
-    List<ByteBuffer> valuePageDataList = Arrays.asList(testValuePageData1, testValuePageData2);
-    List<TSDataType> valueDataTypeList = Arrays.asList(TSDataType.INT32, TSDataType.INT32);
-    List<Decoder> valueDecoderList = Arrays.asList(new IntRleDecoder(), new IntRleDecoder());
-    AlignedPageReader alignedPageReader =
-        new AlignedPageReader(
-            testTimePageHeader,
-            testTimePageData,
-            new DeltaBinaryDecoder.LongDeltaDecoder(),
-            valuePageHeaderList,
-            valuePageDataList,
-            valueDataTypeList,
-            valueDecoderList,
-            globalTimeFilter);
-    alignedPageReader.initTsBlockBuilder(valueDataTypeList);
-    return alignedPageReader;
-  }
-
-  private AlignedPageReader generateAlignedPageReader(Filter globalTimeFilter) throws IOException {
-    return generateAlignedPageReader(globalTimeFilter, Arrays.asList(false, false));
-  }
-
-  private AlignedPageReader generateSingleColumnAlignedPageReader(
-      Filter globalTimeFilter, boolean modified) {
-    resetDataBuffer();
-    testValuePageHeader2.setModified(modified);
-    List<PageHeader> valuePageHeaderList = Collections.singletonList(testValuePageHeader2);
-    List<ByteBuffer> valuePageDataList = Collections.singletonList(testValuePageData2);
-    List<TSDataType> valueDataTypeList = Collections.singletonList(TSDataType.INT32);
-    List<Decoder> valueDecoderList = Collections.singletonList(new IntRleDecoder());
-    AlignedPageReader alignedPageReader =
-        new AlignedPageReader(
-            testTimePageHeader,
-            testTimePageData,
-            new DeltaBinaryDecoder.LongDeltaDecoder(),
-            valuePageHeaderList,
-            valuePageDataList,
-            valueDataTypeList,
-            valueDecoderList,
-            globalTimeFilter);
-    alignedPageReader.initTsBlockBuilder(valueDataTypeList);
-    return alignedPageReader;
-  }
-
-  private AlignedPageReader generateSingleColumnAlignedPageReader(Filter globalTimeFilter) {
-    return generateSingleColumnAlignedPageReader(globalTimeFilter, false);
-  }
-
-  @Test
-  public void testNullFilter() throws IOException {
-    AlignedPageReader alignedPageReader1 = generateAlignedPageReader(null);
-    TsBlock tsBlock1 = alignedPageReader1.getAllSatisfiedData();
-    Assert.assertEquals(100, tsBlock1.getPositionCount());
-
-    AlignedPageReader alignedPageReader2 = generateSingleColumnAlignedPageReader(null);
-    TsBlock tsBlock2 = alignedPageReader2.getAllSatisfiedData();
-    Assert.assertEquals(80, tsBlock2.getPositionCount());
-  }
-
-  @Test
-  public void testDelete() throws IOException {
-    AlignedPageReader alignedPageReader1 =
-        generateAlignedPageReader(null, Arrays.asList(true, true));
-    alignedPageReader1.setDeleteIntervalList(
-        Arrays.asList(
-            Arrays.asList(new TimeRange(0, 9), new TimeRange(20, 29)),
-            Collections.singletonList(new TimeRange(30, 39))));
-    TsBlock tsBlock1 = alignedPageReader1.getAllSatisfiedData();
-    Assert.assertEquals(90, tsBlock1.getPositionCount());
-
-    AlignedPageReader alignedPageReader2 = generateSingleColumnAlignedPageReader(null, true);
-    alignedPageReader2.setDeleteIntervalList(
-        Collections.singletonList(Collections.singletonList(new TimeRange(30, 39))));
-    TsBlock tsBlock2 = alignedPageReader2.getAllSatisfiedData();
-    Assert.assertEquals(70, tsBlock2.getPositionCount());
-  }
-
-  @Test
-  public void testNullFilterWithLimitOffset() throws IOException {
-    AlignedPageReader alignedPageReader1 = generateAlignedPageReader(null);
-    alignedPageReader1.setLimitOffset(new PaginationController(10, 10));
-    TsBlock tsBlock1 = alignedPageReader1.getAllSatisfiedData();
-    Assert.assertEquals(10, tsBlock1.getPositionCount());
-    Assert.assertEquals(10, tsBlock1.getTimeByIndex(0));
-    Assert.assertEquals(19, tsBlock1.getTimeByIndex(9));
-
-    AlignedPageReader alignedPageReader2 = generateSingleColumnAlignedPageReader(null);
-    alignedPageReader2.setLimitOffset(new PaginationController(10, 10));
-    TsBlock tsBlock2 = alignedPageReader2.getAllSatisfiedData();
-    Assert.assertEquals(10, tsBlock2.getPositionCount());
-    Assert.assertEquals(20, tsBlock2.getTimeByIndex(0));
-    Assert.assertEquals(29, tsBlock2.getTimeByIndex(9));
-  }
-
-  @Test
-  public void testGlobalTimeFilterAllSatisfy() throws IOException {
-    Filter globalTimeFilter = TimeFilterApi.gtEq(0L);
-    AlignedPageReader alignedPageReader1 = generateAlignedPageReader(globalTimeFilter);
-    alignedPageReader1.addRecordFilter(ValueFilterApi.gtEq(50));
-    TsBlock tsBlock1 = alignedPageReader1.getAllSatisfiedData();
-    Assert.assertEquals(50, tsBlock1.getPositionCount());
-
-    AlignedPageReader alignedPageReader2 = generateSingleColumnAlignedPageReader(globalTimeFilter);
-    alignedPageReader2.addRecordFilter(ValueFilterApi.gtEq(50));
-    TsBlock tsBlock2 = alignedPageReader2.getAllSatisfiedData();
-    Assert.assertEquals(40, tsBlock2.getPositionCount());
-  }
-
-  @Test
-  public void testGlobalTimeFilterAllSatisfyWithLimitOffset() throws IOException {
-    Filter globalTimeFilter = TimeFilterApi.gtEq(0L);
-    AlignedPageReader alignedPageReader1 = generateAlignedPageReader(globalTimeFilter);
-    alignedPageReader1.addRecordFilter(ValueFilterApi.gtEq(50));
-    alignedPageReader1.setLimitOffset(new PaginationController(10, 10));
-    TsBlock tsBlock1 = alignedPageReader1.getAllSatisfiedData();
-    Assert.assertEquals(10, tsBlock1.getPositionCount());
-    Assert.assertEquals(60, tsBlock1.getTimeByIndex(0));
-    Assert.assertEquals(69, tsBlock1.getTimeByIndex(9));
-
-    AlignedPageReader alignedPageReader2 = generateSingleColumnAlignedPageReader(globalTimeFilter);
-    alignedPageReader2.addRecordFilter(ValueFilterApi.gtEq(50));
-    alignedPageReader2.setLimitOffset(new PaginationController(10, 10));
-    TsBlock tsBlock2 = alignedPageReader2.getAllSatisfiedData();
-    Assert.assertEquals(10, tsBlock2.getPositionCount());
-    Assert.assertEquals(60, tsBlock2.getTimeByIndex(0));
-    Assert.assertEquals(69, tsBlock2.getTimeByIndex(9));
-  }
-
-  @Test
-  public void testPushDownFilterAllSatisfy() throws IOException {
-    Filter globalTimeFilter = TimeFilterApi.gtEq(50L);
-    AlignedPageReader alignedPageReader1 = generateAlignedPageReader(globalTimeFilter);
-    alignedPageReader1.addRecordFilter(ValueFilterApi.gtEq(0));
-    TsBlock tsBlock1 = alignedPageReader1.getAllSatisfiedData();
-    Assert.assertEquals(50, tsBlock1.getPositionCount());
-
-    AlignedPageReader alignedPageReader2 = generateSingleColumnAlignedPageReader(globalTimeFilter);
-    alignedPageReader2.addRecordFilter(ValueFilterApi.gtEq(0));
-    TsBlock tsBlock2 = alignedPageReader2.getAllSatisfiedData();
-    Assert.assertEquals(40, tsBlock2.getPositionCount());
-  }
-
-  @Test
-  public void testPushDownFilterAllSatisfyWithLimitOffset() throws IOException {
-    Filter globalTimeFilter = TimeFilterApi.gtEq(50L);
-    AlignedPageReader alignedPageReader1 = generateAlignedPageReader(globalTimeFilter);
-    alignedPageReader1.addRecordFilter(ValueFilterApi.gtEq(0));
-    alignedPageReader1.setLimitOffset(new PaginationController(10, 10));
-    TsBlock tsBlock1 = alignedPageReader1.getAllSatisfiedData();
-    Assert.assertEquals(10, tsBlock1.getPositionCount());
-    Assert.assertEquals(60, tsBlock1.getTimeByIndex(0));
-    Assert.assertEquals(69, tsBlock1.getTimeByIndex(9));
-
-    AlignedPageReader alignedPageReader2 = generateSingleColumnAlignedPageReader(globalTimeFilter);
-    alignedPageReader2.addRecordFilter(ValueFilterApi.gtEq(0));
-    alignedPageReader2.setLimitOffset(new PaginationController(10, 10));
-    TsBlock tsBlock2 = alignedPageReader2.getAllSatisfiedData();
-    Assert.assertEquals(10, tsBlock2.getPositionCount());
-    Assert.assertEquals(60, tsBlock2.getTimeByIndex(0));
-    Assert.assertEquals(69, tsBlock2.getTimeByIndex(9));
-  }
-
-  @Test
-  public void testFilter() throws IOException {
-    Filter globalTimeFilter = TimeFilterApi.gtEq(30L);
-    AlignedPageReader alignedPageReader1 = generateAlignedPageReader(globalTimeFilter);
-    alignedPageReader1.addRecordFilter(ValueFilterApi.lt(80));
-    TsBlock tsBlock1 = alignedPageReader1.getAllSatisfiedData();
-    Assert.assertEquals(50, tsBlock1.getPositionCount());
-
-    AlignedPageReader alignedPageReader2 = generateSingleColumnAlignedPageReader(globalTimeFilter);
-    alignedPageReader2.addRecordFilter(ValueFilterApi.lt(80));
-    TsBlock tsBlock2 = alignedPageReader2.getAllSatisfiedData();
-    Assert.assertEquals(50, tsBlock2.getPositionCount());
-  }
-
-  @Test
-  public void testFilterWithLimitOffset() throws IOException {
-    Filter globalTimeFilter = TimeFilterApi.gtEq(50L);
-    AlignedPageReader alignedPageReader1 = generateAlignedPageReader(globalTimeFilter);
-    alignedPageReader1.addRecordFilter(ValueFilterApi.lt(80));
-    alignedPageReader1.setLimitOffset(new PaginationController(10, 10));
-    TsBlock tsBlock1 = alignedPageReader1.getAllSatisfiedData();
-    Assert.assertEquals(10, tsBlock1.getPositionCount());
-    Assert.assertEquals(60, tsBlock1.getTimeByIndex(0));
-    Assert.assertEquals(69, tsBlock1.getTimeByIndex(9));
-
-    AlignedPageReader alignedPageReader2 = generateSingleColumnAlignedPageReader(globalTimeFilter);
-    alignedPageReader2.addRecordFilter(ValueFilterApi.lt(80));
-    alignedPageReader2.setLimitOffset(new PaginationController(10, 10));
-    TsBlock tsBlock2 = alignedPageReader2.getAllSatisfiedData();
-    Assert.assertEquals(10, tsBlock2.getPositionCount());
-    Assert.assertEquals(60, tsBlock2.getTimeByIndex(0));
-    Assert.assertEquals(69, tsBlock2.getTimeByIndex(9));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/ChunkReaderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/ChunkReaderTest.java
deleted file mode 100644
index 4d87098..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/ChunkReaderTest.java
+++ /dev/null
@@ -1,109 +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.reader;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.constant.TestConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.reader.chunk.ChunkReader;
-import org.apache.iotdb.tsfile.utils.FilePathUtils;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorUtils;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
-
-public class ChunkReaderTest {
-  private final String testStorageGroup = TsFileGeneratorUtils.testStorageGroup;
-  private final File SEQ_DIRS =
-      new File(
-          TestConstant.BASE_OUTPUT_PATH
-              + "data"
-              + File.separator
-              + "sequence"
-              + File.separator
-              + testStorageGroup
-              + File.separator
-              + "0"
-              + File.separator
-              + "0");
-
-  private File file;
-  private final int oldMaxPointNumInPage =
-      TSFileDescriptor.getInstance().getConfig().getMaxNumberOfPointsInPage();
-  private final int deviceNum = 5;
-  private final int measurementNum = 10;
-
-  @Before
-  public void setUp() throws IOException, WriteProcessException {
-    TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(100);
-    if (!SEQ_DIRS.exists()) {
-      Assert.assertTrue(SEQ_DIRS.mkdirs());
-    }
-    String fileName =
-        System.currentTimeMillis() + FilePathUtils.FILE_NAME_SEPARATOR + "0-0-0.tsfile";
-    String filePath = SEQ_DIRS.getPath() + File.separator + fileName;
-    file =
-        TsFileGeneratorUtils.generateNonAlignedTsFile(
-            filePath, deviceNum, measurementNum, 500, 0, 0, 0, 0);
-  }
-
-  @After
-  public void tearDown() {
-    TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(oldMaxPointNumInPage);
-    if (file.exists()) {
-      file.delete();
-    }
-    if (SEQ_DIRS.exists()) {
-      SEQ_DIRS.delete();
-    }
-  }
-
-  @Test
-  public void testAccelerateQueryByTimestamp() throws IOException {
-    try (TsFileSequenceReader tsFileSequenceReader = new TsFileSequenceReader(file.getPath())) {
-      for (int i = 0; i < deviceNum; i++) {
-        for (int j = 0; j < measurementNum; j++) {
-          List<ChunkMetadata> chunkMetadataList =
-              tsFileSequenceReader.getChunkMetadataList(
-                  new Path(testStorageGroup + PATH_SEPARATOR + "d" + i, "s" + j, true));
-          for (ChunkMetadata chunkMetadata : chunkMetadataList) {
-            Chunk chunk = tsFileSequenceReader.readMemChunk(chunkMetadata);
-            ChunkReader chunkReader = new ChunkReader(chunk);
-            chunk = tsFileSequenceReader.readMemChunk(chunkMetadata);
-            ChunkReader chunkReaderByTimestamp = new ChunkReader(chunk, 301);
-            Assert.assertEquals(5, chunkReader.loadPageReaderList().size());
-            Assert.assertEquals(2, chunkReaderByTimestamp.loadPageReaderList().size());
-          }
-        }
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/FakedBatchReader.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/FakedBatchReader.java
deleted file mode 100644
index 4d5febd..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/FakedBatchReader.java
+++ /dev/null
@@ -1,55 +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.reader;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-
-import java.io.IOException;
-
-public class FakedBatchReader implements IBatchReader {
-
-  private BatchData data;
-  private boolean hasCached = false;
-
-  public FakedBatchReader(long[] timestamps) {
-    data = new BatchData(TSDataType.INT32);
-    for (long time : timestamps) {
-      data.putInt(time, 1);
-      hasCached = true;
-    }
-  }
-
-  @Override
-  public boolean hasNextBatch() {
-    return hasCached;
-  }
-
-  @Override
-  public BatchData nextBatch() throws IOException {
-    if (data == null || !data.hasCurrent()) {
-      throw new IOException("no next batch");
-    }
-    hasCached = false;
-    return data;
-  }
-
-  @Override
-  public void close() {}
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/FakedMultiBatchReader.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/FakedMultiBatchReader.java
deleted file mode 100644
index f580fd1..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/FakedMultiBatchReader.java
+++ /dev/null
@@ -1,59 +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.reader;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-
-public class FakedMultiBatchReader implements IBatchReader {
-
-  private long time = 0;
-  private int batchSize;
-  private int batches;
-  private int batchIndex = 0;
-  private Filter filter;
-
-  FakedMultiBatchReader(int batchSize, int batches, Filter filter) {
-    this.batchSize = batchSize;
-    this.batches = batches;
-    this.filter = filter;
-  }
-
-  @Override
-  public boolean hasNextBatch() {
-    return batchIndex < batches;
-  }
-
-  @Override
-  public BatchData nextBatch() {
-    batchIndex++;
-    BatchData batchData = new BatchData(TSDataType.INT64);
-    for (int i = 0; i < batchSize; i++) {
-      if (filter.satisfy(time, time)) {
-        batchData.putLong(time, time);
-      }
-      time++;
-    }
-    return batchData;
-  }
-
-  @Override
-  public void close() {}
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/LazyLoadAlignedPagePointReaderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/LazyLoadAlignedPagePointReaderTest.java
deleted file mode 100644
index e9609c4..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/LazyLoadAlignedPagePointReaderTest.java
+++ /dev/null
@@ -1,177 +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.reader;
-
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.reader.page.LazyLoadAlignedPagePointReader;
-import org.apache.iotdb.tsfile.read.reader.page.TimePageReader;
-import org.apache.iotdb.tsfile.read.reader.page.ValuePageReader;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.powermock.api.mockito.PowerMockito;
-
-import java.io.IOException;
-import java.util.LinkedList;
-import java.util.List;
-
-public class LazyLoadAlignedPagePointReaderTest {
-
-  @Test
-  public void testTimeNoData() throws IOException {
-    int columnCount = 2;
-    TimePageReader timePageReader = PowerMockito.mock(TimePageReader.class);
-    List<ValuePageReader> valuePageReaders = new LinkedList<>();
-    for (int i = 0; i < columnCount; i++) {
-      valuePageReaders.add(PowerMockito.mock(ValuePageReader.class));
-    }
-
-    PowerMockito.when(timePageReader.hasNextTime()).thenReturn(false);
-    PowerMockito.when(valuePageReaders.get(0).nextValue(Mockito.anyLong(), Mockito.anyInt()))
-        .thenReturn(null);
-    PowerMockito.when(valuePageReaders.get(1).nextValue(Mockito.anyLong(), Mockito.anyInt()))
-        .thenReturn(null);
-
-    LazyLoadAlignedPagePointReader reader =
-        new LazyLoadAlignedPagePointReader(timePageReader, valuePageReaders);
-    boolean hasNextValue = reader.hasNextTimeValuePair();
-    Assert.assertFalse(hasNextValue);
-  }
-
-  @Test
-  public void testValueNoData() throws IOException {
-    int columnCount = 2;
-    TimePageReader timePageReader = PowerMockito.mock(TimePageReader.class);
-    List<ValuePageReader> valuePageReaders = new LinkedList<>();
-    for (int i = 0; i < columnCount; i++) {
-      valuePageReaders.add(PowerMockito.mock(ValuePageReader.class));
-    }
-
-    PowerMockito.when(timePageReader.hasNextTime()).thenReturn(true).thenReturn(false);
-    PowerMockito.when(valuePageReaders.get(0).nextValue(Mockito.anyLong(), Mockito.anyInt()))
-        .thenReturn(null);
-    PowerMockito.when(valuePageReaders.get(1).nextValue(Mockito.anyLong(), Mockito.anyInt()))
-        .thenReturn(null);
-
-    LazyLoadAlignedPagePointReader reader =
-        new LazyLoadAlignedPagePointReader(timePageReader, valuePageReaders);
-    boolean hasNextValue = reader.hasNextTimeValuePair();
-    Assert.assertFalse(hasNextValue);
-  }
-
-  @Test
-  public void testOneRow() throws IOException {
-    int columnCount = 2;
-    TimePageReader timePageReader = PowerMockito.mock(TimePageReader.class);
-    List<ValuePageReader> valuePageReaders = new LinkedList<>();
-    for (int i = 0; i < columnCount; i++) {
-      valuePageReaders.add(PowerMockito.mock(ValuePageReader.class));
-    }
-
-    PowerMockito.when(timePageReader.hasNextTime()).thenReturn(true).thenReturn(false);
-    PowerMockito.when(timePageReader.nextTime()).thenReturn(1L);
-    PowerMockito.when(valuePageReaders.get(0).nextValue(Mockito.anyLong(), Mockito.anyInt()))
-        .thenReturn(new TsPrimitiveType.TsInt(1));
-    PowerMockito.when(valuePageReaders.get(1).nextValue(Mockito.anyLong(), Mockito.anyInt()))
-        .thenReturn(new TsPrimitiveType.TsInt(2));
-
-    LazyLoadAlignedPagePointReader reader =
-        new LazyLoadAlignedPagePointReader(timePageReader, valuePageReaders);
-    boolean hasNextValue = reader.hasNextTimeValuePair();
-    Assert.assertTrue(hasNextValue);
-    TimeValuePair row = reader.nextTimeValuePair();
-    Assert.assertEquals(1L, row.getTimestamp());
-    Assert.assertEquals(
-        new TsPrimitiveType.TsVector(
-            new TsPrimitiveType.TsInt[] {
-              new TsPrimitiveType.TsInt(1), new TsPrimitiveType.TsInt(2)
-            }),
-        row.getValue());
-    Assert.assertFalse(reader.hasNextTimeValuePair());
-  }
-
-  @Test
-  public void testSomeColumnNull() throws IOException {
-    int columnCount = 2;
-    TimePageReader timePageReader = PowerMockito.mock(TimePageReader.class);
-    List<ValuePageReader> valuePageReaders = new LinkedList<>();
-    for (int i = 0; i < columnCount; i++) {
-      valuePageReaders.add(PowerMockito.mock(ValuePageReader.class));
-    }
-
-    PowerMockito.when(timePageReader.hasNextTime())
-        .thenReturn(true)
-        .thenReturn(true)
-        .thenReturn(false);
-    PowerMockito.when(timePageReader.nextTime()).thenReturn(1L).thenReturn(2L);
-    PowerMockito.when(valuePageReaders.get(0).nextValue(Mockito.anyLong(), Mockito.anyInt()))
-        .thenReturn(new TsPrimitiveType.TsInt(1))
-        .thenReturn(null);
-    PowerMockito.when(valuePageReaders.get(1).nextValue(Mockito.anyLong(), Mockito.anyInt()))
-        .thenReturn(null)
-        .thenReturn(null);
-
-    LazyLoadAlignedPagePointReader reader =
-        new LazyLoadAlignedPagePointReader(timePageReader, valuePageReaders);
-    boolean hasNextValue = reader.hasNextTimeValuePair();
-    Assert.assertTrue(hasNextValue);
-    TimeValuePair row = reader.nextTimeValuePair();
-    Assert.assertEquals(1L, row.getTimestamp());
-    Assert.assertEquals("[1, null]", row.getValue().toString());
-    Assert.assertFalse(reader.hasNextTimeValuePair());
-  }
-
-  @Test
-  public void testMultiRow() throws IOException {
-    int columnCount = 2;
-    TimePageReader timePageReader = PowerMockito.mock(TimePageReader.class);
-    List<ValuePageReader> valuePageReaders = new LinkedList<>();
-    for (int i = 0; i < columnCount; i++) {
-      valuePageReaders.add(PowerMockito.mock(ValuePageReader.class));
-    }
-
-    PowerMockito.when(timePageReader.hasNextTime())
-        .thenReturn(true)
-        .thenReturn(true)
-        .thenReturn(false);
-    PowerMockito.when(timePageReader.nextTime()).thenReturn(1L).thenReturn(2L);
-    PowerMockito.when(valuePageReaders.get(0).nextValue(Mockito.anyLong(), Mockito.anyInt()))
-        .thenReturn(new TsPrimitiveType.TsInt(1))
-        .thenReturn(new TsPrimitiveType.TsInt(1));
-    PowerMockito.when(valuePageReaders.get(1).nextValue(Mockito.anyLong(), Mockito.anyInt()))
-        .thenReturn(null)
-        .thenReturn(new TsPrimitiveType.TsInt(2));
-
-    LazyLoadAlignedPagePointReader reader =
-        new LazyLoadAlignedPagePointReader(timePageReader, valuePageReaders);
-    boolean hasNextValue = reader.hasNextTimeValuePair();
-    Assert.assertTrue(hasNextValue);
-    TimeValuePair row1 = reader.nextTimeValuePair();
-    Assert.assertEquals(1L, row1.getTimestamp());
-    Assert.assertEquals("[1, null]", row1.getValue().toString());
-    Assert.assertTrue(reader.hasNextTimeValuePair());
-    TimeValuePair row2 = reader.nextTimeValuePair();
-    Assert.assertEquals(2L, row2.getTimestamp());
-    Assert.assertEquals("[1, 2]", row2.getValue().toString());
-    Assert.assertFalse(reader.hasNextTimeValuePair());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/PageReaderPushDownTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/PageReaderPushDownTest.java
deleted file mode 100644
index 6cdd7644..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/PageReaderPushDownTest.java
+++ /dev/null
@@ -1,145 +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.reader;
-
-import org.apache.iotdb.tsfile.encoding.decoder.DeltaBinaryDecoder;
-import org.apache.iotdb.tsfile.encoding.decoder.IntRleDecoder;
-import org.apache.iotdb.tsfile.encoding.encoder.DeltaBinaryEncoder;
-import org.apache.iotdb.tsfile.encoding.encoder.IntRleEncoder;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.block.TsBlock;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.read.reader.page.PageReader;
-import org.apache.iotdb.tsfile.read.reader.series.PaginationController;
-import org.apache.iotdb.tsfile.write.page.PageWriter;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-public class PageReaderPushDownTest {
-
-  private static final PageHeader testPageHeader;
-  private static ByteBuffer testPageData;
-
-  static {
-    PageWriter pageWriter = new PageWriter();
-    pageWriter.setTimeEncoder(new DeltaBinaryEncoder.LongDeltaEncoder());
-    pageWriter.setValueEncoder(new IntRleEncoder());
-    pageWriter.initStatistics(TSDataType.INT32);
-
-    for (int i = 0; i < 100; i++) {
-      pageWriter.write(i, i);
-    }
-
-    testPageHeader = new PageHeader(0, 0, pageWriter.getStatistics());
-
-    testPageData = null;
-    try {
-      testPageData = ByteBuffer.wrap(pageWriter.getUncompressedBytes().array());
-    } catch (IOException e) {
-      e.printStackTrace();
-      Assert.fail(e.getMessage());
-    }
-  }
-
-  private IPageReader generatePageReader() {
-    testPageData.position(0);
-    return new PageReader(
-        testPageHeader,
-        testPageData,
-        TSDataType.INT32,
-        new IntRleDecoder(),
-        new DeltaBinaryDecoder.LongDeltaDecoder());
-  }
-
-  @Test
-  public void testNullFilter() throws IOException {
-    IPageReader pageReader = generatePageReader();
-
-    TsBlock tsBlock = pageReader.getAllSatisfiedData();
-
-    Assert.assertEquals(100, tsBlock.getPositionCount());
-  }
-
-  @Test
-  public void testNullFilterAndLimitOffset() throws IOException {
-    IPageReader pageReader = generatePageReader();
-    pageReader.setLimitOffset(new PaginationController(10, 10));
-
-    TsBlock tsBlock = pageReader.getAllSatisfiedData();
-
-    Assert.assertEquals(10, tsBlock.getPositionCount());
-    Assert.assertEquals(10, tsBlock.getTimeByIndex(0));
-    Assert.assertEquals(19, tsBlock.getTimeByIndex(9));
-  }
-
-  @Test
-  public void testFilterAllSatisfy() throws IOException {
-    IPageReader pageReader = generatePageReader();
-    pageReader.addRecordFilter(TimeFilterApi.gtEq(0));
-
-    TsBlock tsBlock = pageReader.getAllSatisfiedData();
-
-    Assert.assertEquals(100, tsBlock.getPositionCount());
-  }
-
-  @Test
-  public void testFilterAllSatisfyAndLimitOffset() throws IOException {
-    IPageReader pageReader = generatePageReader();
-    pageReader.addRecordFilter(TimeFilterApi.gtEq(0));
-    pageReader.setLimitOffset(new PaginationController(10, 10));
-
-    TsBlock tsBlock = pageReader.getAllSatisfiedData();
-
-    Assert.assertEquals(10, tsBlock.getPositionCount());
-    Assert.assertEquals(10, tsBlock.getTimeByIndex(0));
-    Assert.assertEquals(19, tsBlock.getTimeByIndex(9));
-  }
-
-  @Test
-  public void testFilter() throws IOException {
-    IPageReader pageReader = generatePageReader();
-    pageReader.addRecordFilter(TimeFilterApi.gtEq(50));
-    pageReader.addRecordFilter(ValueFilterApi.lt(80));
-
-    TsBlock tsBlock = pageReader.getAllSatisfiedData();
-
-    Assert.assertEquals(30, tsBlock.getPositionCount());
-  }
-
-  @Test
-  public void testFilterAndLimitOffset() throws IOException {
-    IPageReader pageReader = generatePageReader();
-    pageReader.addRecordFilter(TimeFilterApi.gtEq(50));
-    pageReader.addRecordFilter(ValueFilterApi.lt(80));
-    pageReader.setLimitOffset(new PaginationController(10, 10));
-
-    TsBlock tsBlock = pageReader.getAllSatisfiedData();
-
-    Assert.assertEquals(10, tsBlock.getPositionCount());
-    Assert.assertEquals(60, tsBlock.getTimeByIndex(0));
-    Assert.assertEquals(69, tsBlock.getTimeByIndex(9));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/PageReaderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/PageReaderTest.java
deleted file mode 100644
index 200aeb2..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/PageReaderTest.java
+++ /dev/null
@@ -1,314 +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.reader;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.encoding.decoder.DeltaBinaryDecoder;
-import org.apache.iotdb.tsfile.encoding.decoder.DoublePrecisionDecoderV1;
-import org.apache.iotdb.tsfile.encoding.decoder.IntRleDecoder;
-import org.apache.iotdb.tsfile.encoding.decoder.LongRleDecoder;
-import org.apache.iotdb.tsfile.encoding.decoder.PlainDecoder;
-import org.apache.iotdb.tsfile.encoding.decoder.SinglePrecisionDecoderV1;
-import org.apache.iotdb.tsfile.encoding.encoder.DeltaBinaryEncoder;
-import org.apache.iotdb.tsfile.encoding.encoder.DoublePrecisionEncoderV1;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.IntRleEncoder;
-import org.apache.iotdb.tsfile.encoding.encoder.LongRleEncoder;
-import org.apache.iotdb.tsfile.encoding.encoder.PlainEncoder;
-import org.apache.iotdb.tsfile.encoding.encoder.SinglePrecisionEncoderV1;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.TimeRange;
-import org.apache.iotdb.tsfile.read.reader.page.PageReader;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.page.PageWriter;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-public class PageReaderTest {
-
-  private static final int POINTS_COUNT_IN_ONE_PAGE = 1000000;
-
-  @Test
-  public void testLong() {
-
-    LoopWriteReadTest test =
-        new LoopWriteReadTest(
-            "Test INT64",
-            new LongRleEncoder(),
-            new LongRleDecoder(),
-            TSDataType.INT64,
-            POINTS_COUNT_IN_ONE_PAGE) {
-          @Override
-          public Object generateValueByIndex(int i) {
-            return Long.MAX_VALUE - i;
-          }
-        };
-    test.test(TSDataType.INT64);
-  }
-
-  @Test
-  public void testBoolean() {
-    LoopWriteReadTest test =
-        new LoopWriteReadTest(
-            "Test Boolean",
-            new IntRleEncoder(),
-            new IntRleDecoder(),
-            TSDataType.BOOLEAN,
-            POINTS_COUNT_IN_ONE_PAGE) {
-          @Override
-          public Object generateValueByIndex(int i) {
-            return i % 3 == 0;
-          }
-        };
-    test.test(TSDataType.BOOLEAN);
-  }
-
-  @Test
-  public void testInt() {
-    LoopWriteReadTest test =
-        new LoopWriteReadTest(
-            "Test INT32",
-            new IntRleEncoder(),
-            new IntRleDecoder(),
-            TSDataType.INT32,
-            POINTS_COUNT_IN_ONE_PAGE) {
-          @Override
-          public Object generateValueByIndex(int i) {
-            return i;
-          }
-        };
-    test.test(TSDataType.INT32);
-  }
-
-  @Test
-  public void testFloat() {
-    LoopWriteReadTest test =
-        new LoopWriteReadTest(
-            "Test FLOAT",
-            new SinglePrecisionEncoderV1(),
-            new SinglePrecisionDecoderV1(),
-            TSDataType.FLOAT,
-            POINTS_COUNT_IN_ONE_PAGE) {
-          @Override
-          public Object generateValueByIndex(int i) {
-            return (float) i / 10 - (float) i / 100;
-          }
-        };
-    test.test(TSDataType.FLOAT);
-
-    LoopWriteReadTest test2 =
-        new LoopWriteReadTest(
-            "Test FLOAT",
-            new SinglePrecisionEncoderV1(),
-            new SinglePrecisionDecoderV1(),
-            TSDataType.FLOAT,
-            POINTS_COUNT_IN_ONE_PAGE) {
-          @Override
-          public Object generateValueByIndex(int i) {
-            return (float) i / 100 - (float) i / 10;
-          }
-        };
-    test2.test(TSDataType.FLOAT);
-  }
-
-  @Test
-  public void testDouble() {
-    LoopWriteReadTest test =
-        new LoopWriteReadTest(
-            "Test Double",
-            new DoublePrecisionEncoderV1(),
-            new DoublePrecisionDecoderV1(),
-            TSDataType.DOUBLE,
-            POINTS_COUNT_IN_ONE_PAGE) {
-          @Override
-          public Object generateValueByIndex(int i) {
-            return (double) i / 10 - (double) i / 100;
-          }
-        };
-    test.test(TSDataType.DOUBLE);
-
-    LoopWriteReadTest test2 =
-        new LoopWriteReadTest(
-            "Test Double",
-            new DoublePrecisionEncoderV1(),
-            new DoublePrecisionDecoderV1(),
-            TSDataType.DOUBLE,
-            POINTS_COUNT_IN_ONE_PAGE) {
-          @Override
-          public Object generateValueByIndex(int i) {
-            return (double) i / 1000 - (double) i / 100;
-          }
-        };
-    test2.test(TSDataType.DOUBLE);
-  }
-
-  @Test
-  public void testBinary() {
-    LoopWriteReadTest test =
-        new LoopWriteReadTest(
-            "Test Double",
-            new PlainEncoder(TSDataType.TEXT, 1000),
-            new PlainDecoder(),
-            TSDataType.TEXT,
-            POINTS_COUNT_IN_ONE_PAGE) {
-          @Override
-          public Object generateValueByIndex(int i) {
-            return new Binary("TEST TEXT" + i, TSFileConfig.STRING_CHARSET);
-          }
-        };
-    test.test(TSDataType.TEXT);
-  }
-
-  private abstract static class LoopWriteReadTest {
-
-    private Encoder encoder;
-    private Decoder decoder;
-    private TSDataType dataType;
-    private PageWriter pageWriter;
-    private String name;
-    private int count;
-
-    public LoopWriteReadTest(
-        String name, Encoder encoder, Decoder decoder, TSDataType dataType, int count) {
-      this.name = name;
-      this.encoder = encoder;
-      this.decoder = decoder;
-      this.dataType = dataType;
-      this.count = count;
-    }
-
-    public void test(TSDataType dataType) {
-      try {
-        pageWriter = new PageWriter();
-        pageWriter.setTimeEncoder(new DeltaBinaryEncoder.LongDeltaEncoder());
-        pageWriter.setValueEncoder(this.encoder);
-        pageWriter.initStatistics(dataType);
-        writeData();
-
-        ByteBuffer page = ByteBuffer.wrap(pageWriter.getUncompressedBytes().array());
-
-        PageReader pageReader =
-            new PageReader(page, dataType, decoder, new DeltaBinaryDecoder.LongDeltaDecoder());
-
-        int index = 0;
-        BatchData data = pageReader.getAllSatisfiedPageData();
-        Assert.assertNotNull(data);
-
-        while (data.hasCurrent()) {
-          Assert.assertEquals(Long.valueOf(index), (Long) data.currentTime());
-          Assert.assertEquals(generateValueByIndex(index), data.currentValue());
-          data.next();
-          index++;
-        }
-        Assert.assertEquals(count, index);
-      } catch (IOException e) {
-        e.printStackTrace();
-        Assert.fail("Fail when executing test: [" + name + "]");
-      }
-    }
-
-    public void testDelete(TSDataType dataType) {
-      try {
-        pageWriter = new PageWriter();
-        pageWriter.setTimeEncoder(new DeltaBinaryEncoder.LongDeltaEncoder());
-        pageWriter.setValueEncoder(this.encoder);
-        pageWriter.initStatistics(dataType);
-        writeData();
-
-        ByteBuffer page = ByteBuffer.wrap(pageWriter.getUncompressedBytes().array());
-
-        PageReader pageReader =
-            new PageReader(page, dataType, decoder, new DeltaBinaryDecoder.LongDeltaDecoder());
-
-        int index = 0;
-        List<TimeRange> deleteIntervals = new ArrayList<>();
-        deleteIntervals.add(new TimeRange(5, 10));
-        deleteIntervals.add(new TimeRange(20, 30));
-        deleteIntervals.add(new TimeRange(50, 70));
-        pageReader.setDeleteIntervalList(deleteIntervals);
-        BatchData data = pageReader.getAllSatisfiedPageData();
-        Assert.assertNotNull(data);
-
-        for (TimeRange range : pageReader.getDeleteIntervalList()) {
-          while (data.hasCurrent()) {
-            Assert.assertEquals(Long.valueOf(index), (Long) data.currentTime());
-            Assert.assertEquals(generateValueByIndex(index), data.currentValue());
-            data.next();
-            index++;
-            if (index == range.getMin()) {
-              index = (int) (range.getMax() + 1);
-              break;
-            }
-          }
-        }
-      } catch (IOException e) {
-        e.printStackTrace();
-        Assert.fail("Fail when executing test: [" + name + "]");
-      }
-    }
-
-    private void writeData() {
-      for (int i = 0; i < count; i++) {
-        switch (dataType) {
-          case BOOLEAN:
-            pageWriter.write(i, (Boolean) generateValueByIndex(i));
-            break;
-          case INT32:
-            pageWriter.write(i, (Integer) generateValueByIndex(i));
-            break;
-          case INT64:
-            pageWriter.write(i, (Long) generateValueByIndex(i));
-            break;
-          case FLOAT:
-            pageWriter.write(i, (Float) generateValueByIndex(i));
-            break;
-          case DOUBLE:
-            pageWriter.write(i, (Double) generateValueByIndex(i));
-            break;
-          case TEXT:
-            pageWriter.write(i, (Binary) generateValueByIndex(i));
-            break;
-        }
-      }
-    }
-
-    public abstract Object generateValueByIndex(int i);
-  }
-
-  @Test
-  public void testPageDelete() {
-    LoopWriteReadTest test =
-        new LoopWriteReadTest(
-            "Test INT64", new LongRleEncoder(), new LongRleDecoder(), TSDataType.INT64, 100) {
-          @Override
-          public Object generateValueByIndex(int i) {
-            return Long.MAX_VALUE - i;
-          }
-        };
-    test.testDelete(TSDataType.INT64);
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/ReaderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/ReaderTest.java
deleted file mode 100644
index 484b613..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/reader/ReaderTest.java
+++ /dev/null
@@ -1,134 +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.reader;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.controller.CachedChunkLoaderImpl;
-import org.apache.iotdb.tsfile.read.controller.MetadataQuerierByFileImpl;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilterApi;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.iotdb.tsfile.read.reader.series.AbstractFileSeriesReader;
-import org.apache.iotdb.tsfile.read.reader.series.FileSeriesReader;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorForTest;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.List;
-
-public class ReaderTest {
-
-  private static final String FILE_PATH = TsFileGeneratorForTest.outputDataFile;
-  private TsFileSequenceReader fileReader;
-  private MetadataQuerierByFileImpl metadataQuerierByFile;
-  private int maxDegreeOfIndexNode;
-  private final int rowCount = 1000000;
-
-  @Before
-  public void before() throws IOException {
-    maxDegreeOfIndexNode = TSFileDescriptor.getInstance().getConfig().getMaxDegreeOfIndexNode();
-    TSFileDescriptor.getInstance().getConfig().setTimeEncoder("TS_2DIFF");
-    TSFileDescriptor.getInstance().getConfig().setMaxDegreeOfIndexNode(3);
-    TsFileGeneratorForTest.generateFile(rowCount, 10 * 1024 * 1024, 10000);
-    fileReader = new TsFileSequenceReader(FILE_PATH);
-    metadataQuerierByFile = new MetadataQuerierByFileImpl(fileReader);
-  }
-
-  @After
-  public void after() throws IOException {
-    fileReader.close();
-    TSFileDescriptor.getInstance().getConfig().setMaxDegreeOfIndexNode(maxDegreeOfIndexNode);
-    TsFileGeneratorForTest.after();
-  }
-
-  @Test
-  public void readTest() throws IOException {
-    int count = 0;
-    CachedChunkLoaderImpl seriesChunkLoader = new CachedChunkLoaderImpl(fileReader);
-    List<IChunkMetadata> chunkMetadataList =
-        metadataQuerierByFile.getChunkMetaDataList(new Path("d1", "s1", true));
-
-    AbstractFileSeriesReader seriesReader =
-        new FileSeriesReader(seriesChunkLoader, chunkMetadataList, null);
-    long startTime = TsFileGeneratorForTest.START_TIMESTAMP;
-    BatchData data = null;
-
-    while (seriesReader.hasNextBatch()) {
-      data = seriesReader.nextBatch();
-      while (data.hasCurrent()) {
-        Assert.assertEquals(startTime, data.currentTime());
-        data.next();
-        startTime++;
-        count++;
-      }
-    }
-    Assert.assertEquals(rowCount, count);
-
-    chunkMetadataList = metadataQuerierByFile.getChunkMetaDataList(new Path("d1", "s4", true));
-    seriesReader = new FileSeriesReader(seriesChunkLoader, chunkMetadataList, null);
-    count = 0;
-
-    while (seriesReader.hasNextBatch()) {
-      data = seriesReader.nextBatch();
-      while (data.hasCurrent()) {
-        data.next();
-        startTime++;
-        count++;
-      }
-    }
-  }
-
-  @Test
-  public void readWithFilterTest() throws IOException {
-    CachedChunkLoaderImpl seriesChunkLoader = new CachedChunkLoaderImpl(fileReader);
-    List<IChunkMetadata> chunkMetadataList =
-        metadataQuerierByFile.getChunkMetaDataList(new Path("d1", "s1", true));
-
-    Filter filter =
-        FilterFactory.or(
-            FilterFactory.and(TimeFilterApi.gt(1480563570029L), TimeFilterApi.lt(1480563570033L)),
-            FilterFactory.and(ValueFilterApi.gtEq(9520331), ValueFilterApi.ltEq(9520361)));
-    SingleSeriesExpression singleSeriesExp =
-        new SingleSeriesExpression(new Path("d1", "s1", true), filter);
-    AbstractFileSeriesReader seriesReader =
-        new FileSeriesReader(seriesChunkLoader, chunkMetadataList, singleSeriesExp.getFilter());
-
-    BatchData data;
-
-    long aimedTimestamp = 1480563570030L;
-
-    while (seriesReader.hasNextBatch()) {
-      data = seriesReader.nextBatch();
-      while (data.hasCurrent()) {
-        Assert.assertEquals(aimedTimestamp++, data.currentTime());
-        data.next();
-      }
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/BitMapTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/BitMapTest.java
deleted file mode 100644
index ef63b8a..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/BitMapTest.java
+++ /dev/null
@@ -1,67 +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.utils;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-public class BitMapTest {
-
-  @Test
-  public void testMarkAndUnMark() {
-    BitMap bitmap = new BitMap(100);
-    assertEquals(100, bitmap.getSize());
-    assertTrue(bitmap.isAllUnmarked());
-    assertFalse(bitmap.isAllMarked());
-    for (int i = 0; i < 100; i++) {
-      bitmap.mark(i);
-      assertTrue(bitmap.isMarked(i));
-      if (i == 50) {
-        assertFalse(bitmap.isAllMarked());
-        assertFalse(bitmap.isAllUnmarked());
-      }
-    }
-    assertTrue(bitmap.isAllMarked());
-    assertFalse(bitmap.isAllUnmarked());
-    for (int i = 0; i < 100; i++) {
-      bitmap.unmark(i);
-      assertFalse(bitmap.isMarked(i));
-    }
-    assertTrue(bitmap.isAllUnmarked());
-    assertFalse(bitmap.isAllMarked());
-  }
-
-  @Test
-  public void testInitFromBytes() {
-    BitMap bitmap1 = new BitMap(100);
-    for (int i = 0; i < 100; i++) {
-      if (i % 2 == 0) {
-        bitmap1.mark(i);
-      }
-    }
-    BitMap bitmap2 = new BitMap(bitmap1.getSize(), bitmap1.getByteArray());
-    assertEquals(100, bitmap2.getSize());
-    for (int i = 0; i < 100; i++) {
-      assertEquals(bitmap1.isMarked(i), bitmap2.isMarked(i));
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/BloomFilterTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/BloomFilterTest.java
deleted file mode 100644
index 1d0a107..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/BloomFilterTest.java
+++ /dev/null
@@ -1,66 +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.utils;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertTrue;
-
-public class BloomFilterTest {
-
-  @Test
-  public void testIn() {
-    String value1 = "device1.s1";
-    String value2 = "device1.s2";
-    String value3 = "device1.s3";
-    BloomFilter filter = BloomFilter.getEmptyBloomFilter(0.05, 3);
-    filter.add(value1);
-    filter.add(value2);
-    filter.add(value3);
-
-    assertTrue(filter.contains(value1));
-    assertTrue(filter.contains(value2));
-    assertTrue(filter.contains(value3));
-    System.out.println(filter.contains("12iuedyauydua"));
-    System.out.println(filter.contains("device_1.s1"));
-    System.out.println(filter.contains("device1.s_2"));
-    System.out.println(filter.contains("device2.s1"));
-    System.out.println(filter.contains("device3.s2"));
-    System.out.println(filter.contains("device4.s2"));
-    System.out.println(filter.contains("device1.s4"));
-  }
-
-  @Test
-  public void testSerialize() {
-    String value1 = "device1.s1";
-    String value2 = "device1.s2";
-    String value3 = "device1.s3";
-    BloomFilter filter = BloomFilter.getEmptyBloomFilter(0.05, 3);
-    filter.add(value1);
-    filter.add(value2);
-    filter.add(value3);
-
-    BloomFilter filter1 =
-        BloomFilter.buildBloomFilter(
-            filter.serialize(), filter.getSize(), filter.getHashFunctionSize());
-    assertTrue(filter1.contains(value1));
-    assertTrue(filter1.contains(value2));
-    assertTrue(filter1.contains(value3));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/BytesUtilsTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/BytesUtilsTest.java
deleted file mode 100644
index f05ee18..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/BytesUtilsTest.java
+++ /dev/null
@@ -1,430 +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.utils;
-
-import org.apache.iotdb.tsfile.constant.TestConstant;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-public class BytesUtilsTest {
-
-  private Random r = new Random(System.currentTimeMillis());
-
-  @Test
-  public void testIntToBytes() {
-    int b = 123;
-    byte[] bb = BytesUtils.intToBytes(b);
-    int bf = BytesUtils.bytesToInt(bb);
-    assertEquals("testBytesToFloat", b, bf);
-  }
-
-  @Test
-  public void testIntToBytesWithBytesArray() {
-    int b1 = 123;
-    int b2 = 234;
-    byte[] ret = new byte[8];
-    BytesUtils.intToBytes(b1, ret, 0);
-    BytesUtils.intToBytes(b2, ret, 4);
-    int rb1 = BytesUtils.bytesToInt(ret, 0);
-    int rb2 = BytesUtils.bytesToInt(ret, 4);
-    assertEquals("testBytesToFloat", b1, rb1);
-    assertEquals("testBytesToFloat", b2, rb2);
-  }
-
-  @Test
-  public void testFloatToBytes() {
-    // fail("NotFilter yet implemented");
-    float b = 25.0f;
-    byte[] bb = BytesUtils.floatToBytes(b);
-    float bf = BytesUtils.bytesToFloat(bb);
-    assertEquals("testBytesToFloat", b, bf, TestConstant.float_min_delta);
-  }
-
-  @Test
-  public void testFloatToBytesWithBytesArray() {
-    float b1 = 123.123f;
-    float b2 = 234.323f;
-    byte[] ret = new byte[8];
-    BytesUtils.floatToBytes(b1, ret, 0);
-    BytesUtils.floatToBytes(b2, ret, 4);
-    float rb1 = BytesUtils.bytesToFloat(ret, 0);
-    float rb2 = BytesUtils.bytesToFloat(ret, 4);
-    assertEquals(b1, rb1, TestConstant.float_min_delta);
-    assertEquals(b2, rb2, TestConstant.float_min_delta);
-  }
-
-  @Test
-  public void testBoolToBytes() {
-    boolean b = true;
-    byte[] bb = BytesUtils.boolToBytes(b);
-    boolean bf = BytesUtils.bytesToBool(bb);
-    assertEquals("testBoolToBytes", b, bf);
-  }
-
-  @Test
-  public void testBytesToBool() {
-    boolean b = false;
-    byte[] bb = BytesUtils.boolToBytes(b);
-    boolean bf = BytesUtils.bytesToBool(bb);
-    assertEquals("testBytesToBool", b, bf);
-  }
-
-  @Test
-  public void testBoolToBytesWithBytesArray() {
-    boolean b1 = true;
-    boolean b2 = false;
-    byte[] ret = new byte[2];
-    BytesUtils.boolToBytes(b1, ret, 0);
-    BytesUtils.boolToBytes(b2, ret, 1);
-    boolean rb1 = BytesUtils.bytesToBool(ret, 0);
-    boolean rb2 = BytesUtils.bytesToBool(ret, 1);
-    assertEquals(b1, rb1);
-    assertEquals(b2, rb2);
-  }
-
-  @Test
-  public void testlongToBytes() {
-    long lNum = 32143422454243342L;
-    long iNum = 1032423424L;
-    long lSNum = 10;
-    assertEquals(lNum, BytesUtils.bytesToLong(BytesUtils.longToBytes(lNum, 8), 8));
-    assertEquals(iNum, BytesUtils.bytesToLong(BytesUtils.longToBytes(iNum, 8), 8));
-    assertEquals(iNum, BytesUtils.bytesToLong(BytesUtils.longToBytes(iNum, 4), 4));
-    assertEquals(lSNum, BytesUtils.bytesToLong(BytesUtils.longToBytes(lSNum, 1), 1));
-  }
-
-  @Test
-  public void testLongToBytesWithBytesArray() {
-    long b1 = 3214342243342L;
-    long b2 = 1032423424L;
-    byte[] ret = new byte[16];
-    BytesUtils.longToBytes(b1, ret, 0);
-    BytesUtils.longToBytes(b2, ret, 8);
-    long rb1 = BytesUtils.bytesToLongFromOffset(ret, 8, 0);
-    long rb2 = BytesUtils.bytesToLongFromOffset(ret, 8, 8);
-    assertEquals(b1, rb1);
-    assertEquals(b2, rb2);
-  }
-
-  @Test
-  public void bytesToLongOffsetTest() {
-    long l = 2454243342L;
-    int width = 64 - Long.numberOfLeadingZeros(l);
-    byte[] bs = new byte[width * 2];
-    BytesUtils.longToBytes(l, bs, 0, width);
-    assertEquals(l, BytesUtils.bytesToLong(bs, 0, width));
-  }
-
-  @Test
-  public void bytesToIntOffsetTest1() {
-    int l1 = 123;
-    int width1 = 64 - Integer.numberOfLeadingZeros(l1);
-    int l2 = -124;
-    int width2 = 64 - Integer.numberOfLeadingZeros(l2);
-    byte[] bs = new byte[1000];
-    BytesUtils.intToBytes(l1, bs, 0, width1);
-    int res_val1_1 = BytesUtils.bytesToInt(bs, 0, width1);
-    BytesUtils.intToBytes(l2, bs, width1, width2);
-    int res_val1_2 = BytesUtils.bytesToInt(bs, 0, width1);
-    Assert.assertEquals(res_val1_1, res_val1_2);
-  }
-
-  @Test
-  public void bytesToLongOffsetTest1() {
-    long l1 = 1600650710304L;
-    int width1 = 64 - Long.numberOfLeadingZeros(l1);
-    long l2 = -16L;
-    int width2 = 64 - Long.numberOfLeadingZeros(l2);
-    byte[] bs = new byte[1000];
-    BytesUtils.longToBytes(l1, bs, 0, width1);
-    long res_val1_1 = BytesUtils.bytesToLong(bs, 0, width1);
-    BytesUtils.longToBytes(l2, bs, width1, width2);
-    long res_val1_2 = BytesUtils.bytesToLong(bs, 0, width1);
-    Assert.assertEquals(res_val1_1, res_val1_2);
-  }
-
-  @Test
-  public void bytesToLongOffsetTest2() {
-    long l1 = 123L;
-    int width1 = 64 - Long.numberOfLeadingZeros(l1);
-    long l2 = -123L;
-    int width2 = 64 - Long.numberOfLeadingZeros(l2);
-    long l3 = 123L;
-    int width3 = 64 - Long.numberOfLeadingZeros(l3);
-    byte[] bs = new byte[1000];
-    BytesUtils.longToBytes(l1, bs, 0, width1);
-    assertEquals(l1, BytesUtils.bytesToLong(bs, 0, width1));
-    BytesUtils.longToBytes(l2, bs, width1, width2);
-    BytesUtils.longToBytes(l3, bs, width1 + width2, width3);
-    assertEquals(l1, BytesUtils.bytesToLong(bs, 0, width1));
-    assertEquals(l2, BytesUtils.bytesToLong(bs, width1, width2));
-    assertEquals(l3, BytesUtils.bytesToLong(bs, width1 + width2, width3));
-  }
-
-  @Test
-  public void readLongTest() throws IOException {
-    long l = 32143422454243342L;
-    byte[] bs = BytesUtils.longToBytes(l);
-    InputStream in = new ByteArrayInputStream(bs);
-    assertEquals(l, BytesUtils.readLong(in));
-  }
-
-  @Test
-  public void testDoubleToBytes() {
-    double b1 = 2745687.1253123d;
-    byte[] ret = BytesUtils.doubleToBytes(b1);
-    double rb1 = BytesUtils.bytesToDouble(ret);
-    assertEquals(b1, rb1, TestConstant.float_min_delta);
-  }
-
-  @Test
-  public void testDoubleToBytesWithBytesArray() {
-    double b1 = 112357.548799d;
-    double b2 = 2745687.1253123d;
-    byte[] ret = new byte[16];
-    BytesUtils.doubleToBytes(b1, ret, 0);
-    BytesUtils.doubleToBytes(b2, ret, 8);
-    double rb1 = BytesUtils.bytesToDouble(ret, 0);
-    double rb2 = BytesUtils.bytesToDouble(ret, 8);
-    assertEquals(b1, rb1, TestConstant.double_min_delta);
-    assertEquals(b2, rb2, TestConstant.double_min_delta);
-  }
-
-  @Test
-  public void testStringToBytes() {
-    String b = "lqfkgv12KLDJSL1@#%";
-    byte[] ret = BytesUtils.stringToBytes(b);
-    String rb1 = BytesUtils.bytesToString(ret);
-    assertTrue(b.equals(rb1));
-  }
-
-  @Test
-  public void testConcatByteArray() {
-    List<byte[]> list = new ArrayList<byte[]>();
-    float f1 = 12.4f;
-    boolean b1 = true;
-    list.add(BytesUtils.floatToBytes(f1));
-    list.add(BytesUtils.boolToBytes(b1));
-    byte[] ret = BytesUtils.concatByteArray(list.get(0), list.get(1));
-    float rf1 = BytesUtils.bytesToFloat(ret, 0);
-    boolean rb1 = BytesUtils.bytesToBool(ret, 4);
-    assertEquals(f1, rf1, TestConstant.float_min_delta);
-    assertEquals(b1, rb1);
-  }
-
-  @Test
-  public void testConcatByteArrayList() {
-    List<byte[]> list = new ArrayList<byte[]>();
-    float f1 = 12.4f;
-    boolean b1 = true;
-    int i1 = 12;
-    list.add(BytesUtils.floatToBytes(f1));
-    list.add(BytesUtils.boolToBytes(b1));
-    list.add(BytesUtils.intToBytes(i1));
-    byte[] ret = BytesUtils.concatByteArrayList(list);
-    float rf1 = BytesUtils.bytesToFloat(ret, 0);
-    boolean rb1 = BytesUtils.bytesToBool(ret, 4);
-    int ri1 = BytesUtils.bytesToInt(ret, 5);
-    assertEquals(f1, rf1, TestConstant.float_min_delta);
-    assertEquals(b1, rb1);
-    assertEquals(i1, ri1);
-  }
-
-  @Test
-  public void testSubBytes() {
-    List<byte[]> list = new ArrayList<byte[]>();
-    float f1 = 12.4f;
-    boolean b1 = true;
-    int i1 = 12;
-    list.add(BytesUtils.floatToBytes(f1));
-    list.add(BytesUtils.boolToBytes(b1));
-    list.add(BytesUtils.intToBytes(i1));
-    byte[] ret = BytesUtils.concatByteArrayList(list);
-    boolean rb1 = BytesUtils.bytesToBool(BytesUtils.subBytes(ret, 4, 1));
-    int ri1 = BytesUtils.bytesToInt(BytesUtils.subBytes(ret, 5, 4));
-    assertEquals(b1, rb1);
-    assertEquals(i1, ri1);
-  }
-
-  @Test
-  public void testGetByteN() {
-    byte src = 120;
-    byte dest = 0;
-    for (int i = 0; i < 64; i++) {
-      int a = BytesUtils.getByteN(src, i);
-      dest = BytesUtils.setByteN(dest, i, a);
-    }
-    assertEquals(src, dest);
-  }
-
-  @Test
-  public void testGetLongN() {
-    long src = (long) Math.pow(2, 33);
-    long dest = 0;
-    for (int i = 0; i < 64; i++) {
-      int a = BytesUtils.getLongN(src, i);
-      dest = BytesUtils.setLongN(dest, i, a);
-    }
-    assertEquals(src, dest);
-  }
-
-  @Test
-  public void testGetIntN() {
-    int src = 54243342;
-    int dest = 0;
-    for (int i = 0; i < 32; i++) {
-      int a = BytesUtils.getIntN(src, i);
-      dest = BytesUtils.setIntN(dest, i, a);
-    }
-    assertEquals(src, dest);
-  }
-
-  @Test
-  public void testIntToBytesWithWidth() {
-    int b1 = (1 << 22) - 1413;
-    int b2 = (1 << 22) - 3588;
-    int b3 = (1 << 22) - 1435;
-    int b4 = (1 << 22) - 85476;
-    byte[] ret = new byte[12];
-    BytesUtils.intToBytes(b1, ret, 0, 24);
-    BytesUtils.intToBytes(b2, ret, 24, 24);
-    BytesUtils.intToBytes(b3, ret, 48, 24);
-    BytesUtils.intToBytes(b4, ret, 72, 24);
-    int rb1 = BytesUtils.bytesToInt(ret, 0, 24);
-    int rb2 = BytesUtils.bytesToInt(ret, 24, 24);
-    int rb3 = BytesUtils.bytesToInt(ret, 48, 24);
-    int rb4 = BytesUtils.bytesToInt(ret, 72, 24);
-    assertEquals("testIntToBytesWithWidth1", b1, rb1);
-    assertEquals("testIntToBytesWithWidth2", b2, rb2);
-    assertEquals("testIntToBytesWithWidth3", b3, rb3);
-    assertEquals("testIntToBytesWithWidth4", b4, rb4);
-  }
-
-  @Test
-  public void testLongToBytesWithWidth() {
-    int bitLen = 42;
-    long basic = (1 << 30) * 2l;
-    long b1 = (1 << (bitLen % 32)) * basic + r.nextInt();
-    long b2 = (1 << (bitLen % 32)) * basic + r.nextInt();
-    long b3 = (1 << (bitLen % 32)) * basic + r.nextInt();
-    long b4 = (1 << (bitLen % 32)) * basic + r.nextInt();
-    byte[] ret = new byte[(int) Math.ceil(bitLen * 4.0 / 8.0)];
-    BytesUtils.longToBytes(b1, ret, bitLen * 0, bitLen);
-    BytesUtils.longToBytes(b2, ret, bitLen * 1, bitLen);
-    BytesUtils.longToBytes(b3, ret, bitLen * 2, bitLen);
-    BytesUtils.longToBytes(b4, ret, bitLen * 3, bitLen);
-    long rb1 = BytesUtils.bytesToLong(ret, bitLen * 0, bitLen);
-    long rb2 = BytesUtils.bytesToLong(ret, bitLen * 1, bitLen);
-    long rb3 = BytesUtils.bytesToLong(ret, bitLen * 2, bitLen);
-    long rb4 = BytesUtils.bytesToLong(ret, bitLen * 3, bitLen);
-    assertEquals("testIntToBytesWithWidth1", b1, rb1);
-    assertEquals("testIntToBytesWithWidth2", b2, rb2);
-    assertEquals("testIntToBytesWithWidth3", b3, rb3);
-    assertEquals("testIntToBytesWithWidth4", b4, rb4);
-  }
-
-  private void intToBinaryShowForTest(int src) {
-    for (int i = 31; i >= 0; i--) {
-      if ((src & (1 << i)) != 0) {
-        System.out.print(1);
-      } else {
-        System.out.print(0);
-      }
-      if ((i % 8) == 0) {
-        System.out.print(" ");
-      }
-    }
-    System.out.print("\n");
-  }
-
-  private void longToBinaryShowForTest(long src) {
-    for (int i = 63; i >= 0; i--) {
-      System.out.print(BytesUtils.getLongN(src, i));
-      if ((i % 8) == 0) {
-        System.out.print(" ");
-      }
-    }
-    System.out.print("\n");
-  }
-
-  private void byteArrayToBinaryShowForTest(byte[] src) {
-    for (byte b : src) {
-      for (int i = 8; i >= 0; i--) {
-        if ((b & (1 << i)) != 0) {
-          System.out.print(1);
-        } else {
-          System.out.print(0);
-        }
-      }
-      System.out.print(" ");
-    }
-    System.out.print("\n");
-  }
-
-  @Test
-  public void testReadInt() throws IOException {
-    int l = r.nextInt();
-    byte[] bs = BytesUtils.intToBytes(l);
-    InputStream in = new ByteArrayInputStream(bs);
-    assertEquals(l, BytesUtils.readInt(in));
-  }
-
-  @Test
-  public void testReadLong() throws IOException {
-    long l = r.nextLong();
-    byte[] bs = BytesUtils.longToBytes(l);
-    InputStream in = new ByteArrayInputStream(bs);
-    assertEquals(l, BytesUtils.readLong(in));
-  }
-
-  @Test
-  public void testReadFloat() throws IOException {
-    float l = r.nextFloat();
-    byte[] bs = BytesUtils.floatToBytes(l);
-    InputStream in = new ByteArrayInputStream(bs);
-    assertEquals(l, BytesUtils.readFloat(in), TestConstant.float_min_delta);
-  }
-
-  @Test
-  public void testReadDouble() throws IOException {
-    double l = r.nextDouble();
-    byte[] bs = BytesUtils.doubleToBytes(l);
-    InputStream in = new ByteArrayInputStream(bs);
-    assertEquals(l, BytesUtils.readDouble(in), TestConstant.double_min_delta);
-  }
-
-  @Test
-  public void testReadBool() throws IOException {
-    boolean l = r.nextBoolean();
-    byte[] bs = BytesUtils.boolToBytes(l);
-    InputStream in = new ByteArrayInputStream(bs);
-    assertEquals(l, BytesUtils.readBool(in));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/FileGenerator.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/FileGenerator.java
deleted file mode 100755
index 41384bd..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/FileGenerator.java
+++ /dev/null
@@ -1,360 +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.utils;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
-import org.junit.Assert;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Scanner;
-
-public class FileGenerator {
-
-  private static final Logger LOG = LoggerFactory.getLogger(FileGenerator.class);
-  public static String outputDataFile =
-      TsFileGeneratorForTest.getTestTsFilePath("root.sg1", 0, 0, 0);
-  public static Schema schema;
-  private static int ROW_COUNT = 1000;
-  private static TsFileWriter innerWriter;
-  private static String inputDataFile;
-  private static String errorOutputDataFile;
-  private static final TSFileConfig config = TSFileDescriptor.getInstance().getConfig();
-
-  public static void generateFile(int rowCount, int maxNumberOfPointsInPage) throws IOException {
-    ROW_COUNT = rowCount;
-    int oldMaxNumberOfPointsInPage = config.getMaxNumberOfPointsInPage();
-    config.setMaxNumberOfPointsInPage(maxNumberOfPointsInPage);
-
-    prepare();
-    write();
-    config.setMaxNumberOfPointsInPage(oldMaxNumberOfPointsInPage);
-  }
-
-  public static void generateFile(int rowCount, int maxNumberOfPointsInPage, String filePath)
-      throws IOException {
-    ROW_COUNT = rowCount;
-    int oldMaxNumberOfPointsInPage = config.getMaxNumberOfPointsInPage();
-    config.setMaxNumberOfPointsInPage(maxNumberOfPointsInPage);
-
-    prepare();
-    write(filePath);
-    config.setMaxNumberOfPointsInPage(oldMaxNumberOfPointsInPage);
-  }
-
-  public static void generateFile(int maxNumberOfPointsInPage, int deviceNum, int measurementNum)
-      throws IOException {
-    ROW_COUNT = 1;
-    int oldMaxNumberOfPointsInPage = config.getMaxNumberOfPointsInPage();
-    config.setMaxNumberOfPointsInPage(maxNumberOfPointsInPage);
-
-    prepare(deviceNum, measurementNum);
-    write();
-    config.setMaxNumberOfPointsInPage(oldMaxNumberOfPointsInPage);
-  }
-
-  public static void generateFile() throws IOException {
-    generateFile(1000, 10);
-  }
-
-  public static void prepare() throws IOException {
-    File file = new File(outputDataFile);
-    if (!file.getParentFile().exists()) {
-      Assert.assertTrue(file.getParentFile().mkdirs());
-    }
-    inputDataFile = TsFileGeneratorForTest.getTestTsFilePath("root.sg1", 0, 0, 1);
-    file = new File(inputDataFile);
-    if (!file.getParentFile().exists()) {
-      Assert.assertTrue(file.getParentFile().mkdirs());
-    }
-    errorOutputDataFile = TsFileGeneratorForTest.getTestTsFilePath("root.sg1", 0, 0, 2);
-    file = new File(errorOutputDataFile);
-    if (!file.getParentFile().exists()) {
-      Assert.assertTrue(file.getParentFile().mkdirs());
-    }
-    generateTestSchema();
-    generateSampleInputDataFile();
-  }
-
-  public static void prepare(int deviceNum, int measurementNum) throws IOException {
-    File file = new File(outputDataFile);
-    if (!file.getParentFile().exists()) {
-      Assert.assertTrue(file.getParentFile().mkdirs());
-    }
-    inputDataFile = TsFileGeneratorForTest.getTestTsFilePath("root.sg1", 0, 0, 1);
-    file = new File(inputDataFile);
-    if (!file.getParentFile().exists()) {
-      Assert.assertTrue(file.getParentFile().mkdirs());
-    }
-    errorOutputDataFile = TsFileGeneratorForTest.getTestTsFilePath("root.sg1", 0, 0, 2);
-    file = new File(errorOutputDataFile);
-    if (!file.getParentFile().exists()) {
-      Assert.assertTrue(file.getParentFile().mkdirs());
-    }
-    generateTestSchema(deviceNum, measurementNum);
-    generateSampleInputDataFile(deviceNum, measurementNum);
-  }
-
-  public static void after() {
-    after(outputDataFile);
-  }
-
-  public static void after(String filePath) {
-    File file = new File(inputDataFile);
-    if (file.exists()) {
-      file.delete();
-    }
-    file = new File(filePath);
-    if (file.exists()) {
-      file.delete();
-    }
-    file = new File(errorOutputDataFile);
-    if (file.exists()) {
-      file.delete();
-    }
-  }
-
-  private static void generateSampleInputDataFile() throws IOException {
-    File file = new File(inputDataFile);
-    if (file.exists()) {
-      file.delete();
-    }
-    file.getParentFile().mkdirs();
-    FileWriter fw = new FileWriter(file);
-
-    long startTime = 1480562618000L;
-    startTime = startTime - startTime % 1000;
-    for (int i = 0; i < ROW_COUNT; i++) {
-      // write d1
-      String d1 = "d1," + (startTime + i) + ",s1," + (i * 10 + 1) + ",s2," + (i * 10 + 2);
-      if (i % 20 < 10) {
-        // LOG.info("write null to d1:" + (startTime + i));
-        d1 = "d1," + (startTime + i) + ",s1,,s2," + (i * 10 + 2);
-      }
-      if (i % 5 == 0) {
-        d1 += ",s3," + (i * 10 + 3);
-      }
-      if (i % 8 == 0) {
-        d1 += ",s4," + "dog" + i;
-      }
-      if (i % 9 == 0) {
-        d1 += ",s5," + "false";
-      }
-      if (i % 10 == 0) {
-        d1 += ",s6," + ((int) (i / 9.0) * 100) / 100.0;
-      }
-      if (i % 11 == 0) {
-        d1 += ",s7," + ((int) (i / 10.0) * 100) / 100.0;
-      }
-      fw.write(d1 + "\r\n");
-
-      // write d2
-      String d2 = "d2," + (startTime + i) + ",s2," + (i * 10 + 2) + ",s3," + (i * 10 + 3);
-      if (i % 20 < 5) {
-        // LOG.info("write null to d2:" + (startTime + i));
-        d2 = "d2," + (startTime + i) + ",s2,,s3," + (i * 10 + 3);
-      }
-      if (i % 5 == 0) {
-        d2 += ",s1," + (i * 10 + 1);
-      }
-      if (i % 8 == 0) {
-        d2 += ",s4," + "dog" + i % 4;
-      }
-      fw.write(d2 + "\r\n");
-    }
-    // write error
-    String d =
-        "d2,3,"
-            + (startTime + ROW_COUNT)
-            + ",s2,"
-            + (ROW_COUNT * 10 + 2)
-            + ",s3,"
-            + (ROW_COUNT * 10 + 3);
-    fw.write(d + "\r\n");
-    d = "d2," + (startTime + ROW_COUNT + 1) + ",2,s-1," + (ROW_COUNT * 10 + 2);
-    fw.write(d + "\r\n");
-    fw.close();
-  }
-
-  private static void generateSampleInputDataFile(int deviceNum, int measurementNum)
-      throws IOException {
-    File file = new File(inputDataFile);
-    if (file.exists()) {
-      Files.delete(file.toPath());
-    }
-    if (!file.getParentFile().mkdirs()) {
-      LOG.info("Failed to create file folder {}", file.getParentFile());
-    }
-    FileWriter fw = new FileWriter(file);
-
-    long startTime = 1480562618000L;
-    for (int i = 0; i < deviceNum; i++) {
-      for (int j = 0; j < measurementNum; j++) {
-        String d =
-            "d"
-                + generateIndexString(i, deviceNum)
-                + ","
-                + startTime
-                + ",s"
-                + generateIndexString(j, measurementNum)
-                + ","
-                + 1;
-        fw.write(d + "\r\n");
-      }
-    }
-    fw.close();
-  }
-
-  public static void write() throws IOException {
-    write(outputDataFile);
-  }
-
-  public static void write(String filePath) throws IOException {
-    File file = new File(filePath);
-    File errorFile = new File(errorOutputDataFile);
-    if (file.exists()) {
-      file.delete();
-    }
-    if (errorFile.exists()) {
-      errorFile.delete();
-    }
-
-    innerWriter = new TsFileWriter(file, schema, config);
-
-    // write
-    try {
-      writeToTsFile(schema);
-    } catch (WriteProcessException e) {
-      LOG.warn("Write to tsfile error", e);
-    }
-    LOG.info("write to file successfully!!");
-  }
-
-  private static void generateTestSchema() {
-    schema = new Schema();
-    List<MeasurementSchema> schemaList = new ArrayList<>();
-    schemaList.add(
-        new MeasurementSchema(
-            "s1", TSDataType.INT32, TSEncoding.valueOf(config.getValueEncoder())));
-    schemaList.add(
-        new MeasurementSchema(
-            "s2", TSDataType.INT64, TSEncoding.valueOf(config.getValueEncoder())));
-    schemaList.add(
-        new MeasurementSchema(
-            "s3", TSDataType.INT64, TSEncoding.valueOf(config.getValueEncoder())));
-    schemaList.add(new MeasurementSchema("s4", TSDataType.TEXT, TSEncoding.PLAIN));
-    schemaList.add(new MeasurementSchema("s5", TSDataType.BOOLEAN, TSEncoding.PLAIN));
-    schemaList.add(new MeasurementSchema("s6", TSDataType.FLOAT, TSEncoding.RLE));
-    schemaList.add(new MeasurementSchema("s7", TSDataType.DOUBLE, TSEncoding.RLE));
-    MeasurementGroup measurementGroup = new MeasurementGroup(false, schemaList);
-    schema.registerMeasurementGroup(new Path("d1"), measurementGroup);
-
-    schemaList.clear();
-    schemaList.add(
-        new MeasurementSchema(
-            "s1", TSDataType.INT32, TSEncoding.valueOf(config.getValueEncoder())));
-    schemaList.add(
-        new MeasurementSchema(
-            "s2", TSDataType.INT64, TSEncoding.valueOf(config.getValueEncoder())));
-    schemaList.add(
-        new MeasurementSchema(
-            "s3", TSDataType.INT64, TSEncoding.valueOf(config.getValueEncoder())));
-    schemaList.add(new MeasurementSchema("s4", TSDataType.TEXT, TSEncoding.PLAIN));
-    measurementGroup = new MeasurementGroup(false, schemaList);
-    schema.registerMeasurementGroup(new Path("d2"), measurementGroup);
-  }
-
-  private static void generateTestSchema(int deviceNum, int measurementNum) {
-    schema = new Schema();
-    for (int i = 0; i < deviceNum; i++) {
-      for (int j = 0; j < measurementNum; j++) {
-        schema.registerTimeseries(
-            new Path("d" + generateIndexString(i, deviceNum)),
-            new MeasurementSchema(
-                "s" + generateIndexString(j, measurementNum),
-                TSDataType.INT32,
-                TSEncoding.valueOf(config.getValueEncoder())));
-      }
-    }
-  }
-
-  private static void writeToTsFile(Schema schema) throws IOException, WriteProcessException {
-    Scanner in = getDataFile(inputDataFile);
-    long lineCount = 0;
-    long startTime = System.currentTimeMillis();
-    long endTime = System.currentTimeMillis();
-    assert in != null;
-    while (in.hasNextLine()) {
-      if (lineCount % 1000000 == 0) {
-        LOG.info("write line:{},use time:{}s", lineCount, (endTime - startTime) / 1000);
-      }
-      String str = in.nextLine();
-      TSRecord record = RecordUtils.parseSimpleTupleRecord(str, schema);
-      innerWriter.write(record);
-      lineCount++;
-    }
-    endTime = System.currentTimeMillis();
-    LOG.info("write line:{},use time:{}s", lineCount, (endTime - startTime) / 1000);
-    innerWriter.close();
-    in.close();
-  }
-
-  private static Scanner getDataFile(String path) {
-    File file = new File(path);
-    try {
-      return new Scanner(file);
-    } catch (FileNotFoundException e) {
-      LOG.warn("Get data from file {} error, will return null Scanner", path, e);
-      return null;
-    }
-  }
-
-  /**
-   * generate curIndex string, use "0" on left to make sure align
-   *
-   * @param curIndex current index
-   * @param maxIndex max index
-   * @return curIndex's string
-   */
-  public static String generateIndexString(int curIndex, int maxIndex) {
-    StringBuilder res = new StringBuilder(String.valueOf(curIndex));
-    String target = String.valueOf(maxIndex);
-    while (res.length() < target.length()) {
-      res.insert(0, "0");
-    }
-    return res.toString();
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/FilePathUtilsTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/FilePathUtilsTest.java
deleted file mode 100644
index c32baca..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/FilePathUtilsTest.java
+++ /dev/null
@@ -1,100 +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.utils;
-
-import org.apache.commons.io.FileUtils;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-
-public class FilePathUtilsTest {
-
-  private static final String storageGroupName = "root.group_9";
-  private static final String dataRegionId = "1";
-  private static final long partitionId = 0;
-  private static final String tsFileName = "1611199237113-4-0.tsfile";
-  private static final String fullPath =
-      "target"
-          + File.separator
-          + storageGroupName
-          + File.separator
-          + dataRegionId
-          + File.separator
-          + partitionId
-          + File.separator
-          + tsFileName;
-
-  private File tsFile;
-
-  @Before
-  public void setUp() {
-    tsFile = new File(fullPath);
-    boolean success = false;
-    try {
-      FileUtils.forceMkdirParent(tsFile);
-      success = tsFile.createNewFile();
-    } catch (IOException e) {
-      Assert.fail(e.getMessage());
-    }
-    Assert.assertTrue(success);
-  }
-
-  @Test
-  public void getLogicalSgNameAndTimePartitionIdPairTest() {
-    Pair<String, Long> sgNameAndTimePartitionIdPair =
-        FilePathUtils.getLogicalSgNameAndTimePartitionIdPair(tsFile.getAbsolutePath());
-    Assert.assertEquals(storageGroupName, sgNameAndTimePartitionIdPair.left);
-    Assert.assertEquals(partitionId, sgNameAndTimePartitionIdPair.right.longValue());
-  }
-
-  @Test
-  public void getLogicalStorageGroupNameTest() {
-    String tmpSgName = FilePathUtils.getLogicalStorageGroupName(tsFile.getAbsolutePath());
-    Assert.assertEquals(storageGroupName, tmpSgName);
-  }
-
-  @Test
-  public void getDataRegionNameTest() {
-    String tmpVirtualSgName = FilePathUtils.getDataRegionId(tsFile.getAbsolutePath());
-    Assert.assertEquals(dataRegionId, tmpVirtualSgName);
-  }
-
-  @Test
-  public void getTimePartitionIdTest() {
-    long tmpTimePartitionId = FilePathUtils.getTimePartitionId(tsFile.getAbsolutePath());
-    Assert.assertEquals(partitionId, tmpTimePartitionId);
-  }
-
-  @Test
-  public void getTsFilePrefixPathTest() {
-    String tsFilePrefixPath = FilePathUtils.getTsFilePrefixPath(tsFile.getAbsolutePath());
-    String exceptPrefixPath =
-        storageGroupName + File.separator + dataRegionId + File.separator + partitionId;
-    Assert.assertEquals(exceptPrefixPath, tsFilePrefixPath);
-  }
-
-  @After
-  public void tearDown() {
-    Assert.assertTrue(tsFile.delete());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/FileUtils.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/FileUtils.java
deleted file mode 100644
index 5f30803..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/FileUtils.java
+++ /dev/null
@@ -1,83 +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.utils;
-
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-
-import java.io.File;
-
-/**
- * FileUtils is just used for return file attribute like file size, and contains some measurement
- * conversion among B, KB, MB etc.
- */
-public class FileUtils {
-
-  public static double getLocalFileByte(String filePath, Unit unit) {
-    File f = FSFactoryProducer.getFSFactory().getFile(filePath);
-    return getLocalFileByte(f, unit);
-  }
-
-  public static double getLocalFileByte(File file, Unit unit) {
-    return format(transformUnit(file.length(), unit), 2);
-  }
-
-  /**
-   * transform the byte value number to another unit.
-   *
-   * @param value - a number represented Byte which to be transformed
-   * @param unit - the target unit to be transformed
-   * @return - value number in unit of given parameter
-   */
-  public static double transformUnit(double value, Unit unit) {
-    return value / Math.pow(1024, unit.ordinal());
-  }
-
-  /**
-   * transform the value number from other unit to Byte unit.
-   *
-   * @param value - a number to be transformed
-   * @param unit - the source unit to be transformed, maybe in unit of KB, MB, GB
-   * @return - value number in unit of Byte
-   */
-  public static double transformUnitToByte(double value, Unit unit) {
-    return value * Math.pow(1024, unit.ordinal());
-  }
-
-  /**
-   * reserves some decimal for given double value
-   *
-   * @param num - given double value
-   * @param round - reserved decimal number
-   * @return - double value in given decimal number
-   */
-  public static double format(double num, int round) {
-    long a = (long) (num * Math.pow(10, round));
-    return ((double) a) / Math.pow(10, round);
-  }
-
-  public enum Unit {
-    B,
-    KB,
-    MB,
-    GB,
-    TB,
-    PB,
-    EB
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/FileUtilsTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/FileUtilsTest.java
deleted file mode 100755
index 73debe5..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/FileUtilsTest.java
+++ /dev/null
@@ -1,51 +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.utils;
-
-import org.apache.iotdb.tsfile.constant.TestConstant;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-public class FileUtilsTest {
-
-  @Test
-  public void testConvertUnit() {
-    long kb = 3 * 1024;
-    long mb = kb * 1024;
-    long gb = mb * 1024;
-    Assert.assertEquals(
-        3.0 * 1024, FileUtils.transformUnit(kb, FileUtils.Unit.B), TestConstant.double_min_delta);
-    assertEquals(3, FileUtils.transformUnit(kb, FileUtils.Unit.KB), TestConstant.double_min_delta);
-
-    assertEquals(3, FileUtils.transformUnit(mb, FileUtils.Unit.MB), TestConstant.double_min_delta);
-    assertEquals(3, FileUtils.transformUnit(gb, FileUtils.Unit.GB), TestConstant.double_min_delta);
-  }
-
-  @Test
-  public void testConvertToByte() {
-    assertEquals(3l, (long) FileUtils.transformUnitToByte(3, FileUtils.Unit.B));
-    assertEquals(3l * 1024, (long) FileUtils.transformUnitToByte(3, FileUtils.Unit.KB));
-    assertEquals(3l * 1024 * 1024, (long) FileUtils.transformUnitToByte(3, FileUtils.Unit.MB));
-    assertEquals(
-        3l * 1024 * 1024 * 1024, (long) FileUtils.transformUnitToByte(3, FileUtils.Unit.GB));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/PairTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/PairTest.java
deleted file mode 100644
index fb969be..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/PairTest.java
+++ /dev/null
@@ -1,72 +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.utils;
-
-import org.junit.Test;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-public class PairTest {
-
-  @Test
-  public void testEqualsObject() {
-    Pair<String, Integer> p1 = new Pair<String, Integer>("a", 123123);
-    Pair<String, Integer> p2 = new Pair<String, Integer>("a", 123123);
-    assertTrue(p1.equals(p2));
-    p1 = new Pair<String, Integer>("a", null);
-    p2 = new Pair<String, Integer>("a", 123123);
-    assertFalse(p1.equals(p2));
-    p1 = new Pair<String, Integer>("a", 123123);
-    p2 = new Pair<String, Integer>("a", null);
-    assertFalse(p1.equals(p2));
-    p1 = new Pair<String, Integer>(null, 123123);
-    p2 = new Pair<String, Integer>("a", 123123);
-    assertFalse(p1.equals(p2));
-    p1 = new Pair<String, Integer>("a", 123123);
-    p2 = new Pair<String, Integer>(null, 123123);
-    assertFalse(p1.equals(p2));
-    p1 = new Pair<String, Integer>(null, 123123);
-    p2 = null;
-    assertFalse(p1.equals(p2));
-    p1 = new Pair<String, Integer>(null, 123123);
-    p2 = new Pair<String, Integer>(null, 123123);
-    Map<Pair<String, Integer>, Integer> map = new HashMap<Pair<String, Integer>, Integer>();
-    map.put(p1, 1);
-    assertTrue(map.containsKey(p2));
-    assertTrue(p1.equals(p2));
-    p1 = new Pair<String, Integer>("a", null);
-    p2 = new Pair<String, Integer>("a", null);
-    assertTrue(p1.equals(p2));
-    assertTrue(p1.equals(p1));
-    assertFalse(p1.equals(new Integer(1)));
-  }
-
-  @Test
-  public void testToString() {
-    Pair<String, Integer> p1 = new Pair<String, Integer>("a", 123123);
-    assertEquals("<a,123123>", p1.toString());
-    Pair<Float, Double> p2 = new Pair<Float, Double>(32.5f, 123.123d);
-    assertEquals("<32.5,123.123>", p2.toString());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/ReadWriteForEncodingUtilsTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/ReadWriteForEncodingUtilsTest.java
deleted file mode 100644
index bdea668..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/ReadWriteForEncodingUtilsTest.java
+++ /dev/null
@@ -1,55 +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.utils;
-
-import org.junit.Test;
-
-import java.nio.ByteBuffer;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-
-public class ReadWriteForEncodingUtilsTest {
-
-  @Test
-  public void getUnsignedVarIntTest() {
-    byte[] bytes = ReadWriteForEncodingUtils.getUnsignedVarInt(1);
-    assertEquals(1, bytes.length);
-    assertEquals(1, ReadWriteForEncodingUtils.readUnsignedVarInt(ByteBuffer.wrap(bytes)));
-    ByteBuffer byteBuffer = ByteBuffer.allocateDirect(1);
-    assertEquals(1, ReadWriteForEncodingUtils.writeVarInt(-1, byteBuffer));
-    byteBuffer.flip();
-    assertNotEquals(-1, ReadWriteForEncodingUtils.readUnsignedVarInt(byteBuffer));
-  }
-
-  @Test
-  public void readAndWriteVarIntTest() {
-    ByteBuffer byteBuffer = ByteBuffer.allocate(5);
-    // positive num
-    assertEquals(1, ReadWriteForEncodingUtils.writeVarInt(9, byteBuffer));
-    byteBuffer.flip();
-    assertEquals(9, ReadWriteForEncodingUtils.readVarInt(byteBuffer));
-
-    byteBuffer.flip();
-    // negative num
-    assertEquals(1, ReadWriteForEncodingUtils.writeVarInt(-1, byteBuffer));
-    byteBuffer.flip();
-    assertEquals(-1, ReadWriteForEncodingUtils.readVarInt(byteBuffer));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/ReadWriteIOUtilsTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/ReadWriteIOUtilsTest.java
deleted file mode 100644
index 14f22f7..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/ReadWriteIOUtilsTest.java
+++ /dev/null
@@ -1,191 +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.utils;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.BufferedInputStream;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.junit.Assert.fail;
-
-public class ReadWriteIOUtilsTest {
-
-  protected static final int DEFAULT_BUFFER_SIZE = 4096;
-
-  @Test
-  public void stringSerdeTest() {
-    // 1. not null value
-    String str = "string";
-    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(DEFAULT_BUFFER_SIZE);
-    DataOutputStream stream = new DataOutputStream(byteArrayOutputStream);
-    try {
-      ReadWriteIOUtils.write(str, stream);
-    } catch (IOException e) {
-      fail(e.toString());
-    }
-
-    String result =
-        ReadWriteIOUtils.readString(ByteBuffer.wrap(byteArrayOutputStream.toByteArray()));
-    Assert.assertNotNull(result);
-    Assert.assertEquals(str, result);
-
-    // 2. null value
-    str = null;
-    byteArrayOutputStream = new ByteArrayOutputStream(DEFAULT_BUFFER_SIZE);
-    stream = new DataOutputStream(byteArrayOutputStream);
-    try {
-      ReadWriteIOUtils.write(str, stream);
-    } catch (IOException e) {
-      fail(e.toString());
-    }
-
-    result = ReadWriteIOUtils.readString(ByteBuffer.wrap(byteArrayOutputStream.toByteArray()));
-    Assert.assertNull(result);
-    Assert.assertEquals(str, result);
-  }
-
-  @Test
-  public void mapSerdeTest() {
-    // 1. key: not null; value: not null
-    String key = "string";
-    String value = "string";
-    Map<String, String> map = new HashMap<>();
-    map.put(key, value);
-    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(DEFAULT_BUFFER_SIZE);
-    DataOutputStream stream = new DataOutputStream(byteArrayOutputStream);
-    try {
-      ReadWriteIOUtils.write(map, stream);
-    } catch (IOException e) {
-      fail(e.toString());
-    }
-
-    Map<String, String> result =
-        ReadWriteIOUtils.readMap(ByteBuffer.wrap(byteArrayOutputStream.toByteArray()));
-    Assert.assertNotNull(result);
-    Assert.assertEquals(map, result);
-
-    // 2. key: not null; value: null
-    key = "string";
-    value = null;
-    map.clear();
-    map.put(key, value);
-    byteArrayOutputStream = new ByteArrayOutputStream(DEFAULT_BUFFER_SIZE);
-    stream = new DataOutputStream(byteArrayOutputStream);
-    try {
-      ReadWriteIOUtils.write(map, stream);
-    } catch (IOException e) {
-      fail(e.toString());
-    }
-
-    result = ReadWriteIOUtils.readMap(ByteBuffer.wrap(byteArrayOutputStream.toByteArray()));
-    Assert.assertNotNull(result);
-    Assert.assertEquals(map, result);
-
-    // 3. key: null; value: not null
-    key = null;
-    value = "string";
-    map.clear();
-    map.put(key, value);
-    byteArrayOutputStream = new ByteArrayOutputStream(DEFAULT_BUFFER_SIZE);
-    stream = new DataOutputStream(byteArrayOutputStream);
-    try {
-      ReadWriteIOUtils.write(map, stream);
-    } catch (IOException e) {
-      fail(e.toString());
-    }
-
-    result = ReadWriteIOUtils.readMap(ByteBuffer.wrap(byteArrayOutputStream.toByteArray()));
-    Assert.assertNotNull(result);
-    Assert.assertEquals(map, result);
-
-    // 4. key: null; value: null
-    key = null;
-    value = null;
-    map.clear();
-    map.put(key, value);
-    byteArrayOutputStream = new ByteArrayOutputStream(DEFAULT_BUFFER_SIZE);
-    stream = new DataOutputStream(byteArrayOutputStream);
-    try {
-      ReadWriteIOUtils.write(map, stream);
-    } catch (IOException e) {
-      fail(e.toString());
-    }
-
-    result = ReadWriteIOUtils.readMap(ByteBuffer.wrap(byteArrayOutputStream.toByteArray()));
-    Assert.assertNotNull(result);
-    Assert.assertEquals(map, result);
-
-    // 5. empty map
-    map = Collections.emptyMap();
-    byteArrayOutputStream = new ByteArrayOutputStream(DEFAULT_BUFFER_SIZE);
-    stream = new DataOutputStream(byteArrayOutputStream);
-    try {
-      ReadWriteIOUtils.write(map, stream);
-    } catch (IOException e) {
-      fail(e.toString());
-    }
-    result = ReadWriteIOUtils.readMap(ByteBuffer.wrap(byteArrayOutputStream.toByteArray()));
-    Assert.assertNotNull(result);
-    Assert.assertTrue(result.isEmpty());
-
-    // 6. null
-    map = null;
-    byteArrayOutputStream = new ByteArrayOutputStream(DEFAULT_BUFFER_SIZE);
-    stream = new DataOutputStream(byteArrayOutputStream);
-    try {
-      ReadWriteIOUtils.write(map, stream);
-    } catch (IOException e) {
-      fail(e.toString());
-    }
-    result = ReadWriteIOUtils.readMap(ByteBuffer.wrap(byteArrayOutputStream.toByteArray()));
-    Assert.assertNull(result);
-  }
-
-  @Test
-  public void skipInputStreamTest() {
-    int expectedSkipNum = 9000;
-    int totalNum = 10000;
-    try (BufferedInputStream inputStream =
-        new BufferedInputStream(new ByteArrayInputStream(new byte[totalNum]))) {
-      ReadWriteIOUtils.readByte(inputStream);
-      long skipN = inputStream.skip(expectedSkipNum);
-      Assert.assertNotEquals(expectedSkipNum, skipN);
-      Assert.assertNotEquals(totalNum - expectedSkipNum - 1, inputStream.available());
-    } catch (IOException e) {
-      Assert.fail(e.getMessage());
-    }
-    try (BufferedInputStream inputStream =
-        new BufferedInputStream(new ByteArrayInputStream(new byte[totalNum]))) {
-      ReadWriteIOUtils.readByte(inputStream);
-      ReadWriteIOUtils.skip(inputStream, expectedSkipNum);
-      Assert.assertEquals(totalNum - expectedSkipNum - 1, inputStream.available());
-    } catch (IOException e) {
-      Assert.fail(e.getMessage());
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/ReadWriteStreamUtilsTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/ReadWriteStreamUtilsTest.java
deleted file mode 100644
index 018e7cf..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/ReadWriteStreamUtilsTest.java
+++ /dev/null
@@ -1,157 +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.utils;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-
-public class ReadWriteStreamUtilsTest {
-
-  private List<Integer> unsignedVarIntList;
-  private List<Integer> littleEndianIntList;
-  private List<Long> littleEndianLongList;
-
-  @Before
-  public void setUp() {
-    unsignedVarIntList = new ArrayList<Integer>();
-    littleEndianIntList = new ArrayList<Integer>();
-    littleEndianLongList = new ArrayList<Long>();
-
-    int uvInt = 123;
-    for (int i = 0; i < 10; i++) {
-      unsignedVarIntList.add(uvInt);
-      unsignedVarIntList.add(uvInt - 1);
-      uvInt *= 3;
-    }
-
-    int leInt = 17;
-    for (int i = 0; i < 17; i++) {
-      littleEndianIntList.add(leInt);
-      littleEndianIntList.add(leInt - 1);
-      leInt *= 3;
-    }
-
-    long leLong = 13;
-    for (int i = 0; i < 38; i++) {
-      littleEndianLongList.add(leLong);
-      littleEndianLongList.add(leLong - 1);
-      leLong *= 3;
-    }
-  }
-
-  @After
-  public void tearDown() {}
-
-  @Test
-  public void testGetIntMinBitWidth() {
-    List<Integer> uvIntList = new ArrayList<Integer>();
-    uvIntList.add(0);
-    assertEquals(1, ReadWriteForEncodingUtils.getIntMaxBitWidth(uvIntList));
-    uvIntList.add(1);
-    assertEquals(1, ReadWriteForEncodingUtils.getIntMaxBitWidth(uvIntList));
-    int uvInt = 123;
-    for (int i = 0; i < 10; i++) {
-      uvIntList.add(uvInt);
-      uvIntList.add(uvInt - 1);
-      assertEquals(
-          32 - Integer.numberOfLeadingZeros(uvInt),
-          ReadWriteForEncodingUtils.getIntMaxBitWidth(uvIntList));
-      uvInt *= 3;
-    }
-  }
-
-  @Test
-  public void testGetLongMinBitWidth() {
-    List<Long> uvLongList = new ArrayList<Long>();
-    uvLongList.add(0L);
-    assertEquals(1, ReadWriteForEncodingUtils.getLongMaxBitWidth(uvLongList));
-    uvLongList.add(1L);
-    assertEquals(1, ReadWriteForEncodingUtils.getLongMaxBitWidth(uvLongList));
-    long uvLong = 123;
-    for (int i = 0; i < 10; i++) {
-      uvLongList.add(uvLong);
-      uvLongList.add(uvLong - 1);
-      assertEquals(
-          64 - Long.numberOfLeadingZeros(uvLong),
-          ReadWriteForEncodingUtils.getLongMaxBitWidth(uvLongList));
-      uvLong *= 7;
-    }
-  }
-
-  @Test
-  public void testReadUnsignedVarInt() throws IOException {
-    for (int uVarInt : unsignedVarIntList) {
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      ReadWriteForEncodingUtils.writeUnsignedVarInt(uVarInt, baos);
-      ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
-      int value_read = ReadWriteForEncodingUtils.readUnsignedVarInt(bais);
-      assertEquals(value_read, uVarInt);
-    }
-  }
-
-  /** @see {@link #testReadUnsignedVarInt()} */
-  @Test
-  public void testWriteUnsignedVarInt() {}
-
-  /** @see {@link #testReadIntLittleEndianPaddedOnBitWidth()} */
-  @Test
-  public void testWriteIntLittleEndianPaddedOnBitWidth() {}
-
-  /** @see {@link #testReadLongLittleEndianPaddedOnBitWidth()} */
-  @Test
-  public void testWriteLongLittleEndianPaddedOnBitWidth() {}
-
-  @Test
-  public void testReadIntLittleEndianPaddedOnBitWidth() throws IOException {
-    for (int value : littleEndianIntList) {
-      int bitWidth = 32 - Integer.numberOfLeadingZeros(value);
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      ReadWriteForEncodingUtils.writeIntLittleEndianPaddedOnBitWidth(value, baos, bitWidth);
-      ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-      int value_read =
-          ReadWriteForEncodingUtils.readIntLittleEndianPaddedOnBitWidth(buffer, bitWidth);
-      assertEquals(value_read, value);
-    }
-  }
-
-  @Test
-  public void testReadLongLittleEndianPaddedOnBitWidth() throws IOException {
-    for (long value : littleEndianLongList) {
-      int bitWidth = 64 - Long.numberOfLeadingZeros(value);
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      ReadWriteForEncodingUtils.writeLongLittleEndianPaddedOnBitWidth(value, baos, bitWidth);
-      ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
-
-      long value_read =
-          ReadWriteForEncodingUtils.readLongLittleEndianPaddedOnBitWidth(buffer, bitWidth);
-      assertEquals(value_read, value);
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/ReadWriteToBytesUtilsTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/ReadWriteToBytesUtilsTest.java
deleted file mode 100644
index 3958b1d..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/ReadWriteToBytesUtilsTest.java
+++ /dev/null
@@ -1,66 +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.utils;
-
-import org.junit.Test;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-public class ReadWriteToBytesUtilsTest {
-
-  @Test
-  public void testShort() throws IOException {
-    for (short i : new short[] {1, 2, 3, 4, 5}) {
-      ByteArrayOutputStream outputstream = new ByteArrayOutputStream();
-      ReadWriteIOUtils.write(i, outputstream);
-      int size = outputstream.size();
-      byte[] bytes = outputstream.toByteArray();
-      ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes);
-      short k = ReadWriteIOUtils.readShort(inputStream);
-      assert i == k;
-    }
-  }
-
-  @Test
-  public void testShort2() {
-    for (short i : new short[] {1, 2, 3, 4, 5}) {
-      ByteBuffer output = ByteBuffer.allocate(2);
-      ReadWriteIOUtils.write(i, output);
-      output.flip();
-      short k = ReadWriteIOUtils.readShort(output);
-      assert i == k;
-    }
-  }
-
-  @Test
-  public void testShort3() throws IOException {
-    for (short i : new short[] {1, 2, 3, 4, 5}) {
-      ByteArrayOutputStream outputstream = new ByteArrayOutputStream();
-      ReadWriteIOUtils.write(i, outputstream);
-      int size = outputstream.size();
-      byte[] bytes = outputstream.toByteArray();
-      ByteBuffer buffer = ByteBuffer.wrap(bytes);
-      short k = ReadWriteIOUtils.readShort(buffer);
-      assert i == k;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/RecordUtils.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/RecordUtils.java
deleted file mode 100644
index 319a665..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/RecordUtils.java
+++ /dev/null
@@ -1,116 +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.utils;
-
-import org.apache.iotdb.tsfile.common.constant.JsonFormatConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.BooleanDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.DoubleDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.StringDataPoint;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/** RecordUtils is a utility class for parsing data in form of CSV string. */
-public class RecordUtils {
-
-  private static final Logger LOG = LoggerFactory.getLogger(RecordUtils.class);
-
-  /**
-   * support input format: {@code <deviceId>,<timestamp>,[<measurementId>,<value>,]}.CSV line is
-   * separated by ","
-   *
-   * @param str - input string
-   * @param schema - constructed file schema
-   * @return TSRecord constructed from str
-   */
-  public static TSRecord parseSimpleTupleRecord(String str, Schema schema) {
-    // split items
-    String[] items = str.split(JsonFormatConstant.TSRECORD_SEPARATOR);
-    // get deviceId and timestamp, then create a new TSRecord
-    String deviceId = items[0].trim();
-    long timestamp;
-    try {
-      timestamp = Long.parseLong(items[1].trim());
-    } catch (NumberFormatException e) {
-      LOG.warn("given timestamp is illegal:{}", str);
-      // return a TSRecord without any data points
-      return new TSRecord(-1, deviceId);
-    }
-    TSRecord ret = new TSRecord(timestamp, deviceId);
-
-    // loop all rest items except the last one
-    String measurementId;
-    TSDataType type;
-    for (int i = 2; i < items.length - 1; i += 2) {
-      // get measurementId and value
-      measurementId = items[i].trim();
-      MeasurementGroup measurementGroup = schema.getSeriesSchema(new Path(deviceId));
-      IMeasurementSchema measurementSchema =
-          measurementGroup == null
-              ? null
-              : measurementGroup.getMeasurementSchemaMap().get(measurementId);
-      if (measurementSchema == null) {
-        LOG.warn("measurementId:{},type not found, pass", measurementId);
-        continue;
-      }
-      type = measurementSchema.getType();
-      String value = items[i + 1].trim();
-      // if value is not null, wrap it with corresponding DataPoint and add to
-      // TSRecord
-      if (!"".equals(value)) {
-        try {
-          switch (type) {
-            case INT32:
-              ret.addTuple(new IntDataPoint(measurementId, Integer.parseInt(value)));
-              break;
-            case INT64:
-              ret.addTuple(new LongDataPoint(measurementId, Long.parseLong(value)));
-              break;
-            case FLOAT:
-              ret.addTuple(new FloatDataPoint(measurementId, Float.parseFloat(value)));
-              break;
-            case DOUBLE:
-              ret.addTuple(new DoubleDataPoint(measurementId, Double.parseDouble(value)));
-              break;
-            case BOOLEAN:
-              ret.addTuple(new BooleanDataPoint(measurementId, Boolean.parseBoolean(value)));
-              break;
-            case TEXT:
-              ret.addTuple(new StringDataPoint(measurementId, BytesUtils.valueOf(items[i + 1])));
-              break;
-            default:
-              LOG.warn("unsupported data type:{}", type);
-              break;
-          }
-        } catch (NumberFormatException e) {
-          LOG.warn("parsing measurement meets error, omit it", e);
-        }
-      }
-    }
-    return ret;
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/RecordUtilsTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/RecordUtilsTest.java
deleted file mode 100755
index 6818cf3..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/RecordUtilsTest.java
+++ /dev/null
@@ -1,186 +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.utils;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-
-public class RecordUtilsTest {
-
-  Schema schema;
-
-  private static Schema generateTestData() {
-    Schema schema = new Schema();
-    TSFileConfig conf = TSFileDescriptor.getInstance().getConfig();
-    schema.registerTimeseries(
-        new Path("d1"),
-        new MeasurementSchema("s1", TSDataType.INT32, TSEncoding.valueOf(conf.getValueEncoder())));
-    schema.registerTimeseries(
-        new Path("d1"),
-        new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.valueOf(conf.getValueEncoder())));
-    schema.registerTimeseries(
-        new Path("d1"),
-        new MeasurementSchema("s3", TSDataType.FLOAT, TSEncoding.valueOf(conf.getValueEncoder())));
-    schema.registerTimeseries(
-        new Path("d1"),
-        new MeasurementSchema("s4", TSDataType.DOUBLE, TSEncoding.valueOf(conf.getValueEncoder())));
-    schema.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s5", TSDataType.BOOLEAN, TSEncoding.PLAIN));
-    schema.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s6", TSDataType.TEXT, TSEncoding.PLAIN));
-    return schema;
-  }
-
-  @Before
-  public void prepare() {
-    schema = new Schema();
-    schema = generateTestData();
-  }
-
-  @Test
-  public void testParseSimpleTupleRecordInt() {
-    String testString = "d1,1471522347000,s1,1";
-    TSRecord record = RecordUtils.parseSimpleTupleRecord(testString, schema);
-    assertEquals(1471522347000l, record.time);
-    assertEquals("d1", record.deviceId);
-    List<DataPoint> tuples = record.dataPointList;
-    assertEquals(1, tuples.size());
-    DataPoint tuple = tuples.get(0);
-    assertEquals("s1", tuple.getMeasurementId());
-    assertEquals(TSDataType.INT32, tuple.getType());
-    assertEquals(1, tuple.getValue());
-
-    testString = "d1,1471522347000,s1,1,";
-    record = RecordUtils.parseSimpleTupleRecord(testString, schema);
-    assertEquals(1471522347000l, record.time);
-    assertEquals("d1", record.deviceId);
-    tuples = record.dataPointList;
-    assertEquals(1, tuples.size());
-    tuple = tuples.get(0);
-    assertEquals("s1", tuple.getMeasurementId());
-    assertEquals(TSDataType.INT32, tuple.getType());
-    assertEquals(1, tuple.getValue());
-
-    testString = "d1,1471522347000,s1,1,s2";
-    record = RecordUtils.parseSimpleTupleRecord(testString, schema);
-    assertEquals(1471522347000l, record.time);
-    assertEquals("d1", record.deviceId);
-    tuples = record.dataPointList;
-    assertEquals(1, tuples.size());
-    tuple = tuples.get(0);
-    assertEquals("s1", tuple.getMeasurementId());
-    assertEquals(TSDataType.INT32, tuple.getType());
-    assertEquals(1, tuple.getValue());
-  }
-
-  @Test
-  public void testParseSimpleTupleRecordNull() {
-    String testString = "d1,1471522347000,s1,1,s2,,s3,";
-    TSRecord record = RecordUtils.parseSimpleTupleRecord(testString, schema);
-    assertEquals(1471522347000l, record.time);
-    List<DataPoint> tuples = record.dataPointList;
-    assertEquals(1, tuples.size());
-    DataPoint tuple = tuples.get(0);
-    assertEquals("s1", tuple.getMeasurementId());
-    assertEquals(TSDataType.INT32, tuple.getType());
-    assertEquals(1, tuple.getValue());
-  }
-
-  @Test
-  public void testParseSimpleTupleRecordAll() {
-    String testString = "d1,1471522347000,s1,1,s2,134134287192587,s3,1.4,s4,1.128794817,s5,true";
-    TSRecord record = RecordUtils.parseSimpleTupleRecord(testString, schema);
-    assertEquals(1471522347000l, record.time);
-    assertEquals("d1", record.deviceId);
-    List<DataPoint> tuples = record.dataPointList;
-    assertEquals(5, tuples.size()); // enum type is omitted.
-    DataPoint tuple = tuples.get(0);
-    assertEquals("s1", tuple.getMeasurementId());
-    assertEquals(TSDataType.INT32, tuple.getType());
-    assertEquals(1, tuple.getValue());
-    tuple = tuples.get(1);
-    assertEquals("s2", tuple.getMeasurementId());
-    assertEquals(TSDataType.INT64, tuple.getType());
-    assertEquals(134134287192587l, tuple.getValue());
-    tuple = tuples.get(2);
-    assertEquals("s3", tuple.getMeasurementId());
-    assertEquals(TSDataType.FLOAT, tuple.getType());
-    assertEquals(1.4f, tuple.getValue());
-    tuple = tuples.get(3);
-    assertEquals("s4", tuple.getMeasurementId());
-    assertEquals(TSDataType.DOUBLE, tuple.getType());
-    assertEquals(1.128794817d, tuple.getValue());
-    tuple = tuples.get(4);
-    assertEquals("s5", tuple.getMeasurementId());
-    assertEquals(TSDataType.BOOLEAN, tuple.getType());
-    assertEquals(true, tuple.getValue());
-  }
-
-  @Test
-  public void testError() {
-    String testString = "d1,1471522347000,s1,1,s2,s123";
-    TSRecord record = RecordUtils.parseSimpleTupleRecord(testString, schema);
-    assertEquals(1471522347000l, record.time);
-    List<DataPoint> tuples = record.dataPointList;
-    assertEquals(1, tuples.size());
-    DataPoint tuple = tuples.get(0);
-    assertEquals("s1", tuple.getMeasurementId());
-    assertEquals(TSDataType.INT32, tuple.getType());
-    assertEquals(1, tuple.getValue());
-  }
-
-  @Test
-  public void testErrorMeasurementAndTimeStamp() {
-    String testString = "d1,1471522347000,s1,1,s123,1";
-    TSRecord record = RecordUtils.parseSimpleTupleRecord(testString, schema);
-    assertEquals(1471522347000l, record.time);
-    List<DataPoint> tuples = record.dataPointList;
-    assertEquals(1, tuples.size());
-    DataPoint tuple = tuples.get(0);
-    assertEquals("s1", tuple.getMeasurementId());
-    assertEquals(TSDataType.INT32, tuple.getType());
-    assertEquals(1, tuple.getValue());
-
-    testString = "d1,1dsjhk,s1,1,s123,1";
-    record = RecordUtils.parseSimpleTupleRecord(testString, schema);
-    assertEquals(record.time, -1);
-    tuples = record.dataPointList;
-    assertEquals(0, tuples.size());
-
-    testString = "d1,1471522347000,s8,1";
-    record = RecordUtils.parseSimpleTupleRecord(testString, schema);
-    assertEquals(1471522347000l, record.time);
-    tuples = record.dataPointList;
-    assertEquals(0, tuples.size());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/StringContainerTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/StringContainerTest.java
deleted file mode 100755
index cdb4646..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/StringContainerTest.java
+++ /dev/null
@@ -1,175 +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.utils;
-
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertTrue;
-
-public class StringContainerTest {
-
-  @Test
-  public void testAddTailStringArray() {
-    StringContainer a = new StringContainer();
-    a.addTail("a", "b", "c");
-    a.addTail();
-    a.addTail("a", "b", "c");
-    assertEquals("abcabc", a.toString());
-  }
-
-  @Test
-  public void testAddTailStringContainer() {
-    StringContainer a = new StringContainer();
-    a.addTail("a", "b", "c");
-    a.addTail();
-    StringContainer b = new StringContainer();
-    b.addTail("a", "b", "c");
-    a.addTail(b);
-    assertEquals("abcabc", a.toString());
-  }
-
-  @Test
-  public void testAddHeadStringArray() {
-    StringContainer a = new StringContainer();
-    a.addTail("a", "b", "c");
-    StringContainer b = new StringContainer();
-    b.addTail("a", "b", "c");
-    b.addHead("1", "2", "3");
-    a.addHead("!", "@", "#");
-    a.addHead(b);
-    a.addTail(b);
-    assertEquals("123abc!@#abc123abc", a.toString());
-  }
-
-  @Test
-  public void testAddHeadStringArrayWithSeparator() {
-    StringContainer c = new StringContainer(",");
-    c.addHead("a", "b", "c");
-    assertEquals("a,b,c", c.toString());
-    StringContainer a = new StringContainer(",");
-    a.addTail("a", "b", "c");
-    assertEquals("a,b,c", a.toString());
-    StringContainer b = new StringContainer();
-    b.addTail("a", "b", "c");
-    b.addHead("1", "2", "3");
-    a.addHead("!", "@", "#");
-    a.addHead(b);
-    a.addTail(b);
-    assertEquals("1,2,3,a,b,c,!,@,#,a,b,c,1,2,3,a,b,c", a.toString());
-  }
-
-  @Test
-  public void testGetSubString() {
-    StringContainer a = new StringContainer();
-    try {
-      a.getSubString(0);
-    } catch (Exception e) {
-      assertTrue(e instanceof IndexOutOfBoundsException);
-    }
-    a.addHead("a", "bbb", "cc");
-    assertEquals("a", a.getSubString(0));
-    assertEquals("cc", a.getSubString(-1));
-    assertEquals("bbb", a.getSubString(-2));
-    try {
-      a.getSubString(4);
-    } catch (Exception e) {
-      assertTrue(e instanceof IndexOutOfBoundsException);
-    }
-    a.addTail("dd", "eeee");
-    assertEquals("a", a.getSubString(0));
-    assertEquals("cc", a.getSubString(-3));
-    assertEquals("dd", a.getSubString(3));
-    assertEquals("eeee", a.getSubString(-1));
-    try {
-      a.getSubString(9);
-    } catch (Exception e) {
-      assertTrue(e instanceof IndexOutOfBoundsException);
-    }
-  }
-
-  @Test
-  public void testGetSubStringContainer() {
-    StringContainer a = new StringContainer();
-    try {
-      a.getSubStringContainer(0, 1);
-    } catch (Exception e) {
-      assertTrue(e instanceof IndexOutOfBoundsException);
-    }
-    a.addTail("a", "bbb", "cc");
-    assertEquals("", a.getSubStringContainer(1, 0).toString());
-    assertEquals("a", a.getSubStringContainer(0, 0).toString());
-    assertEquals("bbbcc", a.getSubStringContainer(1, -1).toString());
-    assertEquals("bbb", a.getSubStringContainer(-2, -2).toString());
-    try {
-      a.getSubStringContainer(1, 4);
-    } catch (Exception e) {
-      assertTrue(e instanceof IndexOutOfBoundsException);
-    }
-    a.addHead("dd", "eeee");
-    assertEquals("eeeea", a.getSubStringContainer(1, 2).toString());
-    assertEquals("eeeea", a.getSubStringContainer(1, -3).toString());
-    assertEquals("dd", a.getSubStringContainer(0, 0).toString());
-    assertEquals("cc", a.getSubStringContainer(-1, -1).toString());
-    assertEquals("ddeeeeabbbcc", a.getSubStringContainer(-5, -1).toString());
-    try {
-      a.getSubString(9);
-    } catch (Exception e) {
-      assertTrue(e instanceof IndexOutOfBoundsException);
-    }
-  }
-
-  @Test
-  public void testEqual() {
-    StringContainer c = new StringContainer(",");
-    c.addHead("a", "b", "c123");
-    c.addTail("a", "12", "c");
-    c.addTail("1284736", "b", "c");
-    StringContainer copyC = c.clone();
-    assertTrue(c.equals(copyC));
-    assertFalse(c == copyC);
-  }
-
-  @Test
-  public void testHashCode() {
-    StringContainer c1 = new StringContainer(",");
-    c1.addHead("a", "b", "c123");
-    c1.addTail("a", "12", "c");
-    c1.addTail("1284736", "b", "c");
-    StringContainer c2 = new StringContainer(TsFileConstant.PATH_SEPARATOR);
-    c2.addHead("a", "b", "c123");
-    c2.addTail("a", "12", "c");
-    c2.addTail("1284736", "b", "c");
-    StringContainer copyC = c1.clone();
-    assertEquals(c1.hashCode(), copyC.hashCode());
-    assertNotEquals(c1.hashCode(), c2.hashCode());
-
-    StringContainer c3 = new StringContainer(",");
-    c3.addHead("a", "b", "c123");
-    assertNotEquals(c1.hashCode(), c3.hashCode());
-
-    StringContainer c4 = new StringContainer(",");
-    c4.addTail("a", "b", "c123");
-    assertNotEquals(c1.hashCode(), c4.hashCode());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/TimeDurationTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/TimeDurationTest.java
deleted file mode 100644
index ce8d7c9..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/TimeDurationTest.java
+++ /dev/null
@@ -1,73 +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.utils;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.sql.Timestamp;
-import java.util.TimeZone;
-import java.util.concurrent.TimeUnit;
-
-import static org.apache.iotdb.tsfile.utils.TimeDuration.calcPositiveIntervalByMonth;
-
-public class TimeDurationTest {
-  @Test
-  public void calculateIntervalTest() {
-    // 1mo duration after 2023-01-31
-    long result =
-        calcPositiveIntervalByMonth(
-            Timestamp.valueOf("2023-01-31 00:00:00").getTime(),
-            new TimeDuration(1, 0),
-            TimeZone.getDefault(),
-            TimeUnit.MILLISECONDS);
-    Assert.assertEquals(Timestamp.valueOf("2023-02-28 00:00:00").getTime(), result);
-    result =
-        calcPositiveIntervalByMonth(
-            Timestamp.valueOf("2023-02-28 00:00:00").getTime(),
-            new TimeDuration(2, 0),
-            TimeZone.getDefault(),
-            TimeUnit.MILLISECONDS);
-    Assert.assertEquals(Timestamp.valueOf("2023-04-28 00:00:00").getTime(), result);
-    result =
-        calcPositiveIntervalByMonth(
-            Timestamp.valueOf("2023-01-30 00:00:00").getTime(),
-            new TimeDuration(2, 0),
-            TimeZone.getDefault(),
-            TimeUnit.MILLISECONDS);
-    Assert.assertEquals(Timestamp.valueOf("2023-03-30 00:00:00").getTime(), result);
-    // 1mo1d duration after 2023-01-31
-    result =
-        calcPositiveIntervalByMonth(
-            Timestamp.valueOf("2023-01-31 00:00:00").getTime(),
-            new TimeDuration(1, 86400_000),
-            TimeZone.getDefault(),
-            TimeUnit.MILLISECONDS);
-    Assert.assertEquals(Timestamp.valueOf("2023-03-01 00:00:00").getTime(), result);
-
-    // 1mo1d1ns duration after 2023-01-31
-    result =
-        calcPositiveIntervalByMonth(
-            Timestamp.valueOf("2023-01-31 00:00:00").getTime() * 1000_000,
-            new TimeDuration(1, 86400_000_000_001L),
-            TimeZone.getDefault(),
-            TimeUnit.NANOSECONDS);
-    Assert.assertEquals(Timestamp.valueOf("2023-03-01 00:00:00").getTime() * 1000_000 + 1, result);
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/TsFileGeneratorForTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/TsFileGeneratorForTest.java
deleted file mode 100755
index 9330102..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/TsFileGeneratorForTest.java
+++ /dev/null
@@ -1,338 +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.utils;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.constant.TestConstant;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.fileSystem.fsFactory.FSFactory;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
-import org.junit.Assert;
-import org.junit.Ignore;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Locale;
-import java.util.Scanner;
-
-@Ignore
-public class TsFileGeneratorForTest {
-
-  public static final long START_TIMESTAMP = 1480562618000L;
-  private static String inputDataFile;
-  public static String outputDataFile = getTestTsFilePath("root.sg1", 0, 0, 0);
-  public static String alignedOutputDataFile = getTestTsFilePath("root.sg2", 0, 0, 0);
-  private static String errorOutputDataFile;
-  private static int rowCount;
-  private static int chunkGroupSize;
-  private static int pageSize;
-  private static final FSFactory fsFactory = FSFactoryProducer.getFSFactory();
-
-  public static void generateFile(int rowCount, int chunkGroupSize, int pageSize)
-      throws IOException {
-    generateFile(rowCount, rowCount, chunkGroupSize, pageSize);
-  }
-
-  public static void generateFile(
-      int minRowCount, int maxRowCount, int chunkGroupSize, int pageSize) throws IOException {
-    TsFileGeneratorForTest.rowCount = maxRowCount;
-    TsFileGeneratorForTest.chunkGroupSize = chunkGroupSize;
-    TsFileGeneratorForTest.pageSize = pageSize;
-    prepare(minRowCount, maxRowCount);
-    write();
-  }
-
-  public static void prepare(int minrowCount, int maxRowCount) throws IOException {
-    File file = fsFactory.getFile(outputDataFile);
-    if (!file.getParentFile().exists()) {
-      Assert.assertTrue(file.getParentFile().mkdirs());
-    }
-    inputDataFile = getTestTsFilePath("root.sg1", 0, 0, 1);
-    file = fsFactory.getFile(inputDataFile);
-    if (!file.getParentFile().exists()) {
-      Assert.assertTrue(file.getParentFile().mkdirs());
-    }
-    errorOutputDataFile = getTestTsFilePath("root.sg1", 0, 0, 2);
-    file = fsFactory.getFile(errorOutputDataFile);
-    if (!file.getParentFile().exists()) {
-      Assert.assertTrue(file.getParentFile().mkdirs());
-    }
-    generateSampleInputDataFile(minrowCount, maxRowCount);
-  }
-
-  public static void after() {
-    File file = fsFactory.getFile(inputDataFile);
-    if (file.exists()) {
-      Assert.assertTrue(file.delete());
-    }
-    file = fsFactory.getFile(outputDataFile);
-    if (file.exists()) {
-      Assert.assertTrue(file.delete());
-    }
-    file = fsFactory.getFile(errorOutputDataFile);
-    if (file.exists()) {
-      Assert.assertTrue(file.delete());
-    }
-  }
-
-  private static void generateSampleInputDataFile(int minRowCount, int maxRowCount)
-      throws IOException {
-    File file = fsFactory.getFile(inputDataFile);
-    if (file.exists()) {
-      Assert.assertTrue(file.delete());
-    }
-    file.getParentFile().mkdirs();
-
-    try (FileWriter fw = new FileWriter(file)) {
-      long startTime = START_TIMESTAMP;
-      for (int i = 0; i < maxRowCount; i++) {
-        // write d1
-        String d1 = "d1," + (startTime + i) + ",s1," + (i * 10 + 1) + ",s2," + (i * 10 + 2);
-        if (i % 5 == 0) {
-          d1 += ",s3," + (i * 10 + 3);
-        }
-        if (i % 8 == 0) {
-          d1 += ",s4," + "dog" + i;
-        }
-        if (i % 9 == 0) {
-          d1 += ",s5," + "false";
-        }
-        if (i % 10 == 0 && i < minRowCount) {
-          d1 += ",s6," + ((int) (i / 9.0) * 100) / 100.0;
-        }
-        if (i % 11 == 0) {
-          d1 += ",s7," + ((int) (i / 10.0) * 100) / 100.0;
-        }
-        fw.write(d1 + "\r\n");
-
-        // write d2
-        String d2 = "d2," + (startTime + i) + ",s2," + (i * 10 + 2) + ",s3," + (i * 10 + 3);
-        if (i % 20 < 5) {
-          // LOG.info("write null to d2:" + (startTime + i));
-          d2 = "d2," + (startTime + i) + ",s2,,s3," + (i * 10 + 3);
-        }
-        if (i % 5 == 0) {
-          d2 += ",s1," + (i * 10 + 1);
-        }
-        if (i % 8 == 0) {
-          d2 += ",s4," + "dog" + 0;
-        }
-        fw.write(d2 + "\r\n");
-      }
-      // write error
-      String d =
-          "d2,3,"
-              + (startTime + rowCount)
-              + ",s2,"
-              + (rowCount * 10 + 2)
-              + ",s3,"
-              + (rowCount * 10 + 3);
-      fw.write(d + "\r\n");
-      d = "d2," + (startTime + rowCount + 1) + ",2,s-1," + (rowCount * 10 + 2);
-      fw.write(d + "\r\n");
-    }
-  }
-
-  public static void write() throws IOException {
-    File file = fsFactory.getFile(outputDataFile);
-    File errorFile = fsFactory.getFile(errorOutputDataFile);
-    if (file.exists()) {
-      Assert.assertTrue(file.delete());
-    }
-    if (errorFile.exists()) {
-      Assert.assertTrue(errorFile.delete());
-    }
-
-    Schema schema = generateTestSchema();
-
-    int oldGroupSizeInByte = TSFileDescriptor.getInstance().getConfig().getGroupSizeInByte();
-    int oldMaxPointNumInPage =
-        TSFileDescriptor.getInstance().getConfig().getMaxNumberOfPointsInPage();
-    TSFileDescriptor.getInstance().getConfig().setGroupSizeInByte(chunkGroupSize);
-    TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(pageSize);
-
-    // write
-    try (TsFileWriter innerWriter =
-            new TsFileWriter(file, schema, TSFileDescriptor.getInstance().getConfig());
-        Scanner in = new Scanner(fsFactory.getFile(inputDataFile))) {
-      while (in.hasNextLine()) {
-        String str = in.nextLine();
-        TSRecord record = RecordUtils.parseSimpleTupleRecord(str, schema);
-        innerWriter.write(record);
-      }
-    } catch (WriteProcessException e) {
-      e.printStackTrace();
-    } finally {
-      TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(oldMaxPointNumInPage);
-      TSFileDescriptor.getInstance().getConfig().setGroupSizeInByte(oldGroupSizeInByte);
-    }
-  }
-
-  private static Schema generateTestSchema() {
-    Schema schema = new Schema();
-    schema.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s1", TSDataType.INT32, TSEncoding.RLE));
-    schema.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.PLAIN));
-    schema.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s3", TSDataType.INT64, TSEncoding.TS_2DIFF));
-    schema.registerTimeseries(
-        new Path("d1"),
-        new MeasurementSchema(
-            "s4",
-            TSDataType.TEXT,
-            TSEncoding.PLAIN,
-            CompressionType.UNCOMPRESSED,
-            Collections.singletonMap(Encoder.MAX_STRING_LENGTH, "20")));
-    schema.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s5", TSDataType.BOOLEAN, TSEncoding.RLE));
-    schema.registerTimeseries(
-        new Path("d1"),
-        new MeasurementSchema(
-            "s6",
-            TSDataType.FLOAT,
-            TSEncoding.RLE,
-            CompressionType.SNAPPY,
-            Collections.singletonMap(Encoder.MAX_POINT_NUMBER, "5")));
-    schema.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s7", TSDataType.DOUBLE, TSEncoding.GORILLA_V1));
-
-    schema.registerTimeseries(
-        new Path("d2"), new MeasurementSchema("s1", TSDataType.INT32, TSEncoding.RLE));
-    schema.registerTimeseries(
-        new Path("d2"), new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.PLAIN));
-    schema.registerTimeseries(
-        new Path("d2"), new MeasurementSchema("s3", TSDataType.INT64, TSEncoding.TS_2DIFF));
-    schema.registerTimeseries(
-        new Path("d2"),
-        new MeasurementSchema(
-            "s4",
-            TSDataType.TEXT,
-            TSEncoding.PLAIN,
-            CompressionType.UNCOMPRESSED,
-            Collections.singletonMap(Encoder.MAX_STRING_LENGTH, "20")));
-    return schema;
-  }
-
-  /**
-   * Writes a File with one incomplete chunk header
-   *
-   * @param file File to write
-   * @throws IOException is thrown when encountering IO issues
-   */
-  public static void writeFileWithOneIncompleteChunkHeader(File file) throws IOException {
-    TsFileWriter writer = new TsFileWriter(file);
-
-    ChunkHeader header =
-        new ChunkHeader("s1", 100, TSDataType.FLOAT, CompressionType.SNAPPY, TSEncoding.PLAIN, 5);
-    ByteBuffer buffer = ByteBuffer.allocate(header.getSerializedSize());
-    header.serializeTo(buffer);
-    buffer.flip();
-    byte[] data = new byte[3];
-    buffer.get(data, 0, 3);
-    writer.getIOWriter().getIOWriterOut().write(data);
-    writer.getIOWriter().close();
-  }
-
-  public static String getTestTsFilePath(
-      String logicalStorageGroupName,
-      long VirtualStorageGroupId,
-      long TimePartitionId,
-      long tsFileVersion) {
-    String filePath =
-        String.format(
-            Locale.ENGLISH,
-            TestConstant.TEST_TSFILE_PATH,
-            logicalStorageGroupName,
-            VirtualStorageGroupId,
-            TimePartitionId);
-    return TsFileGeneratorUtils.getTsFilePath(filePath, tsFileVersion);
-  }
-
-  // generate aligned timeseries "d1.s1","d1.s2","d1.s3","d1.s4" and nonAligned timeseries
-  // "d2.s1","d2.s2","d2.s3"
-  public static void generateAlignedTsFile(int rowCount, int chunkGroupSize, int pageSize) {
-    File file = fsFactory.getFile(alignedOutputDataFile);
-    if (file.exists()) {
-      Assert.assertTrue(file.delete());
-    }
-    file.getParentFile().mkdirs();
-    int oldGroupSizeInByte = TSFileDescriptor.getInstance().getConfig().getGroupSizeInByte();
-    int oldMaxPointNumInPage =
-        TSFileDescriptor.getInstance().getConfig().getMaxNumberOfPointsInPage();
-    TSFileDescriptor.getInstance().getConfig().setGroupSizeInByte(chunkGroupSize);
-    TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(pageSize);
-    try (TsFileWriter tsFileWriter = new TsFileWriter(file)) {
-      // register align timeseries
-      List<MeasurementSchema> alignedMeasurementSchemas = new ArrayList<>();
-      alignedMeasurementSchemas.add(
-          new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.PLAIN, CompressionType.LZ4));
-      alignedMeasurementSchemas.add(
-          new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.PLAIN, CompressionType.SNAPPY));
-      alignedMeasurementSchemas.add(
-          new MeasurementSchema("s3", TSDataType.INT64, TSEncoding.PLAIN, CompressionType.GZIP));
-      alignedMeasurementSchemas.add(new MeasurementSchema("s4", TSDataType.INT64, TSEncoding.RLE));
-      tsFileWriter.registerAlignedTimeseries(new Path("d1"), alignedMeasurementSchemas);
-
-      // register nonAlign timeseries
-      List<MeasurementSchema> measurementSchemas = new ArrayList<>();
-      measurementSchemas.add(
-          new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.PLAIN, CompressionType.LZ4));
-      measurementSchemas.add(
-          new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.PLAIN, CompressionType.SNAPPY));
-      measurementSchemas.add(
-          new MeasurementSchema("s3", TSDataType.INT64, TSEncoding.PLAIN, CompressionType.SNAPPY));
-      tsFileWriter.registerTimeseries(new Path("d2"), measurementSchemas);
-
-      TsFileGeneratorUtils.writeWithTsRecord(
-          tsFileWriter, "d1", alignedMeasurementSchemas, rowCount, 0, 0, true);
-      TsFileGeneratorUtils.writeWithTsRecord(
-          tsFileWriter, "d2", measurementSchemas, rowCount, 0, 0, false);
-
-    } catch (IOException | WriteProcessException e) {
-      e.printStackTrace();
-    } finally {
-      TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(oldMaxPointNumInPage);
-      TSFileDescriptor.getInstance().getConfig().setGroupSizeInByte(oldGroupSizeInByte);
-    }
-  }
-
-  public static void closeAlignedTsFile() {
-    File file = fsFactory.getFile(alignedOutputDataFile);
-    if (file.exists()) {
-      Assert.assertTrue(file.delete());
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/TsFileUtilsTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/TsFileUtilsTest.java
deleted file mode 100644
index 557b9a7..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/TsFileUtilsTest.java
+++ /dev/null
@@ -1,72 +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.utils;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.constant.TestConstant;
-import org.apache.iotdb.tsfile.write.writer.LocalTsFileOutput;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-public class TsFileUtilsTest {
-  private static final String COMPLETE_FILE_PATH =
-      TestConstant.BASE_OUTPUT_PATH.concat("TsFileUtilsTest_Complete.tsfile");
-  private static final String INCOMPLETE_FILE_PATH =
-      TestConstant.BASE_OUTPUT_PATH.concat("TsFileUtilsTest_Incomplete.tsfile");
-
-  @Before
-  public void before() throws IOException {
-    TsFileIOWriter completeWriter = new TsFileIOWriter(new File(COMPLETE_FILE_PATH));
-    completeWriter.endFile();
-    LocalTsFileOutput output =
-        new LocalTsFileOutput(new FileOutputStream(new File(INCOMPLETE_FILE_PATH)));
-    byte[] MAGIC_STRING_BYTES = BytesUtils.stringToBytes(TSFileConfig.MAGIC_STRING);
-    byte MAGIC_NUMBER_BYTE = TSFileConfig.VERSION_NUMBER;
-    // only write 1. version number 2. magic string
-    output.write(MAGIC_NUMBER_BYTE);
-    output.write(MAGIC_STRING_BYTES);
-    output.close();
-  }
-
-  @After
-  public void after() {
-    File completeFile = new File(COMPLETE_FILE_PATH);
-    File incompleteFile = new File(INCOMPLETE_FILE_PATH);
-    if (completeFile.exists()) {
-      completeFile.delete();
-    }
-    if (incompleteFile.exists()) {
-      completeFile.delete();
-    }
-  }
-
-  @Test
-  public void isTsFileCompleteTest() throws IOException {
-    Assert.assertTrue(TsFileUtils.isTsFileComplete(new File(COMPLETE_FILE_PATH)));
-    Assert.assertFalse(TsFileUtils.isTsFileComplete(new File(INCOMPLETE_FILE_PATH)));
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/TsPrimitiveTypeTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/TsPrimitiveTypeTest.java
deleted file mode 100644
index 0828cbf..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/utils/TsPrimitiveTypeTest.java
+++ /dev/null
@@ -1,62 +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.utils;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsBinary;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsBoolean;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsDouble;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsFloat;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsInt;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType.TsLong;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-public class TsPrimitiveTypeTest {
-
-  @Test
-  public void testNewAndGet() {
-    TsPrimitiveType intValue = TsPrimitiveType.getByType(TSDataType.INT32, 123);
-    Assert.assertEquals(new TsInt(123), intValue);
-    Assert.assertEquals(123, intValue.getInt());
-
-    TsPrimitiveType longValue = TsPrimitiveType.getByType(TSDataType.INT64, 456L);
-    Assert.assertEquals(new TsLong(456), longValue);
-    Assert.assertEquals(456L, longValue.getLong());
-
-    TsPrimitiveType floatValue = TsPrimitiveType.getByType(TSDataType.FLOAT, 123f);
-    Assert.assertEquals(new TsFloat(123), floatValue);
-    Assert.assertEquals(123f, floatValue.getFloat(), 0.01);
-
-    TsPrimitiveType doubleValue = TsPrimitiveType.getByType(TSDataType.DOUBLE, 456d);
-    Assert.assertEquals(new TsDouble(456), doubleValue);
-    Assert.assertEquals(456d, doubleValue.getDouble(), 0.01);
-
-    TsPrimitiveType textValue =
-        TsPrimitiveType.getByType(TSDataType.TEXT, new Binary("123", TSFileConfig.STRING_CHARSET));
-    Assert.assertEquals(new TsBinary(new Binary("123", TSFileConfig.STRING_CHARSET)), textValue);
-    Assert.assertEquals(new Binary("123", TSFileConfig.STRING_CHARSET), textValue.getBinary());
-
-    TsPrimitiveType booleanValue = TsPrimitiveType.getByType(TSDataType.BOOLEAN, true);
-    Assert.assertEquals(new TsBoolean(true), booleanValue);
-    Assert.assertTrue(booleanValue.getBoolean());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/DefaultSchemaTemplateTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/DefaultSchemaTemplateTest.java
deleted file mode 100644
index 8d92b61..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/DefaultSchemaTemplateTest.java
+++ /dev/null
@@ -1,113 +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.write;
-
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorForTest;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class DefaultSchemaTemplateTest {
-
-  @Test
-  public void testUsingDefaultSchemaTemplate() throws IOException, WriteProcessException {
-    File file = new File(TsFileGeneratorForTest.getTestTsFilePath("root.sg1", 0, 0, 1));
-    if (!file.getParentFile().exists()) {
-      Assert.assertTrue(file.getParentFile().mkdirs());
-    }
-    try (TsFileWriter writer = new TsFileWriter(file)) {
-      MeasurementSchema s1 = new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.PLAIN);
-      MeasurementSchema s2 = new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.PLAIN);
-
-      List<MeasurementSchema> schemaList = new ArrayList<>();
-      schemaList.add(s1);
-      schemaList.add(s2);
-
-      Map<String, MeasurementSchema> schema = new HashMap<>();
-      schema.put("s1", s1);
-      schema.put("s2", s2);
-
-      writer.registerSchemaTemplate("defaultTemplate", schema, false);
-
-      Tablet tablet = new Tablet("d1", schemaList);
-      long[] timestamps = tablet.timestamps;
-      Object[] values = tablet.values;
-
-      long timestamp = 1;
-      long value = 1L;
-
-      for (int r = 0; r < 10; r++, value++) {
-        int row = tablet.rowSize++;
-        timestamps[row] = timestamp++;
-        for (int i = 0; i < 2; i++) {
-          long[] sensor = (long[]) values[i];
-          sensor[row] = value;
-        }
-        // write Tablet to TsFile
-        if (tablet.rowSize == tablet.getMaxRowNumber()) {
-          writer.write(tablet);
-          tablet.reset();
-        }
-      }
-      // write Tablet to TsFile
-      if (tablet.rowSize != 0) {
-        writer.write(tablet);
-        tablet.reset();
-      }
-    }
-
-    try (TsFileSequenceReader reader = new TsFileSequenceReader(file.getPath());
-        TsFileReader readTsFile = new TsFileReader(reader)) {
-
-      // use these paths(all measurements) for all the queries
-      ArrayList<Path> paths = new ArrayList<>();
-      paths.add(new Path("d1", "s1", true));
-
-      QueryExpression queryExpression = QueryExpression.create(paths, null);
-      QueryDataSet queryDataSet = readTsFile.query(queryExpression);
-      int count = 0;
-      while (queryDataSet.hasNext()) {
-        queryDataSet.next();
-        count++;
-      }
-
-      Assert.assertEquals(10, count);
-    }
-
-    Files.deleteIfExists(file.toPath());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/MetadataIndexConstructorTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/MetadataIndexConstructorTest.java
deleted file mode 100644
index 47aaea6..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/MetadataIndexConstructorTest.java
+++ /dev/null
@@ -1,503 +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.write;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.constant.TestConstant;
-import org.apache.iotdb.tsfile.file.IMetadataIndexEntry;
-import org.apache.iotdb.tsfile.file.metadata.DeviceMetadataIndexEntry;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.MeasurementMetadataIndexEntry;
-import org.apache.iotdb.tsfile.file.metadata.MetadataIndexNode;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.MetadataIndexNodeType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.MeasurementGroup;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import static org.apache.iotdb.tsfile.utils.FileGenerator.generateIndexString;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-/** test for MetadataIndexConstructor */
-public class MetadataIndexConstructorTest {
-  private static final Logger logger = LoggerFactory.getLogger(MetadataIndexConstructorTest.class);
-  private final TSFileConfig conf = TSFileDescriptor.getInstance().getConfig();
-  private static final String FILE_PATH =
-      TestConstant.BASE_OUTPUT_PATH.concat("MetadataIndexConstructorTest.tsfile");
-
-  private static final String measurementPrefix = "sensor_";
-  private static final String vectorPrefix = "vector_";
-  private int maxDegreeOfIndexNode;
-
-  @Before
-  public void before() {
-    maxDegreeOfIndexNode = conf.getMaxDegreeOfIndexNode();
-    conf.setMaxDegreeOfIndexNode(10);
-  }
-
-  @After
-  public void after() {
-    conf.setMaxDegreeOfIndexNode(maxDegreeOfIndexNode);
-    File file = new File(FILE_PATH);
-    if (file.exists()) {
-      file.delete();
-    }
-  }
-
-  /** Example 1: 5 entities with 5 measurements each */
-  @Test
-  public void singleIndexTest1() {
-    int deviceNum = 5;
-    int measurementNum = 5;
-    IDeviceID[] devices = new IDeviceID[deviceNum];
-    int[][] vectorMeasurement = new int[deviceNum][];
-    String[][] singleMeasurement = new String[deviceNum][];
-    for (int i = 0; i < deviceNum; i++) {
-      devices[i] = new PlainDeviceID("d" + i);
-      vectorMeasurement[i] = new int[0];
-      singleMeasurement[i] = new String[measurementNum];
-      for (int j = 0; j < measurementNum; j++) {
-        singleMeasurement[i][j] = measurementPrefix + generateIndexString(j, measurementNum);
-      }
-    }
-    test(devices, vectorMeasurement, singleMeasurement);
-  }
-
-  /** Example 2: 1 entity with 150 measurements */
-  @Test
-  public void singleIndexTest2() {
-    int deviceNum = 1;
-    int measurementNum = 150;
-    IDeviceID[] devices = new IDeviceID[deviceNum];
-    int[][] vectorMeasurement = new int[deviceNum][];
-    String[][] singleMeasurement = new String[deviceNum][];
-    for (int i = 0; i < deviceNum; i++) {
-      devices[i] = new PlainDeviceID("d" + i);
-      vectorMeasurement[i] = new int[0];
-      singleMeasurement[i] = new String[measurementNum];
-      for (int j = 0; j < measurementNum; j++) {
-        singleMeasurement[i][j] = measurementPrefix + generateIndexString(j, measurementNum);
-      }
-    }
-    test(devices, vectorMeasurement, singleMeasurement);
-  }
-
-  /** Example 3: 150 entities with 1 measurement each */
-  @Test
-  public void singleIndexTest3() {
-    int deviceNum = 150;
-    int measurementNum = 1;
-    IDeviceID[] devices = new IDeviceID[deviceNum];
-    int[][] vectorMeasurement = new int[deviceNum][];
-    String[][] singleMeasurement = new String[deviceNum][];
-    for (int i = 0; i < deviceNum; i++) {
-      devices[i] = new PlainDeviceID("d" + generateIndexString(i, deviceNum));
-      vectorMeasurement[i] = new int[0];
-      singleMeasurement[i] = new String[measurementNum];
-      for (int j = 0; j < measurementNum; j++) {
-        singleMeasurement[i][j] = measurementPrefix + generateIndexString(j, measurementNum);
-      }
-    }
-    test(devices, vectorMeasurement, singleMeasurement);
-  }
-
-  /** Example 4: 150 entities with 150 measurements each */
-  @Test
-  public void singleIndexTest4() {
-    int deviceNum = 150;
-    int measurementNum = 1;
-    IDeviceID[] devices = new IDeviceID[deviceNum];
-    int[][] vectorMeasurement = new int[deviceNum][];
-    String[][] singleMeasurement = new String[deviceNum][];
-    for (int i = 0; i < deviceNum; i++) {
-      devices[i] = new PlainDeviceID("d" + generateIndexString(i, deviceNum));
-      vectorMeasurement[i] = new int[0];
-      singleMeasurement[i] = new String[measurementNum];
-      for (int j = 0; j < measurementNum; j++) {
-        singleMeasurement[i][j] = measurementPrefix + generateIndexString(j, measurementNum);
-      }
-    }
-    test(devices, vectorMeasurement, singleMeasurement);
-  }
-
-  /** Example 5: 1 entities with 1 vector containing 9 measurements */
-  @Test
-  public void vectorIndexTest() {
-    IDeviceID[] devices = {new PlainDeviceID("d0")};
-    int[][] vectorMeasurement = {{9}};
-    test(devices, vectorMeasurement, null);
-  }
-
-  /**
-   * Example 6: 2 entities, measurements of entities are shown in the following table
-   *
-   * <p>d0.s0~s4 | d0.z0~z3 | d1.v0.(s0~s3)
-   */
-  @Test
-  public void compositeIndexTest() {
-    IDeviceID[] devices = {new PlainDeviceID("d0"), new PlainDeviceID("d1")};
-    int[][] vectorMeasurement = {{}, {4}};
-    String[][] singleMeasurement = {
-      {"s0", "s1", "s2", "s3", "s4", "z0", "z1", "z2", "z3"},
-      {}
-    };
-    test(devices, vectorMeasurement, singleMeasurement);
-  }
-
-  /**
-   * start test
-   *
-   * @param devices name and number of device
-   * @param vectorMeasurement the number of device and the number of values to include in the tablet
-   * @param singleMeasurement non-vector measurement name, set null if no need
-   */
-  private void test(IDeviceID[] devices, int[][] vectorMeasurement, String[][] singleMeasurement) {
-    // 1. generate file
-    generateFile(devices, vectorMeasurement, singleMeasurement);
-    // 2. read metadata from file
-    List<IDeviceID> actualDevices = new ArrayList<>(); // contains all device by sequence
-    List<List<String>> actualMeasurements =
-        new ArrayList<>(); // contains all measurements group by device
-    readMetaDataDFS(actualDevices, actualMeasurements);
-    // 3. generate correct result
-    List<IDeviceID> correctDevices = new ArrayList<>(); // contains all device by sequence
-    List<List<String>> correctFirstMeasurements =
-        new ArrayList<>(); // contains first measurements of every leaf, group by device
-    List<String> correctPaths = new ArrayList<>(); // contains all paths by sequence
-    generateCorrectResult(
-        correctDevices,
-        correctFirstMeasurements,
-        correctPaths,
-        devices,
-        vectorMeasurement,
-        singleMeasurement);
-    // 4. compare correct result with TsFile's metadata
-    Arrays.sort(devices);
-    // 4.1 make sure device in order
-    assertEquals(correctDevices.size(), devices.length);
-    assertEquals(actualDevices.size(), correctDevices.size());
-    for (int i = 0; i < actualDevices.size(); i++) {
-      assertEquals(actualDevices.get(i), correctDevices.get(i));
-    }
-    // 4.2 make sure timeseries in order
-    try (TsFileSequenceReader reader = new TsFileSequenceReader(FILE_PATH)) {
-      Iterator<Pair<IDeviceID, Boolean>> iterator = reader.getAllDevicesIteratorWithIsAligned();
-      while (iterator.hasNext()) {
-        for (IDeviceID correctDevice : correctDevices) {
-          assertEquals(correctDevice, iterator.next().left);
-        }
-      }
-      assertFalse(iterator.hasNext());
-
-      Map<IDeviceID, List<TimeseriesMetadata>> allTimeseriesMetadata =
-          reader.getAllTimeseriesMetadata(false);
-      for (int j = 0; j < actualDevices.size(); j++) {
-        for (int i = 0; i < actualMeasurements.get(j).size(); i++) {
-          assertEquals(
-              allTimeseriesMetadata.get(actualDevices.get(j)).get(i).getMeasurementId(),
-              correctFirstMeasurements.get(j).get(i));
-        }
-      }
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-
-    // 4.3 make sure split leaf correctly
-    for (int j = 0; j < actualDevices.size(); j++) {
-      for (int i = 0; i < actualMeasurements.get(j).size(); i++) {
-        assertEquals(
-            actualMeasurements.get(j).get(i),
-            correctFirstMeasurements.get(j).get(i * conf.getMaxDegreeOfIndexNode()));
-      }
-    }
-    try (TsFileSequenceReader reader = new TsFileSequenceReader(FILE_PATH)) {
-      Iterator<List<Path>> iterator = reader.getPathsIterator();
-      int idx = 0;
-      while (iterator.hasNext()) {
-        for (Path actualPath : iterator.next()) {
-          assertEquals(actualPath.getFullPath(), correctPaths.get(idx));
-          idx++;
-        }
-      }
-      assertEquals(correctPaths.size(), idx);
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  /**
-   * read TsFile metadata, load actual message in devices and measurements
-   *
-   * @param devices load actual devices
-   * @param measurements load actual measurement(first of every leaf)
-   */
-  private void readMetaDataDFS(List<IDeviceID> devices, List<List<String>> measurements) {
-    try (TsFileSequenceReader reader = new TsFileSequenceReader(FILE_PATH)) {
-      TsFileMetadata tsFileMetaData = reader.readFileMetadata();
-      MetadataIndexNode metadataIndexNode = tsFileMetaData.getMetadataIndex();
-      deviceDFS(devices, measurements, reader, metadataIndexNode);
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  /** DFS in device level load actual devices */
-  private void deviceDFS(
-      List<IDeviceID> devices,
-      List<List<String>> measurements,
-      TsFileSequenceReader reader,
-      MetadataIndexNode node) {
-    try {
-      assertTrue(
-          node.getNodeType().equals(MetadataIndexNodeType.LEAF_DEVICE)
-              || node.getNodeType().equals(MetadataIndexNodeType.INTERNAL_DEVICE));
-      for (int i = 0; i < node.getChildren().size(); i++) {
-        IMetadataIndexEntry metadataIndexEntry = node.getChildren().get(i);
-        long endOffset = node.getEndOffset();
-        if (i != node.getChildren().size() - 1) {
-          endOffset = node.getChildren().get(i + 1).getOffset();
-        }
-        boolean currentChildLevelIsDevice =
-            MetadataIndexNodeType.INTERNAL_DEVICE.equals(node.getNodeType());
-        MetadataIndexNode subNode =
-            reader.readMetadataIndexNode(
-                metadataIndexEntry.getOffset(), endOffset, currentChildLevelIsDevice);
-        if (node.getNodeType().equals(MetadataIndexNodeType.LEAF_DEVICE)) {
-          devices.add(((DeviceMetadataIndexEntry) metadataIndexEntry).getDeviceID());
-          measurements.add(new ArrayList<>());
-          measurementDFS(devices.size() - 1, measurements, reader, subNode);
-        } else if (node.getNodeType().equals(MetadataIndexNodeType.INTERNAL_DEVICE)) {
-          deviceDFS(devices, measurements, reader, subNode);
-        }
-      }
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-  /** DFS in measurement level load actual measurements */
-  private void measurementDFS(
-      int deviceIndex,
-      List<List<String>> measurements,
-      TsFileSequenceReader reader,
-      MetadataIndexNode node) {
-
-    try {
-      assertTrue(
-          node.getNodeType().equals(MetadataIndexNodeType.LEAF_MEASUREMENT)
-              || node.getNodeType().equals(MetadataIndexNodeType.INTERNAL_MEASUREMENT));
-      for (int i = 0; i < node.getChildren().size(); i++) {
-        IMetadataIndexEntry metadataIndexEntry = node.getChildren().get(i);
-        long endOffset = node.getEndOffset();
-        if (i != node.getChildren().size() - 1) {
-          endOffset = node.getChildren().get(i + 1).getOffset();
-        }
-        if (node.getNodeType().equals(MetadataIndexNodeType.LEAF_MEASUREMENT)) {
-          measurements
-              .get(deviceIndex)
-              .add(((MeasurementMetadataIndexEntry) metadataIndexEntry).getName());
-        } else if (node.getNodeType().equals(MetadataIndexNodeType.INTERNAL_MEASUREMENT)) {
-          MetadataIndexNode subNode =
-              reader.readMetadataIndexNode(metadataIndexEntry.getOffset(), endOffset, false);
-          measurementDFS(deviceIndex, measurements, reader, subNode);
-        }
-      }
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  /**
-   * generate correct devices and measurements for test Note that if the metadata index tree is
-   * re-designed, you may need to modify this function as well.
-   *
-   * @param correctDevices output
-   * @param correctMeasurements output
-   * @param devices input
-   * @param vectorMeasurement input
-   * @param singleMeasurement input
-   */
-  private void generateCorrectResult(
-      List<IDeviceID> correctDevices,
-      List<List<String>> correctMeasurements,
-      List<String> correctPaths,
-      IDeviceID[] devices,
-      int[][] vectorMeasurement,
-      String[][] singleMeasurement) {
-    for (int i = 0; i < devices.length; i++) {
-      IDeviceID device = devices[i];
-      correctDevices.add(device);
-      // generate measurement and sort
-      List<String> measurements = new ArrayList<>();
-      // single-variable measurement
-      if (singleMeasurement != null) {
-        for (String measurement : singleMeasurement[i]) {
-          measurements.add(measurement);
-          correctPaths.add(new Path(device, measurement, true).getFullPath());
-        }
-      }
-      // multi-variable measurement
-      for (int vectorIndex = 0; vectorIndex < vectorMeasurement[i].length; vectorIndex++) {
-        measurements.add("");
-        correctPaths.add(new Path(device, "", true).getFullPath());
-        int measurementNum = vectorMeasurement[i][vectorIndex];
-        for (int measurementIndex = 0; measurementIndex < measurementNum; measurementIndex++) {
-          String measurementName =
-              measurementPrefix + generateIndexString(measurementIndex, measurementNum);
-          measurements.add(TsFileConstant.PATH_SEPARATOR + measurementName);
-          correctPaths.add(new Path(device, measurementName, true).getFullPath());
-        }
-      }
-      Collections.sort(measurements);
-      correctMeasurements.add(measurements);
-    }
-    Collections.sort(correctDevices);
-  }
-
-  /**
-   * @param devices name and number of device
-   * @param vectorMeasurement the number of device and the number of values to include in the tablet
-   * @param singleMeasurement non-vector measurement name, set null if no need
-   */
-  private void generateFile(
-      IDeviceID[] devices, int[][] vectorMeasurement, String[][] singleMeasurement) {
-    File f = FSFactoryProducer.getFSFactory().getFile(FILE_PATH);
-    if (f.exists() && !f.delete()) {
-      fail("can not delete " + f.getAbsolutePath());
-    }
-    Schema schema = new Schema();
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f, schema)) {
-      // write single-variable timeseries
-      if (singleMeasurement != null) {
-        for (int i = 0; i < singleMeasurement.length; i++) {
-          IDeviceID device = devices[i];
-          for (String measurement : singleMeasurement[i]) {
-            tsFileWriter.registerTimeseries(
-                new Path(device),
-                new MeasurementSchema(measurement, TSDataType.INT64, TSEncoding.RLE));
-          }
-          // the number of record rows
-          int rowNum = 10;
-          for (int row = 0; row < rowNum; row++) {
-            TSRecord tsRecord = new TSRecord(row, ((PlainDeviceID) device).toStringID());
-            for (String measurement : singleMeasurement[i]) {
-              DataPoint dPoint = new LongDataPoint(measurement, row);
-              tsRecord.addTuple(dPoint);
-            }
-            if (tsRecord.dataPointList.size() > 0) {
-              tsFileWriter.write(tsRecord);
-            }
-          }
-        }
-      }
-
-      // write multi-variable timeseries
-      for (int i = 0; i < devices.length; i++) {
-        IDeviceID device = devices[i];
-        logger.info("generating device {}...", device);
-        // the number of rows to include in the tablet
-        int rowNum = 10;
-        for (int vectorIndex = 0; vectorIndex < vectorMeasurement[i].length; vectorIndex++) {
-          String vectorName =
-              vectorPrefix + generateIndexString(vectorIndex, vectorMeasurement.length);
-          logger.info("generating vector {}...", vectorName);
-          int measurementNum = vectorMeasurement[i][vectorIndex];
-          List<MeasurementSchema> schemas = new ArrayList<>();
-          List<MeasurementSchema> tabletSchema = new ArrayList<>();
-          for (int measurementIndex = 0; measurementIndex < measurementNum; measurementIndex++) {
-            String measurementName =
-                measurementPrefix + generateIndexString(measurementIndex, measurementNum);
-            logger.info("generating vector measurement {}...", measurementName);
-            // add measurements into file schema (all with INT64 data type)
-            MeasurementSchema schema1 =
-                new MeasurementSchema(measurementName, TSDataType.INT64, TSEncoding.RLE);
-            schemas.add(schema1);
-            tabletSchema.add(schema1);
-          }
-          MeasurementGroup group = new MeasurementGroup(true, schemas);
-          schema.registerMeasurementGroup(new Path(device), group);
-          // add measurements into TSFileWriter
-          // construct the tablet
-          Tablet tablet = new Tablet(((PlainDeviceID) device).toStringID(), tabletSchema);
-          long[] timestamps = tablet.timestamps;
-          Object[] values = tablet.values;
-          long timestamp = 1;
-          long value = 1000000L;
-          for (int r = 0; r < rowNum; r++, value++) {
-            int row = tablet.rowSize++;
-            timestamps[row] = timestamp++;
-            for (int j = 0; j < measurementNum; j++) {
-              long[] sensor = (long[]) values[j];
-              sensor[row] = value;
-            }
-            // write Tablet to TsFile
-            if (tablet.rowSize == tablet.getMaxRowNumber()) {
-              tsFileWriter.writeAligned(tablet);
-              tablet.reset();
-            }
-          }
-          // write Tablet to TsFile
-          if (tablet.rowSize != 0) {
-            tsFileWriter.writeAligned(tablet);
-            tablet.reset();
-          }
-        }
-      }
-    } catch (Exception e) {
-      logger.error("meet error in TsFileWrite with tablet", e);
-      fail(e.getMessage());
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/PerfTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/PerfTest.java
deleted file mode 100755
index a2ad5eb..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/PerfTest.java
+++ /dev/null
@@ -1,234 +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.write;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.JsonFormatConstant;
-import org.apache.iotdb.tsfile.constant.TestConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.RecordUtils;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
-import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.LoggerContext;
-import com.google.gson.JsonObject;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.Random;
-import java.util.Scanner;
-
-/**
- * This is used for performance test, no asserting. User could change {@code ROW_COUNT} for larger
- * data test.
- */
-public class PerfTest {
-
-  public static final int ROW_COUNT = 1000; // 0000;
-  private static final Logger LOG = LoggerFactory.getLogger(PerfTest.class);
-  public static TsFileWriter innerWriter;
-  public static String inputDataFile;
-  public static String outputDataFile;
-  public static String errorOutputDataFile;
-  public static Schema schema;
-  public static Random rm = new Random();
-
-  private static void generateSampleInputDataFile() throws IOException {
-    File file = new File(inputDataFile);
-    if (file.exists()) {
-      file.delete();
-    }
-    FileWriter fw = new FileWriter(file);
-
-    long startTime = System.currentTimeMillis();
-    startTime = startTime - startTime % 1000;
-    try {
-      for (int i = 0; i < ROW_COUNT; i++) {
-        String string4 = ",s4," + (char) (97 + i % 26);
-        // write d1
-        String d1 =
-            "d1," + (startTime + i) + ",s1," + (i * 10 + 1) + ",s2," + (i * 10 + 2) + string4;
-        if (rm.nextInt(1000) < 100) {
-          // LOG.info("write null to d1:" + (startTime + i));
-          d1 = "d1," + (startTime + i) + ",s1,,s2," + (i * 10 + 2) + string4;
-        }
-        if (i % 5 == 0) {
-          d1 += ",s3," + (i * 10 + 3);
-        }
-        fw.write(d1 + "\r\n");
-
-        // write d2
-        String d2 =
-            "d2," + (startTime + i) + ",s2," + (i * 10 + 2) + ",s3," + (i * 10 + 3) + string4;
-        if (rm.nextInt(1000) < 100) {
-          // LOG.info("write null to d2:" + (startTime + i));
-          d2 = "d2," + (startTime + i) + ",s2,,s3," + (i * 10 + 3) + string4;
-        }
-        if (i % 5 == 0) {
-          d2 += ",s1," + (i * 10 + 1);
-        }
-        fw.write(d2 + "\r\n");
-      }
-      // write error
-      String d =
-          "d2,3,"
-              + (startTime + ROW_COUNT)
-              + ",s2,"
-              + (ROW_COUNT * 10 + 2)
-              + ",s3,"
-              + (ROW_COUNT * 10 + 3);
-      fw.write(d + "\r\n");
-      d = "d2," + (startTime + ROW_COUNT + 1) + ",2,s-1," + (ROW_COUNT * 10 + 2);
-      fw.write(d + "\r\n");
-    } finally {
-      fw.close();
-    }
-  }
-
-  private static void write() throws IOException, InterruptedException {
-    File file = new File(outputDataFile);
-    File errorFile = new File(errorOutputDataFile);
-    if (file.exists()) {
-      file.delete();
-    }
-    if (errorFile.exists()) {
-      errorFile.delete();
-    }
-
-    // TSFileDescriptor.conf.chunkGroupSize = 2000;
-    // TSFileDescriptor.conf.pageSizeInByte = 100;
-    innerWriter = new TsFileWriter(file, schema, TSFileDescriptor.getInstance().getConfig());
-
-    // write
-    try {
-      writeToFile(schema);
-    } catch (WriteProcessException e) {
-      e.printStackTrace();
-    }
-    LOG.info("write to file successfully!!");
-  }
-
-  private static Scanner getDataFile(String path) {
-    File file = new File(path);
-    try {
-      Scanner in = new Scanner(file);
-      return in;
-    } catch (FileNotFoundException e) {
-      e.printStackTrace();
-      return null;
-    }
-  }
-
-  private static void writeToFile(Schema schema)
-      throws InterruptedException, IOException, WriteProcessException {
-    Scanner in = getDataFile(inputDataFile);
-    assert in != null;
-    while (in.hasNextLine()) {
-      String str = in.nextLine();
-      TSRecord record = RecordUtils.parseSimpleTupleRecord(str, schema);
-      innerWriter.write(record);
-    }
-    innerWriter.close();
-  }
-
-  private static Schema generateTestData() {
-    Schema schema = new Schema();
-    TSFileConfig conf = TSFileDescriptor.getInstance().getConfig();
-    schema.registerTimeseries(
-        new Path("d1"),
-        new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.valueOf(conf.getValueEncoder())));
-    schema.registerTimeseries(
-        new Path("d1"),
-        new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.valueOf(conf.getValueEncoder())));
-    schema.registerTimeseries(
-        new Path("d1"),
-        new MeasurementSchema("s3", TSDataType.INT64, TSEncoding.valueOf(conf.getValueEncoder())));
-    schema.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s4", TSDataType.TEXT, TSEncoding.PLAIN));
-    schema.registerTimeseries(
-        new Path("d2"),
-        new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.valueOf(conf.getValueEncoder())));
-    schema.registerTimeseries(
-        new Path("d2"),
-        new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.valueOf(conf.getValueEncoder())));
-    schema.registerTimeseries(
-        new Path("d2"),
-        new MeasurementSchema("s3", TSDataType.INT64, TSEncoding.valueOf(conf.getValueEncoder())));
-    schema.registerTimeseries(
-        new Path("d2"), new MeasurementSchema("s4", TSDataType.TEXT, TSEncoding.PLAIN));
-
-    JsonObject s4 = new JsonObject();
-    s4.addProperty(JsonFormatConstant.MEASUREMENT_UID, "s4");
-    s4.addProperty(JsonFormatConstant.DATA_TYPE, TSDataType.TEXT.toString());
-    s4.addProperty(JsonFormatConstant.MEASUREMENT_ENCODING, TSEncoding.PLAIN.toString());
-    return schema;
-  }
-
-  @Before
-  public void prepare() throws IOException {
-    LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
-    // set global log level
-    ch.qos.logback.classic.Logger logger = loggerContext.getLogger("root");
-    logger.setLevel(Level.toLevel("info"));
-
-    inputDataFile = TestConstant.BASE_OUTPUT_PATH.concat("perTestInputData");
-    outputDataFile = TestConstant.BASE_OUTPUT_PATH.concat("perTestOutputData.tsfile");
-    errorOutputDataFile = TestConstant.BASE_OUTPUT_PATH.concat("perTestErrorOutputData.tsfile");
-    schema = generateTestData();
-    generateSampleInputDataFile();
-  }
-
-  @After
-  public void after() {
-    File file = new File(inputDataFile);
-    if (file.exists()) {
-      file.delete();
-    }
-    file = new File(outputDataFile);
-    if (file.exists()) {
-      file.delete();
-    }
-    file = new File(errorOutputDataFile);
-    if (file.exists()) {
-      file.delete();
-    }
-    LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
-    // set global log level
-    ch.qos.logback.classic.Logger logger = loggerContext.getLogger("root");
-    logger.setLevel(Level.toLevel("info"));
-  }
-
-  @Test
-  public void writeTest() throws IOException, InterruptedException {
-    write();
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/ReadPageInMemTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/ReadPageInMemTest.java
deleted file mode 100644
index 15b7227..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/ReadPageInMemTest.java
+++ /dev/null
@@ -1,189 +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.write;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.constant.TestConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.RecordUtils;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-
-import static org.junit.Assert.fail;
-
-public class ReadPageInMemTest {
-
-  private String filePath = TestConstant.BASE_OUTPUT_PATH.concat("TsFileReadPageInMem");
-  private File file = new File(filePath);
-  private TSFileConfig conf = TSFileDescriptor.getInstance().getConfig();
-  private TsFileWriter innerWriter;
-  private Schema schema = null;
-
-  private int pageSize;
-  private int ChunkGroupSize;
-  private int pageCheckSizeThreshold;
-  private int defaultMaxStringLength;
-
-  private static Schema getSchema() {
-    Schema schema = new Schema();
-    TSFileConfig conf = TSFileDescriptor.getInstance().getConfig();
-    schema.registerTimeseries(
-        new Path("root.car.d1"),
-        new MeasurementSchema("s1", TSDataType.INT32, TSEncoding.valueOf(conf.getValueEncoder())));
-    schema.registerTimeseries(
-        new Path("root.car.d1"),
-        new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.valueOf(conf.getValueEncoder())));
-    schema.registerTimeseries(
-        new Path("root.car.d1"),
-        new MeasurementSchema("s3", TSDataType.FLOAT, TSEncoding.valueOf(conf.getValueEncoder())));
-    schema.registerTimeseries(
-        new Path("root.car.d1"),
-        new MeasurementSchema("s4", TSDataType.DOUBLE, TSEncoding.valueOf(conf.getValueEncoder())));
-    schema.registerTimeseries(
-        new Path("root.car.d2"),
-        new MeasurementSchema("s1", TSDataType.INT32, TSEncoding.valueOf(conf.getValueEncoder())));
-    schema.registerTimeseries(
-        new Path("root.car.d2"),
-        new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.valueOf(conf.getValueEncoder())));
-    schema.registerTimeseries(
-        new Path("root.car.d2"),
-        new MeasurementSchema("s3", TSDataType.FLOAT, TSEncoding.valueOf(conf.getValueEncoder())));
-    schema.registerTimeseries(
-        new Path("root.car.d2"),
-        new MeasurementSchema("s4", TSDataType.DOUBLE, TSEncoding.valueOf(conf.getValueEncoder())));
-    return schema;
-  }
-
-  @Before
-  public void setUp() throws Exception {
-    file.delete();
-    pageSize = conf.getPageSizeInByte();
-    conf.setPageSizeInByte(200);
-    ChunkGroupSize = conf.getGroupSizeInByte();
-    conf.setGroupSizeInByte(100000);
-    pageCheckSizeThreshold = conf.getPageCheckSizeThreshold();
-    conf.setPageCheckSizeThreshold(1);
-    defaultMaxStringLength = conf.getMaxStringLength();
-    conf.setMaxStringLength(2);
-    schema = getSchema();
-    innerWriter = new TsFileWriter(new File(filePath), schema, conf);
-  }
-
-  @After
-  public void tearDown() {
-    file.delete();
-    conf.setPageSizeInByte(pageSize);
-    conf.setGroupSizeInByte(ChunkGroupSize);
-    conf.setPageCheckSizeThreshold(pageCheckSizeThreshold);
-    conf.setMaxStringLength(defaultMaxStringLength);
-  }
-
-  @Test
-  public void OneDeviceTest() {
-    String line = "";
-    for (int i = 1; i <= 3; i++) {
-      line = "root.car.d1," + i + ",s1,1,s2,1,s3,0.1,s4,0.1";
-      TSRecord record = RecordUtils.parseSimpleTupleRecord(line, schema);
-      try {
-        innerWriter.write(record);
-      } catch (IOException | WriteProcessException e) {
-        e.printStackTrace();
-        fail(e.getMessage());
-      }
-    }
-    for (int i = 4; i < 100; i++) {
-      line = "root.car.d1," + i + ",s1,1,s2,1,s3,0.1,s4,0.1";
-      TSRecord record = RecordUtils.parseSimpleTupleRecord(line, schema);
-      try {
-        innerWriter.write(record);
-      } catch (IOException | WriteProcessException e) {
-        e.printStackTrace();
-        fail(e.getMessage());
-      }
-    }
-    try {
-      innerWriter.close();
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void MultiDeviceTest() throws IOException {
-
-    String line = "";
-    for (int i = 1; i <= 3; i++) {
-      line = "root.car.d1," + i + ",s1,1,s2,1,s3,0.1,s4,0.1";
-      TSRecord record = RecordUtils.parseSimpleTupleRecord(line, schema);
-      try {
-        innerWriter.write(record);
-      } catch (IOException | WriteProcessException e) {
-        e.printStackTrace();
-        fail(e.getMessage());
-      }
-    }
-    for (int i = 1; i <= 3; i++) {
-      line = "root.car.d2," + i + ",s1,1,s2,1,s3,0.1,s4,0.1";
-      TSRecord record = RecordUtils.parseSimpleTupleRecord(line, schema);
-      try {
-        innerWriter.write(record);
-      } catch (IOException | WriteProcessException e) {
-        e.printStackTrace();
-        fail(e.getMessage());
-      }
-    }
-
-    for (int i = 4; i < 100; i++) {
-      line = "root.car.d1," + i + ",s1,1,s2,1,s3,0.1,s4,0.1";
-      TSRecord record = RecordUtils.parseSimpleTupleRecord(line, schema);
-      try {
-        innerWriter.write(record);
-      } catch (IOException | WriteProcessException e) {
-        e.printStackTrace();
-        fail(e.getMessage());
-      }
-    }
-
-    for (int i = 4; i < 100; i++) {
-      line = "root.car.d2," + i + ",s1,1,s2,1,s3,0.1,s4,0.1";
-      TSRecord record = RecordUtils.parseSimpleTupleRecord(line, schema);
-      try {
-        innerWriter.write(record);
-      } catch (IOException | WriteProcessException e) {
-        e.printStackTrace();
-        fail(e.getMessage());
-      }
-    }
-
-    innerWriter.close();
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/SameMeasurementsWithDifferentDataTypesTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/SameMeasurementsWithDifferentDataTypesTest.java
deleted file mode 100644
index 50c39e9..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/SameMeasurementsWithDifferentDataTypesTest.java
+++ /dev/null
@@ -1,215 +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.write;
-
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorForTest;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-public class SameMeasurementsWithDifferentDataTypesTest {
-
-  private String TEMPLATE_1 = "template1";
-  private String TEMPLATE_2 = "template2";
-  private String tsfilePath = TsFileGeneratorForTest.getTestTsFilePath("root.sg1", 0, 0, 1);
-
-  @Before
-  public void before() throws IOException, WriteProcessException {
-    writeFile(tsfilePath);
-  }
-
-  @After
-  public void after() {
-    File file = new File(tsfilePath);
-    try {
-      Files.deleteIfExists(file.toPath());
-    } catch (IOException e) {
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void testSameMeasurementsWithDiffrentDataTypes() throws IOException {
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s1", true));
-    pathList.add(new Path("d2", "s1", true));
-    QueryExpression queryExpression = QueryExpression.create(pathList, null);
-    TsFileSequenceReader fileReader = new TsFileSequenceReader(tsfilePath);
-    TsFileReader tsFileReader = new TsFileReader(fileReader);
-    QueryDataSet dataSet = tsFileReader.query(queryExpression);
-    int i = 0;
-    while (dataSet.hasNext()) {
-      RowRecord r = dataSet.next();
-      if (i == 0) {
-        assertEquals(1L, r.getTimestamp());
-        assertEquals(2, r.getFields().size());
-        assertEquals(TSDataType.FLOAT, r.getFields().get(0).getDataType());
-        assertEquals(TSDataType.INT64, r.getFields().get(1).getDataType());
-      }
-      i++;
-    }
-    Assert.assertEquals(6, i);
-  }
-
-  private void writeFile(String tsfilePath) throws IOException, WriteProcessException {
-    File f = new File(tsfilePath);
-    try {
-      Files.deleteIfExists(f.toPath());
-    } catch (IOException e) {
-      fail(e.getMessage());
-    }
-    if (!f.getParentFile().exists()) {
-      Assert.assertTrue(f.getParentFile().mkdirs());
-    }
-
-    Schema schema = new Schema();
-    schema.extendTemplate(
-        TEMPLATE_1, new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
-    schema.extendTemplate(
-        TEMPLATE_1, new MeasurementSchema("s2", TSDataType.INT32, TSEncoding.TS_2DIFF));
-    schema.extendTemplate(
-        TEMPLATE_1, new MeasurementSchema("s3", TSDataType.INT32, TSEncoding.TS_2DIFF));
-
-    schema.extendTemplate(
-        TEMPLATE_2, new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.TS_2DIFF));
-    schema.extendTemplate(
-        TEMPLATE_2, new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.RLE));
-
-    schema.registerDevice("d1", TEMPLATE_1);
-    schema.registerDevice("d2", TEMPLATE_2);
-
-    TsFileWriter tsFileWriter = new TsFileWriter(f, schema);
-
-    // construct TSRecord
-    TSRecord tsRecord = new TSRecord(1, "d1");
-    DataPoint dPoint1 = new FloatDataPoint("s1", 1.2f);
-    DataPoint dPoint2 = new IntDataPoint("s2", 20);
-    tsRecord.addTuple(dPoint1);
-    tsRecord.addTuple(dPoint2);
-
-    // write a TSRecord to TsFile
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(2, "d1");
-    dPoint2 = new IntDataPoint("s2", 20);
-    DataPoint dPoint3 = new IntDataPoint("s3", 50);
-    tsRecord.addTuple(dPoint2);
-    tsRecord.addTuple(dPoint3);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(3, "d1");
-    dPoint1 = new FloatDataPoint("s1", 1.4f);
-    dPoint2 = new IntDataPoint("s2", 21);
-    tsRecord.addTuple(dPoint1);
-    tsRecord.addTuple(dPoint2);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(4, "d1");
-    dPoint1 = new FloatDataPoint("s1", 1.2f);
-    dPoint2 = new IntDataPoint("s2", 20);
-    dPoint3 = new IntDataPoint("s3", 51);
-    tsRecord.addTuple(dPoint1);
-    tsRecord.addTuple(dPoint2);
-    tsRecord.addTuple(dPoint3);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(6, "d1");
-    dPoint1 = new FloatDataPoint("s1", 7.2f);
-    dPoint2 = new IntDataPoint("s2", 10);
-    dPoint3 = new IntDataPoint("s3", 11);
-    tsRecord.addTuple(dPoint1);
-    tsRecord.addTuple(dPoint2);
-    tsRecord.addTuple(dPoint3);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(7, "d1");
-    dPoint1 = new FloatDataPoint("s1", 6.2f);
-    dPoint2 = new IntDataPoint("s2", 20);
-    dPoint3 = new IntDataPoint("s3", 21);
-    tsRecord.addTuple(dPoint1);
-    tsRecord.addTuple(dPoint2);
-    tsRecord.addTuple(dPoint3);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(8, "d1");
-    dPoint1 = new FloatDataPoint("s1", 9.2f);
-    dPoint2 = new IntDataPoint("s2", 30);
-    dPoint3 = new IntDataPoint("s3", 31);
-    tsRecord.addTuple(dPoint1);
-    tsRecord.addTuple(dPoint2);
-    tsRecord.addTuple(dPoint3);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(1, "d2");
-    dPoint1 = new LongDataPoint("s1", 2000L);
-    dPoint2 = new LongDataPoint("s2", 210L);
-    tsRecord.addTuple(dPoint1);
-    tsRecord.addTuple(dPoint2);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(2, "d2");
-    dPoint2 = new LongDataPoint("s2", 2090L);
-    tsRecord.addTuple(dPoint2);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(3, "d2");
-    dPoint1 = new LongDataPoint("s1", 1400L);
-    dPoint2 = new LongDataPoint("s2", 21L);
-    tsRecord.addTuple(dPoint1);
-    tsRecord.addTuple(dPoint2);
-    tsFileWriter.write(tsRecord);
-
-    tsRecord = new TSRecord(4, "d2");
-    dPoint1 = new LongDataPoint("s1", 1200L);
-    dPoint2 = new LongDataPoint("s2", 20L);
-    tsRecord.addTuple(dPoint1);
-    tsRecord.addTuple(dPoint2);
-    tsFileWriter.write(tsRecord);
-
-    // close TsFile
-    tsFileWriter.close();
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileIOWriterTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileIOWriterTest.java
deleted file mode 100644
index 7d6f224..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileIOWriterTest.java
+++ /dev/null
@@ -1,229 +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.write;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.constant.TestConstant;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkGroupHeader;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.file.metadata.utils.TestHelper;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.MeasurementGroup;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-import org.apache.iotdb.tsfile.write.schema.VectorMeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-public class TsFileIOWriterTest {
-
-  private static final String FILE_PATH =
-      TestConstant.BASE_OUTPUT_PATH.concat("TsFileIOWriterTest.tsfile");
-  private static final IDeviceID DEVICE_1 = new PlainDeviceID("device1");
-  private static final IDeviceID DEVICE_2 = new PlainDeviceID("device2");
-  private static final String SENSOR_1 = "sensor1";
-
-  private static final int CHUNK_GROUP_NUM = 2;
-
-  @Before
-  public void before() throws IOException {
-    TsFileIOWriter writer = new TsFileIOWriter(new File(FILE_PATH));
-
-    // file schema
-    MeasurementSchema measurementSchema = TestHelper.createSimpleMeasurementSchema(SENSOR_1);
-    VectorMeasurementSchema vectorMeasurementSchema =
-        new VectorMeasurementSchema(
-            "", new String[] {"s1", "s2"}, new TSDataType[] {TSDataType.INT64, TSDataType.INT64});
-    List<MeasurementSchema> schemas = new ArrayList<>();
-    schemas.add(new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.RLE));
-    schemas.add(new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.RLE));
-    MeasurementGroup group = new MeasurementGroup(true, schemas);
-
-    Schema schema = new Schema();
-    schema.registerTimeseries(new Path(DEVICE_1), measurementSchema);
-    schema.registerMeasurementGroup(new Path(DEVICE_2), group);
-
-    writeChunkGroup(writer, measurementSchema);
-    writeVectorChunkGroup(writer, vectorMeasurementSchema);
-    writer.setMinPlanIndex(100);
-    writer.setMaxPlanIndex(10000);
-    writer.writePlanIndices();
-    // end file
-    writer.endFile();
-  }
-
-  @After
-  public void after() {
-    File file = new File(FILE_PATH);
-    if (file.exists()) {
-      file.delete();
-    }
-  }
-
-  @Test
-  public void endFileTest() throws IOException {
-    TsFileSequenceReader reader = new TsFileSequenceReader(FILE_PATH);
-
-    // magic_string
-    Assert.assertEquals(TSFileConfig.MAGIC_STRING, reader.readHeadMagic());
-    Assert.assertEquals(TSFileConfig.VERSION_NUMBER, reader.readVersionNumber());
-    Assert.assertEquals(TSFileConfig.MAGIC_STRING, reader.readTailMagic());
-
-    reader.position(TSFileConfig.MAGIC_STRING.getBytes().length + 1);
-
-    ChunkHeader header;
-    ChunkGroupHeader chunkGroupHeader;
-    for (int i = 0; i < CHUNK_GROUP_NUM; i++) {
-      // chunk group header
-      Assert.assertEquals(MetaMarker.CHUNK_GROUP_HEADER, reader.readMarker());
-      chunkGroupHeader = reader.readChunkGroupHeader();
-      Assert.assertEquals(DEVICE_1, chunkGroupHeader.getDeviceID());
-      // ordinary chunk header
-      Assert.assertEquals(MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER, reader.readMarker());
-      header = reader.readChunkHeader(MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER);
-      Assert.assertEquals(SENSOR_1, header.getMeasurementID());
-    }
-
-    for (int i = 0; i < CHUNK_GROUP_NUM; i++) {
-      // chunk group header
-      Assert.assertEquals(MetaMarker.CHUNK_GROUP_HEADER, reader.readMarker());
-      chunkGroupHeader = reader.readChunkGroupHeader();
-      Assert.assertEquals(DEVICE_2, chunkGroupHeader.getDeviceID());
-      // vector chunk header (time)
-      Assert.assertEquals(MetaMarker.ONLY_ONE_PAGE_TIME_CHUNK_HEADER, reader.readMarker());
-      header = reader.readChunkHeader(MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER);
-      Assert.assertEquals("", header.getMeasurementID());
-      // vector chunk header (values)
-      Assert.assertEquals(MetaMarker.ONLY_ONE_PAGE_VALUE_CHUNK_HEADER, reader.readMarker());
-      header = reader.readChunkHeader(MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER);
-      Assert.assertEquals("s1", header.getMeasurementID());
-      Assert.assertEquals(MetaMarker.ONLY_ONE_PAGE_VALUE_CHUNK_HEADER, reader.readMarker());
-      header = reader.readChunkHeader(MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER);
-      Assert.assertEquals("s2", header.getMeasurementID());
-    }
-
-    Assert.assertEquals(MetaMarker.OPERATION_INDEX_RANGE, reader.readMarker());
-    reader.readPlanIndex();
-    Assert.assertEquals(100, reader.getMinPlanIndex());
-    Assert.assertEquals(10000, reader.getMaxPlanIndex());
-
-    Assert.assertEquals(MetaMarker.SEPARATOR, reader.readMarker());
-
-    // make sure timeseriesMetadata is only
-    Map<IDeviceID, List<TimeseriesMetadata>> deviceTimeseriesMetadataMap =
-        reader.getAllTimeseriesMetadata(false);
-    Set<String> pathSet = new HashSet<>();
-    for (Map.Entry<IDeviceID, List<TimeseriesMetadata>> entry :
-        deviceTimeseriesMetadataMap.entrySet()) {
-      for (TimeseriesMetadata timeseriesMetadata : entry.getValue()) {
-        String seriesPath =
-            ((PlainDeviceID) entry.getKey()).toStringID()
-                + "."
-                + timeseriesMetadata.getMeasurementId();
-        Assert.assertFalse(pathSet.contains(seriesPath));
-        pathSet.add(seriesPath);
-      }
-    }
-
-    // FileMetaData
-    TsFileMetadata metaData = reader.readFileMetadata();
-    Assert.assertEquals(2, metaData.getMetadataIndex().getChildren().size());
-  }
-
-  private void writeChunkGroup(TsFileIOWriter writer, MeasurementSchema measurementSchema)
-      throws IOException {
-    for (int i = 0; i < CHUNK_GROUP_NUM; i++) {
-      // chunk group
-      writer.startChunkGroup(DEVICE_1);
-      // ordinary chunk, chunk statistics
-      Statistics statistics = Statistics.getStatsByType(measurementSchema.getType());
-      statistics.updateStats(0L, 0L);
-      writer.startFlushChunk(
-          measurementSchema.getMeasurementId(),
-          measurementSchema.getCompressor(),
-          measurementSchema.getType(),
-          measurementSchema.getEncodingType(),
-          statistics,
-          0,
-          0,
-          0);
-      writer.endCurrentChunk();
-      writer.endChunkGroup();
-    }
-  }
-
-  private void writeVectorChunkGroup(
-      TsFileIOWriter writer, VectorMeasurementSchema vectorMeasurementSchema) throws IOException {
-    for (int i = 0; i < CHUNK_GROUP_NUM; i++) {
-      // chunk group
-      writer.startChunkGroup(DEVICE_2);
-      // vector chunk (time)
-      writer.startFlushChunk(
-          vectorMeasurementSchema.getMeasurementId(),
-          vectorMeasurementSchema.getCompressor(),
-          vectorMeasurementSchema.getType(),
-          vectorMeasurementSchema.getTimeTSEncoding(),
-          Statistics.getStatsByType(vectorMeasurementSchema.getType()),
-          0,
-          0,
-          TsFileConstant.TIME_COLUMN_MASK);
-      writer.endCurrentChunk();
-      // vector chunk (values)
-      for (int j = 0; j < vectorMeasurementSchema.getSubMeasurementsCount(); j++) {
-        Statistics subStatistics =
-            Statistics.getStatsByType(
-                vectorMeasurementSchema.getSubMeasurementsTSDataTypeList().get(j));
-        subStatistics.updateStats(0L, 0L);
-        writer.startFlushChunk(
-            vectorMeasurementSchema.getSubMeasurementsList().get(j),
-            vectorMeasurementSchema.getCompressor(),
-            vectorMeasurementSchema.getSubMeasurementsTSDataTypeList().get(j),
-            vectorMeasurementSchema.getSubMeasurementsTSEncodingList().get(j),
-            subStatistics,
-            0,
-            0,
-            TsFileConstant.VALUE_COLUMN_MASK);
-        writer.endCurrentChunk();
-      }
-      writer.endChunkGroup();
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileIntegrityCheckingTool.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileIntegrityCheckingTool.java
deleted file mode 100644
index 24abaf3..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileIntegrityCheckingTool.java
+++ /dev/null
@@ -1,253 +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.write;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkGroupHeader;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TimeValuePair;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.BatchData;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.IBatchDataIterator;
-import org.apache.iotdb.tsfile.read.reader.IChunkReader;
-import org.apache.iotdb.tsfile.read.reader.IPointReader;
-import org.apache.iotdb.tsfile.read.reader.chunk.AlignedChunkReader;
-import org.apache.iotdb.tsfile.read.reader.chunk.ChunkReader;
-import org.apache.iotdb.tsfile.read.reader.page.PageReader;
-import org.apache.iotdb.tsfile.read.reader.page.TimePageReader;
-import org.apache.iotdb.tsfile.read.reader.page.ValuePageReader;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-
-import org.junit.Assert;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-
-/** This class provide some static method to check the integrity of tsfile */
-public class TsFileIntegrityCheckingTool {
-  private static Logger LOG = LoggerFactory.getLogger(TsFileIntegrityCheckingTool.class);
-
-  /**
-   * This method check the integrity of file by reading it from the start to the end. It mainly
-   * checks the integrity of the chunks.
-   *
-   * @param filename
-   */
-  public static void checkIntegrityBySequenceRead(String filename) {
-    try (TsFileSequenceReader reader = new TsFileSequenceReader(filename)) {
-      String headMagicString = reader.readHeadMagic();
-      Assert.assertEquals(TSFileConfig.MAGIC_STRING, headMagicString);
-      String tailMagicString = reader.readTailMagic();
-      Assert.assertEquals(TSFileConfig.MAGIC_STRING, tailMagicString);
-      reader.position((long) TSFileConfig.MAGIC_STRING.getBytes().length + 1);
-      List<long[]> timeBatch = new ArrayList<>();
-      int pageIndex = 0;
-      byte marker;
-      while ((marker = reader.readMarker()) != MetaMarker.SEPARATOR) {
-        switch (marker) {
-          case MetaMarker.CHUNK_HEADER:
-          case MetaMarker.TIME_CHUNK_HEADER:
-          case MetaMarker.VALUE_CHUNK_HEADER:
-          case MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER:
-          case MetaMarker.ONLY_ONE_PAGE_TIME_CHUNK_HEADER:
-          case MetaMarker.ONLY_ONE_PAGE_VALUE_CHUNK_HEADER:
-            ChunkHeader header = reader.readChunkHeader(marker);
-            if (header.getDataSize() == 0) {
-              // empty value chunk
-              break;
-            }
-            Decoder defaultTimeDecoder =
-                Decoder.getDecoderByType(
-                    TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder()),
-                    TSDataType.INT64);
-            Decoder valueDecoder =
-                Decoder.getDecoderByType(header.getEncodingType(), header.getDataType());
-            int dataSize = header.getDataSize();
-            pageIndex = 0;
-            if (header.getDataType() == TSDataType.VECTOR) {
-              timeBatch.clear();
-            }
-            while (dataSize > 0) {
-              valueDecoder.reset();
-              PageHeader pageHeader =
-                  reader.readPageHeader(
-                      header.getDataType(),
-                      (header.getChunkType() & 0x3F) == MetaMarker.CHUNK_HEADER);
-              ByteBuffer pageData = reader.readPage(pageHeader, header.getCompressionType());
-              if ((header.getChunkType() & (byte) TsFileConstant.TIME_COLUMN_MASK)
-                  == (byte) TsFileConstant.TIME_COLUMN_MASK) { // Time Chunk
-                TimePageReader timePageReader =
-                    new TimePageReader(pageHeader, pageData, defaultTimeDecoder);
-                timeBatch.add(timePageReader.getNextTimeBatch());
-              } else if ((header.getChunkType() & (byte) TsFileConstant.VALUE_COLUMN_MASK)
-                  == (byte) TsFileConstant.VALUE_COLUMN_MASK) { // Value Chunk
-                ValuePageReader valuePageReader =
-                    new ValuePageReader(pageHeader, pageData, header.getDataType(), valueDecoder);
-                TsPrimitiveType[] valueBatch =
-                    valuePageReader.nextValueBatch(timeBatch.get(pageIndex));
-              } else { // NonAligned Chunk
-                PageReader pageReader =
-                    new PageReader(
-                        pageData, header.getDataType(), valueDecoder, defaultTimeDecoder);
-                BatchData batchData = pageReader.getAllSatisfiedPageData();
-              }
-              pageIndex++;
-              dataSize -= pageHeader.getSerializedPageSize();
-            }
-            break;
-          case MetaMarker.CHUNK_GROUP_HEADER:
-            ChunkGroupHeader chunkGroupHeader = reader.readChunkGroupHeader();
-            break;
-          case MetaMarker.OPERATION_INDEX_RANGE:
-            reader.readPlanIndex();
-            break;
-          default:
-            MetaMarker.handleUnexpectedMarker(marker);
-        }
-      }
-    } catch (IOException e) {
-      LOG.error("Meet exception when checking integrity of tsfile", e);
-      Assert.fail();
-    }
-  }
-
-  /**
-   * This method checks the integrity of the file by mimicking the process of the query, which reads
-   * the metadata index tree first, and get the timeseries metadata list and chunk metadata list.
-   * After that, this method acquires single chunk according to chunk metadata, then it deserializes
-   * the chunk, and verifies the correctness of the data.
-   *
-   * @param filename File to be check
-   * @param originData The origin data in a map format, Device -> SeriesId -> List<List<Time,Val>>,
-   *     each inner list stands for a chunk.
-   */
-  public static void checkIntegrityByQuery(
-      String filename,
-      Map<IDeviceID, Map<String, List<List<Pair<Long, TsPrimitiveType>>>>> originData) {
-    try (TsFileSequenceReader reader = new TsFileSequenceReader(filename)) {
-      Map<IDeviceID, List<TimeseriesMetadata>> allTimeseriesMetadata =
-          reader.getAllTimeseriesMetadata(true);
-      Assert.assertEquals(originData.size(), allTimeseriesMetadata.size());
-      // check each series
-      for (Map.Entry<IDeviceID, List<TimeseriesMetadata>> entry :
-          allTimeseriesMetadata.entrySet()) {
-        IDeviceID deviceId = entry.getKey();
-        List<TimeseriesMetadata> timeseriesMetadataList = entry.getValue();
-        boolean vectorMode = false;
-        if (timeseriesMetadataList.size() > 0
-            && timeseriesMetadataList.get(0).getTsDataType() != TSDataType.VECTOR) {
-          Assert.assertEquals(originData.get(deviceId).size(), timeseriesMetadataList.size());
-        } else {
-          vectorMode = true;
-          Assert.assertEquals(originData.get(deviceId).size(), timeseriesMetadataList.size() - 1);
-        }
-
-        if (!vectorMode) {
-          // check integrity of not aligned series
-          for (TimeseriesMetadata timeseriesMetadata : timeseriesMetadataList) {
-            // get its chunk metadata list, and read the chunk
-            String measurementId = timeseriesMetadata.getMeasurementId();
-            List<List<Pair<Long, TsPrimitiveType>>> originChunks =
-                originData.get(deviceId).get(measurementId);
-            List<IChunkMetadata> chunkMetadataList = timeseriesMetadata.getChunkMetadataList();
-            Assert.assertEquals(originChunks.size(), chunkMetadataList.size());
-            chunkMetadataList.sort(Comparator.comparing(IChunkMetadata::getStartTime));
-            for (int i = 0; i < chunkMetadataList.size(); ++i) {
-              Chunk chunk = reader.readMemChunk((ChunkMetadata) chunkMetadataList.get(i));
-              ChunkReader chunkReader = new ChunkReader(chunk);
-              List<Pair<Long, TsPrimitiveType>> originValue = originChunks.get(i);
-              // deserialize the chunk and verify it with origin data
-              for (int valIdx = 0; chunkReader.hasNextSatisfiedPage(); ) {
-                IPointReader pointReader = chunkReader.nextPageData().getBatchDataIterator();
-                while (pointReader.hasNextTimeValuePair()) {
-                  TimeValuePair pair = pointReader.nextTimeValuePair();
-                  Assert.assertEquals(
-                      originValue.get(valIdx).left.longValue(), pair.getTimestamp());
-                  Assert.assertEquals(originValue.get(valIdx++).right, pair.getValue());
-                }
-              }
-            }
-          }
-        } else {
-          // check integrity of vector type
-          // get the timeseries metadata of the time column
-          TimeseriesMetadata timeColumnMetadata = timeseriesMetadataList.get(0);
-          List<IChunkMetadata> timeChunkMetadataList = timeColumnMetadata.getChunkMetadataList();
-          timeChunkMetadataList.sort(Comparator.comparing(IChunkMetadata::getStartTime));
-
-          for (int i = 1; i < timeseriesMetadataList.size(); ++i) {
-            // traverse each value column
-            List<IChunkMetadata> valueChunkMetadataList =
-                timeseriesMetadataList.get(i).getChunkMetadataList();
-            Assert.assertEquals(timeChunkMetadataList.size(), valueChunkMetadataList.size());
-            List<List<Pair<Long, TsPrimitiveType>>> originDataChunks =
-                originData.get(deviceId).get(timeseriesMetadataList.get(i).getMeasurementId());
-            for (int chunkIdx = 0; chunkIdx < timeChunkMetadataList.size(); ++chunkIdx) {
-              Chunk timeChunk =
-                  reader.readMemChunk((ChunkMetadata) timeChunkMetadataList.get(chunkIdx));
-              Chunk valueChunk =
-                  reader.readMemChunk((ChunkMetadata) valueChunkMetadataList.get(chunkIdx));
-              // construct an aligned chunk reader using time chunk and value chunk
-              IChunkReader chunkReader =
-                  new AlignedChunkReader(timeChunk, Collections.singletonList(valueChunk));
-              // verify the values
-              List<Pair<Long, TsPrimitiveType>> originValue = originDataChunks.get(chunkIdx);
-              for (int valIdx = 0; chunkReader.hasNextSatisfiedPage(); ) {
-                IBatchDataIterator pointReader = chunkReader.nextPageData().getBatchDataIterator();
-                while (pointReader.hasNext()) {
-                  long time = pointReader.currentTime();
-                  Assert.assertEquals(originValue.get(valIdx).left.longValue(), time);
-                  Assert.assertEquals(
-                      originValue.get(valIdx++).right.getValue(),
-                      ((TsPrimitiveType[]) pointReader.currentValue())[0].getValue());
-                  pointReader.next();
-                }
-              }
-            }
-          }
-        }
-      }
-
-    } catch (IOException e) {
-      LOG.error("Meet exception when checking integrity of tsfile", e);
-      Assert.fail();
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileReadWriteTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileReadWriteTest.java
deleted file mode 100644
index 04a6c67..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileReadWriteTest.java
+++ /dev/null
@@ -1,254 +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.write;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Field;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorForTest;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.DoubleDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-public class TsFileReadWriteTest {
-
-  private final double delta = 0.0000001;
-  private final String path = TsFileGeneratorForTest.getTestTsFilePath("root.sg1", 0, 0, 1);
-  private File f;
-
-  @Before
-  public void setUp() {
-    f = new File(path);
-    if (f.exists()) {
-      assertTrue(f.delete());
-    }
-    if (!f.getParentFile().exists()) {
-      assertTrue(f.getParentFile().mkdirs());
-    }
-  }
-
-  @After
-  public void tearDown() {
-    f = new File(path);
-    if (f.exists()) {
-      assertTrue(f.delete());
-    }
-  }
-
-  @Test
-  public void intTest() throws IOException, WriteProcessException {
-    List<TSEncoding> encodings =
-        Arrays.asList(
-            TSEncoding.PLAIN,
-            TSEncoding.RLE,
-            TSEncoding.TS_2DIFF,
-            TSEncoding.REGULAR,
-            TSEncoding.GORILLA,
-            TSEncoding.ZIGZAG);
-    for (TSEncoding encoding : encodings) {
-      intTest(encoding);
-    }
-  }
-
-  private void intTest(TSEncoding encoding) throws IOException, WriteProcessException {
-    writeDataByTSRecord(TSDataType.INT32, (i) -> new IntDataPoint("sensor_1", (int) i), encoding);
-    readData((i, field, delta) -> assertEquals(i, field.getIntV()));
-  }
-
-  @Test
-  public void longTest() throws IOException, WriteProcessException {
-    List<TSEncoding> encodings =
-        Arrays.asList(
-            TSEncoding.PLAIN,
-            TSEncoding.RLE,
-            TSEncoding.TS_2DIFF,
-            TSEncoding.REGULAR,
-            TSEncoding.GORILLA);
-    for (TSEncoding encoding : encodings) {
-      longTest(encoding);
-    }
-  }
-
-  public void longTest(TSEncoding encoding) throws IOException, WriteProcessException {
-    writeDataByTSRecord(TSDataType.INT64, (i) -> new LongDataPoint("sensor_1", i), encoding);
-    readData((i, field, delta) -> assertEquals(i, field.getLongV()));
-  }
-
-  @Test
-  public void floatTest() throws IOException, WriteProcessException {
-    List<TSEncoding> encodings =
-        Arrays.asList(
-            TSEncoding.PLAIN,
-            TSEncoding.RLE,
-            TSEncoding.TS_2DIFF,
-            TSEncoding.GORILLA_V1,
-            TSEncoding.GORILLA);
-    for (TSEncoding encoding : encodings) {
-      floatTest(encoding);
-    }
-  }
-
-  public void floatTest(TSEncoding encoding) throws IOException, WriteProcessException {
-    writeDataByTSRecord(
-        TSDataType.FLOAT, (i) -> new FloatDataPoint("sensor_1", (float) i), encoding);
-    readData((i, field, delta) -> assertEquals(i, field.getFloatV(), delta));
-  }
-
-  @Test
-  public void doubleTest() throws IOException, WriteProcessException {
-    List<TSEncoding> encodings =
-        Arrays.asList(
-            TSEncoding.PLAIN,
-            TSEncoding.RLE,
-            TSEncoding.TS_2DIFF,
-            TSEncoding.GORILLA_V1,
-            TSEncoding.GORILLA);
-    for (TSEncoding encoding : encodings) {
-      doubleTest(encoding);
-    }
-  }
-
-  public void doubleTest(TSEncoding encoding) throws IOException, WriteProcessException {
-    writeDataByTSRecord(
-        TSDataType.DOUBLE, (i) -> new DoubleDataPoint("sensor_1", (double) i), encoding);
-    readData((i, field, delta) -> assertEquals(i, field.getDoubleV(), delta));
-  }
-
-  // If no dataPoint in "device_1.sensor_2", it will throws a nomeasurement
-  // exception,
-  // cause no schema in tsfilemetadata anymore.
-  @Test
-  public void readEmptyMeasurementTest() throws IOException, WriteProcessException {
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-      // add measurements into file schema
-      tsFileWriter.registerTimeseries(
-          new Path("device_1"),
-          new MeasurementSchema("sensor_1", TSDataType.FLOAT, TSEncoding.RLE));
-      tsFileWriter.registerTimeseries(
-          new Path("device_1"),
-          new MeasurementSchema("sensor_2", TSDataType.INT32, TSEncoding.TS_2DIFF));
-      // construct TSRecord
-      TSRecord tsRecord = new TSRecord(1, "device_1");
-      DataPoint dPoint1 = new FloatDataPoint("sensor_1", 1.2f);
-      tsRecord.addTuple(dPoint1);
-      // write a TSRecord to TsFile
-      tsFileWriter.write(tsRecord);
-    }
-
-    // read example : no filter
-    TsFileSequenceReader reader = new TsFileSequenceReader(path);
-    TsFileReader readTsFile = new TsFileReader(reader);
-    ArrayList<Path> paths = new ArrayList<>();
-    paths.add(new Path("device_1", "sensor_2", true));
-    QueryExpression queryExpression = QueryExpression.create(paths, null);
-    try {
-      QueryDataSet queryDataSet = readTsFile.query(queryExpression);
-    } catch (IOException e) {
-      // Assert.fail();
-    } finally {
-      reader.close();
-    }
-
-    assertTrue(f.delete());
-  }
-
-  @Test
-  public void readMeasurementWithRegularEncodingTest() throws IOException, WriteProcessException {
-    TSFileDescriptor.getInstance().getConfig().setTimeEncoder("REGULAR");
-    writeDataByTSRecord(
-        TSDataType.INT64, (i) -> new LongDataPoint("sensor_1", i), TSEncoding.REGULAR);
-    readData((i, field, delta) -> assertEquals(i, field.getLongV()));
-    TSFileDescriptor.getInstance().getConfig().setTimeEncoder("TS_2DIFF");
-  }
-
-  private void writeDataByTSRecord(
-      TSDataType dataType, DataPointProxy proxy, TSEncoding encodingType)
-      throws IOException, WriteProcessException {
-    int floatCount = 1024 * 1024 * 13 + 1023;
-    // add measurements into file schema
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-      tsFileWriter.registerTimeseries(
-          new Path("device_1"), new MeasurementSchema("sensor_1", dataType, encodingType));
-      for (long i = 1; i < floatCount; i++) {
-        // construct TSRecord
-        TSRecord tsRecord = new TSRecord(i, "device_1");
-        DataPoint dPoint1 = proxy.generateOne(i);
-        tsRecord.addTuple(dPoint1);
-        // write a TSRecord to TsFile
-        tsFileWriter.write(tsRecord);
-      }
-    }
-  }
-
-  private void readData(ReadDataPointProxy proxy) throws IOException {
-    TsFileSequenceReader reader = new TsFileSequenceReader(path);
-    TsFileReader readTsFile = new TsFileReader(reader);
-    ArrayList<Path> paths = new ArrayList<>();
-    paths.add(new Path("device_1", "sensor_1", true));
-    QueryExpression queryExpression = QueryExpression.create(paths, null);
-
-    QueryDataSet queryDataSet = readTsFile.query(queryExpression);
-    for (int j = 0; j < paths.size(); j++) {
-      assertEquals(paths.get(j), queryDataSet.getPaths().get(j));
-    }
-    int i = 1;
-    while (queryDataSet.hasNext()) {
-      RowRecord r = queryDataSet.next();
-      assertEquals(i, r.getTimestamp());
-      proxy.assertEqualProxy(i, r.getFields().get(0), delta);
-      i++;
-    }
-    reader.close();
-  }
-
-  private interface DataPointProxy {
-
-    DataPoint generateOne(long value);
-  }
-
-  private interface ReadDataPointProxy {
-
-    void assertEqualProxy(long i, Field field, double delta);
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileWriteApiTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileWriteApiTest.java
deleted file mode 100644
index eb183a4..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileWriteApiTest.java
+++ /dev/null
@@ -1,692 +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.write;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.header.ChunkHeader;
-import org.apache.iotdb.tsfile.file.header.PageHeader;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.read.TsFileReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Chunk;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorUtils;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-public class TsFileWriteApiTest {
-  private final File f = FSFactoryProducer.getFSFactory().getFile("TsFileWriteTest.tsfile");
-  private final String deviceId = "root.sg.d1";
-  private final List<MeasurementSchema> alignedMeasurementSchemas = new ArrayList<>();
-  private final List<MeasurementSchema> measurementSchemas = new ArrayList<>();
-  private int oldChunkGroupSize = TSFileDescriptor.getInstance().getConfig().getGroupSizeInByte();
-  private int oldMaxNumOfPointsInPage =
-      TSFileDescriptor.getInstance().getConfig().getMaxNumberOfPointsInPage();
-
-  @Before
-  public void setUp() {
-    if (f.exists() && !f.delete()) {
-      throw new RuntimeException("can not delete " + f.getAbsolutePath());
-    }
-  }
-
-  @After
-  public void end() {
-    if (f.exists()) f.delete();
-    TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(oldMaxNumOfPointsInPage);
-    TSFileDescriptor.getInstance().getConfig().setGroupSizeInByte(oldChunkGroupSize);
-  }
-
-  private void setEnv(int chunkGroupSize, int pageSize) {
-    TSFileDescriptor.getInstance().getConfig().setGroupSizeInByte(chunkGroupSize);
-    TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(pageSize);
-  }
-
-  public void registerAlignedTimeseries(TsFileWriter tsFileWriter) throws WriteProcessException {
-    alignedMeasurementSchemas.add(new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.PLAIN));
-    alignedMeasurementSchemas.add(new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.PLAIN));
-    alignedMeasurementSchemas.add(new MeasurementSchema("s3", TSDataType.INT64, TSEncoding.PLAIN));
-    alignedMeasurementSchemas.add(new MeasurementSchema("s4", TSDataType.INT64, TSEncoding.RLE));
-
-    // register align timeseries
-    tsFileWriter.registerAlignedTimeseries(new Path(deviceId), alignedMeasurementSchemas);
-  }
-
-  public void registerTimeseries(TsFileWriter tsFileWriter) {
-    measurementSchemas.add(new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.PLAIN));
-    measurementSchemas.add(new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.PLAIN));
-    measurementSchemas.add(new MeasurementSchema("s3", TSDataType.INT64, TSEncoding.PLAIN));
-
-    // register nonAlign timeseries
-    tsFileWriter.registerTimeseries(new Path(deviceId), measurementSchemas);
-  }
-
-  @Test
-  public void writeWithTsRecord() throws IOException, WriteProcessException {
-    setEnv(100 * 1024 * 1024, 10 * 1024);
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-      registerTimeseries(tsFileWriter);
-
-      List<MeasurementSchema> writeMeasurementScheams = new ArrayList<>();
-      // example 1
-      writeMeasurementScheams.add(measurementSchemas.get(0));
-      writeMeasurementScheams.add(measurementSchemas.get(1));
-      TsFileGeneratorUtils.writeWithTsRecord(
-          tsFileWriter, deviceId, writeMeasurementScheams, 10000, 0, 0, false);
-
-      // example 2
-      writeMeasurementScheams.clear();
-      writeMeasurementScheams.add(measurementSchemas.get(2));
-      writeMeasurementScheams.add(measurementSchemas.get(0));
-      TsFileGeneratorUtils.writeWithTsRecord(
-          tsFileWriter, deviceId, writeMeasurementScheams, 10000, 10000, 100, false);
-
-      // example 3 : late data
-      writeMeasurementScheams.clear();
-      writeMeasurementScheams.add(measurementSchemas.get(2));
-      TsFileGeneratorUtils.writeWithTsRecord(
-          tsFileWriter, deviceId, writeMeasurementScheams, 10, 20000, 200000, false);
-    }
-  }
-
-  @Test
-  public void writeAlignedWithTsRecord() throws IOException, WriteProcessException {
-    setEnv(100 * 1024 * 1024, 10 * 1024);
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-      registerAlignedTimeseries(tsFileWriter);
-
-      List<MeasurementSchema> writeMeasurementScheams = new ArrayList<>();
-      // example1
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(0));
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(1));
-      TsFileGeneratorUtils.writeWithTsRecord(
-          tsFileWriter, deviceId, writeMeasurementScheams, 8, 0, 0, true);
-
-      // example2
-      writeMeasurementScheams.clear();
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(2));
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(0));
-      TsFileGeneratorUtils.writeWithTsRecord(
-          tsFileWriter, deviceId, writeMeasurementScheams, 20, 1000, 500, true);
-
-      // example3 : late data
-      writeMeasurementScheams.clear();
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(2));
-      TsFileGeneratorUtils.writeWithTsRecord(
-          tsFileWriter, deviceId, writeMeasurementScheams, 20, 300000, 50, true);
-    }
-  }
-
-  @Test
-  public void writeWithTablet() throws IOException, WriteProcessException {
-    setEnv(100 * 1024 * 1024, 10 * 1024);
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-      registerTimeseries(tsFileWriter);
-
-      List<MeasurementSchema> writeMeasurementScheams = new ArrayList<>();
-      // example 1
-      writeMeasurementScheams.add(measurementSchemas.get(0));
-      writeMeasurementScheams.add(measurementSchemas.get(1));
-      TsFileGeneratorUtils.writeWithTablet(
-          tsFileWriter, deviceId, writeMeasurementScheams, 1000, 0, 0, false);
-
-      // example 2
-      writeMeasurementScheams.clear();
-      writeMeasurementScheams.add(measurementSchemas.get(2));
-      writeMeasurementScheams.add(measurementSchemas.get(1));
-      TsFileGeneratorUtils.writeWithTablet(
-          tsFileWriter, deviceId, writeMeasurementScheams, 1000, 2000, 0, false);
-
-      // example 3: late data
-      writeMeasurementScheams.clear();
-      writeMeasurementScheams.add(measurementSchemas.get(1));
-      TsFileGeneratorUtils.writeWithTablet(
-          tsFileWriter, deviceId, writeMeasurementScheams, 1000, 3111, 0, false);
-    }
-  }
-
-  @Test
-  public void writeAlignedWithTablet() throws IOException, WriteProcessException {
-    setEnv(100 * 1024 * 1024, 10 * 1024);
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-      registerAlignedTimeseries(tsFileWriter);
-
-      List<MeasurementSchema> writeMeasurementScheams = new ArrayList<>();
-      // example 1
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(0));
-      TsFileGeneratorUtils.writeWithTablet(
-          tsFileWriter, deviceId, writeMeasurementScheams, 10, 0, 0, true);
-
-      // example 2
-      writeMeasurementScheams.clear();
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(0));
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(1));
-      TsFileGeneratorUtils.writeWithTablet(
-          tsFileWriter, deviceId, writeMeasurementScheams, 200000, 10, 0, true);
-
-      // example 3
-      writeMeasurementScheams.clear();
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(2));
-      TsFileGeneratorUtils.writeWithTablet(
-          tsFileWriter, deviceId, writeMeasurementScheams, 10, 210000, 0, true);
-    }
-  }
-
-  @Test
-  public void writeNewAlignedMeasurementAfterFlushChunkGroup1() {
-    setEnv(100, 30);
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-      registerAlignedTimeseries(tsFileWriter);
-
-      List<MeasurementSchema> writeMeasurementScheams = new ArrayList<>();
-      // example 1
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(0));
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(1));
-      TsFileGeneratorUtils.writeWithTablet(
-          tsFileWriter, deviceId, writeMeasurementScheams, 100000, 0, 0, true);
-
-      // example 2
-      writeMeasurementScheams.clear();
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(2));
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(3));
-      TsFileGeneratorUtils.writeWithTablet(
-          tsFileWriter, deviceId, writeMeasurementScheams, 20, 1000000, 0, true);
-
-    } catch (IOException | WriteProcessException e) {
-      Assert.assertEquals(
-          "TsFile has flushed chunk group and should not add new measurement s3 in device root.sg.d1",
-          e.getMessage());
-    }
-  }
-
-  @Test
-  public void writeNewAlignedMeasurementAfterFlushChunkGroup2() {
-    setEnv(100, 30);
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-      registerAlignedTimeseries(tsFileWriter);
-
-      List<MeasurementSchema> writeMeasurementScheams = new ArrayList<>();
-      // example 1
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(0));
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(1));
-      TsFileGeneratorUtils.writeWithTablet(
-          tsFileWriter, deviceId, writeMeasurementScheams, 100000, 0, 0, true);
-
-      // example 2
-      writeMeasurementScheams.clear();
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(0));
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(3));
-      TsFileGeneratorUtils.writeWithTablet(
-          tsFileWriter, deviceId, writeMeasurementScheams, 20, 1000000, 0, true);
-    } catch (IOException | WriteProcessException e) {
-      Assert.assertEquals(
-          "TsFile has flushed chunk group and should not add new measurement s4 in device root.sg.d1",
-          e.getMessage());
-    }
-  }
-
-  @Test
-  public void writeOutOfOrderAlignedData() throws IOException, WriteProcessException {
-    setEnv(100, 30);
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-      registerAlignedTimeseries(tsFileWriter);
-
-      List<MeasurementSchema> writeMeasurementScheams = new ArrayList<>();
-      // example 1
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(0));
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(1));
-      TsFileGeneratorUtils.writeWithTablet(
-          tsFileWriter, deviceId, writeMeasurementScheams, 1000, 0, 0, true);
-
-      // example 2
-      writeMeasurementScheams.clear();
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(0));
-      try {
-        TsFileGeneratorUtils.writeWithTablet(
-            tsFileWriter, deviceId, writeMeasurementScheams, 20, 100, 0, true);
-        Assert.fail("Expected to throw writeProcessException due to write out-of-order data.");
-      } catch (WriteProcessException e) {
-        Assert.assertEquals(
-            "Not allowed to write out-of-order data in timeseries root.sg.d1., time should later than 999",
-            e.getMessage());
-      }
-
-      // example 3
-      writeMeasurementScheams.clear();
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(1));
-      try {
-        TsFileGeneratorUtils.writeWithTsRecord(
-            tsFileWriter, deviceId, writeMeasurementScheams, 20, 100, 0, true);
-        Assert.fail("Expected to throw writeProcessException due to write out-of-order data.");
-      } catch (WriteProcessException e) {
-        Assert.assertEquals(
-            "Not allowed to write out-of-order data in timeseries root.sg.d1., time should later than 999",
-            e.getMessage());
-      }
-    }
-  }
-
-  @Test
-  public void writeOutOfOrderData() throws IOException, WriteProcessException {
-    setEnv(100, 30);
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-      registerTimeseries(tsFileWriter);
-
-      List<MeasurementSchema> writeMeasurementScheams = new ArrayList<>();
-      // example 1
-      writeMeasurementScheams.add(measurementSchemas.get(0));
-      writeMeasurementScheams.add(measurementSchemas.get(1));
-      TsFileGeneratorUtils.writeWithTablet(
-          tsFileWriter, deviceId, writeMeasurementScheams, 1000, 0, 0, false);
-
-      // example 2
-      writeMeasurementScheams.clear();
-      writeMeasurementScheams.add(measurementSchemas.get(0));
-      try {
-        TsFileGeneratorUtils.writeWithTablet(
-            tsFileWriter, deviceId, writeMeasurementScheams, 20, 100, 0, false);
-        Assert.fail("Expected to throw writeProcessException due to write out-of-order data.");
-      } catch (WriteProcessException e) {
-        Assert.assertEquals(
-            "Not allowed to write out-of-order data in timeseries root.sg.d1.s1, time should later than 999",
-            e.getMessage());
-      }
-
-      // example 3
-      writeMeasurementScheams.clear();
-      writeMeasurementScheams.add(measurementSchemas.get(1));
-      try {
-        TsFileGeneratorUtils.writeWithTsRecord(
-            tsFileWriter, deviceId, writeMeasurementScheams, 20, 100, 0, false);
-        Assert.fail("Expected to throw writeProcessException due to write out-of-order data.");
-      } catch (WriteProcessException e) {
-        Assert.assertEquals(
-            "Not allowed to write out-of-order data in timeseries root.sg.d1.s2, time should later than 999",
-            e.getMessage());
-      }
-    }
-  }
-
-  @Test
-  public void writeNonAlignedWithTabletWithNullValue() {
-    setEnv(100, 30);
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-      measurementSchemas.add(new MeasurementSchema("s1", TSDataType.TEXT, TSEncoding.PLAIN));
-      measurementSchemas.add(new MeasurementSchema("s2", TSDataType.TEXT, TSEncoding.PLAIN));
-      measurementSchemas.add(new MeasurementSchema("s3", TSDataType.TEXT, TSEncoding.PLAIN));
-
-      // register nonAligned timeseries
-      tsFileWriter.registerTimeseries(new Path(deviceId), measurementSchemas);
-
-      Tablet tablet = new Tablet(deviceId, measurementSchemas);
-      long[] timestamps = tablet.timestamps;
-      Object[] values = tablet.values;
-      tablet.initBitMaps();
-      long sensorNum = measurementSchemas.size();
-      long startTime = 0;
-      for (long r = 0; r < 10000; r++) {
-        int row = tablet.rowSize++;
-        timestamps[row] = startTime++;
-        for (int i = 0; i < sensorNum; i++) {
-          if (i == 1 && r > 1000) {
-            tablet.bitMaps[i].mark((int) r % tablet.getMaxRowNumber());
-            continue;
-          }
-          Binary[] textSensor = (Binary[]) values[i];
-          textSensor[row] = new Binary("testString.........", TSFileConfig.STRING_CHARSET);
-        }
-        // write
-        if (tablet.rowSize == tablet.getMaxRowNumber()) {
-          tsFileWriter.write(tablet);
-          tablet.reset();
-        }
-      }
-      // write
-      if (tablet.rowSize != 0) {
-        tsFileWriter.write(tablet);
-        tablet.reset();
-      }
-
-    } catch (Throwable e) {
-      e.printStackTrace();
-      Assert.fail("Meet errors in test: " + e.getMessage());
-    }
-  }
-
-  @Test
-  public void writeAlignedWithTabletWithNullValue() {
-    setEnv(100, 30);
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-      measurementSchemas.add(new MeasurementSchema("s1", TSDataType.TEXT, TSEncoding.PLAIN));
-      measurementSchemas.add(new MeasurementSchema("s2", TSDataType.TEXT, TSEncoding.PLAIN));
-      measurementSchemas.add(new MeasurementSchema("s3", TSDataType.TEXT, TSEncoding.PLAIN));
-
-      // register aligned timeseries
-      tsFileWriter.registerAlignedTimeseries(new Path(deviceId), measurementSchemas);
-
-      Tablet tablet = new Tablet(deviceId, measurementSchemas);
-      long[] timestamps = tablet.timestamps;
-      Object[] values = tablet.values;
-      tablet.initBitMaps();
-      long sensorNum = measurementSchemas.size();
-      long startTime = 0;
-      for (long r = 0; r < 10000; r++) {
-        int row = tablet.rowSize++;
-        timestamps[row] = startTime++;
-        for (int i = 0; i < sensorNum; i++) {
-          if (i == 1 && r > 1000) {
-            tablet.bitMaps[i].mark((int) r % tablet.getMaxRowNumber());
-            continue;
-          }
-          Binary[] textSensor = (Binary[]) values[i];
-          textSensor[row] = new Binary("testString.........", TSFileConfig.STRING_CHARSET);
-        }
-        // write
-        if (tablet.rowSize == tablet.getMaxRowNumber()) {
-          tsFileWriter.writeAligned(tablet);
-          tablet.reset();
-        }
-      }
-      // write
-      if (tablet.rowSize != 0) {
-        tsFileWriter.writeAligned(tablet);
-        tablet.reset();
-      }
-
-    } catch (Throwable e) {
-      e.printStackTrace();
-      Assert.fail("Meet errors in test: " + e.getMessage());
-    }
-  }
-
-  /** Write an empty page and then write a nonEmpty page. */
-  @Test
-  public void writeAlignedTimeseriesWithEmptyPage() throws IOException, WriteProcessException {
-    TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(30);
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-      registerAlignedTimeseries(tsFileWriter);
-
-      List<MeasurementSchema> writeMeasurementScheams = new ArrayList<>();
-      // example1
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(0));
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(1));
-      TsFileGeneratorUtils.writeWithTsRecord(
-          tsFileWriter, deviceId, writeMeasurementScheams, 30, 0, 0, true);
-
-      // example2
-      writeMeasurementScheams.clear();
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(2));
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(1));
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(0));
-      TsFileGeneratorUtils.writeWithTsRecord(
-          tsFileWriter, deviceId, writeMeasurementScheams, 30, 1000, 500, true);
-
-      // example3 : late data
-      writeMeasurementScheams.clear();
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(2));
-      TsFileGeneratorUtils.writeWithTsRecord(
-          tsFileWriter, deviceId, writeMeasurementScheams, 60, 300000, 50, true);
-    }
-
-    TsFileReader tsFileReader = new TsFileReader(new TsFileSequenceReader(f.getAbsolutePath()));
-    for (int i = 0; i < 3; i++) {
-      QueryExpression queryExpression =
-          QueryExpression.create(
-              Collections.singletonList(
-                  new Path(deviceId, alignedMeasurementSchemas.get(i).getMeasurementId(), true)),
-              null);
-      QueryDataSet queryDataSet = tsFileReader.query(queryExpression);
-
-      int cnt = 0;
-      while (queryDataSet.hasNext()) {
-        cnt++;
-        queryDataSet.next();
-      }
-      if (i < 2) {
-        Assert.assertEquals(60, cnt);
-      } else {
-        Assert.assertEquals(90, cnt);
-      }
-    }
-  }
-
-  /** Write a nonEmpty page and then write an empty page. */
-  @Test
-  public void writeAlignedTimeseriesWithEmptyPage2() throws IOException, WriteProcessException {
-    TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(30);
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-      registerAlignedTimeseries(tsFileWriter);
-
-      List<MeasurementSchema> writeMeasurementScheams = new ArrayList<>();
-      // example1
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(3));
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(2));
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(1));
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(0));
-      TsFileGeneratorUtils.writeWithTsRecord(
-          tsFileWriter, deviceId, writeMeasurementScheams, 30, 0, 0, true);
-
-      // example2
-      writeMeasurementScheams.clear();
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(0));
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(1));
-      TsFileGeneratorUtils.writeWithTsRecord(
-          tsFileWriter, deviceId, writeMeasurementScheams, 30, 1000, 500, true);
-    }
-
-    TsFileReader tsFileReader = new TsFileReader(new TsFileSequenceReader(f.getAbsolutePath()));
-    for (int i = 0; i < 3; i++) {
-      QueryExpression queryExpression =
-          QueryExpression.create(
-              Collections.singletonList(
-                  new Path(deviceId, alignedMeasurementSchemas.get(i).getMeasurementId(), true)),
-              null);
-      QueryDataSet queryDataSet = tsFileReader.query(queryExpression);
-      int cnt = 0;
-      while (queryDataSet.hasNext()) {
-        cnt++;
-        queryDataSet.next();
-      }
-      if (i < 2) {
-        Assert.assertEquals(60, cnt);
-      } else {
-        Assert.assertEquals(30, cnt);
-      }
-    }
-  }
-
-  /** Write a nonEmpty page and then write an empty page. */
-  @Test
-  public void writeAlignedTimeseriesWithEmptyPage3() throws IOException, WriteProcessException {
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-      registerAlignedTimeseries(tsFileWriter);
-
-      List<IMeasurementSchema> writeMeasurementScheams = new ArrayList<>();
-      // example1
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(0));
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(1));
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(2));
-      writeMeasurementScheams.add(alignedMeasurementSchemas.get(3));
-
-      TsFileIOWriter tsFileIOWriter = tsFileWriter.getIOWriter();
-      tsFileIOWriter.startChunkGroup(new PlainDeviceID(deviceId));
-
-      AlignedChunkWriterImpl alignedChunkWriter =
-          new AlignedChunkWriterImpl(writeMeasurementScheams);
-
-      // write one nonEmpty page
-      for (long time = 0; time < 30; time++) {
-        for (int i = 0; i < 4; i++) {
-          alignedChunkWriter.getValueChunkWriterByIndex(i).write(time, time, false);
-        }
-        alignedChunkWriter.write(time);
-      }
-      alignedChunkWriter.sealCurrentPage();
-
-      // write a nonEmpty page of s0 and s1, an empty page of s2 and s3
-      for (long time = 30; time < 60; time++) {
-        for (int i = 0; i < 2; i++) {
-          alignedChunkWriter.getValueChunkWriterByIndex(i).write(time, time, false);
-        }
-      }
-      for (int i = 2; i < 4; i++) {
-        alignedChunkWriter.getValueChunkWriterByIndex(i).writeEmptyPageToPageBuffer();
-      }
-      for (long time = 30; time < 60; time++) {
-        alignedChunkWriter.write(time);
-      }
-      alignedChunkWriter.writeToFileWriter(tsFileIOWriter);
-      tsFileIOWriter.endChunkGroup();
-    }
-
-    // read file
-    TsFileReader tsFileReader = new TsFileReader(new TsFileSequenceReader(f.getAbsolutePath()));
-    for (int i = 0; i < 3; i++) {
-      QueryExpression queryExpression =
-          QueryExpression.create(
-              Collections.singletonList(
-                  new Path(deviceId, alignedMeasurementSchemas.get(i).getMeasurementId(), true)),
-              null);
-      QueryDataSet queryDataSet = tsFileReader.query(queryExpression);
-      int cnt = 0;
-      while (queryDataSet.hasNext()) {
-        cnt++;
-        queryDataSet.next();
-      }
-      if (i < 2) {
-        Assert.assertEquals(60, cnt);
-      } else {
-        Assert.assertEquals(30, cnt);
-      }
-    }
-  }
-
-  @Test
-  public void writeTsFileByFlushingPageDirectly() throws IOException, WriteProcessException {
-    TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(30);
-
-    // create a tsfile with four pages in one timeseries
-    try (TsFileWriter tsFileWriter = new TsFileWriter(f)) {
-      registerTimeseries(tsFileWriter);
-
-      List<MeasurementSchema> writeMeasurementSchemas = new ArrayList<>();
-      writeMeasurementSchemas.add(measurementSchemas.get(0));
-
-      TsFileGeneratorUtils.writeWithTsRecord(
-          tsFileWriter, deviceId, writeMeasurementSchemas, 30, 0, 0, false);
-      TsFileGeneratorUtils.writeWithTsRecord(
-          tsFileWriter, deviceId, writeMeasurementSchemas, 30, 30, 30, false);
-      TsFileGeneratorUtils.writeWithTsRecord(
-          tsFileWriter, deviceId, writeMeasurementSchemas, 30, 60, 60, false);
-      TsFileGeneratorUtils.writeWithTsRecord(
-          tsFileWriter, deviceId, writeMeasurementSchemas, 30, 90, 90, false);
-    }
-
-    ChunkWriterImpl chunkWriter = new ChunkWriterImpl(measurementSchemas.get(0));
-
-    // rewrite a new tsfile by flushing page directly
-    File file = FSFactoryProducer.getFSFactory().getFile("test.tsfile");
-    try (TsFileSequenceReader reader = new TsFileSequenceReader(f.getAbsolutePath());
-        TsFileIOWriter tsFileIOWriter = new TsFileIOWriter(file)) {
-      tsFileIOWriter.startChunkGroup(new PlainDeviceID(deviceId));
-      for (List<ChunkMetadata> chunkMetadatas :
-          reader.readChunkMetadataInDevice(new PlainDeviceID(deviceId)).values()) {
-        for (ChunkMetadata chunkMetadata : chunkMetadatas) {
-          Chunk chunk = reader.readMemChunk(chunkMetadata);
-          ByteBuffer chunkDataBuffer = chunk.getData();
-          ChunkHeader chunkHeader = chunk.getHeader();
-          int pageNum = 0;
-          while (chunkDataBuffer.remaining() > 0) {
-            // deserialize a PageHeader from chunkDataBuffer
-            PageHeader pageHeader;
-            if (((byte) (chunkHeader.getChunkType() & 0x3F))
-                == MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER) {
-              pageHeader = PageHeader.deserializeFrom(chunkDataBuffer, chunk.getChunkStatistic());
-            } else {
-              pageHeader = PageHeader.deserializeFrom(chunkDataBuffer, chunkHeader.getDataType());
-            }
-
-            // read compressed page data
-            int compressedPageBodyLength = pageHeader.getCompressedSize();
-            byte[] compressedPageBody = new byte[compressedPageBodyLength];
-            chunkDataBuffer.get(compressedPageBody);
-            chunkWriter.writePageHeaderAndDataIntoBuff(
-                ByteBuffer.wrap(compressedPageBody), pageHeader);
-            if (++pageNum % 2 == 0) {
-              chunkWriter.writeToFileWriter(tsFileIOWriter);
-            }
-          }
-        }
-      }
-      tsFileIOWriter.endChunkGroup();
-      tsFileIOWriter.endFile();
-
-      // read file
-      TsFileReader tsFileReader =
-          new TsFileReader(new TsFileSequenceReader(file.getAbsolutePath()));
-
-      QueryExpression queryExpression =
-          QueryExpression.create(
-              Collections.singletonList(
-                  new Path(deviceId, measurementSchemas.get(0).getMeasurementId(), true)),
-              null);
-      QueryDataSet queryDataSet = tsFileReader.query(queryExpression);
-      int cnt = 0;
-      while (queryDataSet.hasNext()) {
-        cnt++;
-        // Assert.assertEquals(queryDataSet);
-        queryDataSet.next();
-      }
-
-      Assert.assertEquals(120, cnt);
-
-    } catch (Throwable throwable) {
-      if (file.exists()) {
-        file.delete();
-      }
-      throw throwable;
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileWriterTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileWriterTest.java
deleted file mode 100644
index 562d5a0..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileWriterTest.java
+++ /dev/null
@@ -1,364 +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.write;
-
-import org.apache.iotdb.tsfile.exception.encoding.TsFileEncodingException;
-import org.apache.iotdb.tsfile.exception.write.NoMeasurementException;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorForTest;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.Tablet;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-public class TsFileWriterTest {
-  TsFileWriter writer = null;
-  String fileName = TsFileGeneratorForTest.getTestTsFilePath("root.sg1", 0, 0, 1);
-  boolean closed = false;
-
-  @Before
-  public void setUp() {
-    try {
-      File f = new File(fileName);
-      if (!f.getParentFile().exists()) {
-        Assert.assertTrue(f.getParentFile().mkdirs());
-      }
-      writer = new TsFileWriter(f);
-      registerTimeseries();
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @After
-  public void tearDown() {
-    if (!closed) {
-      closeFile();
-    }
-    try {
-      Files.deleteIfExists(new File(fileName).toPath());
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  private void registerTimeseries() {
-    // register nonAligned timeseries "d1.s1","d1.s2","d1.s3"
-    try {
-      writer.registerTimeseries(
-          new Path("d1"),
-          new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE, CompressionType.SNAPPY));
-    } catch (WriteProcessException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-    try {
-      writer.registerTimeseries(
-          new Path("d1"),
-          new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE, CompressionType.SNAPPY));
-    } catch (WriteProcessException e) {
-      Assert.assertEquals("given nonAligned timeseries d1.s1 has been registered.", e.getMessage());
-    }
-    try {
-      List<MeasurementSchema> schemas = new ArrayList<>();
-      schemas.add(
-          new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE, CompressionType.SNAPPY));
-      writer.registerAlignedTimeseries(new Path("d1"), schemas);
-    } catch (WriteProcessException e) {
-      Assert.assertEquals(
-          "given device d1 has been registered for nonAligned timeseries.", e.getMessage());
-    }
-    List<MeasurementSchema> schemas = new ArrayList<>();
-    schemas.add(
-        new MeasurementSchema("s2", TSDataType.INT32, TSEncoding.RLE, CompressionType.SNAPPY));
-    schemas.add(
-        new MeasurementSchema("s3", TSDataType.INT32, TSEncoding.RLE, CompressionType.SNAPPY));
-    writer.registerTimeseries(new Path("d1"), schemas);
-
-    // Register aligned timeseries "d2.s1" , "d2.s2", "d2.s3"
-    try {
-      List<MeasurementSchema> measurementSchemas = new ArrayList<>();
-      measurementSchemas.add(new MeasurementSchema("s1", TSDataType.TEXT, TSEncoding.PLAIN));
-      measurementSchemas.add(new MeasurementSchema("s2", TSDataType.TEXT, TSEncoding.PLAIN));
-      measurementSchemas.add(new MeasurementSchema("s3", TSDataType.TEXT, TSEncoding.PLAIN));
-      writer.registerAlignedTimeseries(new Path("d2"), measurementSchemas);
-    } catch (WriteProcessException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-    try {
-      List<MeasurementSchema> measurementSchemas = new ArrayList<>();
-      measurementSchemas.add(new MeasurementSchema("s4", TSDataType.TEXT, TSEncoding.PLAIN));
-      writer.registerAlignedTimeseries(new Path("d2"), measurementSchemas);
-    } catch (WriteProcessException e) {
-      Assert.assertEquals(
-          "given device d2 has been registered for aligned timeseries and should not be expanded.",
-          e.getMessage());
-    }
-    try {
-      writer.registerTimeseries(
-          new Path("d2"),
-          new MeasurementSchema("s5", TSDataType.INT32, TSEncoding.RLE, CompressionType.SNAPPY));
-    } catch (WriteProcessException e) {
-      Assert.assertEquals(
-          "given device d2 has been registered for aligned timeseries.", e.getMessage());
-    }
-
-    /*try {
-      for (int i = 2; i < 3; i++) {
-        writer.registerTimeseries(
-            new Path("d" + i, "s1"),
-            new MeasurementSchema(
-                "s1", TSDataType.FLOAT, TSEncoding.RLE, CompressionType.SNAPPY));
-      }
-    } catch (WriteProcessException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }*/
-  }
-
-  @Test
-  public void registerTimeseriesTest() {
-    closeFile();
-    readNothing();
-  }
-
-  private void writeTSRecord() throws IOException, WriteProcessException {
-    // normal
-    TSRecord record = new TSRecord(10000, "d1");
-    record.addTuple(new FloatDataPoint("s1", 5.0f));
-    record.addTuple(new IntDataPoint("s2", 5));
-    writer.write(record);
-
-    // not existed time series
-    record = new TSRecord(10001, "d1");
-    record.addTuple(new FloatDataPoint("s4", 5));
-    try {
-      writer.write(record);
-    } catch (WriteProcessException e) {
-      assertTrue(e instanceof NoMeasurementException);
-    }
-
-    // not existed time series
-    record = new TSRecord(10001, "d1");
-    record.addTuple(new FloatDataPoint("s3", 5));
-    try {
-      writer.write(record);
-    } catch (TsFileEncodingException e) {
-      // do nothing
-    }
-  }
-
-  @Test
-  public void writeTSRecordTest() throws IOException, WriteProcessException {
-    writeTSRecord();
-    closeFile();
-    readOneRow();
-  }
-
-  @Test
-  public void writeIncorrectTSRecord0() throws IOException {
-    // incorrect data type
-    TSRecord record = new TSRecord(10002, "d2");
-    record.addTuple(new IntDataPoint("s1", 5));
-    try {
-      writer.write(record);
-    } catch (WriteProcessException e) {
-      Assert.assertEquals("no nonAligned timeseries is registered in the group.", e.getMessage());
-    }
-    closeFile();
-    readNothing();
-  }
-
-  @Test
-  public void writeIncorrectTSRecords() throws IOException, WriteProcessException {
-    // incorrect data type
-    for (int i = 2; i < 3; i++) {
-      TSRecord record = new TSRecord(10000 + i, "d" + i);
-      record.addTuple(new IntDataPoint("s1", 5));
-      try {
-        writer.writeAligned(record);
-      } catch (UnsupportedOperationException e) {
-        // do nothing
-      }
-    }
-    closeFile();
-    readNothing();
-  }
-
-  @Test
-  public void writeIncorrectTSRecord() throws IOException, WriteProcessException {
-    writeTSRecord();
-    // incorrect data type
-    TSRecord record = new TSRecord(10002, "d2");
-    record.addTuple(new IntDataPoint("s1", 5));
-    try {
-      writer.writeAligned(record);
-    } catch (UnsupportedOperationException e) {
-      // do nothing
-    }
-    closeFile();
-    readOneRow();
-  }
-
-  @Test
-  public void writeTablet() throws IOException, WriteProcessException {
-    Tablet tablet =
-        new Tablet(
-            "d1",
-            Arrays.asList(
-                new MeasurementSchema(
-                    "s1", TSDataType.FLOAT, TSEncoding.RLE, CompressionType.SNAPPY),
-                new MeasurementSchema(
-                    "s2", TSDataType.INT32, TSEncoding.RLE, CompressionType.SNAPPY)));
-    tablet.timestamps[0] = 10000;
-    ((float[]) tablet.values[0])[0] = 5.0f;
-    ((int[]) tablet.values[1])[0] = 5;
-    tablet.rowSize = 1;
-    writer.write(tablet);
-    closeFile();
-    readOneRow();
-  }
-
-  @Test
-  public void writeTablet2() throws IOException, WriteProcessException {
-    Tablet tablet =
-        new Tablet(
-            "d1",
-            Arrays.asList(
-                new MeasurementSchema(
-                    "s1", TSDataType.FLOAT, TSEncoding.RLE, CompressionType.SNAPPY),
-                new MeasurementSchema(
-                    "s2", TSDataType.INT32, TSEncoding.RLE, CompressionType.SNAPPY)));
-    tablet.timestamps[0] = 10000;
-    ((float[]) tablet.values[0])[0] = 5.0f;
-    tablet.rowSize = 1;
-    writer.write(tablet);
-    closeFile();
-    // in this case, the value of s2 = 0 at time 10000.
-    readOneRow(0);
-  }
-
-  @Test
-  public void getIOWriter() {
-    // The interface is just for test
-    writer.getIOWriter();
-    closeFile();
-    readNothing();
-  }
-
-  @Test
-  public void flushForTest() throws IOException {
-    // The interface is just for test
-    writer.flushAllChunkGroups();
-    closeFile();
-    readNothing();
-  }
-
-  @Test
-  public void flushForTestWithVersion() throws IOException {
-    // The interface is just for test
-    writer.flushAllChunkGroups();
-    closeFile();
-    readNothing();
-  }
-
-  private void closeFile() {
-    try {
-      closed = true;
-      writer.close();
-    } catch (IOException e) {
-      e.printStackTrace();
-    }
-  }
-
-  private void readNothing() {
-    // using TsFileReader for test
-    try {
-      TsFileReader tsFileReader = new TsFileReader(new TsFileSequenceReader(fileName));
-      QueryDataSet dataSet =
-          tsFileReader.query(
-              QueryExpression.create()
-                  .addSelectedPath(new Path("d1", "s1", true))
-                  .addSelectedPath(new Path("d1", "s2", true)));
-      assertFalse(dataSet.hasNext());
-      tsFileReader.close();
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  private void readOneRow() {
-    readOneRow(5);
-  }
-
-  private void readOneRow(int s2Value) {
-    try {
-      TsFileReader tsFileReader = new TsFileReader(new TsFileSequenceReader(fileName));
-      QueryDataSet dataSet =
-          tsFileReader.query(
-              QueryExpression.create()
-                  .addSelectedPath(new Path("d1", "s1", true))
-                  .addSelectedPath(new Path("d1", "s2", true))
-                  .addSelectedPath(new Path("d1", "s3", true)));
-      while (dataSet.hasNext()) {
-        RowRecord result = dataSet.next();
-        assertEquals(2, result.getFields().size());
-        assertEquals(10000, result.getTimestamp());
-        assertEquals(5.0f, result.getFields().get(0).getFloatV(), 0.00001);
-        assertEquals(s2Value, result.getFields().get(1).getIntV());
-      }
-      tsFileReader.close();
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/WriteTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/WriteTest.java
deleted file mode 100755
index 57f18a6..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/WriteTest.java
+++ /dev/null
@@ -1,288 +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.write;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.JsonFormatConstant;
-import org.apache.iotdb.tsfile.constant.TestConstant;
-import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
-import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.RecordUtils;
-import org.apache.iotdb.tsfile.utils.StringContainer;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Random;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-/** test writing processing correction combining writing process and reading process. */
-public class WriteTest {
-
-  private static final Logger LOG = LoggerFactory.getLogger(WriteTest.class);
-  private final int ROW_COUNT = 2000000;
-  private TsFileWriter tsFileWriter;
-  private String inputDataFile;
-  private String outputDataFile;
-  private String errorOutputDataFile;
-  private Random rm = new Random();
-  private ArrayList<MeasurementSchema> measurementArray;
-  private ArrayList<Path> pathArray;
-  private Schema schema;
-  private int stageSize = 4;
-  private int stageState = -1;
-  private int prePageSize;
-  private int prePageCheckThres;
-  private TSFileConfig conf = TSFileDescriptor.getInstance().getConfig();
-
-  private String[][] stageDeviceIds = {{"d1", "d2", "d3"}, {"d1"}, {"d2", "d3"}};
-  private String[] measurementIds = {"s0", "s1", "s2", "s3", "s4", "s5"};
-  private long longBase = System.currentTimeMillis() * 1000;
-  private String[] enums = {"MAN", "WOMAN"};
-
-  @Before
-  public void prepare() throws IOException {
-    inputDataFile = TestConstant.BASE_OUTPUT_PATH.concat("writeTestInputData");
-    outputDataFile = TestConstant.BASE_OUTPUT_PATH.concat("writeTestOutputData.tsfile");
-    errorOutputDataFile = TestConstant.BASE_OUTPUT_PATH.concat("writeTestErrorOutputData.tsfile");
-    // for each row, flush page forcely
-    prePageSize = conf.getPageSizeInByte();
-    conf.setPageSizeInByte(0);
-    prePageCheckThres = conf.getPageCheckSizeThreshold();
-    conf.setPageCheckSizeThreshold(0);
-
-    try {
-      generateSampleInputDataFile();
-    } catch (IOException e) {
-      fail();
-    }
-    File file = new File(outputDataFile);
-    File errorFile = new File(errorOutputDataFile);
-    if (file.exists()) {
-      file.delete();
-    }
-    if (errorFile.exists()) {
-      errorFile.delete();
-    }
-    measurementArray = new ArrayList<>();
-    measurementArray.add(new MeasurementSchema("s0", TSDataType.INT32, TSEncoding.RLE));
-    measurementArray.add(new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.TS_2DIFF));
-    HashMap<String, String> props = new HashMap<>();
-    props.put("max_point_number", "2");
-    measurementArray.add(
-        new MeasurementSchema(
-            "s2",
-            TSDataType.FLOAT,
-            TSEncoding.RLE,
-            TSFileDescriptor.getInstance().getConfig().getCompressor(),
-            props));
-    props = new HashMap<>();
-    props.put("max_point_number", "3");
-    measurementArray.add(
-        new MeasurementSchema(
-            "s3",
-            TSDataType.DOUBLE,
-            TSEncoding.TS_2DIFF,
-            TSFileDescriptor.getInstance().getConfig().getCompressor(),
-            props));
-    measurementArray.add(new MeasurementSchema("s4", TSDataType.BOOLEAN, TSEncoding.PLAIN));
-    pathArray = new ArrayList<>();
-    for (int i = 0; i < 5; i++) {
-      pathArray.add(new Path("d1", "s" + i, true));
-    }
-    schema = new Schema();
-    LOG.info(schema.toString());
-    tsFileWriter = new TsFileWriter(file, schema, conf);
-  }
-
-  @After
-  public void after() {
-    File file = new File(inputDataFile);
-    if (file.exists()) {
-      file.delete();
-    }
-    file = new File(outputDataFile);
-    if (file.exists()) {
-      file.delete();
-    }
-    file = new File(errorOutputDataFile);
-    if (file.exists()) {
-      file.delete();
-    }
-  }
-
-  @After
-  public void end() {
-    conf.setPageSizeInByte(prePageSize);
-    conf.setPageCheckSizeThreshold(prePageCheckThres);
-  }
-
-  private void generateSampleInputDataFile() throws IOException {
-    File file = new File(inputDataFile);
-    if (file.exists()) {
-      file.delete();
-    }
-    FileWriter fw = new FileWriter(file);
-
-    long startTime = System.currentTimeMillis();
-    startTime = startTime - startTime % 1000;
-
-    // first stage:int, long, float, double, boolean, enums
-    try {
-      for (int i = 0; i < ROW_COUNT; i++) {
-        // write d1
-        String d1 = "d1," + (startTime + i) + ",s1," + (i * 10 + 1) + ",s2," + (i * 10 + 2);
-        if (rm.nextInt(1000) < 100) {
-          d1 = "d1," + (startTime + i) + ",s1,,s2," + (i * 10 + 2) + ",s4,HIGH";
-        }
-        if (i % 5 == 0) {
-          d1 += ",s3," + (i * 10 + 3);
-        }
-        fw.write(d1 + "\r\n");
-
-        // write d2
-        String d2 = "d2," + (startTime + i) + ",s2," + (i * 10 + 2) + ",s3," + (i * 10 + 3);
-        if (rm.nextInt(1000) < 100) {
-          d2 = "d2," + (startTime + i) + ",s2,,s3," + (i * 10 + 3) + ",s5,MAN";
-        }
-        if (i % 5 == 0) {
-          d2 += ",s1," + (i * 10 + 1);
-        }
-        fw.write(d2 + "\r\n");
-      }
-      // write error
-      String d =
-          "d2,3,"
-              + (startTime + ROW_COUNT)
-              + ",s2,"
-              + (ROW_COUNT * 10 + 2)
-              + ",s3,"
-              + (ROW_COUNT * 10 + 3);
-      fw.write(d + "\r\n");
-      d = "d2," + (startTime + ROW_COUNT + 1) + ",2,s-1," + (ROW_COUNT * 10 + 2);
-      fw.write(d + "\r\n");
-    } finally {
-      fw.close();
-    }
-  }
-
-  @Test
-  public void writeTest() throws IOException {
-    try {
-      write();
-    } catch (WriteProcessException e) {
-      e.printStackTrace();
-    }
-    LOG.info("write processing has finished");
-    TsFileSequenceReader reader = new TsFileSequenceReader(outputDataFile);
-    TsFileMetadata metaData = reader.readFileMetadata();
-  }
-
-  public void write() throws IOException, WriteProcessException {
-    long lineCount = 0;
-    long startTime = System.currentTimeMillis();
-    String[] strings;
-    // add all measurement except the last one at before writing
-    for (int i = 0; i < measurementArray.size() - 1; i++) {
-      tsFileWriter.registerTimeseries(
-          new Path(pathArray.get(i).getDevice()), measurementArray.get(i));
-    }
-    while (true) {
-      if (lineCount % stageSize == 0) {
-        LOG.info(
-            "write line:{},use time:{}s",
-            lineCount,
-            (System.currentTimeMillis() - startTime) / 1000);
-        stageState++;
-        LOG.info("stage:" + stageState);
-        if (stageState == stageDeviceIds.length) {
-          break;
-        }
-      }
-      if (lineCount == ROW_COUNT / 2) {
-        tsFileWriter.registerTimeseries(
-            new Path(pathArray.get(measurementArray.size() - 1).getDevice()),
-            measurementArray.get(measurementArray.size() - 1));
-      }
-      strings = getNextRecord(lineCount, stageState);
-      for (String str : strings) {
-        TSRecord record = RecordUtils.parseSimpleTupleRecord(str, schema);
-        if (record.dataPointList.isEmpty()) {
-          continue;
-        }
-        tsFileWriter.write(record);
-      }
-      lineCount++;
-    }
-    // test duplicate measurement adding
-    Path path = pathArray.get(measurementArray.size() - 1);
-    MeasurementSchema dupTimeseries = measurementArray.get(measurementArray.size() - 1);
-    try {
-      tsFileWriter.registerTimeseries(new Path(path.getDevice()), dupTimeseries);
-    } catch (WriteProcessException e) {
-      assertEquals("given timeseries has exists! " + path, e.getMessage());
-    }
-    try {
-      tsFileWriter.close();
-    } catch (IOException e) {
-      fail("close writer failed");
-    }
-    LOG.info("stage size: {}, write {} group data", stageSize, lineCount);
-  }
-
-  private String[] getNextRecord(long lineCount, int stage) {
-
-    String[] ret = new String[stageDeviceIds[stage].length];
-    for (int i = 0; i < ret.length; i++) {
-      StringContainer sc = new StringContainer(JsonFormatConstant.TSRECORD_SEPARATOR);
-      sc.addTail(stageDeviceIds[stage][i], lineCount);
-      sc.addTail(
-          measurementIds[0],
-          lineCount * 10 + i,
-          measurementIds[1],
-          longBase + lineCount * 20 + i,
-          measurementIds[2],
-          (lineCount * 30 + i) / 3.0,
-          measurementIds[3],
-          (longBase + lineCount * 40 + i) / 7.0);
-      sc.addTail(measurementIds[4], ((lineCount + i) & 1) == 0);
-      sc.addTail(measurementIds[5], enums[(int) (lineCount + i) % enums.length]);
-      ret[i] = sc.toString();
-    }
-    return ret;
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/record/TabletTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/record/TabletTest.java
deleted file mode 100644
index 4a730ec..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/record/TabletTest.java
+++ /dev/null
@@ -1,110 +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.write.record;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.BitMap;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import org.junit.Test;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-public class TabletTest {
-  @Test
-  public void testSerializationAndDeSerialization() {
-    String deviceId = "root.sg";
-    List<MeasurementSchema> measurementSchemas = new ArrayList<>();
-    measurementSchemas.add(new MeasurementSchema("s0", TSDataType.INT32, TSEncoding.PLAIN));
-    measurementSchemas.add(new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.PLAIN));
-
-    int rowSize = 100;
-    long[] timestamps = new long[rowSize];
-    Object[] values = new Object[2];
-    values[0] = new int[rowSize];
-    values[1] = new long[rowSize];
-
-    for (int i = 0; i < rowSize; i++) {
-      timestamps[i] = i;
-      ((int[]) values[0])[i] = 1;
-      ((long[]) values[1])[i] = 1;
-    }
-
-    Tablet tablet =
-        new Tablet(
-            deviceId,
-            measurementSchemas,
-            timestamps,
-            values,
-            new BitMap[] {new BitMap(1024), new BitMap(1024)},
-            rowSize);
-    try {
-      ByteBuffer byteBuffer = tablet.serialize();
-      Tablet newTablet = Tablet.deserialize(byteBuffer);
-      assertEquals(newTablet, tablet);
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail();
-    }
-  }
-
-  @Test
-  public void testSerializationAndDeSerializationWithMoreData() {
-    String deviceId = "root.sg";
-    List<MeasurementSchema> measurementSchemas = new ArrayList<>();
-    measurementSchemas.add(new MeasurementSchema("s0", TSDataType.INT32, TSEncoding.PLAIN));
-    measurementSchemas.add(new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.PLAIN));
-    measurementSchemas.add(new MeasurementSchema("s2", TSDataType.FLOAT, TSEncoding.PLAIN));
-    measurementSchemas.add(new MeasurementSchema("s3", TSDataType.DOUBLE, TSEncoding.PLAIN));
-    measurementSchemas.add(new MeasurementSchema("s4", TSDataType.BOOLEAN, TSEncoding.PLAIN));
-    measurementSchemas.add(new MeasurementSchema("s5", TSDataType.TEXT, TSEncoding.PLAIN));
-
-    int rowSize = 1000;
-    Tablet tablet = new Tablet(deviceId, measurementSchemas);
-    tablet.rowSize = rowSize;
-    tablet.initBitMaps();
-    for (int i = 0; i < rowSize; i++) {
-      tablet.addTimestamp(i, i);
-      tablet.addValue(measurementSchemas.get(0).getMeasurementId(), i, i);
-      tablet.addValue(measurementSchemas.get(1).getMeasurementId(), i, (long) i);
-      tablet.addValue(measurementSchemas.get(2).getMeasurementId(), i, (float) i);
-      tablet.addValue(measurementSchemas.get(3).getMeasurementId(), i, (double) i);
-      tablet.addValue(measurementSchemas.get(4).getMeasurementId(), i, (i % 2) == 0);
-      tablet.addValue(measurementSchemas.get(5).getMeasurementId(), i, String.valueOf(i));
-
-      tablet.bitMaps[i % measurementSchemas.size()].mark(i);
-    }
-
-    try {
-      ByteBuffer byteBuffer = tablet.serialize();
-      Tablet newTablet = Tablet.deserialize(byteBuffer);
-      assertEquals(newTablet, tablet);
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail();
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/schema/converter/SchemaBuilderTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/schema/converter/SchemaBuilderTest.java
deleted file mode 100644
index 28d283e..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/schema/converter/SchemaBuilderTest.java
+++ /dev/null
@@ -1,153 +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.write.schema.converter;
-
-import org.apache.iotdb.tsfile.common.constant.JsonFormatConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.MeasurementGroup;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.Schema;
-
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
-
-public class SchemaBuilderTest {
-
-  @Test
-  public void testJsonConverter1() {
-
-    Map<String, String> props = new HashMap<>();
-    props.put(JsonFormatConstant.MAX_POINT_NUMBER, "3");
-    Schema schema = new Schema();
-    schema.registerTimeseries(
-        new Path("d1"),
-        new MeasurementSchema(
-            "s4", TSDataType.DOUBLE, TSEncoding.RLE, CompressionType.SNAPPY, props));
-    schema.registerTimeseries(
-        new Path("d1"),
-        new MeasurementSchema(
-            "s5", TSDataType.INT32, TSEncoding.TS_2DIFF, CompressionType.UNCOMPRESSED, null));
-
-    List<IMeasurementSchema> timeseries = new ArrayList<>();
-    schema
-        .getRegisteredTimeseriesMap()
-        .values()
-        .forEach(
-            mg -> {
-              timeseries.addAll(mg.getMeasurementSchemaMap().values());
-            });
-    String[] tsDesStrings = {
-      "[s4,DOUBLE,RLE,{max_point_number=3},SNAPPY]", "[s5,INT32,TS_2DIFF,,UNCOMPRESSED]"
-    };
-    int i = 0;
-    for (IMeasurementSchema desc : timeseries) {
-      assertEquals(tsDesStrings[i++], desc.toString());
-    }
-  }
-
-  @Test
-  public void testJsonConverter2() {
-
-    Map<String, String> props = new HashMap<>();
-    props.put(JsonFormatConstant.MAX_POINT_NUMBER, "3");
-    Schema schema = new Schema();
-    Map<String, MeasurementSchema> template = new HashMap<>();
-    template.put(
-        "s4",
-        new MeasurementSchema(
-            "s4", TSDataType.DOUBLE, TSEncoding.RLE, CompressionType.SNAPPY, props));
-    template.put(
-        "s5",
-        new MeasurementSchema(
-            "s5", TSDataType.INT32, TSEncoding.TS_2DIFF, CompressionType.UNCOMPRESSED, null));
-    MeasurementGroup measurementGroup = new MeasurementGroup(false, template);
-    schema.registerSchemaTemplate("template1", measurementGroup);
-    schema.registerDevice("d1", "template1");
-
-    List<IMeasurementSchema> timeseries = new ArrayList<>();
-    schema
-        .getRegisteredTimeseriesMap()
-        .values()
-        .forEach(
-            mg -> {
-              timeseries.addAll(mg.getMeasurementSchemaMap().values());
-            });
-    String[] tsDesStrings = {
-      "[s4,DOUBLE,RLE,{max_point_number=3},SNAPPY]", "[s5,INT32,TS_2DIFF,,UNCOMPRESSED]"
-    };
-    int i = 0;
-    for (IMeasurementSchema desc : timeseries) {
-      assertEquals(tsDesStrings[i++], desc.toString());
-    }
-  }
-
-  @Test
-  public void testJsonConverter3() {
-
-    Map<String, String> props = new HashMap<>();
-    props.put(JsonFormatConstant.MAX_POINT_NUMBER, "3");
-    Schema schema = new Schema();
-    Map<String, MeasurementSchema> template = new HashMap<>();
-    template.put(
-        "s4",
-        new MeasurementSchema(
-            "s4", TSDataType.DOUBLE, TSEncoding.RLE, CompressionType.SNAPPY, props));
-    template.put(
-        "s5",
-        new MeasurementSchema(
-            "s5", TSDataType.INT32, TSEncoding.TS_2DIFF, CompressionType.UNCOMPRESSED, null));
-    MeasurementGroup measurementGroup = new MeasurementGroup(false, template);
-    schema.registerSchemaTemplate("template1", measurementGroup);
-
-    schema.extendTemplate(
-        "template1",
-        new MeasurementSchema(
-            "s6", TSDataType.INT64, TSEncoding.RLE, CompressionType.SNAPPY, props));
-
-    schema.registerDevice("d1", "template1");
-
-    List<IMeasurementSchema> timeseries = new ArrayList<>();
-    schema
-        .getRegisteredTimeseriesMap()
-        .values()
-        .forEach(
-            mg -> {
-              timeseries.addAll(mg.getMeasurementSchemaMap().values());
-            });
-    String[] tsDesStrings = {
-      "[s4,DOUBLE,RLE,{max_point_number=3},SNAPPY]",
-      "[s5,INT32,TS_2DIFF,,UNCOMPRESSED]",
-      "[s6,INT64,RLE,{max_point_number=3},SNAPPY]"
-    };
-    int i = 0;
-    for (IMeasurementSchema desc : timeseries) {
-      assertEquals(tsDesStrings[i++], desc.toString());
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/AlignedChunkWriterImplTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/AlignedChunkWriterImplTest.java
deleted file mode 100644
index 456f9f2..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/AlignedChunkWriterImplTest.java
+++ /dev/null
@@ -1,181 +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.write.writer;
-
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-
-import org.junit.Test;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-public class AlignedChunkWriterImplTest {
-
-  @Test
-  public void testWrite1() {
-    VectorMeasurementSchemaStub measurementSchema = new VectorMeasurementSchemaStub();
-    AlignedChunkWriterImpl chunkWriter = new AlignedChunkWriterImpl(measurementSchema);
-
-    for (int time = 1; time <= 20; time++) {
-      chunkWriter.write(time, (float) time, false);
-      chunkWriter.write(time, time, false);
-      chunkWriter.write(time, (double) time, false);
-      chunkWriter.write(time);
-    }
-
-    chunkWriter.sealCurrentPage();
-    // time chunk: 7(ChunkHeader Size) + 4(PageHeader Size: uncompressedSize + compressedSize) +
-    // 160(dataSize);
-    // value chunk 1: 8(ChunkHeader Size) + 2(PageHeader Size: uncompressedSize + compressedSize) +
-    // 4(bitmap length) + 3(bitmap data) + 80(data size);
-    // value chunk 2: 8 + 2 + 4 + 3 + 20;
-    // value chunk 3: 9 + 4 + 4 + 3 + 20 * 8;
-    assertEquals(485, chunkWriter.getSerializedChunkSize());
-
-    try {
-      TestTsFileOutput testTsFileOutput = new TestTsFileOutput();
-      TsFileIOWriter writer = new TsFileIOWriter(testTsFileOutput, true);
-      chunkWriter.writeToFileWriter(writer);
-      PublicBAOS publicBAOS = testTsFileOutput.publicBAOS;
-      ByteBuffer buffer = ByteBuffer.wrap(publicBAOS.getBuf(), 0, publicBAOS.size());
-      // time chunk
-      assertEquals(MetaMarker.ONLY_ONE_PAGE_TIME_CHUNK_HEADER, ReadWriteIOUtils.readByte(buffer));
-      assertEquals("", ReadWriteIOUtils.readVarIntString(buffer));
-      assertEquals(164, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      assertEquals(TSDataType.VECTOR.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(CompressionType.UNCOMPRESSED.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(TSEncoding.PLAIN.serialize(), ReadWriteIOUtils.readByte(buffer));
-      buffer.position(buffer.position() + 164);
-
-      // value chunk 1
-      assertEquals(MetaMarker.ONLY_ONE_PAGE_VALUE_CHUNK_HEADER, ReadWriteIOUtils.readByte(buffer));
-      assertEquals("s1", ReadWriteIOUtils.readVarIntString(buffer));
-      assertEquals(89, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      assertEquals(TSDataType.FLOAT.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(CompressionType.UNCOMPRESSED.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(TSEncoding.PLAIN.serialize(), ReadWriteIOUtils.readByte(buffer));
-      buffer.position(buffer.position() + 89);
-
-      // value chunk 2
-      assertEquals(MetaMarker.ONLY_ONE_PAGE_VALUE_CHUNK_HEADER, ReadWriteIOUtils.readByte(buffer));
-      assertEquals("s2", ReadWriteIOUtils.readVarIntString(buffer));
-      assertEquals(29, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      assertEquals(TSDataType.INT32.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(CompressionType.UNCOMPRESSED.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(TSEncoding.PLAIN.serialize(), ReadWriteIOUtils.readByte(buffer));
-      buffer.position(buffer.position() + 29);
-
-      // value chunk 2
-      assertEquals(MetaMarker.ONLY_ONE_PAGE_VALUE_CHUNK_HEADER, ReadWriteIOUtils.readByte(buffer));
-      assertEquals("s3", ReadWriteIOUtils.readVarIntString(buffer));
-      assertEquals(171, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      assertEquals(TSDataType.DOUBLE.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(CompressionType.UNCOMPRESSED.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(TSEncoding.PLAIN.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(171, buffer.remaining());
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail();
-    }
-  }
-
-  @Test
-  public void testWrite2() {
-    VectorMeasurementSchemaStub measurementSchema = new VectorMeasurementSchemaStub();
-    AlignedChunkWriterImpl chunkWriter = new AlignedChunkWriterImpl(measurementSchema);
-
-    for (int time = 1; time <= 20; time++) {
-      chunkWriter.write(time, (float) time, false);
-      chunkWriter.write(time, time, false);
-      chunkWriter.write(time, (double) time, false);
-      chunkWriter.write(time);
-    }
-    chunkWriter.sealCurrentPage();
-    for (int time = 21; time <= 40; time++) {
-      chunkWriter.write(time, (float) time, false);
-      chunkWriter.write(time, time, false);
-      chunkWriter.write(time, (double) time, false);
-      chunkWriter.write(time);
-    }
-    chunkWriter.sealCurrentPage();
-
-    // time chunk: 7 + (4 + 17 + 160) * 2
-    // value chunk 1: 9 + (2 + 41 + 4 + 3 + 80) * 2
-    // value chunk 2: 9 + (2 + 41 + 4 + 3 + 20) * 2
-    // value chunk 3: 9 + (4 + 57 + 4 + 3 + 160) * 2
-    assertEquals(1252, chunkWriter.getSerializedChunkSize());
-
-    try {
-      TestTsFileOutput testTsFileOutput = new TestTsFileOutput();
-      TsFileIOWriter writer = new TsFileIOWriter(testTsFileOutput, true);
-      chunkWriter.writeToFileWriter(writer);
-      PublicBAOS publicBAOS = testTsFileOutput.publicBAOS;
-      ByteBuffer buffer = ByteBuffer.wrap(publicBAOS.getBuf(), 0, publicBAOS.size());
-      // time chunk
-      assertEquals(MetaMarker.TIME_CHUNK_HEADER, ReadWriteIOUtils.readByte(buffer));
-      assertEquals("", ReadWriteIOUtils.readVarIntString(buffer));
-      assertEquals(362, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      assertEquals(TSDataType.VECTOR.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(CompressionType.UNCOMPRESSED.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(TSEncoding.PLAIN.serialize(), ReadWriteIOUtils.readByte(buffer));
-      buffer.position(buffer.position() + 362);
-
-      // value chunk 1
-      assertEquals(MetaMarker.VALUE_CHUNK_HEADER, ReadWriteIOUtils.readByte(buffer));
-      assertEquals("s1", ReadWriteIOUtils.readVarIntString(buffer));
-      assertEquals(260, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      assertEquals(TSDataType.FLOAT.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(CompressionType.UNCOMPRESSED.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(TSEncoding.PLAIN.serialize(), ReadWriteIOUtils.readByte(buffer));
-      buffer.position(buffer.position() + 260);
-
-      // value chunk 2
-      assertEquals(MetaMarker.VALUE_CHUNK_HEADER, ReadWriteIOUtils.readByte(buffer));
-      assertEquals("s2", ReadWriteIOUtils.readVarIntString(buffer));
-      assertEquals(140, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      assertEquals(TSDataType.INT32.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(CompressionType.UNCOMPRESSED.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(TSEncoding.PLAIN.serialize(), ReadWriteIOUtils.readByte(buffer));
-      buffer.position(buffer.position() + 140);
-
-      // value chunk 2
-      assertEquals(MetaMarker.VALUE_CHUNK_HEADER, ReadWriteIOUtils.readByte(buffer));
-      assertEquals("s3", ReadWriteIOUtils.readVarIntString(buffer));
-      assertEquals(456, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      assertEquals(TSDataType.DOUBLE.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(CompressionType.UNCOMPRESSED.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(TSEncoding.PLAIN.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(456, buffer.remaining());
-
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail();
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/ForceAppendTsFileWriterTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/ForceAppendTsFileWriterTest.java
deleted file mode 100644
index d533655..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/ForceAppendTsFileWriterTest.java
+++ /dev/null
@@ -1,123 +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.write.writer;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.fileSystem.fsFactory.FSFactory;
-import org.apache.iotdb.tsfile.read.TsFileReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorForTest;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-public class ForceAppendTsFileWriterTest {
-  private static final String FILE_NAME =
-      TsFileGeneratorForTest.getTestTsFilePath("root.sg1", 0, 0, 1);
-  private static FSFactory fsFactory = FSFactoryProducer.getFSFactory();
-
-  @Test
-  public void test() throws Exception {
-    File file = fsFactory.getFile(FILE_NAME);
-    if (file.exists()) {
-      fail("Do not know why the file exists...." + file.getAbsolutePath());
-    }
-    System.out.println(file.getAbsolutePath());
-    if (!file.getParentFile().exists()) {
-      Assert.assertTrue(file.getParentFile().mkdirs());
-    }
-    if (!file.getParentFile().isDirectory()) {
-      fail("folder is not a directory...." + file.getParentFile().getAbsolutePath());
-    }
-
-    TsFileWriter writer = new TsFileWriter(file);
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s2", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.write(
-        new TSRecord(1, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.write(
-        new TSRecord(2, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.flushAllChunkGroups();
-
-    long firstMetadataPosition = writer.getIOWriter().getPos();
-    writer.close();
-    ForceAppendTsFileWriter fwriter = new ForceAppendTsFileWriter(file);
-    assertEquals(firstMetadataPosition, fwriter.getTruncatePosition());
-    fwriter.doTruncate();
-
-    // write more data into this TsFile
-    writer = new TsFileWriter(fwriter);
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s2", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.write(
-        new TSRecord(3, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.close();
-    TsFileReader tsFileReader = new TsFileReader(new TsFileSequenceReader(file.getPath()));
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s1", true));
-    pathList.add(new Path("d1", "s2", true));
-    QueryExpression queryExpression = QueryExpression.create(pathList, null);
-    QueryDataSet dataSet = tsFileReader.query(queryExpression);
-    RowRecord record = dataSet.next();
-    assertEquals(1, record.getTimestamp());
-    assertEquals(5.0f, record.getFields().get(0).getFloatV(), 0.001);
-    assertEquals(4.0f, record.getFields().get(1).getFloatV(), 0.001);
-    record = dataSet.next();
-    assertEquals(2, record.getTimestamp());
-    assertEquals(5.0f, record.getFields().get(0).getFloatV(), 0.001);
-    assertEquals(4.0f, record.getFields().get(1).getFloatV(), 0.001);
-    record = dataSet.next();
-    assertEquals(3, record.getTimestamp());
-    assertEquals(5.0f, record.getFields().get(0).getFloatV(), 0.001);
-    assertEquals(4.0f, record.getFields().get(1).getFloatV(), 0.001);
-    tsFileReader.close();
-    assertFalse(dataSet.hasNext());
-
-    assertTrue(file.delete());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/MeasurementSchemaSerializeTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/MeasurementSchemaSerializeTest.java
deleted file mode 100644
index 61b99e1..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/MeasurementSchemaSerializeTest.java
+++ /dev/null
@@ -1,57 +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.write.writer;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import org.junit.Test;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-import static org.junit.Assert.assertEquals;
-
-public class MeasurementSchemaSerializeTest {
-
-  @Test
-  public void deserializeFromByteBufferTest() throws IOException {
-    MeasurementSchema standard =
-        new MeasurementSchema("sensor_1", TSDataType.FLOAT, TSEncoding.RLE);
-    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-    standard.serializeTo(outputStream);
-    ByteBuffer byteBuffer = ByteBuffer.wrap(outputStream.toByteArray());
-    MeasurementSchema measurementSchema = MeasurementSchema.deserializeFrom(byteBuffer);
-    assertEquals(standard, measurementSchema);
-  }
-
-  @Test
-  public void deserializeFromInputStreamTest() throws IOException {
-    MeasurementSchema standard =
-        new MeasurementSchema("sensor_1", TSDataType.FLOAT, TSEncoding.RLE);
-    ByteBuffer byteBuffer = ByteBuffer.allocate(1024);
-    standard.serializeTo(byteBuffer);
-    ByteArrayInputStream inputStream = new ByteArrayInputStream(byteBuffer.array());
-    MeasurementSchema measurementSchema = MeasurementSchema.deserializeFrom(inputStream);
-    assertEquals(standard, measurementSchema);
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/PageWriterTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/PageWriterTest.java
deleted file mode 100755
index 8134a1a..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/PageWriterTest.java
+++ /dev/null
@@ -1,220 +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.write.writer;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.constant.TestConstant;
-import org.apache.iotdb.tsfile.encoding.decoder.PlainDecoder;
-import org.apache.iotdb.tsfile.encoding.encoder.PlainEncoder;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.write.page.PageWriter;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import org.junit.Test;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-public class PageWriterTest {
-
-  @Test
-  public void testWriteInt() {
-    PageWriter writer = new PageWriter();
-    writer.setTimeEncoder(new PlainEncoder(TSDataType.INT64, 0));
-    writer.setValueEncoder(new PlainEncoder(TSDataType.INT32, 0));
-    writer.initStatistics(TSDataType.INT32);
-    int value = 1;
-    int timeCount = 0;
-    try {
-      writer.write(timeCount++, value);
-      assertEquals(9, writer.estimateMaxMemSize());
-      ByteBuffer buffer1 = writer.getUncompressedBytes();
-      ByteBuffer buffer = ByteBuffer.wrap(buffer1.array());
-      writer.reset(new MeasurementSchema("s0", TSDataType.INT32, TSEncoding.RLE));
-      assertEquals(0, writer.estimateMaxMemSize());
-      int timeSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-      byte[] timeBytes = new byte[timeSize];
-      buffer.get(timeBytes);
-      ByteBuffer buffer2 = ByteBuffer.wrap(timeBytes);
-      PlainDecoder decoder = new PlainDecoder();
-      for (int i = 0; i < timeCount; i++) {
-        assertEquals(i, decoder.readLong(buffer2));
-      }
-      decoder.reset();
-      assertEquals(value, decoder.readInt(buffer));
-    } catch (IOException e) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testWriteLong() {
-    PageWriter writer = new PageWriter();
-    writer.setTimeEncoder(new PlainEncoder(TSDataType.INT64, 0));
-    writer.setValueEncoder(new PlainEncoder(TSDataType.INT64, 0));
-    writer.initStatistics(TSDataType.INT64);
-    long value = 123142120391L;
-    int timeCount = 0;
-    try {
-      writer.write(timeCount++, value);
-      assertEquals(16, writer.estimateMaxMemSize());
-      ByteBuffer buffer1 = writer.getUncompressedBytes();
-      ByteBuffer buffer = ByteBuffer.wrap(buffer1.array());
-      writer.reset(new MeasurementSchema("s0", TSDataType.INT64, TSEncoding.RLE));
-      assertEquals(0, writer.estimateMaxMemSize());
-      int timeSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-      byte[] timeBytes = new byte[timeSize];
-      buffer.get(timeBytes);
-      ByteBuffer buffer2 = ByteBuffer.wrap(timeBytes);
-      PlainDecoder decoder = new PlainDecoder();
-      for (int i = 0; i < timeCount; i++) {
-        assertEquals(i, decoder.readLong(buffer2));
-      }
-      assertEquals(value, decoder.readLong(buffer));
-
-    } catch (IOException e) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testWriteFloat() {
-    PageWriter writer = new PageWriter();
-    writer.setTimeEncoder(new PlainEncoder(TSDataType.INT64, 0));
-    writer.setValueEncoder(new PlainEncoder(TSDataType.FLOAT, 0));
-    writer.initStatistics(TSDataType.FLOAT);
-    float value = 2.2f;
-    int timeCount = 0;
-    try {
-      writer.write(timeCount++, value);
-      assertEquals(12, writer.estimateMaxMemSize());
-      ByteBuffer buffer1 = writer.getUncompressedBytes();
-      ByteBuffer buffer = ByteBuffer.wrap(buffer1.array());
-      writer.reset(new MeasurementSchema("s0", TSDataType.INT64, TSEncoding.RLE));
-      assertEquals(0, writer.estimateMaxMemSize());
-      int timeSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-      byte[] timeBytes = new byte[timeSize];
-      buffer.get(timeBytes);
-      ByteBuffer buffer2 = ByteBuffer.wrap(timeBytes);
-      PlainDecoder decoder = new PlainDecoder();
-      for (int i = 0; i < timeCount; i++) {
-        assertEquals(i, decoder.readLong(buffer2));
-      }
-      assertEquals(value, decoder.readFloat(buffer), TestConstant.float_min_delta);
-
-    } catch (IOException e) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testWriteBoolean() {
-    PageWriter writer = new PageWriter();
-    writer.setTimeEncoder(new PlainEncoder(TSDataType.INT64, 0));
-    writer.setValueEncoder(new PlainEncoder(TSDataType.BOOLEAN, 0));
-    writer.initStatistics(TSDataType.BOOLEAN);
-    boolean value = false;
-    int timeCount = 0;
-    try {
-      writer.write(timeCount++, value);
-      assertEquals(9, writer.estimateMaxMemSize());
-      ByteBuffer buffer1 = writer.getUncompressedBytes();
-      ByteBuffer buffer = ByteBuffer.wrap(buffer1.array());
-      writer.reset(new MeasurementSchema("s0", TSDataType.INT64, TSEncoding.RLE));
-      assertEquals(0, writer.estimateMaxMemSize());
-      int timeSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-      byte[] timeBytes = new byte[timeSize];
-      buffer.get(timeBytes);
-      ByteBuffer buffer2 = ByteBuffer.wrap(timeBytes);
-      PlainDecoder decoder = new PlainDecoder();
-      for (int i = 0; i < timeCount; i++) {
-        assertEquals(i, decoder.readLong(buffer2));
-      }
-      assertEquals(value, decoder.readBoolean(buffer));
-    } catch (IOException e) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testWriteBinary() {
-    PageWriter writer = new PageWriter();
-    writer.setTimeEncoder(new PlainEncoder(TSDataType.INT64, 0));
-    writer.setValueEncoder(new PlainEncoder(TSDataType.TEXT, 0));
-    writer.initStatistics(TSDataType.TEXT);
-    String value = "I have a dream";
-    int timeCount = 0;
-    try {
-      writer.write(timeCount++, new Binary(value, TSFileConfig.STRING_CHARSET));
-      assertEquals(23, writer.estimateMaxMemSize());
-      ByteBuffer buffer1 = writer.getUncompressedBytes();
-      ByteBuffer buffer = ByteBuffer.wrap(buffer1.array());
-      writer.reset(new MeasurementSchema("s0", TSDataType.INT64, TSEncoding.RLE));
-      assertEquals(0, writer.estimateMaxMemSize());
-      int timeSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-      byte[] timeBytes = new byte[timeSize];
-      buffer.get(timeBytes);
-      ByteBuffer buffer2 = ByteBuffer.wrap(timeBytes);
-      PlainDecoder decoder = new PlainDecoder();
-      for (int i = 0; i < timeCount; i++) {
-        assertEquals(i, decoder.readLong(buffer2));
-      }
-      assertEquals(value, decoder.readBinary(buffer).getStringValue(TSFileConfig.STRING_CHARSET));
-
-    } catch (IOException e) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testWriteDouble() {
-    PageWriter writer = new PageWriter();
-    writer.setTimeEncoder(new PlainEncoder(TSDataType.INT64, 0));
-    writer.setValueEncoder(new PlainEncoder(TSDataType.DOUBLE, 0));
-    writer.initStatistics(TSDataType.DOUBLE);
-    double value = 1d;
-    int timeCount = 0;
-    try {
-      writer.write(timeCount++, value);
-      assertEquals(16, writer.estimateMaxMemSize());
-      ByteBuffer buffer1 = writer.getUncompressedBytes();
-      ByteBuffer buffer = ByteBuffer.wrap(buffer1.array());
-      writer.reset(new MeasurementSchema("s0", TSDataType.INT64, TSEncoding.RLE));
-      assertEquals(0, writer.estimateMaxMemSize());
-      int timeSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
-      byte[] timeBytes = new byte[timeSize];
-      buffer.get(timeBytes);
-      ByteBuffer buffer2 = ByteBuffer.wrap(timeBytes);
-      PlainDecoder decoder = new PlainDecoder();
-      for (int i = 0; i < timeCount; i++) {
-        assertEquals(i, decoder.readLong(buffer2));
-      }
-      assertEquals(value, decoder.readDouble(buffer), 0);
-
-    } catch (IOException e) {
-      fail();
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/RestorableTsFileIOWriterTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/RestorableTsFileIOWriterTest.java
deleted file mode 100644
index 0255a44..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/RestorableTsFileIOWriterTest.java
+++ /dev/null
@@ -1,507 +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.write.writer;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.exception.NotCompatibleTsFileException;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.file.metadata.statistics.FloatStatistics;
-import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
-import org.apache.iotdb.tsfile.fileSystem.fsFactory.FSFactory;
-import org.apache.iotdb.tsfile.read.TsFileCheckStatus;
-import org.apache.iotdb.tsfile.read.TsFileReader;
-import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.expression.QueryExpression;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.utils.TsFileGeneratorForTest;
-import org.apache.iotdb.tsfile.write.TsFileWriter;
-import org.apache.iotdb.tsfile.write.record.TSRecord;
-import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-
-@SuppressWarnings("squid:S4042") // Suppress use java.nio.Files#delete warning
-public class RestorableTsFileIOWriterTest {
-
-  private static final String FILE_NAME =
-      TsFileGeneratorForTest.getTestTsFilePath("root.sg1", 0, 0, 1);
-  private static final FSFactory fsFactory = FSFactoryProducer.getFSFactory();
-  File file = fsFactory.getFile(FILE_NAME);
-
-  @Before
-  public void setUp() throws IOException {
-    if (!file.getParentFile().exists()) {
-      Assert.assertTrue(file.getParentFile().mkdirs());
-    }
-  }
-
-  @After
-  public void tearDown() {
-    if (file.exists()) {
-      Assert.assertTrue(file.delete());
-    }
-  }
-
-  @Test(expected = NotCompatibleTsFileException.class)
-  public void testBadHeadMagic() throws Exception {
-    try (FileWriter fWriter = new FileWriter(file)) {
-      fWriter.write("Tsfile");
-    }
-    new RestorableTsFileIOWriter(file);
-  }
-
-  @Test
-  public void testOnlyHeadMagic() throws Exception {
-    TsFileWriter writer = new TsFileWriter(file);
-    writer.getIOWriter().close();
-
-    RestorableTsFileIOWriter rWriter = new RestorableTsFileIOWriter(file);
-    writer = new TsFileWriter(rWriter);
-    writer.close();
-    assertEquals(TSFileConfig.MAGIC_STRING.getBytes().length + 1, rWriter.getTruncatedSize());
-
-    rWriter = new RestorableTsFileIOWriter(file);
-    assertEquals(TsFileCheckStatus.COMPLETE_FILE, rWriter.getTruncatedSize());
-    assertFalse(rWriter.canWrite());
-    rWriter.close();
-  }
-
-  @Test
-  public void testOnlyFirstMask() throws Exception {
-    TsFileWriter writer = new TsFileWriter(file);
-    // we have to flush using inner API.
-    writer.getIOWriter().out.write(new byte[] {MetaMarker.CHUNK_HEADER});
-    writer.getIOWriter().close();
-    RestorableTsFileIOWriter rWriter = new RestorableTsFileIOWriter(file);
-    writer = new TsFileWriter(rWriter);
-    writer.close();
-    rWriter.close();
-    assertEquals(TsFileIOWriter.MAGIC_STRING_BYTES.length + 1, rWriter.getTruncatedSize());
-  }
-
-  @Test
-  public void testOnlyOneIncompleteChunkHeader() throws Exception {
-    TsFileGeneratorForTest.writeFileWithOneIncompleteChunkHeader(file);
-
-    RestorableTsFileIOWriter rWriter = new RestorableTsFileIOWriter(file);
-    TsFileWriter writer = new TsFileWriter(rWriter);
-    writer.close();
-    rWriter.close();
-    assertEquals(TsFileIOWriter.MAGIC_STRING_BYTES.length + 1, rWriter.getTruncatedSize());
-  }
-
-  @Test
-  public void testOnlyOneChunkHeader() throws Exception {
-    TsFileWriter writer = new TsFileWriter(file);
-    writer.getIOWriter().startChunkGroup(new PlainDeviceID("root.sg1.d1"));
-    writer
-        .getIOWriter()
-        .startFlushChunk(
-            new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.PLAIN).getMeasurementId(),
-            CompressionType.SNAPPY,
-            TSDataType.FLOAT,
-            TSEncoding.PLAIN,
-            new FloatStatistics(),
-            100,
-            10,
-            0);
-    writer.getIOWriter().close();
-
-    RestorableTsFileIOWriter rWriter = new RestorableTsFileIOWriter(file);
-    writer = new TsFileWriter(rWriter);
-    writer.close();
-    rWriter.close();
-    assertEquals(TsFileIOWriter.MAGIC_STRING_BYTES.length + 1, rWriter.getTruncatedSize());
-  }
-
-  @Test
-  public void testOnlyOneChunkHeaderAndSomePage() throws Exception {
-    TsFileWriter writer = new TsFileWriter(file);
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s2", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.write(
-        new TSRecord(1, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.write(
-        new TSRecord(2, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.flushAllChunkGroups();
-    long pos1 = writer.getIOWriter().getPos();
-    writer.registerTimeseries(
-        new Path("d2"), new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.registerTimeseries(
-        new Path("d2"), new MeasurementSchema("s2", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.write(
-        new TSRecord(3, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.flushAllChunkGroups();
-    long pos2 = writer.getIOWriter().getPos();
-    // let's delete one byte. the version is broken
-    writer.getIOWriter().out.truncate(pos2 - 1);
-    writer.getIOWriter().close();
-    RestorableTsFileIOWriter rWriter = new RestorableTsFileIOWriter(file);
-    writer = new TsFileWriter(rWriter);
-    writer.close();
-    rWriter.close();
-    // truncate version marker and version
-    assertEquals(pos1, rWriter.getTruncatedSize());
-  }
-
-  @Test
-  public void testOnlyOneChunkGroup() throws Exception {
-    TsFileWriter writer = new TsFileWriter(file);
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s2", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.write(
-        new TSRecord(1, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.write(
-        new TSRecord(2, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.flushAllChunkGroups();
-    writer.getIOWriter().writePlanIndices();
-    writer.getIOWriter().close();
-    RestorableTsFileIOWriter rWriter = new RestorableTsFileIOWriter(file);
-    writer = new TsFileWriter(rWriter);
-    writer.close();
-    rWriter.close();
-
-    TsFileReader tsFileReader = new TsFileReader(new TsFileSequenceReader(file.getPath()));
-    List<Path> pathList = new ArrayList<>();
-    pathList.add(new Path("d1", "s1", true));
-    pathList.add(new Path("d1", "s2", true));
-    QueryExpression queryExpression = QueryExpression.create(pathList, null);
-    QueryDataSet dataSet = tsFileReader.query(queryExpression);
-    RowRecord record = dataSet.next();
-    assertEquals(1, record.getTimestamp());
-    assertEquals(5.0f, record.getFields().get(0).getFloatV(), 0.001);
-    assertEquals(4.0f, record.getFields().get(1).getFloatV(), 0.001);
-    record = dataSet.next();
-    assertEquals(2, record.getTimestamp());
-    assertEquals(5.0f, record.getFields().get(0).getFloatV(), 0.001);
-    assertEquals(4.0f, record.getFields().get(1).getFloatV(), 0.001);
-    tsFileReader.close();
-    assertFalse(dataSet.hasNext());
-  }
-
-  @Test
-  public void testOnlyOneChunkGroupAndOneMarker() throws Exception {
-    TsFileWriter writer = new TsFileWriter(file);
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s2", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.write(
-        new TSRecord(1, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.write(
-        new TSRecord(2, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.flushAllChunkGroups();
-    writer.getIOWriter().writeChunkGroupMarkerForTest();
-    writer.getIOWriter().close();
-    RestorableTsFileIOWriter rWriter = new RestorableTsFileIOWriter(file);
-    writer = new TsFileWriter(rWriter);
-    writer.close();
-    assertNotEquals(TsFileIOWriter.MAGIC_STRING_BYTES.length, rWriter.getTruncatedSize());
-    assertEquals(89, rWriter.getTruncatedSize());
-    rWriter.close();
-
-    TsFileSequenceReader reader = new TsFileSequenceReader(FILE_NAME);
-    List<ChunkMetadata> chunkMetadataList = reader.getChunkMetadataList(new Path("d1", "s1", true));
-    assertNotNull(chunkMetadataList);
-    chunkMetadataList = reader.getChunkMetadataList(new Path("d1", "s2", true));
-    assertNotNull(chunkMetadataList);
-    reader.close();
-  }
-
-  @Test
-  public void testAChunkGroupEndWithALotOfZeroBytes() throws Exception {
-    TsFileWriter writer = new TsFileWriter(file);
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s2", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.write(
-        new TSRecord(1, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.write(
-        new TSRecord(2, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.flushAllChunkGroups();
-    // write 10 Zero bytes
-    for (int i = 0; i < 10; i++) {
-      writer.getIOWriter().writeChunkGroupMarkerForTest();
-    }
-    writer.getIOWriter().close();
-    RestorableTsFileIOWriter rWriter = new RestorableTsFileIOWriter(file);
-    writer = new TsFileWriter(rWriter);
-    writer.close();
-    assertNotEquals(TsFileIOWriter.MAGIC_STRING_BYTES.length, rWriter.getTruncatedSize());
-    assertEquals(89, rWriter.getTruncatedSize());
-    rWriter.close();
-
-    TsFileSequenceReader reader = new TsFileSequenceReader(FILE_NAME);
-    List<ChunkMetadata> chunkMetadataList = reader.getChunkMetadataList(new Path("d1", "s1", true));
-    assertNotNull(chunkMetadataList);
-    chunkMetadataList = reader.getChunkMetadataList(new Path("d1", "s2", true));
-    assertNotNull(chunkMetadataList);
-    reader.close();
-  }
-
-  @Test
-  public void testTwoChunkGroupAndMore() throws Exception {
-    TsFileWriter writer = new TsFileWriter(file);
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s2", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.registerTimeseries(
-        new Path("d2"), new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.registerTimeseries(
-        new Path("d2"), new MeasurementSchema("s2", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.write(
-        new TSRecord(1, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.write(
-        new TSRecord(2, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-
-    writer.write(
-        new TSRecord(1, "d2")
-            .addTuple(new FloatDataPoint("s1", 6))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.write(
-        new TSRecord(2, "d2")
-            .addTuple(new FloatDataPoint("s1", 6))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.flushAllChunkGroups();
-    writer.getIOWriter().writeChunkGroupMarkerForTest();
-    writer.getIOWriter().close();
-    RestorableTsFileIOWriter rWriter = new RestorableTsFileIOWriter(file);
-    writer = new TsFileWriter(rWriter);
-    writer.close();
-    rWriter.close();
-
-    TsFileSequenceReader reader = new TsFileSequenceReader(FILE_NAME);
-    List<ChunkMetadata> chunkMetadataList = reader.getChunkMetadataList(new Path("d1", "s1", true));
-    assertNotNull(chunkMetadataList);
-    chunkMetadataList = reader.getChunkMetadataList(new Path("d1", "s2", true));
-    assertNotNull(chunkMetadataList);
-    chunkMetadataList = reader.getChunkMetadataList(new Path("d2", "s1", true));
-    assertNotNull(chunkMetadataList);
-    chunkMetadataList = reader.getChunkMetadataList(new Path("d2", "s2", true));
-    assertNotNull(chunkMetadataList);
-    reader.close();
-  }
-
-  @Test
-  public void testNoSeperatorMask() throws Exception {
-    TsFileWriter writer = new TsFileWriter(file);
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s2", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.registerTimeseries(
-        new Path("d2"), new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.registerTimeseries(
-        new Path("d2"), new MeasurementSchema("s2", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.write(
-        new TSRecord(1, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.write(
-        new TSRecord(2, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-
-    writer.write(
-        new TSRecord(1, "d2")
-            .addTuple(new FloatDataPoint("s1", 6))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.write(
-        new TSRecord(2, "d2")
-            .addTuple(new FloatDataPoint("s1", 6))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.flushAllChunkGroups();
-    writer.getIOWriter().writeSeparatorMaskForTest();
-    writer.getIOWriter().close();
-    RestorableTsFileIOWriter rWriter = new RestorableTsFileIOWriter(file);
-    writer = new TsFileWriter(rWriter);
-    writer.close();
-    rWriter.close();
-
-    TsFileSequenceReader reader = new TsFileSequenceReader(FILE_NAME);
-    List<ChunkMetadata> chunkMetadataList = reader.getChunkMetadataList(new Path("d1", "s1", true));
-    assertNotNull(chunkMetadataList);
-    chunkMetadataList = reader.getChunkMetadataList(new Path("d1", "s2", true));
-    assertNotNull(chunkMetadataList);
-    chunkMetadataList = reader.getChunkMetadataList(new Path("d2", "s1", true));
-    assertNotNull(chunkMetadataList);
-    chunkMetadataList = reader.getChunkMetadataList(new Path("d2", "s2", true));
-    assertNotNull(chunkMetadataList);
-    reader.close();
-  }
-
-  @Test
-  public void testHavingSomeFileMetadata() throws Exception {
-    TsFileWriter writer = new TsFileWriter(file);
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s2", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.registerTimeseries(
-        new Path("d2"), new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.registerTimeseries(
-        new Path("d2"), new MeasurementSchema("s2", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.write(
-        new TSRecord(1, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.write(
-        new TSRecord(2, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-
-    writer.write(
-        new TSRecord(1, "d2")
-            .addTuple(new FloatDataPoint("s1", 6))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.write(
-        new TSRecord(2, "d2")
-            .addTuple(new FloatDataPoint("s1", 6))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.flushAllChunkGroups();
-    writer.getIOWriter().writeSeparatorMaskForTest();
-    writer.getIOWriter().writeSeparatorMaskForTest();
-    writer.getIOWriter().close();
-    RestorableTsFileIOWriter rWriter = new RestorableTsFileIOWriter(file);
-    writer = new TsFileWriter(rWriter);
-    writer.close();
-    rWriter.close();
-
-    TsFileSequenceReader reader = new TsFileSequenceReader(FILE_NAME);
-    List<ChunkMetadata> chunkMetadataList = reader.getChunkMetadataList(new Path("d1", "s1", true));
-    assertNotNull(chunkMetadataList);
-    chunkMetadataList = reader.getChunkMetadataList(new Path("d1", "s2", true));
-    assertNotNull(chunkMetadataList);
-    chunkMetadataList = reader.getChunkMetadataList(new Path("d2", "s1", true));
-    assertNotNull(chunkMetadataList);
-    chunkMetadataList = reader.getChunkMetadataList(new Path("d2", "s2", true));
-    assertNotNull(chunkMetadataList);
-    reader.close();
-  }
-
-  @Test
-  public void testOpenCompleteFile() throws Exception {
-    TsFileWriter writer = new TsFileWriter(file);
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s2", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.write(
-        new TSRecord(1, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.write(
-        new TSRecord(2, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.close();
-
-    RestorableTsFileIOWriter rWriter = new RestorableTsFileIOWriter(file);
-    assertFalse(rWriter.canWrite());
-    rWriter.close();
-
-    rWriter = new RestorableTsFileIOWriter(file);
-    assertFalse(rWriter.canWrite());
-    rWriter.close();
-
-    TsFileSequenceReader reader = new TsFileSequenceReader(FILE_NAME);
-    List<ChunkMetadata> chunkMetadataList = reader.getChunkMetadataList(new Path("d1", "s1", true));
-    assertNotNull(chunkMetadataList);
-    chunkMetadataList = reader.getChunkMetadataList(new Path("d1", "s2", true));
-    assertNotNull(chunkMetadataList);
-    reader.close();
-  }
-
-  @Test
-  public void testAppendDataOnCompletedFile() throws Exception {
-    TsFileWriter writer = new TsFileWriter(file);
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s1", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.registerTimeseries(
-        new Path("d1"), new MeasurementSchema("s2", TSDataType.FLOAT, TSEncoding.RLE));
-    writer.write(
-        new TSRecord(1, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.write(
-        new TSRecord(2, "d1")
-            .addTuple(new FloatDataPoint("s1", 5))
-            .addTuple(new FloatDataPoint("s2", 4)));
-    writer.close();
-
-    long size = file.length();
-    RestorableTsFileIOWriter rWriter =
-        RestorableTsFileIOWriter.getWriterForAppendingDataOnCompletedTsFile(file);
-    TsFileWriter write = new TsFileWriter(rWriter);
-    write.close();
-    rWriter.close();
-    assertEquals(size, file.length());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/TestTsFileOutput.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/TestTsFileOutput.java
deleted file mode 100644
index 0b34220..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/TestTsFileOutput.java
+++ /dev/null
@@ -1,75 +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.write.writer;
-
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-
-public class TestTsFileOutput implements TsFileOutput {
-
-  PublicBAOS publicBAOS = new PublicBAOS();
-
-  @Override
-  public void write(byte[] b) throws IOException {
-    publicBAOS.write(b);
-  }
-
-  @Override
-  public void write(byte b) {
-    publicBAOS.write(b);
-  }
-
-  @Override
-  public void write(ByteBuffer b) {
-    publicBAOS.write(b.array(), b.position(), b.limit());
-  }
-
-  @Override
-  public long getPosition() {
-    return publicBAOS.size();
-  }
-
-  @Override
-  public void close() throws IOException {
-    publicBAOS.close();
-  }
-
-  @Override
-  public OutputStream wrapAsStream() {
-    return publicBAOS;
-  }
-
-  @Override
-  public void flush() throws IOException {
-    publicBAOS.flush();
-  }
-
-  @Override
-  public void truncate(long size) {
-    publicBAOS.truncate((int) size);
-  }
-
-  @Override
-  public void force() {
-    // do nothing
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/TimeChunkWriterTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/TimeChunkWriterTest.java
deleted file mode 100644
index e2457b4..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/TimeChunkWriterTest.java
+++ /dev/null
@@ -1,165 +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.write.writer;
-
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.PlainEncoder;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.chunk.TimeChunkWriter;
-
-import org.junit.Test;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.fail;
-
-public class TimeChunkWriterTest {
-
-  @Test
-  public void testWrite1() {
-    Encoder timeEncoder = new PlainEncoder(TSDataType.INT64, 0);
-    TimeChunkWriter chunkWriter =
-        new TimeChunkWriter("c1", CompressionType.UNCOMPRESSED, TSEncoding.PLAIN, timeEncoder);
-    for (long time = 1; time <= 10; time++) {
-      chunkWriter.write(time);
-    }
-    assertFalse(chunkWriter.checkPageSizeAndMayOpenANewPage());
-    chunkWriter.sealCurrentPage();
-    // page without statistics size: 82 + chunk header size: 8
-    assertEquals(90L, chunkWriter.getCurrentChunkSize());
-
-    try {
-      TestTsFileOutput testTsFileOutput = new TestTsFileOutput();
-      TsFileIOWriter writer = new TsFileIOWriter(testTsFileOutput, true);
-      chunkWriter.writeAllPagesOfChunkToTsFile(writer);
-      PublicBAOS publicBAOS = testTsFileOutput.publicBAOS;
-      ByteBuffer buffer = ByteBuffer.wrap(publicBAOS.getBuf(), 0, publicBAOS.size());
-      assertEquals(MetaMarker.ONLY_ONE_PAGE_TIME_CHUNK_HEADER, ReadWriteIOUtils.readByte(buffer));
-      assertEquals("c1", ReadWriteIOUtils.readVarIntString(buffer));
-      assertEquals(82, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      assertEquals(TSDataType.VECTOR.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(CompressionType.UNCOMPRESSED.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(TSEncoding.PLAIN.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(82, buffer.remaining());
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail();
-    }
-  }
-
-  @Test
-  public void testWrite2() {
-    Encoder timeEncoder = new PlainEncoder(TSDataType.INT64, 0);
-    TimeChunkWriter chunkWriter =
-        new TimeChunkWriter("c1", CompressionType.UNCOMPRESSED, TSEncoding.PLAIN, timeEncoder);
-    for (long time = 1; time <= 10; time++) {
-      chunkWriter.write(time);
-    }
-    chunkWriter.sealCurrentPage();
-    for (long time = 11; time <= 20; time++) {
-      chunkWriter.write(time);
-    }
-    chunkWriter.sealCurrentPage();
-    assertEquals(2, chunkWriter.getNumOfPages());
-    // two pages with statistics size: (82 + 17) * 2 + chunk header size: 9
-    assertEquals(207L, chunkWriter.getCurrentChunkSize());
-
-    try {
-      TestTsFileOutput testTsFileOutput = new TestTsFileOutput();
-      TsFileIOWriter writer = new TsFileIOWriter(testTsFileOutput, true);
-      chunkWriter.writeAllPagesOfChunkToTsFile(writer);
-      PublicBAOS publicBAOS = testTsFileOutput.publicBAOS;
-      ByteBuffer buffer = ByteBuffer.wrap(publicBAOS.getBuf(), 0, publicBAOS.size());
-      assertEquals(MetaMarker.TIME_CHUNK_HEADER, ReadWriteIOUtils.readByte(buffer));
-      assertEquals("c1", ReadWriteIOUtils.readVarIntString(buffer));
-      assertEquals(198, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      assertEquals(TSDataType.VECTOR.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(CompressionType.UNCOMPRESSED.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(TSEncoding.PLAIN.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(198, buffer.remaining());
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail();
-    }
-  }
-
-  @Test
-  public void testWrite3() {
-    Encoder timeEncoder = new PlainEncoder(TSDataType.INT64, 0);
-    TimeChunkWriter chunkWriter =
-        new TimeChunkWriter("c1", CompressionType.UNCOMPRESSED, TSEncoding.PLAIN, timeEncoder);
-    long[] times = new long[10];
-    for (int i = 0; i < 10; i++) {
-      times[i] = i + 1;
-    }
-    chunkWriter.write(times, 10, 0);
-    chunkWriter.sealCurrentPage();
-    for (int i = 0; i < 10; i++) {
-      times[i] = i + 11;
-    }
-    chunkWriter.write(times, 10, 0);
-    chunkWriter.sealCurrentPage();
-    assertEquals(2, chunkWriter.getNumOfPages());
-    // two pages with statistics size: (82 + 17) * 2 + chunk header size: 9
-    assertEquals(207L, chunkWriter.getCurrentChunkSize());
-
-    try {
-      TestTsFileOutput testTsFileOutput = new TestTsFileOutput();
-      TsFileIOWriter writer = new TsFileIOWriter(testTsFileOutput, true);
-      chunkWriter.writeAllPagesOfChunkToTsFile(writer);
-      PublicBAOS publicBAOS = testTsFileOutput.publicBAOS;
-      ByteBuffer buffer = ByteBuffer.wrap(publicBAOS.getBuf(), 0, publicBAOS.size());
-      assertEquals(MetaMarker.TIME_CHUNK_HEADER, ReadWriteIOUtils.readByte(buffer));
-      assertEquals("c1", ReadWriteIOUtils.readVarIntString(buffer));
-      assertEquals(198, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      assertEquals(TSDataType.VECTOR.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(CompressionType.UNCOMPRESSED.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(TSEncoding.PLAIN.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(198, buffer.remaining());
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail();
-    }
-  }
-
-  @Test
-  public void testWriteEmptyPage() {
-    Encoder timeEncoder = new PlainEncoder(TSDataType.INT64, 0);
-    TimeChunkWriter chunkWriter =
-        new TimeChunkWriter("c1", CompressionType.UNCOMPRESSED, TSEncoding.PLAIN, timeEncoder);
-    long[] times = new long[10];
-    for (int i = 0; i < 10; i++) {
-      times[i] = i + 1;
-    }
-    chunkWriter.write(times, 10, 0);
-    chunkWriter.sealCurrentPage();
-    chunkWriter.write(times, 0, 0);
-    chunkWriter.sealCurrentPage();
-    assertEquals(1, chunkWriter.getNumOfPages());
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/TimePageWriterTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/TimePageWriterTest.java
deleted file mode 100644
index cab975c..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/TimePageWriterTest.java
+++ /dev/null
@@ -1,171 +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.write.writer;
-
-import org.apache.iotdb.tsfile.compress.ICompressor;
-import org.apache.iotdb.tsfile.compress.IUnCompressor;
-import org.apache.iotdb.tsfile.encoding.decoder.PlainDecoder;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.PlainEncoder;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.TimeStatistics;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.page.TimePageWriter;
-
-import org.junit.Test;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-public class TimePageWriterTest {
-
-  @Test
-  public void testWrite() {
-    Encoder timeEncoder = new PlainEncoder(TSDataType.INT64, 0);
-    ICompressor compressor = ICompressor.getCompressor(CompressionType.UNCOMPRESSED);
-    TimePageWriter pageWriter = new TimePageWriter(timeEncoder, compressor);
-    try {
-      pageWriter.write(1L);
-      assertEquals(8, pageWriter.estimateMaxMemSize());
-      ByteBuffer buffer1 = pageWriter.getUncompressedBytes();
-      ByteBuffer buffer = ByteBuffer.wrap(buffer1.array());
-      pageWriter.reset();
-      assertEquals(0, pageWriter.estimateMaxMemSize());
-      byte[] timeBytes = new byte[8];
-      buffer.get(timeBytes);
-      ByteBuffer buffer2 = ByteBuffer.wrap(timeBytes);
-      PlainDecoder decoder = new PlainDecoder();
-      assertEquals(1L, decoder.readLong(buffer2));
-      decoder.reset();
-    } catch (IOException e) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testWritePageHeaderAndDataIntoBuffWithoutCompress1() {
-    Encoder timeEncoder = new PlainEncoder(TSDataType.INT64, 0);
-    ICompressor compressor = ICompressor.getCompressor(CompressionType.UNCOMPRESSED);
-    TimePageWriter pageWriter = new TimePageWriter(timeEncoder, compressor);
-    PublicBAOS publicBAOS = new PublicBAOS();
-    try {
-      pageWriter.write(1L);
-      pageWriter.write(2L);
-      pageWriter.write(3L);
-      // without page statistics
-      assertEquals(2, pageWriter.writePageHeaderAndDataIntoBuff(publicBAOS, true));
-      // total size
-      assertEquals(26, publicBAOS.size());
-      TimeStatistics statistics = pageWriter.getStatistics();
-      assertEquals(1L, statistics.getStartTime());
-      assertEquals(3L, statistics.getEndTime());
-      assertEquals(3, statistics.getCount());
-      ByteBuffer buffer = ByteBuffer.wrap(publicBAOS.getBuf(), 0, publicBAOS.size());
-      // uncompressedSize
-      assertEquals(24, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      // compressedSize
-      assertEquals(24, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      assertEquals(1L, ReadWriteIOUtils.readLong(buffer));
-      assertEquals(2L, ReadWriteIOUtils.readLong(buffer));
-      assertEquals(3L, ReadWriteIOUtils.readLong(buffer));
-    } catch (IOException e) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testWritePageHeaderAndDataIntoBuffWithoutCompress2() {
-    Encoder timeEncoder = new PlainEncoder(TSDataType.INT64, 0);
-    ICompressor compressor = ICompressor.getCompressor(CompressionType.UNCOMPRESSED);
-    TimePageWriter pageWriter = new TimePageWriter(timeEncoder, compressor);
-    PublicBAOS publicBAOS = new PublicBAOS();
-    try {
-      pageWriter.write(1L);
-      pageWriter.write(2L);
-      pageWriter.write(3L);
-      // with page statistics
-      assertEquals(0, pageWriter.writePageHeaderAndDataIntoBuff(publicBAOS, false));
-      // total size
-      assertEquals(43, publicBAOS.size());
-      TimeStatistics statistics = pageWriter.getStatistics();
-      assertEquals(1L, statistics.getStartTime());
-      assertEquals(3L, statistics.getEndTime());
-      assertEquals(3, statistics.getCount());
-      ByteBuffer buffer = ByteBuffer.wrap(publicBAOS.getBuf(), 0, publicBAOS.size());
-      // uncompressedSize
-      assertEquals(24, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      // compressedSize
-      assertEquals(24, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      TimeStatistics testStatistics =
-          (TimeStatistics) TimeStatistics.deserialize(buffer, TSDataType.VECTOR);
-      assertEquals(1L, testStatistics.getStartTime());
-      assertEquals(3L, testStatistics.getEndTime());
-      assertEquals(3, testStatistics.getCount());
-      assertEquals(1L, ReadWriteIOUtils.readLong(buffer));
-      assertEquals(2L, ReadWriteIOUtils.readLong(buffer));
-      assertEquals(3L, ReadWriteIOUtils.readLong(buffer));
-    } catch (IOException e) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testWritePageHeaderAndDataIntoBuffWithSnappy() {
-    Encoder timeEncoder = new PlainEncoder(TSDataType.INT64, 0);
-    ICompressor compressor = ICompressor.getCompressor(CompressionType.SNAPPY);
-    TimePageWriter pageWriter = new TimePageWriter(timeEncoder, compressor);
-    PublicBAOS publicBAOS = new PublicBAOS();
-    try {
-      pageWriter.write(1L);
-      pageWriter.write(2L);
-      pageWriter.write(3L);
-      // without page statistics
-      assertEquals(2, pageWriter.writePageHeaderAndDataIntoBuff(publicBAOS, true));
-
-      // total size
-      assertEquals(22, publicBAOS.size());
-      TimeStatistics statistics = pageWriter.getStatistics();
-      assertEquals(1L, statistics.getStartTime());
-      assertEquals(3L, statistics.getEndTime());
-      assertEquals(3, statistics.getCount());
-      ByteBuffer compressedBuffer = ByteBuffer.wrap(publicBAOS.getBuf(), 0, publicBAOS.size());
-      // uncompressedSize
-      assertEquals(24, ReadWriteForEncodingUtils.readUnsignedVarInt(compressedBuffer));
-      // compressedSize
-      assertEquals(20, ReadWriteForEncodingUtils.readUnsignedVarInt(compressedBuffer));
-      byte[] compress = new byte[20];
-      compressedBuffer.get(compress);
-      byte[] uncompress = new byte[24];
-      IUnCompressor unCompressor = IUnCompressor.getUnCompressor(CompressionType.SNAPPY);
-      unCompressor.uncompress(compress, 0, 20, uncompress, 0);
-      ByteBuffer uncompressedBuffer = ByteBuffer.wrap(uncompress);
-      assertEquals(1L, ReadWriteIOUtils.readLong(uncompressedBuffer));
-      assertEquals(2L, ReadWriteIOUtils.readLong(uncompressedBuffer));
-      assertEquals(3L, ReadWriteIOUtils.readLong(uncompressedBuffer));
-    } catch (IOException e) {
-      fail();
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriterMemoryControlTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriterMemoryControlTest.java
deleted file mode 100644
index d9cb4fc..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriterMemoryControlTest.java
+++ /dev/null
@@ -1,1322 +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.write.writer;
-
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.TSEncodingBuilder;
-import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.IDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID;
-import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
-import org.apache.iotdb.tsfile.write.TsFileIntegrityCheckingTool;
-import org.apache.iotdb.tsfile.write.chunk.AlignedChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.TimeChunkWriter;
-import org.apache.iotdb.tsfile.write.chunk.ValueChunkWriter;
-import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-import org.apache.iotdb.tsfile.write.writer.tsmiterator.TSMIterator;
-
-import org.apache.commons.io.FileUtils;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-
-public class TsFileIOWriterMemoryControlTest {
-  private static File testFile = new File("target", "1-1-0-0.tsfile");
-  private static File emptyFile = new File("target", "temp");
-  private long TEST_CHUNK_SIZE = 1000;
-  private List<String> sortedSeriesId = new ArrayList<>();
-  private List<IDeviceID> sortedDeviceId = new ArrayList<>();
-  private boolean init = false;
-
-  @Before
-  public void setUp() throws IOException {
-    if (!init) {
-      init = true;
-      for (int i = 0; i < 2048; ++i) {
-        sortedSeriesId.add("s" + i);
-        sortedDeviceId.add(new PlainDeviceID("root.sg.d" + i));
-      }
-      sortedSeriesId.sort((String::compareTo));
-      sortedDeviceId.sort((IDeviceID::compareTo));
-    }
-    TEST_CHUNK_SIZE = 1000;
-  }
-
-  @After
-  public void tearDown() throws IOException {
-    if (testFile.exists()) {
-      FileUtils.delete(testFile);
-    }
-    if (new File(testFile.getPath() + TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX).exists()) {
-      FileUtils.delete(
-          new File(testFile.getPath() + TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX));
-    }
-    if (emptyFile.exists()) {
-      FileUtils.delete(emptyFile);
-    }
-  }
-
-  /** The following tests is for ChunkMetadata serialization and deserialization. */
-  @Test
-  public void testSerializeAndDeserializeChunkMetadata() throws IOException {
-    try (TsFileIOWriter writer = new TsFileIOWriter(testFile, 1024 * 1024 * 10)) {
-      List<ChunkMetadata> originChunkMetadataList = new ArrayList<>();
-      for (int i = 0; i < 10; ++i) {
-        IDeviceID deviceId = sortedDeviceId.get(i);
-        writer.startChunkGroup(deviceId);
-        for (int j = 0; j < 5; ++j) {
-          ChunkWriterImpl chunkWriter;
-          switch (j) {
-            case 0:
-              chunkWriter = generateIntData(j, 0L, new ArrayList<>());
-              break;
-            case 1:
-              chunkWriter = generateBooleanData(j, 0, new ArrayList<>());
-              break;
-            case 2:
-              chunkWriter = generateFloatData(j, 0L, new ArrayList<>());
-              break;
-            case 3:
-              chunkWriter = generateDoubleData(j, 0L, new ArrayList<>());
-              break;
-            case 4:
-            default:
-              chunkWriter = generateTextData(j, 0L, new ArrayList<>());
-              break;
-          }
-          chunkWriter.writeToFileWriter(writer);
-        }
-        originChunkMetadataList.addAll(writer.chunkMetadataList);
-        writer.endChunkGroup();
-      }
-      writer.sortAndFlushChunkMetadata();
-      writer.tempOutput.flush();
-
-      TSMIterator iterator =
-          TSMIterator.getTSMIteratorInDisk(
-              writer.chunkMetadataTempFile,
-              writer.chunkGroupMetadataList,
-              writer.endPosInCMTForDevice);
-      for (int i = 0; iterator.hasNext(); ++i) {
-        Pair<Path, TimeseriesMetadata> timeseriesMetadataPair = iterator.next();
-        TimeseriesMetadata timeseriesMetadata = timeseriesMetadataPair.right;
-        Assert.assertEquals(sortedSeriesId.get(i % 5), timeseriesMetadata.getMeasurementId());
-        Assert.assertEquals(
-            originChunkMetadataList.get(i).getDataType(), timeseriesMetadata.getTsDataType());
-        Assert.assertEquals(
-            originChunkMetadataList.get(i).getStatistics(), timeseriesMetadata.getStatistics());
-      }
-    }
-  }
-
-  @Test
-  public void testSerializeAndDeserializeAlignedChunkMetadata() throws IOException {
-    try (TsFileIOWriter writer = new TsFileIOWriter(testFile, 1024 * 1024 * 10)) {
-      List<ChunkMetadata> originChunkMetadataList = new ArrayList<>();
-      for (int i = 0; i < 10; ++i) {
-        IDeviceID deviceId = sortedDeviceId.get(i);
-        writer.startChunkGroup(deviceId);
-        AlignedChunkWriterImpl chunkWriter = generateVectorData(0L, new ArrayList<>(), 6);
-        chunkWriter.writeToFileWriter(writer);
-        originChunkMetadataList.addAll(writer.chunkMetadataList);
-        writer.endChunkGroup();
-      }
-      writer.sortAndFlushChunkMetadata();
-      writer.tempOutput.flush();
-
-      List<String> measurementIds = new ArrayList<>();
-      for (int i = 0; i < 10; ++i) {
-        measurementIds.add(((PlainDeviceID) sortedDeviceId.get(i)).toStringID() + ".");
-        for (int j = 1; j <= 6; ++j) {
-          measurementIds.add(((PlainDeviceID) sortedDeviceId.get(i)).toStringID() + ".s" + j);
-        }
-      }
-      TSMIterator iterator =
-          TSMIterator.getTSMIteratorInDisk(
-              writer.chunkMetadataTempFile, new ArrayList<>(), writer.endPosInCMTForDevice);
-      for (int i = 0; iterator.hasNext(); ++i) {
-        Pair<Path, TimeseriesMetadata> timeseriesMetadataPair = iterator.next();
-        String fullPath = timeseriesMetadataPair.left.getFullPath();
-        TimeseriesMetadata timeseriesMetadata = timeseriesMetadataPair.right;
-        Assert.assertEquals(measurementIds.get(i), fullPath);
-        Assert.assertEquals(
-            originChunkMetadataList.get(i).getDataType(), timeseriesMetadata.getTsDataType());
-        Assert.assertEquals(
-            originChunkMetadataList.get(i).getStatistics(), timeseriesMetadata.getStatistics());
-      }
-    }
-  }
-
-  @Test
-  public void testSerializeAndDeserializeMixedChunkMetadata() throws IOException {
-    try (TsFileIOWriter writer = new TsFileIOWriter(testFile, 1024 * 1024 * 10)) {
-      List<IChunkMetadata> originChunkMetadataList = new ArrayList<>();
-      List<String> seriesIds = new ArrayList<>();
-      for (int i = 0; i < 10; ++i) {
-        IDeviceID deviceId = sortedDeviceId.get(i);
-        writer.startChunkGroup(deviceId);
-        if (i % 2 == 0) {
-          // write normal series
-          for (int j = 0; j < 5; ++j) {
-            ChunkWriterImpl chunkWriter;
-            switch (j) {
-              case 0:
-                chunkWriter = generateIntData(j, 0L, new ArrayList<>());
-                break;
-              case 1:
-                chunkWriter = generateBooleanData(j, 0L, new ArrayList<>());
-                break;
-              case 2:
-                chunkWriter = generateFloatData(j, 0L, new ArrayList<>());
-                break;
-              case 3:
-                chunkWriter = generateDoubleData(j, 0L, new ArrayList<>());
-                break;
-              case 4:
-              default:
-                chunkWriter = generateTextData(j, 0L, new ArrayList<>());
-                break;
-            }
-            chunkWriter.writeToFileWriter(writer);
-            seriesIds.add(((PlainDeviceID) deviceId).toStringID() + "." + sortedSeriesId.get(j));
-          }
-        } else {
-          // write vector
-          AlignedChunkWriterImpl chunkWriter = generateVectorData(0L, new ArrayList<>(), 6);
-          chunkWriter.writeToFileWriter(writer);
-          seriesIds.add(((PlainDeviceID) deviceId).toStringID() + ".");
-          for (int l = 1; l <= 6; ++l) {
-            seriesIds.add(((PlainDeviceID) deviceId).toStringID() + ".s" + l);
-          }
-        }
-        originChunkMetadataList.addAll(writer.chunkMetadataList);
-        writer.endChunkGroup();
-      }
-      writer.sortAndFlushChunkMetadata();
-      writer.tempOutput.flush();
-
-      TSMIterator iterator =
-          TSMIterator.getTSMIteratorInDisk(
-              writer.chunkMetadataTempFile, new ArrayList<>(), writer.endPosInCMTForDevice);
-      for (int i = 0; i < originChunkMetadataList.size(); ++i) {
-        Pair<Path, TimeseriesMetadata> timeseriesMetadataPair = iterator.next();
-        Assert.assertEquals(seriesIds.get(i), timeseriesMetadataPair.left.getFullPath());
-        Assert.assertEquals(
-            originChunkMetadataList.get(i).getDataType(),
-            timeseriesMetadataPair.right.getTsDataType());
-        Assert.assertEquals(
-            originChunkMetadataList.get(i).getStatistics(),
-            timeseriesMetadataPair.right.getStatistics());
-      }
-    }
-  }
-
-  /** The following tests is for writing normal series in different nums. */
-
-  /**
-   * Write a file with 10 devices and 5 series in each device. For each series, we write one chunk
-   * for it. This test make sure that each chunk
-   *
-   * @throws IOException
-   */
-  @Test
-  public void testWriteCompleteFileWithNormalChunk() throws IOException {
-    Map<IDeviceID, Map<String, List<List<Pair<Long, TsPrimitiveType>>>>> originData =
-        new HashMap<>();
-    try (TsFileIOWriter writer = new TsFileIOWriter(testFile, 1024)) {
-      for (int i = 0; i < 10; ++i) {
-        IDeviceID deviceId = sortedDeviceId.get(i);
-        writer.startChunkGroup(deviceId);
-        for (int j = 0; j < 5; ++j) {
-          List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-          ChunkWriterImpl chunkWriter;
-          switch (j) {
-            case 0:
-              chunkWriter = generateIntData(j, 0L, valList);
-              break;
-            case 1:
-              chunkWriter = generateBooleanData(j, 0L, valList);
-              break;
-            case 2:
-              chunkWriter = generateFloatData(j, 0L, valList);
-              break;
-            case 3:
-              chunkWriter = generateDoubleData(j, 0L, valList);
-              break;
-            case 4:
-            default:
-              chunkWriter = generateTextData(j, 0L, valList);
-              break;
-          }
-          chunkWriter.writeToFileWriter(writer);
-          writer.checkMetadataSizeAndMayFlush();
-          originData
-              .computeIfAbsent(deviceId, x -> new HashMap<>())
-              .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-              .add(valList);
-        }
-        writer.endChunkGroup();
-      }
-      Assert.assertTrue(writer.hasChunkMetadataInDisk);
-      writer.endFile();
-    }
-    Assert.assertFalse(
-        new File(testFile.getAbsolutePath() + TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
-            .exists());
-    TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
-    TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), originData);
-  }
-
-  /**
-   * Write a file with 10 devices and 5 series in each device. For each series, we write 100 chunks
-   * for it. This test make sure that each chunk
-   *
-   * @throws IOException
-   */
-  @Test
-  public void testWriteCompleteFileWithMultipleNormalChunk() throws IOException {
-    Map<IDeviceID, Map<String, List<List<Pair<Long, TsPrimitiveType>>>>> originData =
-        new HashMap<>();
-    try (TsFileIOWriter writer = new TsFileIOWriter(testFile, 1024)) {
-      for (int i = 0; i < 10; ++i) {
-        IDeviceID deviceId = sortedDeviceId.get(i);
-        writer.startChunkGroup(deviceId);
-        for (int j = 0; j < 5; ++j) {
-          ChunkWriterImpl chunkWriter;
-          switch (j) {
-            case 0:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateIntData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 1:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateBooleanData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 2:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateFloatData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 3:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateDoubleData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 4:
-            default:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateTextData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-          }
-          writer.checkMetadataSizeAndMayFlush();
-        }
-        writer.endChunkGroup();
-      }
-      Assert.assertTrue(writer.hasChunkMetadataInDisk);
-      writer.endFile();
-    }
-    Assert.assertFalse(
-        new File(testFile.getAbsolutePath() + TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
-            .exists());
-    TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
-    TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), originData);
-  }
-
-  /**
-   * Write a file with 10 devices and 5 series in each device. For each series, we write 100 chunks
-   * for it. We maintain some chunk metadata in memory when calling endFile().
-   *
-   * @throws IOException
-   */
-  @Test
-  public void testWriteCompleteFileWithMetadataRemainsInMemoryWhenEndFile() throws IOException {
-    Map<IDeviceID, Map<String, List<List<Pair<Long, TsPrimitiveType>>>>> originData =
-        new HashMap<>();
-    try (TsFileIOWriter writer = new TsFileIOWriter(testFile, 1024)) {
-      for (int i = 0; i < 10; ++i) {
-        IDeviceID deviceId = sortedDeviceId.get(i);
-        writer.startChunkGroup(deviceId);
-        for (int j = 0; j < 5; ++j) {
-          ChunkWriterImpl chunkWriter;
-          switch (j) {
-            case 0:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateIntData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 1:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateBooleanData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 2:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateFloatData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 3:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateDoubleData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 4:
-            default:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateTextData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-          }
-          if (i < 9) {
-            writer.checkMetadataSizeAndMayFlush();
-          }
-        }
-        writer.endChunkGroup();
-      }
-      Assert.assertTrue(writer.hasChunkMetadataInDisk);
-      Assert.assertFalse(writer.chunkGroupMetadataList.isEmpty());
-      writer.endFile();
-    }
-    Assert.assertFalse(
-        new File(testFile.getAbsolutePath() + TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
-            .exists());
-    TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
-    TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), originData);
-  }
-
-  /**
-   * Write a file with 2 devices and 5 series in each device. For each series, we write 1024 chunks
-   * for it. This test make sure that each chunk
-   *
-   * @throws IOException
-   */
-  @Test
-  public void testWriteCompleteFileWithEnormousNormalChunk() throws IOException {
-    Map<IDeviceID, Map<String, List<List<Pair<Long, TsPrimitiveType>>>>> originData =
-        new HashMap<>();
-    long originTestChunkSize = TEST_CHUNK_SIZE;
-    TEST_CHUNK_SIZE = 10;
-    try (TsFileIOWriter writer = new TsFileIOWriter(testFile, 1024)) {
-      for (int i = 0; i < 2; ++i) {
-        IDeviceID deviceId = sortedDeviceId.get(i);
-        writer.startChunkGroup(deviceId);
-        for (int j = 0; j < 5; ++j) {
-          ChunkWriterImpl chunkWriter;
-          switch (j) {
-            case 0:
-              for (int k = 0; k < 1024; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateIntData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 1:
-              for (int k = 0; k < 1024; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateBooleanData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 2:
-              for (int k = 0; k < 1024; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateFloatData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 3:
-              for (int k = 0; k < 1024; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateDoubleData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 4:
-            default:
-              for (int k = 0; k < 1024; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateTextData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-          }
-          writer.checkMetadataSizeAndMayFlush();
-        }
-        writer.endChunkGroup();
-      }
-      Assert.assertTrue(writer.hasChunkMetadataInDisk);
-      writer.endFile();
-    } finally {
-      TEST_CHUNK_SIZE = originTestChunkSize;
-    }
-    Assert.assertFalse(
-        new File(testFile.getAbsolutePath() + TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
-            .exists());
-    TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
-    TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), originData);
-  }
-
-  /**
-   * Write a file with 2 devices and 1024 series in each device. For each series, we write 50 chunks
-   * for it. This test make sure that each chunk
-   *
-   * @throws IOException
-   */
-  @Test
-  public void testWriteCompleteFileWithEnormousSeriesNum() throws IOException {
-    Map<IDeviceID, Map<String, List<List<Pair<Long, TsPrimitiveType>>>>> originTimes =
-        new HashMap<>();
-    long originTestChunkSize = TEST_CHUNK_SIZE;
-    TEST_CHUNK_SIZE = 1;
-    try (TsFileIOWriter writer = new TsFileIOWriter(testFile, 1024)) {
-      for (int i = 0; i < 2; ++i) {
-        IDeviceID deviceId = sortedDeviceId.get(i);
-        writer.startChunkGroup(deviceId);
-        for (int j = 0; j < 1024; ++j) {
-          ChunkWriterImpl chunkWriter;
-          switch (j % 5) {
-            case 0:
-              for (int k = 0; k < 50; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateIntData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originTimes
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 1:
-              for (int k = 0; k < 50; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateBooleanData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originTimes
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 2:
-              for (int k = 0; k < 50; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateFloatData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originTimes
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 3:
-              for (int k = 0; k < 50; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateDoubleData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originTimes
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 4:
-            default:
-              for (int k = 0; k < 50; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateTextData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originTimes
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-          }
-          writer.checkMetadataSizeAndMayFlush();
-        }
-        writer.endChunkGroup();
-      }
-      Assert.assertTrue(writer.hasChunkMetadataInDisk);
-      writer.endFile();
-    } finally {
-      TEST_CHUNK_SIZE = originTestChunkSize;
-    }
-    Assert.assertFalse(
-        new File(testFile.getAbsolutePath() + TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
-            .exists());
-    TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
-    TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), originTimes);
-  }
-
-  /**
-   * Write a file with 1024 devices and 5 series in each device. For each series, we write 10 chunks
-   * for it. This test make sure that each chunk
-   *
-   * @throws IOException
-   */
-  @Test
-  public void testWriteCompleteFileWithEnormousDeviceNum() throws IOException {
-    Map<IDeviceID, Map<String, List<List<Pair<Long, TsPrimitiveType>>>>> originTimes =
-        new HashMap<>();
-    long originTestChunkSize = TEST_CHUNK_SIZE;
-    TEST_CHUNK_SIZE = 10;
-    try (TsFileIOWriter writer = new TsFileIOWriter(testFile, 1024)) {
-      for (int i = 0; i < 1024; ++i) {
-        IDeviceID deviceId = sortedDeviceId.get(i);
-        writer.startChunkGroup(deviceId);
-        for (int j = 0; j < 5; ++j) {
-          ChunkWriterImpl chunkWriter;
-          switch (j % 5) {
-            case 0:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateIntData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originTimes
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 1:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateBooleanData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originTimes
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 2:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateFloatData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originTimes
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 3:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateDoubleData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originTimes
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 4:
-            default:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateTextData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originTimes
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-          }
-          writer.checkMetadataSizeAndMayFlush();
-        }
-        writer.endChunkGroup();
-      }
-      Assert.assertTrue(writer.hasChunkMetadataInDisk);
-      writer.endFile();
-    } finally {
-      TEST_CHUNK_SIZE = originTestChunkSize;
-    }
-    Assert.assertFalse(
-        new File(testFile.getAbsolutePath() + TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
-            .exists());
-    TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
-    TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), originTimes);
-  }
-
-  /** The following tests is for writing aligned series. */
-
-  /**
-   * Test writing 10 align series, 6 in a group.
-   *
-   * @throws IOException
-   */
-  @Test
-  public void testWriteCompleteFileWithAlignedSeriesWithOneChunk() throws IOException {
-    Map<IDeviceID, Map<String, List<List<Pair<Long, TsPrimitiveType>>>>> originData =
-        new HashMap<>();
-    try (TsFileIOWriter writer = new TsFileIOWriter(testFile, 1024)) {
-      for (int i = 0; i < 10; ++i) {
-        IDeviceID deviceId = sortedDeviceId.get(i);
-        writer.startChunkGroup(deviceId);
-        List<List<Pair<Long, TsPrimitiveType>>> valList = new ArrayList<>();
-        AlignedChunkWriterImpl chunkWriter = generateVectorData(0L, valList, 6);
-        for (int j = 1; j <= 6; ++j) {
-          originData
-              .computeIfAbsent(deviceId, x -> new HashMap<>())
-              .computeIfAbsent("s" + j, x -> new ArrayList<>())
-              .add(valList.get(j - 1));
-        }
-
-        chunkWriter.writeToFileWriter(writer);
-        writer.endChunkGroup();
-        writer.checkMetadataSizeAndMayFlush();
-      }
-      writer.endFile();
-      Assert.assertTrue(writer.hasChunkMetadataInDisk);
-    }
-    Assert.assertFalse(
-        new File(testFile.getAbsolutePath() + TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
-            .exists());
-    TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
-    TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), originData);
-  }
-
-  /**
-   * Test writing 1 aligned series, for each series we write 512 chunks
-   *
-   * @throws IOException
-   */
-  @Test
-  public void testWriteCompleteFileWithAlignedSeriesWithMultiChunks() throws IOException {
-    Map<IDeviceID, Map<String, List<List<Pair<Long, TsPrimitiveType>>>>> originData =
-        new HashMap<>();
-    int chunkNum = 512, seriesNum = 6;
-    try (TsFileIOWriter writer = new TsFileIOWriter(testFile, 1024)) {
-      for (int i = 0; i < 1; ++i) {
-        IDeviceID deviceId = sortedDeviceId.get(i);
-        for (int k = 0; k < chunkNum; ++k) {
-          writer.startChunkGroup(deviceId);
-          List<List<Pair<Long, TsPrimitiveType>>> valList = new ArrayList<>();
-          AlignedChunkWriterImpl chunkWriter =
-              generateVectorData(k * TEST_CHUNK_SIZE, valList, seriesNum);
-          for (int j = 1; j <= seriesNum; ++j) {
-            originData
-                .computeIfAbsent(deviceId, x -> new HashMap<>())
-                .computeIfAbsent("s" + j, x -> new ArrayList<>())
-                .add(valList.get(j - 1));
-          }
-
-          chunkWriter.writeToFileWriter(writer);
-          writer.endChunkGroup();
-        }
-        writer.checkMetadataSizeAndMayFlush();
-      }
-      writer.endFile();
-      Assert.assertTrue(writer.hasChunkMetadataInDisk);
-    }
-    Assert.assertFalse(
-        new File(testFile.getAbsolutePath() + TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
-            .exists());
-    TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
-    TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), originData);
-  }
-
-  /**
-   * Test write aligned chunk metadata, for each aligned series, we write 1024 components.
-   *
-   * @throws IOException
-   */
-  @Test
-  public void testWriteCompleteFileWithAlignedSeriesWithManyComponents() throws IOException {
-    Map<IDeviceID, Map<String, List<List<Pair<Long, TsPrimitiveType>>>>> originData =
-        new HashMap<>();
-    int chunkNum = 5, seriesNum = 1024;
-    long originTestPointNum = TEST_CHUNK_SIZE;
-    TEST_CHUNK_SIZE = 10;
-    try {
-      try (TsFileIOWriter writer = new TsFileIOWriter(testFile, 1024)) {
-        for (int i = 0; i < 10; ++i) {
-          IDeviceID deviceId = sortedDeviceId.get(i);
-          for (int k = 0; k < chunkNum; ++k) {
-            writer.startChunkGroup(deviceId);
-            List<List<Pair<Long, TsPrimitiveType>>> valList = new ArrayList<>();
-            AlignedChunkWriterImpl chunkWriter =
-                generateVectorData(k * TEST_CHUNK_SIZE, valList, seriesNum);
-            for (int j = 1; j <= seriesNum; ++j) {
-              originData
-                  .computeIfAbsent(deviceId, x -> new HashMap<>())
-                  .computeIfAbsent("s" + j, x -> new ArrayList<>())
-                  .add(valList.get(j - 1));
-            }
-
-            chunkWriter.writeToFileWriter(writer);
-            writer.endChunkGroup();
-          }
-          writer.checkMetadataSizeAndMayFlush();
-        }
-        writer.endFile();
-        Assert.assertTrue(writer.hasChunkMetadataInDisk);
-      }
-    } finally {
-      TEST_CHUNK_SIZE = originTestPointNum;
-    }
-    Assert.assertFalse(
-        new File(testFile.getAbsolutePath() + TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
-            .exists());
-    TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
-    TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), originData);
-  }
-
-  @Test
-  public void testWriteCompleteFileWithLotsAlignedSeries() throws IOException {
-    Map<IDeviceID, Map<String, List<List<Pair<Long, TsPrimitiveType>>>>> originData =
-        new HashMap<>();
-    int chunkNum = 5, seriesNum = 12;
-    long originTestPointNum = TEST_CHUNK_SIZE;
-    TEST_CHUNK_SIZE = 10;
-    int deviceNum = 1024;
-    try {
-      try (TsFileIOWriter writer = new TsFileIOWriter(testFile, 1024)) {
-        for (int i = 0; i < deviceNum; ++i) {
-          IDeviceID deviceId = sortedDeviceId.get(i);
-          for (int k = 0; k < chunkNum; ++k) {
-            writer.startChunkGroup(deviceId);
-            List<List<Pair<Long, TsPrimitiveType>>> valList = new ArrayList<>();
-            AlignedChunkWriterImpl chunkWriter =
-                generateVectorData(k * TEST_CHUNK_SIZE, valList, seriesNum);
-            for (int j = 1; j <= seriesNum; ++j) {
-              originData
-                  .computeIfAbsent(deviceId, x -> new HashMap<>())
-                  .computeIfAbsent("s" + j, x -> new ArrayList<>())
-                  .add(valList.get(j - 1));
-            }
-
-            chunkWriter.writeToFileWriter(writer);
-            writer.endChunkGroup();
-          }
-          writer.checkMetadataSizeAndMayFlush();
-        }
-        writer.endFile();
-        Assert.assertTrue(writer.hasChunkMetadataInDisk);
-      }
-    } finally {
-      TEST_CHUNK_SIZE = originTestPointNum;
-    }
-    Assert.assertFalse(
-        new File(testFile.getAbsolutePath() + TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
-            .exists());
-    TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
-    TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), originData);
-  }
-
-  @Test
-  public void testWritingAlignedSeriesByColumnWithMultiComponents() throws IOException {
-    Map<IDeviceID, Map<String, List<List<Pair<Long, TsPrimitiveType>>>>> originValue =
-        new HashMap<>();
-    TEST_CHUNK_SIZE = 10;
-    try (TsFileIOWriter writer = new TsFileIOWriter(testFile, 1024)) {
-      for (int i = 0; i < 5; i++) {
-        IDeviceID deviceId = sortedDeviceId.get(i);
-        writer.startChunkGroup(deviceId);
-        TSEncoding timeEncoding =
-            TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder());
-        TSDataType timeType = TSFileDescriptor.getInstance().getConfig().getTimeSeriesDataType();
-        Encoder encoder = TSEncodingBuilder.getEncodingBuilder(timeEncoding).getEncoder(timeType);
-        for (int chunkIdx = 0; chunkIdx < 10; ++chunkIdx) {
-          TimeChunkWriter timeChunkWriter =
-              new TimeChunkWriter("", CompressionType.SNAPPY, TSEncoding.PLAIN, encoder);
-          for (long j = TEST_CHUNK_SIZE * chunkIdx; j < TEST_CHUNK_SIZE * (chunkIdx + 1); ++j) {
-            timeChunkWriter.write(j);
-          }
-          timeChunkWriter.writeToFileWriter(writer);
-        }
-        writer.sortAndFlushChunkMetadata();
-        Assert.assertTrue(writer.hasChunkMetadataInDisk);
-        for (int k = 0; k < 1024; ++k) {
-          TSEncodingBuilder builder = TSEncodingBuilder.getEncodingBuilder(TSEncoding.PLAIN);
-          builder.initFromProps(null);
-          for (int chunkIdx = 0; chunkIdx < 10; ++chunkIdx) {
-            ValueChunkWriter chunkWriter =
-                new ValueChunkWriter(
-                    sortedSeriesId.get(k),
-                    CompressionType.SNAPPY,
-                    TSDataType.DOUBLE,
-                    TSEncoding.PLAIN,
-                    builder.getEncoder(TSDataType.DOUBLE));
-            Random random = new Random();
-            List<Pair<Long, TsPrimitiveType>> valueList = new ArrayList<>();
-            for (long j = TEST_CHUNK_SIZE * chunkIdx; j < TEST_CHUNK_SIZE * (chunkIdx + 1); ++j) {
-              double val = random.nextDouble();
-              chunkWriter.write(j, val, false);
-              valueList.add(new Pair<>((long) j, new TsPrimitiveType.TsDouble(val)));
-            }
-            chunkWriter.writeToFileWriter(writer);
-            originValue
-                .computeIfAbsent(deviceId, x -> new HashMap<>())
-                .computeIfAbsent(sortedSeriesId.get(k), x -> new ArrayList<>())
-                .add(valueList);
-          }
-          writer.sortAndFlushChunkMetadata();
-        }
-        writer.endChunkGroup();
-      }
-      writer.endFile();
-    }
-    Assert.assertFalse(
-        new File(testFile.getAbsolutePath() + TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
-            .exists());
-    TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
-    TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), originValue);
-  }
-
-  @Test
-  public void testWritingCompleteMixedFiles() throws IOException {
-    Map<IDeviceID, Map<String, List<List<Pair<Long, TsPrimitiveType>>>>> originData =
-        new HashMap<>();
-    try (TsFileIOWriter writer = new TsFileIOWriter(testFile, 1024)) {
-      for (int i = 0; i < 5; ++i) {
-        IDeviceID deviceId = sortedDeviceId.get(i);
-        for (int k = 0; k < 10; ++k) {
-          writer.startChunkGroup(deviceId);
-          List<List<Pair<Long, TsPrimitiveType>>> valList = new ArrayList<>();
-          AlignedChunkWriterImpl chunkWriter = generateVectorData(k * TEST_CHUNK_SIZE, valList, 6);
-          for (int j = 1; j <= 6; ++j) {
-            originData
-                .computeIfAbsent(deviceId, x -> new HashMap<>())
-                .computeIfAbsent("s" + j, x -> new ArrayList<>())
-                .add(valList.get(j - 1));
-          }
-
-          chunkWriter.writeToFileWriter(writer);
-          writer.endChunkGroup();
-        }
-        writer.checkMetadataSizeAndMayFlush();
-      }
-      for (int i = 5; i < 10; ++i) {
-        IDeviceID deviceId = sortedDeviceId.get(i);
-        writer.startChunkGroup(deviceId);
-        for (int j = 0; j < 5; ++j) {
-          ChunkWriterImpl chunkWriter;
-          switch (j) {
-            case 0:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateIntData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 1:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateBooleanData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 2:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateFloatData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 3:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateDoubleData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-            case 4:
-            default:
-              for (int k = 0; k < 10; ++k) {
-                List<Pair<Long, TsPrimitiveType>> valList = new ArrayList<>();
-                chunkWriter = generateTextData(j, (long) TEST_CHUNK_SIZE * k, valList);
-                chunkWriter.writeToFileWriter(writer);
-                originData
-                    .computeIfAbsent(deviceId, x -> new HashMap<>())
-                    .computeIfAbsent(sortedSeriesId.get(j), x -> new ArrayList<>())
-                    .add(valList);
-              }
-              break;
-          }
-          writer.checkMetadataSizeAndMayFlush();
-        }
-        writer.endChunkGroup();
-      }
-      writer.endFile();
-      Assert.assertTrue(writer.hasChunkMetadataInDisk);
-    }
-    Assert.assertFalse(
-        new File(testFile.getAbsolutePath() + TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
-            .exists());
-    TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
-    TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), originData);
-  }
-
-  @Test
-  public void testWritingAlignedSeriesByColumn() throws IOException {
-    Map<IDeviceID, Map<String, List<List<Pair<Long, TsPrimitiveType>>>>> originValue =
-        new HashMap<>();
-    try (TsFileIOWriter writer = new TsFileIOWriter(testFile, 1024)) {
-      for (int i = 0; i < 5; i++) {
-        IDeviceID deviceId = sortedDeviceId.get(i);
-        writer.startChunkGroup(deviceId);
-        TSEncoding timeEncoding =
-            TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder());
-        TSDataType timeType = TSFileDescriptor.getInstance().getConfig().getTimeSeriesDataType();
-        Encoder encoder = TSEncodingBuilder.getEncodingBuilder(timeEncoding).getEncoder(timeType);
-        TimeChunkWriter timeChunkWriter =
-            new TimeChunkWriter("", CompressionType.SNAPPY, TSEncoding.PLAIN, encoder);
-        for (int j = 0; j < TEST_CHUNK_SIZE; ++j) {
-          timeChunkWriter.write(j);
-        }
-        timeChunkWriter.writeToFileWriter(writer);
-        writer.sortAndFlushChunkMetadata();
-        Assert.assertTrue(writer.hasChunkMetadataInDisk);
-        for (int k = 0; k < 5; ++k) {
-          TSEncodingBuilder builder = TSEncodingBuilder.getEncodingBuilder(TSEncoding.PLAIN);
-          builder.initFromProps(null);
-          ValueChunkWriter chunkWriter =
-              new ValueChunkWriter(
-                  sortedSeriesId.get(k),
-                  CompressionType.SNAPPY,
-                  TSDataType.DOUBLE,
-                  TSEncoding.PLAIN,
-                  builder.getEncoder(TSDataType.DOUBLE));
-          Random random = new Random();
-          List<Pair<Long, TsPrimitiveType>> valueList = new ArrayList<>();
-          for (int j = 0; j < TEST_CHUNK_SIZE; ++j) {
-            double val = random.nextDouble();
-            chunkWriter.write(j, val, false);
-            valueList.add(new Pair<>((long) j, new TsPrimitiveType.TsDouble(val)));
-          }
-          chunkWriter.writeToFileWriter(writer);
-          originValue
-              .computeIfAbsent(deviceId, x -> new HashMap<>())
-              .computeIfAbsent(sortedSeriesId.get(k), x -> new ArrayList<>())
-              .add(valueList);
-          writer.sortAndFlushChunkMetadata();
-        }
-        writer.endChunkGroup();
-      }
-      writer.endFile();
-    }
-    Assert.assertFalse(
-        new File(testFile.getAbsolutePath() + TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
-            .exists());
-    TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
-    TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), originValue);
-  }
-
-  @Test
-  public void testWritingAlignedSeriesByColumnWithMultiChunks() throws IOException {
-    Map<IDeviceID, Map<String, List<List<Pair<Long, TsPrimitiveType>>>>> originValue =
-        new HashMap<>();
-    try (TsFileIOWriter writer = new TsFileIOWriter(testFile, 1024)) {
-      for (int i = 0; i < 5; i++) {
-        IDeviceID deviceId = sortedDeviceId.get(i);
-        writer.startChunkGroup(deviceId);
-        TSEncoding timeEncoding =
-            TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder());
-        TSDataType timeType = TSFileDescriptor.getInstance().getConfig().getTimeSeriesDataType();
-        Encoder encoder = TSEncodingBuilder.getEncodingBuilder(timeEncoding).getEncoder(timeType);
-        for (int chunkIdx = 0; chunkIdx < 10; ++chunkIdx) {
-          TimeChunkWriter timeChunkWriter =
-              new TimeChunkWriter("", CompressionType.SNAPPY, TSEncoding.PLAIN, encoder);
-          for (long j = TEST_CHUNK_SIZE * chunkIdx; j < TEST_CHUNK_SIZE * (chunkIdx + 1); ++j) {
-            timeChunkWriter.write(j);
-          }
-          timeChunkWriter.writeToFileWriter(writer);
-        }
-        writer.sortAndFlushChunkMetadata();
-        Assert.assertTrue(writer.hasChunkMetadataInDisk);
-        for (int k = 0; k < 5; ++k) {
-          TSEncodingBuilder builder = TSEncodingBuilder.getEncodingBuilder(TSEncoding.PLAIN);
-          builder.initFromProps(null);
-          for (int chunkIdx = 0; chunkIdx < 10; ++chunkIdx) {
-            ValueChunkWriter chunkWriter =
-                new ValueChunkWriter(
-                    sortedSeriesId.get(k),
-                    CompressionType.SNAPPY,
-                    TSDataType.DOUBLE,
-                    TSEncoding.PLAIN,
-                    builder.getEncoder(TSDataType.DOUBLE));
-            Random random = new Random();
-            List<Pair<Long, TsPrimitiveType>> valueList = new ArrayList<>();
-            for (long j = TEST_CHUNK_SIZE * chunkIdx; j < TEST_CHUNK_SIZE * (chunkIdx + 1); ++j) {
-              double val = random.nextDouble();
-              chunkWriter.write(j, val, false);
-              valueList.add(new Pair<>((long) j, new TsPrimitiveType.TsDouble(val)));
-            }
-            chunkWriter.writeToFileWriter(writer);
-            originValue
-                .computeIfAbsent(deviceId, x -> new HashMap<>())
-                .computeIfAbsent(sortedSeriesId.get(k), x -> new ArrayList<>())
-                .add(valueList);
-          }
-          writer.sortAndFlushChunkMetadata();
-        }
-        writer.endChunkGroup();
-      }
-      writer.endFile();
-    }
-    Assert.assertFalse(
-        new File(testFile.getAbsolutePath() + TsFileIOWriter.CHUNK_METADATA_TEMP_FILE_SUFFIX)
-            .exists());
-    TsFileIntegrityCheckingTool.checkIntegrityBySequenceRead(testFile.getPath());
-    TsFileIntegrityCheckingTool.checkIntegrityByQuery(testFile.getPath(), originValue);
-  }
-
-  /** The following tests is for writing mixed of normal series and aligned series */
-  private ChunkWriterImpl generateIntData(
-      int idx, long startTime, List<Pair<Long, TsPrimitiveType>> record) {
-    ChunkWriterImpl chunkWriter =
-        new ChunkWriterImpl(new MeasurementSchema(sortedSeriesId.get(idx), TSDataType.INT64));
-    Random random = new Random();
-    for (long i = startTime; i < startTime + TEST_CHUNK_SIZE; ++i) {
-      long val = random.nextLong();
-      chunkWriter.write(i, val);
-      record.add(new Pair<>(i, new TsPrimitiveType.TsLong(val)));
-    }
-    return chunkWriter;
-  }
-
-  private ChunkWriterImpl generateFloatData(
-      int idx, long startTime, List<Pair<Long, TsPrimitiveType>> record) {
-    ChunkWriterImpl chunkWriter =
-        new ChunkWriterImpl(new MeasurementSchema(sortedSeriesId.get(idx), TSDataType.FLOAT));
-    Random random = new Random();
-    for (long i = startTime; i < startTime + TEST_CHUNK_SIZE; ++i) {
-      float val = random.nextFloat();
-      chunkWriter.write(i, val);
-      record.add(new Pair<>(i, new TsPrimitiveType.TsFloat(val)));
-    }
-    return chunkWriter;
-  }
-
-  private ChunkWriterImpl generateDoubleData(
-      int idx, long startTime, List<Pair<Long, TsPrimitiveType>> record) {
-    ChunkWriterImpl chunkWriter =
-        new ChunkWriterImpl(new MeasurementSchema(sortedSeriesId.get(idx), TSDataType.DOUBLE));
-    Random random = new Random();
-    for (long i = startTime; i < startTime + TEST_CHUNK_SIZE; ++i) {
-      double val = random.nextDouble();
-      chunkWriter.write(i, val);
-      record.add(new Pair<>(i, new TsPrimitiveType.TsDouble(val)));
-    }
-    return chunkWriter;
-  }
-
-  private ChunkWriterImpl generateBooleanData(
-      int idx, long startTime, List<Pair<Long, TsPrimitiveType>> record) {
-    ChunkWriterImpl chunkWriter =
-        new ChunkWriterImpl(new MeasurementSchema(sortedSeriesId.get(idx), TSDataType.BOOLEAN));
-    Random random = new Random();
-    for (long i = startTime; i < startTime + TEST_CHUNK_SIZE; ++i) {
-      boolean val = random.nextBoolean();
-      chunkWriter.write(i, val);
-      record.add(new Pair<>(i, new TsPrimitiveType.TsBoolean(val)));
-    }
-    return chunkWriter;
-  }
-
-  private AlignedChunkWriterImpl generateVectorData(
-      long startTime, List<List<Pair<Long, TsPrimitiveType>>> record, int seriesNum) {
-    List<IMeasurementSchema> measurementSchemas = new ArrayList<>();
-    TSDataType[] dataTypes =
-        new TSDataType[] {
-          TSDataType.INT32,
-          TSDataType.INT64,
-          TSDataType.FLOAT,
-          TSDataType.DOUBLE,
-          TSDataType.BOOLEAN,
-          TSDataType.TEXT
-        };
-    for (int i = 0; i < seriesNum; ++i) {
-      measurementSchemas.add(new MeasurementSchema("s" + (i + 1), dataTypes[i % 6]));
-    }
-    AlignedChunkWriterImpl chunkWriter = new AlignedChunkWriterImpl(measurementSchemas);
-    Random random = new Random();
-    for (int i = 0; i < seriesNum; ++i) {
-      record.add(new ArrayList<>());
-    }
-    for (long i = startTime; i < startTime + TEST_CHUNK_SIZE; ++i) {
-      TsPrimitiveType[] points = new TsPrimitiveType[seriesNum];
-      for (int j = 0; j < seriesNum; ++j) {
-        switch (j % 6) {
-          case 0:
-            points[j] = new TsPrimitiveType.TsInt(random.nextInt());
-            break;
-          case 1:
-            points[j] = new TsPrimitiveType.TsLong(random.nextLong());
-            break;
-          case 2:
-            points[j] = new TsPrimitiveType.TsFloat(random.nextFloat());
-            break;
-          case 3:
-            points[j] = new TsPrimitiveType.TsDouble(random.nextDouble());
-            break;
-          case 4:
-            points[j] = new TsPrimitiveType.TsBoolean(random.nextBoolean());
-            break;
-          case 5:
-            points[j] =
-                new TsPrimitiveType.TsBinary(
-                    new Binary(String.valueOf(random.nextDouble()), TSFileConfig.STRING_CHARSET));
-            break;
-        }
-      }
-      for (int j = 0; j < seriesNum; ++j) {
-        record.get(j).add(new Pair<>(i, points[j]));
-      }
-      chunkWriter.write(i, points);
-    }
-    return chunkWriter;
-  }
-
-  private ChunkWriterImpl generateTextData(
-      int idx, long startTime, List<Pair<Long, TsPrimitiveType>> record) {
-    ChunkWriterImpl chunkWriter =
-        new ChunkWriterImpl(new MeasurementSchema(sortedSeriesId.get(idx), TSDataType.TEXT));
-    Random random = new Random();
-    for (long i = startTime; i < startTime + TEST_CHUNK_SIZE; ++i) {
-      Binary val = new Binary(String.valueOf(random.nextDouble()), TSFileConfig.STRING_CHARSET);
-      chunkWriter.write(i, val);
-      record.add(new Pair<>(i, new TsPrimitiveType.TsBinary(val)));
-    }
-    return chunkWriter;
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/ValueChunkWriterTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/ValueChunkWriterTest.java
deleted file mode 100644
index 27cbec9..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/ValueChunkWriterTest.java
+++ /dev/null
@@ -1,109 +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.write.writer;
-
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.PlainEncoder;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.chunk.ValueChunkWriter;
-
-import org.junit.Test;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-public class ValueChunkWriterTest {
-
-  @Test
-  public void testWrite1() {
-    Encoder valueEncoder = new PlainEncoder(TSDataType.FLOAT, 0);
-    ValueChunkWriter chunkWriter =
-        new ValueChunkWriter(
-            "s1", CompressionType.UNCOMPRESSED, TSDataType.FLOAT, TSEncoding.PLAIN, valueEncoder);
-    for (int time = 1; time <= 20; time++) {
-      chunkWriter.write(time, (float) time, time % 4 == 0);
-    }
-    chunkWriter.sealCurrentPage();
-    // page without statistics size: 69 + chunk header size: 8
-    assertEquals(77L, chunkWriter.getCurrentChunkSize());
-
-    try {
-      TestTsFileOutput testTsFileOutput = new TestTsFileOutput();
-      TsFileIOWriter writer = new TsFileIOWriter(testTsFileOutput, true);
-      chunkWriter.writeAllPagesOfChunkToTsFile(writer);
-      PublicBAOS publicBAOS = testTsFileOutput.publicBAOS;
-      ByteBuffer buffer = ByteBuffer.wrap(publicBAOS.getBuf(), 0, publicBAOS.size());
-      assertEquals(MetaMarker.ONLY_ONE_PAGE_VALUE_CHUNK_HEADER, ReadWriteIOUtils.readByte(buffer));
-      assertEquals("s1", ReadWriteIOUtils.readVarIntString(buffer));
-      assertEquals(69, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      assertEquals(TSDataType.FLOAT.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(CompressionType.UNCOMPRESSED.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(TSEncoding.PLAIN.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(69, buffer.remaining());
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail();
-    }
-  }
-
-  @Test
-  public void testWrite2() {
-    Encoder valueEncoder = new PlainEncoder(TSDataType.FLOAT, 0);
-    ValueChunkWriter chunkWriter =
-        new ValueChunkWriter(
-            "s1", CompressionType.UNCOMPRESSED, TSDataType.FLOAT, TSEncoding.PLAIN, valueEncoder);
-    for (int time = 1; time <= 20; time++) {
-      chunkWriter.write(time, (float) time, time % 4 == 0);
-    }
-    chunkWriter.sealCurrentPage();
-    for (int time = 20; time <= 40; time++) {
-      chunkWriter.write(time, (float) time, time % 4 == 0);
-    }
-    chunkWriter.sealCurrentPage();
-    // two pages with statistics size: (69 + 41) * 2 + chunk header size: 9
-    assertEquals(229L, chunkWriter.getCurrentChunkSize());
-
-    TestTsFileOutput testTsFileOutput = new TestTsFileOutput();
-    TsFileIOWriter writer = new TsFileIOWriter(testTsFileOutput, true);
-    try {
-      chunkWriter.writeAllPagesOfChunkToTsFile(writer);
-      PublicBAOS publicBAOS = testTsFileOutput.publicBAOS;
-      ByteBuffer buffer = ByteBuffer.wrap(publicBAOS.getBuf(), 0, publicBAOS.size());
-      assertEquals(MetaMarker.VALUE_CHUNK_HEADER, ReadWriteIOUtils.readByte(buffer));
-      assertEquals("s1", ReadWriteIOUtils.readVarIntString(buffer));
-      assertEquals(220, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      assertEquals(TSDataType.FLOAT.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(CompressionType.UNCOMPRESSED.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(TSEncoding.PLAIN.serialize(), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(220, buffer.remaining());
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail();
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/ValuePageWriterTest.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/ValuePageWriterTest.java
deleted file mode 100644
index a43159f..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/ValuePageWriterTest.java
+++ /dev/null
@@ -1,291 +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.write.writer;
-
-import org.apache.iotdb.tsfile.compress.ICompressor;
-import org.apache.iotdb.tsfile.compress.IUnCompressor;
-import org.apache.iotdb.tsfile.encoding.decoder.PlainDecoder;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.PlainEncoder;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.FloatStatistics;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
-import org.apache.iotdb.tsfile.utils.PublicBAOS;
-import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.write.page.ValuePageWriter;
-
-import org.junit.Test;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-public class ValuePageWriterTest {
-
-  @Test
-  public void testWrite1() {
-    Encoder valueEncoder = new PlainEncoder(TSDataType.FLOAT, 0);
-    ICompressor compressor = ICompressor.getCompressor(CompressionType.UNCOMPRESSED);
-    ValuePageWriter pageWriter = new ValuePageWriter(valueEncoder, compressor, TSDataType.FLOAT);
-    try {
-      pageWriter.write(1L, 1.0f, false);
-      assertEquals(9, pageWriter.estimateMaxMemSize());
-      ByteBuffer buffer1 = pageWriter.getUncompressedBytes();
-      ByteBuffer buffer = ByteBuffer.wrap(buffer1.array());
-      pageWriter.reset(TSDataType.FLOAT);
-      assertEquals(5, pageWriter.estimateMaxMemSize());
-      assertEquals(1, ReadWriteIOUtils.readInt(buffer));
-      assertEquals(((byte) (1 << 7)), ReadWriteIOUtils.readByte(buffer));
-      PlainDecoder decoder = new PlainDecoder();
-      assertEquals(1.0f, ReadWriteIOUtils.readFloat(buffer), 0.000001f);
-      assertEquals(0, buffer.remaining());
-      decoder.reset();
-    } catch (IOException e) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testWrite2() {
-    Encoder valueEncoder = new PlainEncoder(TSDataType.FLOAT, 0);
-    ICompressor compressor = ICompressor.getCompressor(CompressionType.UNCOMPRESSED);
-    ValuePageWriter pageWriter = new ValuePageWriter(valueEncoder, compressor, TSDataType.FLOAT);
-    try {
-      for (int time = 1; time <= 16; time++) {
-        pageWriter.write(time, (float) time, time % 4 == 0);
-      }
-      assertEquals(55, pageWriter.estimateMaxMemSize());
-      ByteBuffer buffer1 = pageWriter.getUncompressedBytes();
-      ByteBuffer buffer = ByteBuffer.wrap(buffer1.array());
-      pageWriter.reset(TSDataType.FLOAT);
-      assertEquals(5, pageWriter.estimateMaxMemSize());
-      assertEquals(16, ReadWriteIOUtils.readInt(buffer));
-      assertEquals(((byte) (0xEE)), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(((byte) (0xEE)), ReadWriteIOUtils.readByte(buffer));
-      PlainDecoder decoder = new PlainDecoder();
-      for (int value = 1; value <= 16; value++) {
-        if (value % 4 != 0) {
-          assertEquals((float) value, ReadWriteIOUtils.readFloat(buffer), 0.000001f);
-        }
-      }
-      assertEquals(0, buffer.remaining());
-      decoder.reset();
-    } catch (IOException e) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testWrite3() {
-    Encoder valueEncoder = new PlainEncoder(TSDataType.FLOAT, 0);
-    ICompressor compressor = ICompressor.getCompressor(CompressionType.UNCOMPRESSED);
-    ValuePageWriter pageWriter = new ValuePageWriter(valueEncoder, compressor, TSDataType.FLOAT);
-    try {
-      for (int time = 1; time <= 20; time++) {
-        pageWriter.write(time, (float) time, time % 4 == 0);
-      }
-      assertEquals(67, pageWriter.estimateMaxMemSize());
-      ByteBuffer buffer1 = pageWriter.getUncompressedBytes();
-      ByteBuffer buffer = ByteBuffer.wrap(buffer1.array());
-      pageWriter.reset(TSDataType.FLOAT);
-      assertEquals(5, pageWriter.estimateMaxMemSize());
-      assertEquals(20, ReadWriteIOUtils.readInt(buffer));
-      assertEquals(((byte) (0xEE)), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(((byte) (0xEE)), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(((byte) (0xE0)), ReadWriteIOUtils.readByte(buffer));
-      PlainDecoder decoder = new PlainDecoder();
-      for (int value = 1; value <= 20; value++) {
-        if (value % 4 != 0) {
-          assertEquals((float) value, ReadWriteIOUtils.readFloat(buffer), 0.000001f);
-        }
-      }
-      assertEquals(0, buffer.remaining());
-      decoder.reset();
-    } catch (IOException e) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testWritePageHeaderAndDataIntoBuffWithoutCompress1() {
-    Encoder valueEncoder = new PlainEncoder(TSDataType.FLOAT, 0);
-    ICompressor compressor = ICompressor.getCompressor(CompressionType.UNCOMPRESSED);
-    ValuePageWriter pageWriter = new ValuePageWriter(valueEncoder, compressor, TSDataType.FLOAT);
-    PublicBAOS publicBAOS = new PublicBAOS();
-    try {
-      for (int time = 1; time <= 20; time++) {
-        pageWriter.write(time, (float) time, time % 4 == 0);
-      }
-      // without page statistics
-      assertEquals(2, pageWriter.writePageHeaderAndDataIntoBuff(publicBAOS, true));
-      // total size
-      assertEquals(69, publicBAOS.size());
-      Statistics<Float> statistics = (Statistics<Float>) pageWriter.getStatistics();
-      assertEquals(1L, statistics.getStartTime());
-      assertEquals(19L, statistics.getEndTime());
-      assertEquals(15, statistics.getCount());
-      assertEquals(1.0f, statistics.getFirstValue(), 0.000001f);
-      assertEquals(19.0f, statistics.getLastValue(), 0.000001f);
-      assertEquals(1.0f, statistics.getMinValue(), 0.000001f);
-      assertEquals(19.0f, statistics.getMaxValue(), 0.000001f);
-      assertEquals(150.0f, (float) statistics.getSumDoubleValue(), 0.000001f);
-
-      ByteBuffer buffer = ByteBuffer.wrap(publicBAOS.getBuf(), 0, publicBAOS.size());
-
-      // uncompressedSize
-      assertEquals(67, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      // compressedSize
-      assertEquals(67, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-
-      // bitmap
-      assertEquals(20, ReadWriteIOUtils.readInt(buffer));
-      assertEquals(((byte) (0xEE)), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(((byte) (0xEE)), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(((byte) (0xE0)), ReadWriteIOUtils.readByte(buffer));
-
-      for (int value = 1; value <= 20; value++) {
-        if (value % 4 != 0) {
-          assertEquals((float) value, ReadWriteIOUtils.readFloat(buffer), 0.000001f);
-        }
-      }
-      assertEquals(0, buffer.remaining());
-    } catch (IOException e) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testWritePageHeaderAndDataIntoBuffWithoutCompress2() {
-    Encoder valueEncoder = new PlainEncoder(TSDataType.FLOAT, 0);
-    ICompressor compressor = ICompressor.getCompressor(CompressionType.UNCOMPRESSED);
-    ValuePageWriter pageWriter = new ValuePageWriter(valueEncoder, compressor, TSDataType.FLOAT);
-    PublicBAOS publicBAOS = new PublicBAOS();
-    try {
-      for (int time = 1; time <= 20; time++) {
-        pageWriter.write(time, (float) time, time % 4 == 0);
-      }
-      // without page statistics
-      assertEquals(0, pageWriter.writePageHeaderAndDataIntoBuff(publicBAOS, false));
-      // total size
-      assertEquals(110, publicBAOS.size());
-      Statistics<Float> statistics = (Statistics<Float>) pageWriter.getStatistics();
-      assertEquals(1L, statistics.getStartTime());
-      assertEquals(19L, statistics.getEndTime());
-      assertEquals(15, statistics.getCount());
-      assertEquals(1.0f, statistics.getFirstValue(), 0.000001f);
-      assertEquals(19.0f, statistics.getLastValue(), 0.000001f);
-      assertEquals(1.0f, statistics.getMinValue(), 0.000001f);
-      assertEquals(19.0f, statistics.getMaxValue(), 0.000001f);
-      assertEquals(150.0f, (float) statistics.getSumDoubleValue(), 0.000001f);
-
-      ByteBuffer buffer = ByteBuffer.wrap(publicBAOS.getBuf(), 0, publicBAOS.size());
-      // uncompressedSize
-      assertEquals(67, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      // compressedSize
-      assertEquals(67, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-
-      // Statistics
-      FloatStatistics testStatistics =
-          (FloatStatistics) FloatStatistics.deserialize(buffer, TSDataType.FLOAT);
-      assertEquals(1L, testStatistics.getStartTime());
-      assertEquals(19L, testStatistics.getEndTime());
-      assertEquals(15, testStatistics.getCount());
-      assertEquals(1.0f, testStatistics.getFirstValue(), 0.000001f);
-      assertEquals(19.0f, testStatistics.getLastValue(), 0.000001f);
-      assertEquals(1.0f, testStatistics.getMinValue(), 0.000001f);
-      assertEquals(19.0f, testStatistics.getMaxValue(), 0.000001f);
-      assertEquals(150.0f, (float) testStatistics.getSumDoubleValue(), 0.000001f);
-
-      // bitmap
-      assertEquals(20, ReadWriteIOUtils.readInt(buffer));
-      assertEquals(((byte) (0xEE)), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(((byte) (0xEE)), ReadWriteIOUtils.readByte(buffer));
-      assertEquals(((byte) (0xE0)), ReadWriteIOUtils.readByte(buffer));
-
-      for (int value = 1; value <= 20; value++) {
-        if (value % 4 != 0) {
-          assertEquals((float) value, ReadWriteIOUtils.readFloat(buffer), 0.000001f);
-        }
-      }
-      assertEquals(0, buffer.remaining());
-    } catch (IOException e) {
-      fail();
-    }
-  }
-
-  @Test
-  public void testWritePageHeaderAndDataIntoBuffWithSnappy() {
-    Encoder valueEncoder = new PlainEncoder(TSDataType.FLOAT, 0);
-    ICompressor compressor = ICompressor.getCompressor(CompressionType.SNAPPY);
-    ValuePageWriter pageWriter = new ValuePageWriter(valueEncoder, compressor, TSDataType.FLOAT);
-    PublicBAOS publicBAOS = new PublicBAOS();
-    try {
-      for (int time = 1; time <= 20; time++) {
-        pageWriter.write(time, (float) time, time % 4 == 0);
-      }
-      // without page statistics
-      assertEquals(2, pageWriter.writePageHeaderAndDataIntoBuff(publicBAOS, true));
-      // total size
-      assertEquals(72, publicBAOS.size());
-      Statistics<Float> statistics = (Statistics<Float>) pageWriter.getStatistics();
-      assertEquals(1L, statistics.getStartTime());
-      assertEquals(19L, statistics.getEndTime());
-      assertEquals(15, statistics.getCount());
-      assertEquals(1.0f, statistics.getFirstValue(), 0.000001f);
-      assertEquals(19.0f, statistics.getLastValue(), 0.000001f);
-      assertEquals(1.0f, statistics.getMinValue(), 0.000001f);
-      assertEquals(19.0f, statistics.getMaxValue(), 0.000001f);
-      assertEquals(150.0f, (float) statistics.getSumDoubleValue(), 0.000001f);
-
-      ByteBuffer buffer = ByteBuffer.wrap(publicBAOS.getBuf(), 0, publicBAOS.size());
-
-      // uncompressedSize
-      assertEquals(67, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-      // compressedSize
-      assertEquals(70, ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
-
-      byte[] compress = new byte[70];
-      buffer.get(compress);
-      byte[] uncompress = new byte[67];
-      IUnCompressor unCompressor = IUnCompressor.getUnCompressor(CompressionType.SNAPPY);
-      unCompressor.uncompress(compress, 0, 70, uncompress, 0);
-      ByteBuffer uncompressedBuffer = ByteBuffer.wrap(uncompress);
-
-      // bitmap
-      assertEquals(20, ReadWriteIOUtils.readInt(uncompressedBuffer));
-      assertEquals(((byte) (0xEE)), ReadWriteIOUtils.readByte(uncompressedBuffer));
-      assertEquals(((byte) (0xEE)), ReadWriteIOUtils.readByte(uncompressedBuffer));
-      assertEquals(((byte) (0xE0)), ReadWriteIOUtils.readByte(uncompressedBuffer));
-
-      for (int value = 1; value <= 20; value++) {
-        if (value % 4 != 0) {
-          assertEquals((float) value, ReadWriteIOUtils.readFloat(uncompressedBuffer), 0.000001f);
-        }
-      }
-      assertEquals(0, uncompressedBuffer.remaining());
-    } catch (IOException e) {
-      e.printStackTrace();
-      fail();
-    }
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/VectorMeasurementSchemaStub.java b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/VectorMeasurementSchemaStub.java
deleted file mode 100644
index 8faef39..0000000
--- a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/VectorMeasurementSchemaStub.java
+++ /dev/null
@@ -1,138 +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.write.writer;
-
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.PlainEncoder;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.write.schema.VectorMeasurementSchema;
-
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
-public class VectorMeasurementSchemaStub extends VectorMeasurementSchema {
-
-  @Override
-  public String getMeasurementId() {
-    return "";
-  }
-
-  @Override
-  public CompressionType getCompressor() {
-    return CompressionType.UNCOMPRESSED;
-  }
-
-  @Override
-  public TSEncoding getEncodingType() {
-    return null;
-  }
-
-  @Override
-  public TSDataType getType() {
-    return TSDataType.VECTOR;
-  }
-
-  @Override
-  public void setType(TSDataType dataType) {
-    throw new UnsupportedOperationException("unsupported method for VectorMeasurementSchema");
-  }
-
-  @Override
-  public TSEncoding getTimeTSEncoding() {
-    return TSEncoding.PLAIN;
-  }
-
-  @Override
-  public Encoder getTimeEncoder() {
-    return new PlainEncoder(TSDataType.INT64, 0);
-  }
-
-  @Override
-  public Encoder getValueEncoder() {
-    return null;
-  }
-
-  @Override
-  public Map<String, String> getProps() {
-    return null;
-  }
-
-  @Override
-  public List<String> getSubMeasurementsList() {
-    return Arrays.asList("s1", "s2", "s3");
-  }
-
-  @Override
-  public List<TSDataType> getSubMeasurementsTSDataTypeList() {
-    return Arrays.asList(TSDataType.FLOAT, TSDataType.INT32, TSDataType.DOUBLE);
-  }
-
-  @Override
-  public List<TSEncoding> getSubMeasurementsTSEncodingList() {
-    return Arrays.asList(TSEncoding.PLAIN, TSEncoding.PLAIN, TSEncoding.PLAIN);
-  }
-
-  @Override
-  public List<Encoder> getSubMeasurementsEncoderList() {
-    return Arrays.asList(
-        new PlainEncoder(TSDataType.FLOAT, 0),
-        new PlainEncoder(TSDataType.INT32, 0),
-        new PlainEncoder(TSDataType.DOUBLE, 0));
-  }
-
-  @Override
-  public int serializeTo(ByteBuffer buffer) {
-    return 0;
-  }
-
-  @Override
-  public int serializeTo(OutputStream outputStream) {
-    return 0;
-  }
-
-  @Override
-  public int partialSerializeTo(OutputStream outputStream) {
-    return 0;
-  }
-
-  @Override
-  public int partialSerializeTo(ByteBuffer buffer) {
-    return 0;
-  }
-
-  @Override
-  public int getSubMeasurementIndex(String measurementId) {
-    return 0;
-  }
-
-  @Override
-  public int getSubMeasurementsCount() {
-    return 0;
-  }
-
-  @Override
-  public boolean containsSubMeasurement(String measurementId) {
-    return false;
-  }
-}
diff --git a/iotdb-core/tsfile/src/test/resources/logback.xml b/iotdb-core/tsfile/src/test/resources/logback.xml
deleted file mode 100644
index 61cafec..0000000
--- a/iotdb-core/tsfile/src/test/resources/logback.xml
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<configuration debug="false">
-    <property name="LOG_PATH" value="target/logs"/>
-    <!-- prevent logback from outputting its own status at the start of every log -->
-    <statusListener class="ch.qos.logback.core.status.NopStatusListener"/>
-    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="FILEERROR">
-        <file>${LOG_PATH}/log_error.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
-            <fileNamePattern>${LOG_PATH}/log-error.%i.log</fileNamePattern>
-            <minIndex>1</minIndex>
-            <maxIndex>10</maxIndex>
-        </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
-            <maxFileSize>10MB</maxFileSize>
-        </triggeringPolicy>
-        <append>true</append>
-        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-            <pattern>%-5p [%d] %C:%L - %m %n</pattern>
-            <charset>utf-8</charset>
-        </encoder>
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>error</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="FILEWARN">
-        <file>${LOG_PATH}/log_warn.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
-            <fileNamePattern>${LOG_PATH}/log-warn.%i.log</fileNamePattern>
-            <minIndex>1</minIndex>
-            <maxIndex>10</maxIndex>
-        </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
-            <maxFileSize>10MB</maxFileSize>
-        </triggeringPolicy>
-        <append>true</append>
-        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-            <pattern>%-5p [%d] %C:%L - %m %n</pattern>
-            <charset>utf-8</charset>
-        </encoder>
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>WARN</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="FILEINFO">
-        <file>${LOG_PATH}/log_info.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
-            <fileNamePattern>${LOG_PATH}/log-info.%i.log</fileNamePattern>
-            <minIndex>1</minIndex>
-            <maxIndex>10</maxIndex>
-        </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
-            <maxFileSize>50MB</maxFileSize>
-        </triggeringPolicy>
-        <append>true</append>
-        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-            <pattern>%-5p [%d] %C:%L - %m %n</pattern>
-            <charset>utf-8</charset>
-        </encoder>
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>INFO</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="FILEDEBUG">
-        <file>${LOG_PATH}/log_debug.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
-            <fileNamePattern>${LOG_PATH}/log-debug.%i.log</fileNamePattern>
-            <minIndex>1</minIndex>
-            <maxIndex>10</maxIndex>
-        </rollingPolicy>
-        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
-            <maxFileSize>50MB</maxFileSize>
-        </triggeringPolicy>
-        <append>true</append>
-        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-            <pattern>%-5p [%d] %C:%L - %m %n</pattern>
-            <charset>utf-8</charset>
-        </encoder>
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>DEBUG</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-    <appender class="ch.qos.logback.core.ConsoleAppender" name="stdout">
-        <Target>System.out</Target>
-        <encoder>
-            <pattern>%-5p [%d] [%thread] %C:%L - %m %n</pattern>
-            <charset>utf-8</charset>
-        </encoder>
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <level>ERROR</level>
-        </filter>
-    </appender>
-    <!--<logger name="org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl level="debug" />-->
-    <root level="INFO">
-        <appender-ref ref="stdout"/>
-    </root>
-</configuration>
diff --git a/library-udf/pom.xml b/library-udf/pom.xml
index 388fc3d..b2974a8 100644
--- a/library-udf/pom.xml
+++ b/library-udf/pom.xml
@@ -34,9 +34,9 @@
     </properties>
     <dependencies>
         <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>common-api</artifactId>
-            <version>1.3.2-SNAPSHOT</version>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>common</artifactId>
+            <version>${tsfile.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/library-udf/src/main/java/org/apache/iotdb/library/string/UDTFRegexMatch.java b/library-udf/src/main/java/org/apache/iotdb/library/string/UDTFRegexMatch.java
index 2055d4a..7cd961c 100644
--- a/library-udf/src/main/java/org/apache/iotdb/library/string/UDTFRegexMatch.java
+++ b/library-udf/src/main/java/org/apache/iotdb/library/string/UDTFRegexMatch.java
@@ -19,9 +19,6 @@
 
 package org.apache.iotdb.library.string;
 
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -31,6 +28,10 @@
 import org.apache.iotdb.udf.api.customizer.strategy.MappableRowByRowAccessStrategy;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.utils.Binary;
+
 import java.io.IOException;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
diff --git a/library-udf/src/main/java/org/apache/iotdb/library/string/UDTFRegexReplace.java b/library-udf/src/main/java/org/apache/iotdb/library/string/UDTFRegexReplace.java
index aadaa8e..b2b584c 100644
--- a/library-udf/src/main/java/org/apache/iotdb/library/string/UDTFRegexReplace.java
+++ b/library-udf/src/main/java/org/apache/iotdb/library/string/UDTFRegexReplace.java
@@ -19,9 +19,6 @@
 
 package org.apache.iotdb.library.string;
 
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -31,6 +28,9 @@
 import org.apache.iotdb.udf.api.customizer.strategy.MappableRowByRowAccessStrategy;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.utils.Binary;
 import org.eclipse.collections.impl.list.mutable.primitive.IntArrayList;
 
 import java.io.IOException;
diff --git a/library-udf/src/main/java/org/apache/iotdb/library/string/UDTFRegexSplit.java b/library-udf/src/main/java/org/apache/iotdb/library/string/UDTFRegexSplit.java
index 65f6ec4..d7df10f 100644
--- a/library-udf/src/main/java/org/apache/iotdb/library/string/UDTFRegexSplit.java
+++ b/library-udf/src/main/java/org/apache/iotdb/library/string/UDTFRegexSplit.java
@@ -19,9 +19,6 @@
 
 package org.apache.iotdb.library.string;
 
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -31,6 +28,10 @@
 import org.apache.iotdb.udf.api.customizer.strategy.MappableRowByRowAccessStrategy;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.utils.Binary;
+
 import java.io.IOException;
 
 /** This function splits string from an input series according to given regex. */
diff --git a/library-udf/src/main/java/org/apache/iotdb/library/string/UDTFStrReplace.java b/library-udf/src/main/java/org/apache/iotdb/library/string/UDTFStrReplace.java
index d88f85f..2a50b19 100644
--- a/library-udf/src/main/java/org/apache/iotdb/library/string/UDTFStrReplace.java
+++ b/library-udf/src/main/java/org/apache/iotdb/library/string/UDTFStrReplace.java
@@ -19,9 +19,6 @@
 
 package org.apache.iotdb.library.string;
 
-import org.apache.iotdb.tsfile.read.common.block.column.Column;
-import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
-import org.apache.iotdb.tsfile.utils.Binary;
 import org.apache.iotdb.udf.api.UDTF;
 import org.apache.iotdb.udf.api.access.Row;
 import org.apache.iotdb.udf.api.collector.PointCollector;
@@ -31,6 +28,10 @@
 import org.apache.iotdb.udf.api.customizer.strategy.MappableRowByRowAccessStrategy;
 import org.apache.iotdb.udf.api.type.Type;
 
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.utils.Binary;
+
 import java.io.IOException;
 
 /** This function does limited times of replacement of substring from an input series. */
diff --git a/pom.xml b/pom.xml
index 28ff0ad..118ce6f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -187,6 +187,7 @@
         <xz.version>1.9</xz.version>
         <zeppelin.version>0.11.1</zeppelin.version>
         <zstd-jni.version>1.5.5-5</zstd-jni.version>
+        <tsfile.version>1.0.1-4ab90f6-SNAPSHOT</tsfile.version>
     </properties>
     <!--
     if we claim dependencies in dependencyManagement, then we do not claim