You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2021/11/01 12:00:11 UTC

[iotdb] 01/02: remove if instance of

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

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

commit b763e96ec77b6c2903eec80e8e9068600a9eeb0a
Author: JackieTien97 <Ja...@foxmail.com>
AuthorDate: Mon Nov 1 19:53:45 2021 +0800

    remove if instance of
---
 .../db/engine/querycontext/ReadOnlyMemChunk.java   |   4 +-
 .../db/engine/storagegroup/TsFileProcessor.java    |   2 +-
 .../db/engine/storagegroup/TsFileResource.java     | 160 ++++-----------------
 .../apache/iotdb/db/metadata/path/AlignedPath.java |  90 +++++++++++-
 .../iotdb/db/metadata/path/MeasurementPath.java    |  48 ++++++-
 .../apache/iotdb/db/metadata/path/PartialPath.java |  29 ++--
 .../iotdb/db/query/reader/chunk/MemPageReader.java |   8 +-
 .../iotdb/db/query/reader/series/SeriesReader.java |  20 +--
 .../org/apache/iotdb/db/utils/FileLoaderUtils.java |  44 +++---
 ...hunkMetadata.java => AlignedChunkMetadata.java} |   4 +-
 ...etadata.java => AlignedTimeSeriesMetadata.java} |   6 +-
 ...torChunkReader.java => AlignedChunkReader.java} |  16 +--
 ...ectorPageReader.java => AlignedPageReader.java} |   4 +-
 .../write/schema/VectorMeasurementSchema.java      |   4 +-
 14 files changed, 227 insertions(+), 212 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java b/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java
index bdd9e3b..f15e25c 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java
@@ -25,7 +25,7 @@ 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.VectorChunkMetadata;
+import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
 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;
@@ -203,7 +203,7 @@ public class ReadOnlyMemChunk {
       valueStatistic.setEmpty(isEmpty());
     }
     IChunkMetadata vectorChunkMetadata =
-        new VectorChunkMetadata(timeChunkMetadata, valueChunkMetadataList);
+        new AlignedChunkMetadata(timeChunkMetadata, valueChunkMetadataList);
     vectorChunkMetadata.setChunkLoader(new MemChunkLoader(this));
     vectorChunkMetadata.setVersion(Long.MAX_VALUE);
     cachedMetaData = vectorChunkMetadata;
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
index 0c7c227..dbdc859 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
@@ -1281,7 +1281,7 @@ public class TsFileProcessor {
       // get in memory data
       if (!readOnlyMemChunks.isEmpty() || !chunkMetadataList.isEmpty()) {
         tsfileResourcesForQuery.add(
-            new TsFileResource(readOnlyMemChunks, chunkMetadataList, tsFileResource));
+            fullPath.createTsFileResource(readOnlyMemChunks, chunkMetadataList, tsFileResource));
       }
     } catch (QueryProcessException e) {
       logger.error(
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
index 11a9538..a2b532e 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
@@ -18,6 +18,24 @@
  */
 package org.apache.iotdb.db.engine.storagegroup;
 
+import static org.apache.iotdb.db.conf.IoTDBConstant.FILE_NAME_SEPARATOR;
+import static org.apache.iotdb.db.engine.storagegroup.TsFileNameGenerator.getTsFileName;
+import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.TSFILE_SUFFIX;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.FileAlreadyExistsException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Random;
+import java.util.Set;
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.modification.ModificationFile;
@@ -36,40 +54,14 @@ import org.apache.iotdb.db.utils.TestOnly;
 import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
 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.file.metadata.VectorChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.VectorTimeSeriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
 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.ReadWriteIOUtils;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Serializable;
-import java.nio.file.FileAlreadyExistsException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Random;
-import java.util.Set;
-
-import static org.apache.iotdb.db.conf.IoTDBConstant.FILE_NAME_SEPARATOR;
-import static org.apache.iotdb.db.engine.storagegroup.TsFileNameGenerator.getTsFileName;
-import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.TSFILE_SUFFIX;
-
 @SuppressWarnings("java:S1135") // ignore todos
 public class TsFileResource {
 
@@ -112,11 +104,10 @@ public class TsFileResource {
 
   private TsFileLock tsFileLock = new TsFileLock();
 
-  private Random random = new Random();
+  private final Random random = new Random();
 
   private boolean isSeq;
 
-  private Map<String, Integer> holderMap = new HashMap<>();
 
   /**
    * Chunk metadata list of unsealed tsfile. Only be set in a temporal TsFileResource in a query
@@ -173,7 +164,6 @@ public class TsFileResource {
     this.isMerging = other.isMerging;
     this.chunkMetadataList = other.chunkMetadataList;
     this.readOnlyMemChunk = other.readOnlyMemChunk;
-    generateTimeSeriesMetadata();
     this.tsFileLock = other.tsFileLock;
     this.fsFactory = other.fsFactory;
     this.maxPlanIndex = other.maxPlanIndex;
@@ -211,7 +201,6 @@ public class TsFileResource {
     this.readOnlyMemChunk = readOnlyMemChunk;
     this.originTsFileResource = originTsFileResource;
     this.version = originTsFileResource.version;
-    generateTimeSeriesMetadata();
   }
 
   @TestOnly
@@ -222,112 +211,6 @@ public class TsFileResource {
     this.timeIndexType = 1;
   }
 
-  /**
-   * Because the unclosed tsfile don't have TimeSeriesMetadata and memtables in the memory don't
-   * have chunkMetadata, but query will use these, so we need to generate it for them.
-   */
-  @SuppressWarnings("squid:S3776") // high Cognitive Complexity
-  private void generateTimeSeriesMetadata() throws IOException {
-    TimeseriesMetadata timeTimeSeriesMetadata = new TimeseriesMetadata();
-    timeTimeSeriesMetadata.setOffsetOfChunkMetaDataList(-1);
-    timeTimeSeriesMetadata.setDataSizeOfChunkMetaDataList(-1);
-
-    if (!(chunkMetadataList == null || chunkMetadataList.isEmpty())) {
-      timeTimeSeriesMetadata.setMeasurementId(chunkMetadataList.get(0).getMeasurementUid());
-      TSDataType dataType = chunkMetadataList.get(0).getDataType();
-      timeTimeSeriesMetadata.setTSDataType(dataType);
-    } else if (!(readOnlyMemChunk == null || readOnlyMemChunk.isEmpty())) {
-      timeTimeSeriesMetadata.setMeasurementId(readOnlyMemChunk.get(0).getMeasurementUid());
-      TSDataType dataType = readOnlyMemChunk.get(0).getDataType();
-      timeTimeSeriesMetadata.setTSDataType(dataType);
-    }
-    if (timeTimeSeriesMetadata.getTSDataType() != null) {
-      if (timeTimeSeriesMetadata.getTSDataType() == TSDataType.VECTOR) {
-        Statistics<? extends Serializable> timeStatistics =
-            Statistics.getStatsByType(timeTimeSeriesMetadata.getTSDataType());
-
-        List<TimeseriesMetadata> valueTimeSeriesMetadataList = new ArrayList<>();
-
-        if (!(chunkMetadataList == null || chunkMetadataList.isEmpty())) {
-          VectorChunkMetadata vectorChunkMetadata = (VectorChunkMetadata) chunkMetadataList.get(0);
-          for (IChunkMetadata valueChunkMetadata :
-              vectorChunkMetadata.getValueChunkMetadataList()) {
-            TimeseriesMetadata valueMetadata = new TimeseriesMetadata();
-            valueMetadata.setOffsetOfChunkMetaDataList(-1);
-            valueMetadata.setDataSizeOfChunkMetaDataList(-1);
-            valueMetadata.setMeasurementId(valueChunkMetadata.getMeasurementUid());
-            valueMetadata.setTSDataType(valueChunkMetadata.getDataType());
-            valueTimeSeriesMetadataList.add(valueMetadata);
-            valueMetadata.setStatistics(
-                Statistics.getStatsByType(valueChunkMetadata.getDataType()));
-          }
-        } else if (!(readOnlyMemChunk == null || readOnlyMemChunk.isEmpty())) {
-          VectorChunkMetadata vectorChunkMetadata =
-              (VectorChunkMetadata) readOnlyMemChunk.get(0).getChunkMetaData();
-          for (IChunkMetadata valueChunkMetadata :
-              vectorChunkMetadata.getValueChunkMetadataList()) {
-            TimeseriesMetadata valueMetadata = new TimeseriesMetadata();
-            valueMetadata.setOffsetOfChunkMetaDataList(-1);
-            valueMetadata.setDataSizeOfChunkMetaDataList(-1);
-            valueMetadata.setMeasurementId(valueChunkMetadata.getMeasurementUid());
-            valueMetadata.setTSDataType(valueChunkMetadata.getDataType());
-            valueTimeSeriesMetadataList.add(valueMetadata);
-            valueMetadata.setStatistics(
-                Statistics.getStatsByType(valueChunkMetadata.getDataType()));
-          }
-        }
-
-        for (IChunkMetadata chunkMetadata : chunkMetadataList) {
-          VectorChunkMetadata vectorChunkMetadata = (VectorChunkMetadata) chunkMetadata;
-          timeStatistics.mergeStatistics(
-              vectorChunkMetadata.getTimeChunkMetadata().getStatistics());
-          for (int i = 0; i < valueTimeSeriesMetadataList.size(); i++) {
-            valueTimeSeriesMetadataList
-                .get(i)
-                .getStatistics()
-                .mergeStatistics(
-                    vectorChunkMetadata.getValueChunkMetadataList().get(i).getStatistics());
-          }
-        }
-
-        for (ReadOnlyMemChunk memChunk : readOnlyMemChunk) {
-          if (!memChunk.isEmpty()) {
-            VectorChunkMetadata vectorChunkMetadata =
-                (VectorChunkMetadata) memChunk.getChunkMetaData();
-            timeStatistics.mergeStatistics(
-                vectorChunkMetadata.getTimeChunkMetadata().getStatistics());
-            for (int i = 0; i < valueTimeSeriesMetadataList.size(); i++) {
-              valueTimeSeriesMetadataList
-                  .get(i)
-                  .getStatistics()
-                  .mergeStatistics(
-                      vectorChunkMetadata.getValueChunkMetadataList().get(i).getStatistics());
-            }
-          }
-        }
-        timeTimeSeriesMetadata.setStatistics(timeStatistics);
-        timeSeriesMetadata =
-            new VectorTimeSeriesMetadata(timeTimeSeriesMetadata, valueTimeSeriesMetadataList);
-      } else {
-        Statistics<? extends Serializable> seriesStatistics =
-            Statistics.getStatsByType(timeTimeSeriesMetadata.getTSDataType());
-        // flush chunkMetadataList one by one
-        for (IChunkMetadata chunkMetadata : chunkMetadataList) {
-          seriesStatistics.mergeStatistics(chunkMetadata.getStatistics());
-        }
-
-        for (ReadOnlyMemChunk memChunk : readOnlyMemChunk) {
-          if (!memChunk.isEmpty()) {
-            seriesStatistics.mergeStatistics(memChunk.getChunkMetaData().getStatistics());
-          }
-        }
-        timeTimeSeriesMetadata.setStatistics(seriesStatistics);
-        this.timeSeriesMetadata = timeTimeSeriesMetadata;
-      }
-    } else {
-      this.timeSeriesMetadata = null;
-    }
-  }
 
   public synchronized void serialize() throws IOException {
     try (OutputStream outputStream =
@@ -702,6 +585,11 @@ public class TsFileResource {
     return timeSeriesMetadata;
   }
 
+  public void setTimeSeriesMetadata(
+      ITimeSeriesMetadata timeSeriesMetadata) {
+    this.timeSeriesMetadata = timeSeriesMetadata;
+  }
+
   public void setUpgradedResources(List<TsFileResource> upgradedResources) {
     this.upgradedResources = upgradedResources;
   }
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/path/AlignedPath.java b/server/src/main/java/org/apache/iotdb/db/metadata/path/AlignedPath.java
index 4d3640d..ce3ce57 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/path/AlignedPath.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/path/AlignedPath.java
@@ -19,25 +19,32 @@
 
 package org.apache.iotdb.db.metadata.path;
 
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
 import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
+import org.apache.iotdb.db.engine.querycontext.ReadOnlyMemChunk;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.query.context.QueryContext;
 import org.apache.iotdb.db.query.filter.TsFileFilter;
 import org.apache.iotdb.db.query.reader.series.AlignedSeriesReader;
 import org.apache.iotdb.db.utils.TestOnly;
+import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
+import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
+import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.iotdb.tsfile.file.metadata.AlignedTimeSeriesMetadata;
 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.filter.basic.Filter;
 import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
 import org.apache.iotdb.tsfile.write.schema.VectorMeasurementSchema;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-
 /**
  * VectorPartialPath represents a vector's fullPath. It not only contains the full path of vector's
  * own name, but also has subSensorsList which contain all the fullPath of vector's sub sensors.
@@ -225,4 +232,75 @@ public class AlignedPath extends PartialPath {
         valueFilter,
         ascending);
   }
+
+  @Override
+  public TsFileResource createTsFileResource(List<ReadOnlyMemChunk> readOnlyMemChunk,
+      List<IChunkMetadata> chunkMetadataList, TsFileResource originTsFileResource)
+      throws IOException {
+    TsFileResource tsFileResource = new TsFileResource(readOnlyMemChunk, chunkMetadataList, originTsFileResource);
+    tsFileResource.setTimeSeriesMetadata(generateTimeSeriesMetadata(readOnlyMemChunk, chunkMetadataList));
+    return tsFileResource;
+  }
+
+  /**
+   * Because the unclosed tsfile don't have TimeSeriesMetadata and memtables in the memory don't
+   * have chunkMetadata, but query will use these, so we need to generate it for them.
+   */
+  private AlignedTimeSeriesMetadata generateTimeSeriesMetadata(List<ReadOnlyMemChunk> readOnlyMemChunk,
+      List<IChunkMetadata> chunkMetadataList) throws IOException {
+    TimeseriesMetadata timeTimeSeriesMetadata = new TimeseriesMetadata();
+    timeTimeSeriesMetadata.setOffsetOfChunkMetaDataList(-1);
+    timeTimeSeriesMetadata.setDataSizeOfChunkMetaDataList(-1);
+    timeTimeSeriesMetadata.setMeasurementId("");
+    timeTimeSeriesMetadata.setTSDataType(TSDataType.INT64);
+
+
+    Statistics<? extends Serializable> timeStatistics =
+        Statistics.getStatsByType(timeTimeSeriesMetadata.getTSDataType());
+
+    // init each value time series meta
+    List<TimeseriesMetadata> valueTimeSeriesMetadataList = new ArrayList<>();
+    for (IMeasurementSchema valueChunkMetadata : schemaList) {
+      TimeseriesMetadata valueMetadata = new TimeseriesMetadata();
+      valueMetadata.setOffsetOfChunkMetaDataList(-1);
+      valueMetadata.setDataSizeOfChunkMetaDataList(-1);
+      valueMetadata.setMeasurementId(valueChunkMetadata.getMeasurementId());
+      valueMetadata.setTSDataType(valueChunkMetadata.getType());
+      valueMetadata.setStatistics(
+          Statistics.getStatsByType(valueChunkMetadata.getType()));
+      valueTimeSeriesMetadataList.add(valueMetadata);
+    }
+
+    for (IChunkMetadata chunkMetadata : chunkMetadataList) {
+      AlignedChunkMetadata alignedChunkMetadata = (AlignedChunkMetadata) chunkMetadata;
+      timeStatistics.mergeStatistics(
+          alignedChunkMetadata.getTimeChunkMetadata().getStatistics());
+      for (int i = 0; i < valueTimeSeriesMetadataList.size(); i++) {
+        valueTimeSeriesMetadataList
+            .get(i)
+            .getStatistics()
+            .mergeStatistics(
+                alignedChunkMetadata.getValueChunkMetadataList().get(i).getStatistics());
+      }
+    }
+
+    for (ReadOnlyMemChunk memChunk : readOnlyMemChunk) {
+      if (!memChunk.isEmpty()) {
+        AlignedChunkMetadata alignedChunkMetadata =
+            (AlignedChunkMetadata) memChunk.getChunkMetaData();
+        timeStatistics.mergeStatistics(
+            alignedChunkMetadata.getTimeChunkMetadata().getStatistics());
+        for (int i = 0; i < valueTimeSeriesMetadataList.size(); i++) {
+          valueTimeSeriesMetadataList
+              .get(i)
+              .getStatistics()
+              .mergeStatistics(
+                  alignedChunkMetadata.getValueChunkMetadataList().get(i).getStatistics());
+        }
+      }
+    }
+    timeTimeSeriesMetadata.setStatistics(timeStatistics);
+
+    return new AlignedTimeSeriesMetadata(timeTimeSeriesMetadata, valueTimeSeriesMetadataList);
+  }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/path/MeasurementPath.java b/server/src/main/java/org/apache/iotdb/db/metadata/path/MeasurementPath.java
index b328990..4fb5b07 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/path/MeasurementPath.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/path/MeasurementPath.java
@@ -18,21 +18,26 @@
  */
 package org.apache.iotdb.db.metadata.path;
 
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.List;
+import java.util.Set;
 import org.apache.iotdb.db.conf.IoTDBConstant;
 import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
+import org.apache.iotdb.db.engine.querycontext.ReadOnlyMemChunk;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.query.context.QueryContext;
 import org.apache.iotdb.db.query.filter.TsFileFilter;
 import org.apache.iotdb.db.query.reader.series.SeriesReader;
 import org.apache.iotdb.db.utils.TestOnly;
+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.file.metadata.statistics.Statistics;
 import org.apache.iotdb.tsfile.read.filter.basic.Filter;
 import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
 
-import java.util.List;
-import java.util.Set;
-
 public class MeasurementPath extends PartialPath {
 
   private IMeasurementSchema measurementSchema;
@@ -140,4 +145,41 @@ public class MeasurementPath extends PartialPath {
         valueFilter,
         ascending);
   }
+
+  @Override
+  public TsFileResource createTsFileResource(List<ReadOnlyMemChunk> readOnlyMemChunk,
+      List<IChunkMetadata> chunkMetadataList, TsFileResource originTsFileResource)
+      throws IOException {
+    TsFileResource tsFileResource = new TsFileResource(readOnlyMemChunk, chunkMetadataList, originTsFileResource);
+    tsFileResource.setTimeSeriesMetadata(generateTimeSeriesMetadata(readOnlyMemChunk, chunkMetadataList));
+    return tsFileResource;
+  }
+
+  /**
+   * Because the unclosed tsfile don't have TimeSeriesMetadata and memtables in the memory don't
+   * have chunkMetadata, but query will use these, so we need to generate it for them.
+   */
+  private TimeseriesMetadata generateTimeSeriesMetadata(List<ReadOnlyMemChunk> readOnlyMemChunk,
+      List<IChunkMetadata> chunkMetadataList) throws IOException {
+    TimeseriesMetadata timeSeriesMetadata = new TimeseriesMetadata();
+    timeSeriesMetadata.setMeasurementId(measurementSchema.getMeasurementId());
+    timeSeriesMetadata.setTSDataType(measurementSchema.getType());
+    timeSeriesMetadata.setOffsetOfChunkMetaDataList(-1);
+    timeSeriesMetadata.setDataSizeOfChunkMetaDataList(-1);
+
+    Statistics<? extends Serializable> seriesStatistics =
+        Statistics.getStatsByType(timeSeriesMetadata.getTSDataType());
+    // flush chunkMetadataList one by one
+    for (IChunkMetadata chunkMetadata : chunkMetadataList) {
+      seriesStatistics.mergeStatistics(chunkMetadata.getStatistics());
+    }
+
+    for (ReadOnlyMemChunk memChunk : readOnlyMemChunk) {
+      if (!memChunk.isEmpty()) {
+        seriesStatistics.mergeStatistics(memChunk.getChunkMetaData().getStatistics());
+      }
+    }
+    timeSeriesMetadata.setStatistics(seriesStatistics);
+    return timeSeriesMetadata;
+  }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/path/PartialPath.java b/server/src/main/java/org/apache/iotdb/db/metadata/path/PartialPath.java
index fde7705..f19a4fe 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/path/PartialPath.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/path/PartialPath.java
@@ -18,7 +18,18 @@
  */
 package org.apache.iotdb.db.metadata.path;
 
+import static org.apache.iotdb.db.conf.IoTDBConstant.MULTI_LEVEL_PATH_WILDCARD;
+import static org.apache.iotdb.db.conf.IoTDBConstant.ONE_LEVEL_PATH_WILDCARD;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+import java.util.regex.Pattern;
 import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
+import org.apache.iotdb.db.engine.querycontext.ReadOnlyMemChunk;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
@@ -28,24 +39,14 @@ import org.apache.iotdb.db.query.filter.TsFileFilter;
 import org.apache.iotdb.db.query.reader.series.SeriesReader;
 import org.apache.iotdb.db.utils.TestOnly;
 import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
+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.filter.basic.Filter;
 import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-import static org.apache.iotdb.db.conf.IoTDBConstant.MULTI_LEVEL_PATH_WILDCARD;
-import static org.apache.iotdb.db.conf.IoTDBConstant.ONE_LEVEL_PATH_WILDCARD;
-
 /**
  * A prefix path, suffix path or fullPath generated from SQL. Usually used in the IoTDB server
  * module
@@ -387,4 +388,10 @@ public class PartialPath extends Path implements Comparable<Path> {
       boolean ascending) {
     throw new UnsupportedOperationException("Should call exact sub class!");
   }
+
+  public TsFileResource createTsFileResource(List<ReadOnlyMemChunk> readOnlyMemChunk,
+      List<IChunkMetadata> chunkMetadataList, TsFileResource originTsFileResource)
+      throws IOException {
+    throw new UnsupportedOperationException("Should call exact sub class!");
+  }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/MemPageReader.java b/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/MemPageReader.java
index f123ad7..5c42d81 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/MemPageReader.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/MemPageReader.java
@@ -19,7 +19,7 @@
 package org.apache.iotdb.db.query.reader.chunk;
 
 import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.VectorChunkMetadata;
+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.TimeValuePair;
@@ -48,10 +48,10 @@ public class MemPageReader implements IPageReader {
   @Override
   public BatchData getAllSatisfiedPageData(boolean ascending) throws IOException {
     TSDataType dataType;
-    if (chunkMetadata instanceof VectorChunkMetadata
-        && ((VectorChunkMetadata) chunkMetadata).getValueChunkMetadataList().size() == 1) {
+    if (chunkMetadata instanceof AlignedChunkMetadata
+        && ((AlignedChunkMetadata) chunkMetadata).getValueChunkMetadataList().size() == 1) {
       dataType =
-          ((VectorChunkMetadata) chunkMetadata).getValueChunkMetadataList().get(0).getDataType();
+          ((AlignedChunkMetadata) chunkMetadata).getValueChunkMetadataList().get(0).getDataType();
     } else {
       dataType = chunkMetadata.getDataType();
     }
diff --git a/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReader.java b/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReader.java
index 5dda91a..36d3680 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReader.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReader.java
@@ -33,8 +33,8 @@ import org.apache.iotdb.db.utils.QueryUtils;
 import org.apache.iotdb.db.utils.TestOnly;
 import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
 import org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.VectorChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.VectorTimeSeriesMetadata;
+import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.iotdb.tsfile.file.metadata.AlignedTimeSeriesMetadata;
 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;
@@ -43,7 +43,7 @@ import org.apache.iotdb.tsfile.read.common.BatchDataFactory;
 import org.apache.iotdb.tsfile.read.filter.basic.Filter;
 import org.apache.iotdb.tsfile.read.filter.basic.UnaryFilter;
 import org.apache.iotdb.tsfile.read.reader.IPageReader;
-import org.apache.iotdb.tsfile.read.reader.page.VectorPageReader;
+import org.apache.iotdb.tsfile.read.reader.page.AlignedPageReader;
 
 import java.io.IOException;
 import java.io.Serializable;
@@ -276,10 +276,10 @@ public class SeriesReader {
   }
 
   Statistics currentFileStatistics(int index) throws IOException {
-    if (!(firstTimeSeriesMetadata instanceof VectorTimeSeriesMetadata)) {
+    if (!(firstTimeSeriesMetadata instanceof AlignedTimeSeriesMetadata)) {
       throw new IOException("Can only get statistics by index from vectorTimeSeriesMetaData");
     }
-    return ((VectorTimeSeriesMetadata) firstTimeSeriesMetadata).getStatistics(index);
+    return ((AlignedTimeSeriesMetadata) firstTimeSeriesMetadata).getStatistics(index);
   }
 
   boolean currentFileModified() throws IOException {
@@ -409,10 +409,10 @@ public class SeriesReader {
   }
 
   Statistics currentChunkStatistics(int index) throws IOException {
-    if (!(firstChunkMetadata instanceof VectorChunkMetadata)) {
+    if (!(firstChunkMetadata instanceof AlignedChunkMetadata)) {
       throw new IOException("Can only get statistics by index from vectorChunkMetaData");
     }
-    return ((VectorChunkMetadata) firstChunkMetadata).getStatistics(index);
+    return ((AlignedChunkMetadata) firstChunkMetadata).getStatistics(index);
   }
 
   boolean currentChunkModified() throws IOException {
@@ -1071,7 +1071,7 @@ public class SeriesReader {
     }
 
     public boolean isVectorPageReader() {
-      return data instanceof VectorPageReader;
+      return data instanceof AlignedPageReader;
     }
 
     Statistics getStatistics() {
@@ -1079,10 +1079,10 @@ public class SeriesReader {
     }
 
     Statistics getStatistics(int index) throws IOException {
-      if (!(data instanceof VectorPageReader)) {
+      if (!(data instanceof AlignedPageReader)) {
         throw new IOException("Can only get statistics by index from VectorPageReader");
       }
-      return ((VectorPageReader) data).getStatistics(index);
+      return ((AlignedPageReader) data).getStatistics(index);
     }
 
     BatchData getAllSatisfiedPageData(boolean ascending) throws IOException {
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/FileLoaderUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/FileLoaderUtils.java
index f4e1b67..96ffe0d 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/FileLoaderUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/FileLoaderUtils.java
@@ -33,8 +33,8 @@ 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.iotdb.tsfile.file.metadata.VectorChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.VectorTimeSeriesMetadata;
+import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
+import org.apache.iotdb.tsfile.file.metadata.AlignedTimeSeriesMetadata;
 import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
 import org.apache.iotdb.tsfile.read.common.Chunk;
 import org.apache.iotdb.tsfile.read.common.Path;
@@ -43,7 +43,7 @@ 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.chunk.ChunkReader;
-import org.apache.iotdb.tsfile.read.reader.chunk.VectorChunkReader;
+import org.apache.iotdb.tsfile.read.reader.chunk.AlignedChunkReader;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -154,14 +154,14 @@ public class FileLoaderUtils {
    *     [root.sg1.d1.vector.s1, root.sg1.d1.vector.s2])
    * @param allSensors all sensors belonging to this device that appear in query
    */
-  public static VectorTimeSeriesMetadata loadTimeSeriesMetadata(
+  public static AlignedTimeSeriesMetadata loadTimeSeriesMetadata(
       TsFileResource resource,
       AlignedPath vectorPath,
       QueryContext context,
       Filter filter,
       Set<String> allSensors)
       throws IOException {
-    VectorTimeSeriesMetadata vectorTimeSeriesMetadata = null;
+    AlignedTimeSeriesMetadata alignedTimeSeriesMetadata = null;
     // If the tsfile is closed, we need to load from tsfile
     if (resource.isClosed()) {
       if (!resource.getTsFile().exists()) {
@@ -194,35 +194,35 @@ public class FileLoaderUtils {
               .setChunkMetadataLoader(
                   new DiskChunkMetadataLoader(resource, subPath, context, filter));
         }
-        vectorTimeSeriesMetadata =
-            new VectorTimeSeriesMetadata(
+        alignedTimeSeriesMetadata =
+            new AlignedTimeSeriesMetadata(
                 timeSeriesMetadata.get(0),
                 timeSeriesMetadata.subList(1, timeSeriesMetadata.size()));
       }
     } else { // if the tsfile is unclosed, we just get it directly from TsFileResource
-      vectorTimeSeriesMetadata = (VectorTimeSeriesMetadata) resource.getTimeSeriesMetadata();
-      if (vectorTimeSeriesMetadata != null) {
-        vectorTimeSeriesMetadata.setChunkMetadataLoader(
+      alignedTimeSeriesMetadata = (AlignedTimeSeriesMetadata) resource.getTimeSeriesMetadata();
+      if (alignedTimeSeriesMetadata != null) {
+        alignedTimeSeriesMetadata.setChunkMetadataLoader(
             new MemChunkMetadataLoader(resource, vectorPath, context, filter));
       }
     }
 
-    if (vectorTimeSeriesMetadata != null) {
+    if (alignedTimeSeriesMetadata != null) {
       List<Modification> pathModifications =
           context.getPathModifications(resource.getModFile(), vectorPath);
-      vectorTimeSeriesMetadata.getTimeseriesMetadata().setModified(!pathModifications.isEmpty());
-      if (vectorTimeSeriesMetadata.getTimeseriesMetadata().getStatistics().getStartTime()
-          > vectorTimeSeriesMetadata.getTimeseriesMetadata().getStatistics().getEndTime()) {
+      alignedTimeSeriesMetadata.getTimeseriesMetadata().setModified(!pathModifications.isEmpty());
+      if (alignedTimeSeriesMetadata.getTimeseriesMetadata().getStatistics().getStartTime()
+          > alignedTimeSeriesMetadata.getTimeseriesMetadata().getStatistics().getEndTime()) {
         return null;
       }
       if (filter != null
           && !filter.satisfyStartEndTime(
-              vectorTimeSeriesMetadata.getTimeseriesMetadata().getStatistics().getStartTime(),
-              vectorTimeSeriesMetadata.getTimeseriesMetadata().getStatistics().getEndTime())) {
+              alignedTimeSeriesMetadata.getTimeseriesMetadata().getStatistics().getStartTime(),
+              alignedTimeSeriesMetadata.getTimeseriesMetadata().getStatistics().getEndTime())) {
         return null;
       }
       List<TimeseriesMetadata> valueTimeSeriesMetadataList =
-          vectorTimeSeriesMetadata.getValueTimeseriesMetadataList();
+          alignedTimeSeriesMetadata.getValueTimeseriesMetadataList();
       for (int i = 0; i < valueTimeSeriesMetadataList.size(); i++) {
         pathModifications =
             context.getPathModifications(
@@ -230,7 +230,7 @@ public class FileLoaderUtils {
         valueTimeSeriesMetadataList.get(i).setModified(!pathModifications.isEmpty());
       }
     }
-    return vectorTimeSeriesMetadata;
+    return alignedTimeSeriesMetadata;
   }
 
   /**
@@ -265,10 +265,10 @@ public class FileLoaderUtils {
         chunk.setFromOldFile(chunkMetaData.isFromOldTsFile());
         chunkReader = new ChunkReader(chunk, timeFilter);
       } else {
-        VectorChunkMetadata vectorChunkMetadata = (VectorChunkMetadata) chunkMetaData;
-        Chunk timeChunk = vectorChunkMetadata.getTimeChunk();
-        List<Chunk> valueChunkList = vectorChunkMetadata.getValueChunkList();
-        chunkReader = new VectorChunkReader(timeChunk, valueChunkList, timeFilter);
+        AlignedChunkMetadata alignedChunkMetadata = (AlignedChunkMetadata) chunkMetaData;
+        Chunk timeChunk = alignedChunkMetadata.getTimeChunk();
+        List<Chunk> valueChunkList = alignedChunkMetadata.getValueChunkList();
+        chunkReader = new AlignedChunkReader(timeChunk, valueChunkList, timeFilter);
       }
     }
     return chunkReader.loadPageReaderList();
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/VectorChunkMetadata.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedChunkMetadata.java
similarity index 98%
rename from tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/VectorChunkMetadata.java
rename to tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedChunkMetadata.java
index 2bfda53..f42bb3c 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/VectorChunkMetadata.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedChunkMetadata.java
@@ -29,14 +29,14 @@ import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.List;
 
-public class VectorChunkMetadata implements IChunkMetadata {
+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;
 
-  public VectorChunkMetadata(
+  public AlignedChunkMetadata(
       IChunkMetadata timeChunkMetadata, List<IChunkMetadata> valueChunkMetadataList) {
     this.timeChunkMetadata = timeChunkMetadata;
     this.valueChunkMetadataList = valueChunkMetadataList;
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/VectorTimeSeriesMetadata.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedTimeSeriesMetadata.java
similarity index 95%
rename from tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/VectorTimeSeriesMetadata.java
rename to tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedTimeSeriesMetadata.java
index c3d727f..b2a21ec 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/VectorTimeSeriesMetadata.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedTimeSeriesMetadata.java
@@ -25,14 +25,14 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-public class VectorTimeSeriesMetadata implements ITimeSeriesMetadata {
+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;
 
-  public VectorTimeSeriesMetadata(
+  public AlignedTimeSeriesMetadata(
       TimeseriesMetadata timeseriesMetadata, List<TimeseriesMetadata> valueTimeseriesMetadataList) {
     this.timeseriesMetadata = timeseriesMetadata;
     this.valueTimeseriesMetadataList = valueTimeseriesMetadataList;
@@ -105,7 +105,7 @@ public class VectorTimeSeriesMetadata implements ITimeSeriesMetadata {
         for (List<IChunkMetadata> chunkMetadata : valueChunkMetadataList) {
           chunkMetadataList.add(chunkMetadata.get(i));
         }
-        res.add(new VectorChunkMetadata(timeChunkMetadata.get(i), chunkMetadataList));
+        res.add(new AlignedChunkMetadata(timeChunkMetadata.get(i), chunkMetadataList));
       }
       return res;
     }
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/VectorChunkReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AlignedChunkReader.java
similarity index 95%
rename from tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/VectorChunkReader.java
rename to tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AlignedChunkReader.java
index 3cb62c8..8afd569 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/VectorChunkReader.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AlignedChunkReader.java
@@ -33,7 +33,7 @@ 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.IPageReader;
-import org.apache.iotdb.tsfile.read.reader.page.VectorPageReader;
+import org.apache.iotdb.tsfile.read.reader.page.AlignedPageReader;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
@@ -41,7 +41,7 @@ import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 
-public class VectorChunkReader implements IChunkReader {
+public class AlignedChunkReader implements IChunkReader {
 
   // chunk header of the time column
   private final ChunkHeader timeChunkHeader;
@@ -69,7 +69,7 @@ public class VectorChunkReader implements IChunkReader {
    *
    * @param filter filter
    */
-  public VectorChunkReader(Chunk timeChunk, List<Chunk> valueChunkList, Filter filter)
+  public AlignedChunkReader(Chunk timeChunk, List<Chunk> valueChunkList, Filter filter)
       throws IOException {
     this.filter = filter;
     this.timeChunkDataBuffer = timeChunk.getData();
@@ -142,7 +142,7 @@ public class VectorChunkReader implements IChunkReader {
     return filter == null || filter.satisfy(pageHeader.getStatistics());
   }
 
-  private VectorPageReader constructPageReaderForNextPage(
+  private AlignedPageReader constructPageReaderForNextPage(
       PageHeader timePageHeader, List<PageHeader> valuePageHeader) throws IOException {
     PageInfo timePageInfo = new PageInfo();
     getPageInfo(timePageHeader, timeChunkDataBuffer, timeChunkHeader, timePageInfo);
@@ -175,8 +175,8 @@ public class VectorChunkReader implements IChunkReader {
         valueDecoderList.add(null);
       }
     }
-    VectorPageReader vectorPageReader =
-        new VectorPageReader(
+    AlignedPageReader alignedPageReader =
+        new AlignedPageReader(
             timePageHeader,
             timePageInfo.pageData,
             timeDecoder,
@@ -185,8 +185,8 @@ public class VectorChunkReader implements IChunkReader {
             valueDataTypeList,
             valueDecoderList,
             filter);
-    vectorPageReader.setDeleteIntervalList(valueDeleteIntervalList);
-    return vectorPageReader;
+    alignedPageReader.setDeleteIntervalList(valueDeleteIntervalList);
+    return alignedPageReader;
   }
 
   /**
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/VectorPageReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/AlignedPageReader.java
similarity index 98%
rename from tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/VectorPageReader.java
rename to tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/AlignedPageReader.java
index 4c5290c..b4549f9 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/VectorPageReader.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/AlignedPageReader.java
@@ -34,7 +34,7 @@ import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.List;
 
-public class VectorPageReader implements IPageReader {
+public class AlignedPageReader implements IPageReader {
 
   private final TimePageReader timePageReader;
   private final List<ValuePageReader> valuePageReaderList;
@@ -42,7 +42,7 @@ public class VectorPageReader implements IPageReader {
   private Filter filter;
   private boolean isModified;
 
-  public VectorPageReader(
+  public AlignedPageReader(
       PageHeader timePageHeader,
       ByteBuffer timePageData,
       Decoder timeDecoder,
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/VectorMeasurementSchema.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/VectorMeasurementSchema.java
index e6bae26..e8a5c55 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/VectorMeasurementSchema.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/VectorMeasurementSchema.java
@@ -24,7 +24,7 @@ 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.VectorChunkMetadata;
+import org.apache.iotdb.tsfile.file.metadata.AlignedChunkMetadata;
 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;
@@ -286,7 +286,7 @@ public class VectorMeasurementSchema
         valueChunkMetadata.add(chunkMetadata.get(i));
       }
       chunkMetadataList.add(
-          new VectorChunkMetadata(timeChunkMetadataList.get(i), valueChunkMetadata));
+          new AlignedChunkMetadata(timeChunkMetadataList.get(i), valueChunkMetadata));
     }
     return chunkMetadataList;
   }