You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by xi...@apache.org on 2021/06/29 07:53:27 UTC

[iotdb] 01/01: seperate getAllTimeSeries from show timeseries

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

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

commit 9f219c4f0f6552184a21cdc3e5152108140dd329
Author: Alima777 <wx...@gmail.com>
AuthorDate: Tue Jun 29 15:52:48 2021 +0800

    seperate getAllTimeSeries from show timeseries
---
 .../apache/iotdb/cluster/metadata/CMManager.java   |   2 +-
 .../iotdb/AlignedTimeseriesSessionExample.java     |   4 +-
 .../iotdb/db/engine/memtable/AbstractMemTable.java |  16 +-
 .../db/engine/memtable/PrimitiveMemTable.java      |   2 +-
 .../db/engine/querycontext/ReadOnlyMemChunk.java   |  18 +-
 .../engine/storagegroup/StorageGroupProcessor.java |   2 +-
 .../db/engine/storagegroup/TsFileProcessor.java    |  20 +-
 .../org/apache/iotdb/db/metadata/MManager.java     |  43 +--
 .../java/org/apache/iotdb/db/metadata/MTree.java   | 352 +++++++++++++--------
 .../iotdb/db/metadata/VectorPartialPath.java       |   1 -
 .../iotdb/db/metadata/mnode/MeasurementMNode.java  |   4 +-
 .../iotdb/db/metadata/template/Template.java       |   2 +-
 .../iotdb/db/qp/logical/crud/QueryOperator.java    |   2 +-
 .../iotdb/db/qp/physical/crud/InsertRowPlan.java   |   2 +-
 .../db/qp/physical/crud/RawDataQueryPlan.java      |   2 +-
 .../java/org/apache/iotdb/db/utils/MemUtils.java   |   2 +-
 .../iotdb/db/writelog/recover/LogReplayer.java     |   4 +-
 .../iotdb/db/integration/IoTDBQueryTimeoutIT.java  |   7 +-
 .../java/org/apache/iotdb/session/Session.java     |  10 +-
 .../org/apache/iotdb/session/SessionUtils.java     |   4 +-
 .../apache/iotdb/session/IoTDBSessionSimpleIT.java |   6 +-
 .../tsfile/write/chunk/VectorChunkWriterImpl.java  |   8 +-
 .../apache/iotdb/tsfile/write/record/Tablet.java   |  16 +-
 .../tsfile/write/schema/IMeasurementSchema.java    |  10 +-
 .../tsfile/write/schema/MeasurementSchema.java     |  10 +-
 .../write/schema/VectorMeasurementSchema.java      |  64 ++--
 .../write/writer/VectorMeasurementSchemaStub.java  |  10 +-
 27 files changed, 356 insertions(+), 267 deletions(-)

diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/metadata/CMManager.java b/cluster/src/main/java/org/apache/iotdb/cluster/metadata/CMManager.java
index 170ef49..20a3225 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/metadata/CMManager.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/metadata/CMManager.java
@@ -226,7 +226,7 @@ public class CMManager extends MManager {
             new MeasurementMNode(
                 null, measurementSchema.getMeasurementId(), measurementSchema, null);
         if (measurementSchema instanceof VectorMeasurementSchema) {
-          for (String subSensorId : measurementSchema.getValueMeasurementIdList()) {
+          for (String subSensorId : measurementSchema.getSubMeasurementsList()) {
             cacheMeta(new PartialPath(path.getDevice(), subSensorId), measurementMNode, false);
           }
           cacheMeta(
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 2bbde9a..bf43a61 100644
--- a/example/session/src/main/java/org/apache/iotdb/AlignedTimeseriesSessionExample.java
+++ b/example/session/src/main/java/org/apache/iotdb/AlignedTimeseriesSessionExample.java
@@ -255,11 +255,11 @@ public class AlignedTimeseriesSessionExample {
       int rowIndex = tablet.rowSize++;
       tablet.addTimestamp(rowIndex, timestamp);
       tablet.addValue(
-          schemaList.get(0).getValueMeasurementIdList().get(0),
+          schemaList.get(0).getSubMeasurementsList().get(0),
           rowIndex,
           new SecureRandom().nextLong());
       tablet.addValue(
-          schemaList.get(0).getValueMeasurementIdList().get(1),
+          schemaList.get(0).getSubMeasurementsList().get(1),
           rowIndex,
           new SecureRandom().nextInt());
 
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java b/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java
index 170f49c..f12f73a 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java
@@ -129,14 +129,14 @@ public abstract class AbstractMemTable implements IMemTable {
       if (measurementMNode != null) {
         // write vector
         Object[] vectorValue =
-            new Object[measurementMNode.getSchema().getValueTSDataTypeList().size()];
+            new Object[measurementMNode.getSchema().getSubMeasurementsTSDataTypeList().size()];
         for (int j = 0; j < vectorValue.length; j++) {
           vectorValue[j] = values[columnIndex];
           columnIndex++;
         }
         memSize +=
             MemUtils.getVectorRecordSize(
-                measurementMNode.getSchema().getValueTSDataTypeList(),
+                measurementMNode.getSchema().getSubMeasurementsTSDataTypeList(),
                 vectorValue,
                 disableMemControl);
         write(
@@ -207,9 +207,9 @@ public abstract class AbstractMemTable implements IMemTable {
       if (insertTabletPlan.isAligned()) {
         VectorMeasurementSchema vectorSchema =
             (VectorMeasurementSchema) insertTabletPlan.getMeasurementMNodes()[i].getSchema();
-        Object[] columns = new Object[vectorSchema.getValueMeasurementIdList().size()];
-        BitMap[] bitMaps = new BitMap[vectorSchema.getValueMeasurementIdList().size()];
-        for (int j = 0; j < vectorSchema.getValueMeasurementIdList().size(); j++) {
+        Object[] columns = new Object[vectorSchema.getSubMeasurementsList().size()];
+        BitMap[] bitMaps = new BitMap[vectorSchema.getSubMeasurementsList().size()];
+        for (int j = 0; j < vectorSchema.getSubMeasurementsList().size(); j++) {
           columns[j] = insertTabletPlan.getColumns()[columnIndex];
           if (insertTabletPlan.getBitMaps() != null) {
             bitMaps[j] = insertTabletPlan.getBitMaps()[columnIndex];
@@ -319,11 +319,11 @@ public abstract class AbstractMemTable implements IMemTable {
         return null;
       }
 
-      List<String> measurementIdList = partialVectorSchema.getValueMeasurementIdList();
+      List<String> measurementIdList = partialVectorSchema.getSubMeasurementsList();
       List<Integer> columns = new ArrayList<>();
       IMeasurementSchema vectorSchema = vectorMemChunk.getSchema();
       for (String queryingMeasurement : measurementIdList) {
-        columns.add(vectorSchema.getValueMeasurementIdList().indexOf(queryingMeasurement));
+        columns.add(vectorSchema.getSubMeasurementsList().indexOf(queryingMeasurement));
       }
       // get sorted tv list is synchronized so different query can get right sorted list reference
       TVList vectorTvListCopy = vectorMemChunk.getSortedTvListForQuery(columns);
@@ -374,7 +374,7 @@ public abstract class AbstractMemTable implements IMemTable {
       // for vector type
       else if (schema.getType() == TSDataType.VECTOR) {
         List<String> measurements = MetaUtils.getMeasurementsInPartialPath(originalPath);
-        if (measurements.containsAll(schema.getValueMeasurementIdList())) {
+        if (measurements.containsAll(schema.getSubMeasurementsList())) {
           if (startTimestamp == Long.MIN_VALUE && endTimestamp == Long.MAX_VALUE) {
             iter.remove();
           }
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTable.java b/server/src/main/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTable.java
index e13bbf2..dc809e3 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTable.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTable.java
@@ -42,7 +42,7 @@ public class PrimitiveMemTable extends AbstractMemTable {
   protected IWritableMemChunk genMemSeries(IMeasurementSchema schema) {
     if (schema.getType() == TSDataType.VECTOR) {
       return new WritableMemChunk(
-          schema, TVListAllocator.getInstance().allocate(schema.getValueTSDataTypeList()));
+          schema, TVListAllocator.getInstance().allocate(schema.getSubMeasurementsTSDataTypeList()));
     }
     return new WritableMemChunk(schema, TVListAllocator.getInstance().allocate(schema.getType()));
   }
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 e7e83db..ebdf793 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
@@ -173,13 +173,13 @@ public class ReadOnlyMemChunk {
     IChunkMetadata timeChunkMetadata =
         new ChunkMetadata(measurementUid, TSDataType.VECTOR, 0, timeStatistics);
     List<IChunkMetadata> valueChunkMetadataList = new ArrayList<>();
-    Statistics[] valueStatistics = new Statistics[schema.getValueTSDataTypeList().size()];
-    for (int i = 0; i < schema.getValueTSDataTypeList().size(); i++) {
-      valueStatistics[i] = Statistics.getStatsByType(schema.getValueTSDataTypeList().get(i));
+    Statistics[] valueStatistics = new Statistics[schema.getSubMeasurementsTSDataTypeList().size()];
+    for (int i = 0; i < schema.getSubMeasurementsTSDataTypeList().size(); i++) {
+      valueStatistics[i] = Statistics.getStatsByType(schema.getSubMeasurementsTSDataTypeList().get(i));
       IChunkMetadata valueChunkMetadata =
           new ChunkMetadata(
-              schema.getValueMeasurementIdList().get(i),
-              schema.getValueTSDataTypeList().get(i),
+              schema.getSubMeasurementsList().get(i),
+              schema.getSubMeasurementsTSDataTypeList().get(i),
               0,
               valueStatistics[i]);
       valueChunkMetadataList.add(valueChunkMetadata);
@@ -190,7 +190,7 @@ public class ReadOnlyMemChunk {
       while (iterator.hasNextTimeValuePair()) {
         TimeValuePair timeValuePair = iterator.nextTimeValuePair();
         timeStatistics.update(timeValuePair.getTimestamp());
-        if (schema.getValueTSDataTypeList().size() == 1) {
+        if (schema.getSubMeasurementsTSDataTypeList().size() == 1) {
           updateValueStatisticsForSingleColumn(schema, valueStatistics, timeValuePair);
         } else {
           updateValueStatistics(schema, valueStatistics, timeValuePair);
@@ -212,7 +212,7 @@ public class ReadOnlyMemChunk {
   private void updateValueStatisticsForSingleColumn(
       IMeasurementSchema schema, Statistics[] valueStatistics, TimeValuePair timeValuePair)
       throws QueryProcessException {
-    switch (schema.getValueTSDataTypeList().get(0)) {
+    switch (schema.getSubMeasurementsTSDataTypeList().get(0)) {
       case BOOLEAN:
         valueStatistics[0].update(
             timeValuePair.getTimestamp(), timeValuePair.getValue().getBoolean());
@@ -243,11 +243,11 @@ public class ReadOnlyMemChunk {
   private void updateValueStatistics(
       IMeasurementSchema schema, Statistics[] valueStatistics, TimeValuePair timeValuePair)
       throws QueryProcessException {
-    for (int i = 0; i < schema.getValueTSDataTypeList().size(); i++) {
+    for (int i = 0; i < schema.getSubMeasurementsTSDataTypeList().size(); i++) {
       if (timeValuePair.getValue().getVector()[i] == null) {
         continue;
       }
-      switch (schema.getValueTSDataTypeList().get(i)) {
+      switch (schema.getSubMeasurementsTSDataTypeList().get(i)) {
         case BOOLEAN:
           valueStatistics[i].update(
               timeValuePair.getTimestamp(), timeValuePair.getValue().getVector()[i].getBoolean());
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
index 2b2185d..d86b74b 100755
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
@@ -1060,7 +1060,7 @@ public class StorageGroupProcessor {
     for (int i = 0; i < mNodes.length; i++) {
       // Don't update cached last value for vector type
       if (mNodes[i] != null && plan.isAligned()) {
-        columnIndex += mNodes[i].getSchema().getValueMeasurementIdList().size();
+        columnIndex += mNodes[i].getSchema().getSubMeasurementsList().size();
       } else {
         if (plan.getColumns()[i] == null) {
           columnIndex++;
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 28f0f6e..9d401b5 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
@@ -321,11 +321,11 @@ public class TsFileProcessor {
         IMeasurementSchema schema = insertRowPlan.getMeasurementMNodes()[i].getSchema();
         if (schema.getType() == TSDataType.VECTOR) {
           chunkMetadataIncrement +=
-              schema.getValueTSDataTypeList().size()
+              schema.getSubMeasurementsTSDataTypeList().size()
                   * ChunkMetadata.calculateRamSize(
-                      schema.getValueMeasurementIdList().get(0),
-                      schema.getValueTSDataTypeList().get(0));
-          memTableIncrement += TVList.vectorTvListArrayMemSize(schema.getValueTSDataTypeList());
+                      schema.getSubMeasurementsList().get(0),
+                      schema.getSubMeasurementsTSDataTypeList().get(0));
+          memTableIncrement += TVList.vectorTvListArrayMemSize(schema.getSubMeasurementsTSDataTypeList());
         } else {
           chunkMetadataIncrement +=
               ChunkMetadata.calculateRamSize(
@@ -365,8 +365,8 @@ public class TsFileProcessor {
       if (insertTabletPlan.isAligned()) {
         VectorMeasurementSchema vectorSchema =
             (VectorMeasurementSchema) insertTabletPlan.getMeasurementMNodes()[i].getSchema();
-        Object[] columns = new Object[vectorSchema.getValueMeasurementIdList().size()];
-        for (int j = 0; j < vectorSchema.getValueMeasurementIdList().size(); j++) {
+        Object[] columns = new Object[vectorSchema.getSubMeasurementsList().size()];
+        for (int j = 0; j < vectorSchema.getSubMeasurementsList().size(); j++) {
           columns[j] = insertTabletPlan.getColumns()[columnIndex++];
         }
         updateVectorMemCost(vectorSchema, deviceId, start, end, memIncrements, columns);
@@ -437,8 +437,8 @@ public class TsFileProcessor {
       Object[] columns) {
     // memIncrements = [memTable, text, chunk metadata] respectively
 
-    List<String> measurementIds = vectorSchema.getValueMeasurementIdList();
-    List<TSDataType> dataTypes = vectorSchema.getValueTSDataTypeList();
+    List<String> measurementIds = vectorSchema.getSubMeasurementsList();
+    List<TSDataType> dataTypes = vectorSchema.getSubMeasurementsTSDataTypeList();
     if (workMemTable.checkIfChunkDoesNotExist(deviceId, vectorSchema.getMeasurementId())) {
       // ChunkMetadataIncrement
       memIncrements[2] +=
@@ -1220,8 +1220,8 @@ public class TsFileProcessor {
         List<ChunkMetadata> timeChunkMetadataList =
             writer.getVisibleMetadataList(deviceId, measurementId, schema.getType());
         List<List<ChunkMetadata>> valueChunkMetadataList = new ArrayList<>();
-        List<String> valueMeasurementIdList = schema.getValueMeasurementIdList();
-        List<TSDataType> valueDataTypeList = schema.getValueTSDataTypeList();
+        List<String> valueMeasurementIdList = schema.getSubMeasurementsList();
+        List<TSDataType> valueDataTypeList = schema.getSubMeasurementsTSDataTypeList();
         for (int i = 0; i < valueMeasurementIdList.size(); i++) {
           valueChunkMetadataList.add(
               writer.getVisibleMetadataList(
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
index 3859995..8daaafb 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
@@ -593,7 +593,7 @@ public class MManager {
       if (lastNode instanceof MeasurementMNode) {
         IMeasurementSchema schema = ((MeasurementMNode) lastNode).getSchema();
         if (schema instanceof VectorMeasurementSchema) {
-          if (schema.getValueMeasurementIdList().size() != allTimeseries.size()) {
+          if (schema.getSubMeasurementsList().size() != allTimeseries.size()) {
             throw new AlignedTimeseriesException(
                 "Not support deleting part of aligned timeseies!", prefixPath.getFullPath());
           } else {
@@ -692,7 +692,7 @@ public class MManager {
       updateSchemaDataTypeNumMap(schema.getType(), -1);
       timeseriesNum = 1;
     } else if (schema instanceof VectorMeasurementSchema) {
-      for (TSDataType dataType : schema.getValueTSDataTypeList()) {
+      for (TSDataType dataType : schema.getSubMeasurementsTSDataTypeList()) {
         updateSchemaDataTypeNumMap(dataType, -1);
         timeseriesNum++;
       }
@@ -833,8 +833,10 @@ public class MManager {
     if (schema instanceof MeasurementSchema) {
       return schema.getType();
     } else {
-      List<String> measurements = schema.getValueMeasurementIdList();
-      return schema.getValueTSDataTypeList().get(measurements.indexOf(path.getMeasurement()));
+      List<String> measurements = schema.getSubMeasurementsList();
+      return schema
+          .getSubMeasurementsTSDataTypeList()
+          .get(measurements.indexOf(path.getMeasurement()));
     }
   }
 
@@ -933,7 +935,7 @@ public class MManager {
     return mtree.getAllTimeseriesPath(prefixPath);
   }
 
-  /** Similar to method getAllTimeseriesPath(), but return Path with alias alias. */
+  /** Similar to method getAllTimeseriesPath(), but return Path with alias. */
   public Pair<List<PartialPath>, Integer> getAllTimeseriesPathWithAlias(
       PartialPath prefixPath, int limit, int offset) throws MetadataException {
     return mtree.getAllTimeseriesPathWithAlias(prefixPath, limit, offset);
@@ -1100,15 +1102,15 @@ public class MManager {
    */
   private List<ShowTimeSeriesResult> showTimeseriesWithoutIndex(
       ShowTimeSeriesPlan plan, QueryContext context) throws MetadataException {
-    List<Pair<PartialPath, String[]>> ans;
+    List<String[]> ans;
     if (plan.isOrderByHeat()) {
       ans = mtree.getAllMeasurementSchemaByHeatOrder(plan, context);
     } else {
       ans = mtree.getAllMeasurementSchema(plan);
     }
     List<ShowTimeSeriesResult> res = new LinkedList<>();
-    for (Pair<PartialPath, String[]> ansString : ans) {
-      long tagFileOffset = Long.parseLong(ansString.right[5]);
+    for (String[] ansString : ans) {
+      long tagFileOffset = Long.parseLong(ansString[6]);
       try {
         Pair<Map<String, String>, Map<String, String>> tagAndAttributePair =
             new Pair<>(Collections.emptyMap(), Collections.emptyMap());
@@ -1117,18 +1119,17 @@ public class MManager {
         }
         res.add(
             new ShowTimeSeriesResult(
-                ansString.left.getFullPath(),
-                ansString.right[0],
-                ansString.right[1],
-                TSDataType.valueOf(ansString.right[2]),
-                TSEncoding.valueOf(ansString.right[3]),
-                CompressionType.valueOf(ansString.right[4]),
+                ansString[0],
+                ansString[1],
+                ansString[2],
+                TSDataType.valueOf(ansString[3]),
+                TSEncoding.valueOf(ansString[4]),
+                CompressionType.valueOf(ansString[5]),
                 tagAndAttributePair.left,
                 tagAndAttributePair.right));
       } catch (IOException e) {
         throw new MetadataException(
-            "Something went wrong while deserialize tag info of " + ansString.left.getFullPath(),
-            e);
+            "Something went wrong while deserialize tag info of " + ansString[0], e);
       }
     }
     return res;
@@ -1165,15 +1166,15 @@ public class MManager {
     if (schema == null || schema.getType() != TSDataType.VECTOR) {
       return schema;
     }
-    List<String> measurementsInLeaf = schema.getValueMeasurementIdList();
+    List<String> measurementsInLeaf = schema.getSubMeasurementsList();
     List<PartialPath> measurements = ((VectorPartialPath) fullPath).getSubSensorsPathList();
     TSDataType[] types = new TSDataType[measurements.size()];
     TSEncoding[] encodings = new TSEncoding[measurements.size()];
 
     for (int i = 0; i < measurements.size(); i++) {
       int index = measurementsInLeaf.indexOf(measurements.get(i).getMeasurement());
-      types[i] = schema.getValueTSDataTypeList().get(index);
-      encodings[i] = schema.getValueTSEncodingList().get(index);
+      types[i] = schema.getSubMeasurementsTSDataTypeList().get(index);
+      encodings[i] = schema.getSubMeasurementsTSEncodingList().get(index);
     }
     String[] array = new String[measurements.size()];
     for (int i = 0; i < array.length; i++) {
@@ -2221,7 +2222,7 @@ public class MManager {
         if (plan instanceof InsertRowPlan || plan instanceof InsertTabletPlan) {
           if (plan.isAligned()) {
             TSDataType dataTypeInNode =
-                measurementMNode.getSchema().getValueTSDataTypeList().get(i);
+                measurementMNode.getSchema().getSubMeasurementsTSDataTypeList().get(i);
             insertDataType = plan.getDataTypes()[i];
             if (insertDataType == null) {
               insertDataType = dataTypeInNode;
@@ -2229,7 +2230,7 @@ public class MManager {
             if (dataTypeInNode != insertDataType) {
               logger.warn(
                   "DataType mismatch, Insert measurement {} in {} type {}, metadata tree type {}",
-                  measurementMNode.getSchema().getValueMeasurementIdList().get(i),
+                  measurementMNode.getSchema().getSubMeasurementsList().get(i),
                   measurementList[i],
                   insertDataType,
                   dataTypeInNode);
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java b/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
index efb6d2e..89efb62 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
@@ -947,13 +947,9 @@ public class MTree implements Serializable {
    * @param prefixPath a prefix path or a full path, may contain '*'.
    */
   List<PartialPath> getAllTimeseriesPath(PartialPath prefixPath) throws MetadataException {
-    ShowTimeSeriesPlan plan = new ShowTimeSeriesPlan(prefixPath);
-    List<Pair<PartialPath, String[]>> res = getAllMeasurementSchema(plan);
-    List<PartialPath> paths = new ArrayList<>();
-    for (Pair<PartialPath, String[]> p : res) {
-      paths.add(p.left);
-    }
-    return paths;
+    List<PartialPath> resultPathList = new ArrayList<>();
+    findPath(root, prefixPath.getNodes(), 1, resultPathList, null);
+    return resultPathList;
   }
 
   /**
@@ -969,13 +965,14 @@ public class MTree implements Serializable {
     ShowTimeSeriesPlan plan = new ShowTimeSeriesPlan(prefixPath);
     plan.setLimit(limit);
     plan.setOffset(offset);
-    List<Pair<PartialPath, String[]>> res = getAllMeasurementSchema(plan, false);
+    List<String[]> res = getAllMeasurementSchema(plan, false);
     List<PartialPath> paths = new ArrayList<>();
-    for (Pair<PartialPath, String[]> p : res) {
-      if (prePath.getMeasurement().equals(p.right[0])) {
-        p.left.setMeasurementAlias(p.right[0]);
+    for (String[] s : res) {
+      PartialPath path = new PartialPath(s[0]);
+      if (prePath.getMeasurement().equals(s[1])) {
+        path.setMeasurementAlias(s[1]);
       }
-      paths.add(p.left);
+      paths.add(path);
     }
     if (curOffset.get() == null) {
       offset = 0;
@@ -1150,23 +1147,22 @@ public class MTree implements Serializable {
    *
    * <p>result: [name, alias, storage group, dataType, encoding, compression, offset]
    */
-  List<Pair<PartialPath, String[]>> getAllMeasurementSchemaByHeatOrder(
+  List<String[]> getAllMeasurementSchemaByHeatOrder(
       ShowTimeSeriesPlan plan, QueryContext queryContext) throws MetadataException {
     String[] nodes = plan.getPath().getNodes();
     if (nodes.length == 0 || !nodes[0].equals(root.getName())) {
       throw new IllegalPathException(plan.getPath().getFullPath());
     }
-    List<Pair<PartialPath, String[]>> allMatchedNodes = new ArrayList<>();
+    List<String[]> allMatchedNodes = new ArrayList<>();
 
     findPath(root, nodes, 1, allMatchedNodes, false, true, queryContext, null);
 
-    Stream<Pair<PartialPath, String[]>> sortedStream =
+    Stream<String[]> sortedStream =
         allMatchedNodes.stream()
             .sorted(
-                Comparator.comparingLong(
-                        (Pair<PartialPath, String[]> p) -> Long.parseLong(p.right[6]))
+                Comparator.comparingLong((String[] s) -> Long.parseLong(s[7]))
                     .reversed()
-                    .thenComparing((Pair<PartialPath, String[]> p) -> p.left));
+                    .thenComparing((String[] s) -> s[0]));
 
     // no limit
     if (plan.getLimit() == 0) {
@@ -1181,14 +1177,13 @@ public class MTree implements Serializable {
    *
    * <p>result: [name, alias, storage group, dataType, encoding, compression, offset]
    */
-  List<Pair<PartialPath, String[]>> getAllMeasurementSchema(ShowTimeSeriesPlan plan)
-      throws MetadataException {
+  List<String[]> getAllMeasurementSchema(ShowTimeSeriesPlan plan) throws MetadataException {
     return getAllMeasurementSchema(plan, true);
   }
 
-  List<Pair<PartialPath, String[]>> getAllMeasurementSchema(
-      ShowTimeSeriesPlan plan, boolean removeCurrentOffset) throws MetadataException {
-    List<Pair<PartialPath, String[]>> res = new LinkedList<>();
+  List<String[]> getAllMeasurementSchema(ShowTimeSeriesPlan plan, boolean removeCurrentOffset)
+      throws MetadataException {
+    List<String[]> res = new LinkedList<>();
     String[] nodes = plan.getPath().getNodes();
     if (nodes.length == 0 || !nodes[0].equals(root.getName())) {
       throw new IllegalPathException(plan.getPath().getFullPath());
@@ -1209,63 +1204,64 @@ public class MTree implements Serializable {
   }
 
   /**
-   * Iterate through MTree to fetch metadata info of all leaf nodes under the given seriesPath
+   * For show timeseries.
+   *
+   * <p>Iterate through MTree to fetch metadata info of all leaf nodes under the given seriesPath
    *
    * @param needLast if false, lastTimeStamp in timeseriesSchemaList will be null
-   * @param timeseriesSchemaList List<timeseriesSchema> result: [name, alias, storage group,
-   *     dataType, encoding, compression, offset, lastTimeStamp]
+   * @param timeseriesSchemaList List<String[]> result: [name, alias, storage group, dataType,
+   *     encoding, compression, offset, lastTimeStamp]
    */
   @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning
   private void findPath(
-      MNode node,
+      MNode curNode,
       String[] nodes,
-      int idx,
-      List<Pair<PartialPath, String[]>> timeseriesSchemaList,
+      int childIndex,
+      List<String[]> timeseriesSchemaList,
       boolean hasLimit,
       boolean needLast,
       QueryContext queryContext,
       Template upperTemplate)
       throws MetadataException {
-    if (node instanceof MeasurementMNode
-        && (nodes.length <= idx
-            || ((MeasurementMNode) node).getSchema() instanceof VectorMeasurementSchema)) {
+    if (curNode instanceof MeasurementMNode
+        // For example: nodes: [root, sg, d1, s1, ss1], mTree: root.sg.d1.s1
+        // node: root.sg.d1.s1, childIndex = 4 < length, will not be chosen
+        && (nodes.length <= childIndex
+            || ((MeasurementMNode) curNode).getSchema() instanceof VectorMeasurementSchema)) {
       if (hasLimit) {
         curOffset.set(curOffset.get() + 1);
         if (curOffset.get() < offset.get() || count.get().intValue() == limit.get().intValue()) {
           return;
         }
       }
-      IMeasurementSchema measurementSchema = ((MeasurementMNode) node).getSchema();
+      MeasurementMNode measurementMNode = (MeasurementMNode) curNode;
+      IMeasurementSchema measurementSchema = measurementMNode.getSchema();
+
       if (measurementSchema instanceof MeasurementSchema) {
-        addMeasurementSchema(
-            node, timeseriesSchemaList, needLast, queryContext, measurementSchema, "*");
+        timeseriesSchemaList.add(getTimeseriesInfo(measurementMNode, needLast, queryContext));
       } else if (measurementSchema instanceof VectorMeasurementSchema) {
-        addVectorMeasurementSchema(
-            node,
-            timeseriesSchemaList,
-            needLast,
-            queryContext,
-            measurementSchema,
-            idx < nodes.length ? nodes[idx] : "*");
+        String nextNode = MetaUtils.getNodeRegByIdx(childIndex, nodes);
+        timeseriesSchemaList.addAll(
+            getVectorTimeseriesInfo(measurementMNode, needLast, queryContext, nextNode));
       }
       if (hasLimit) {
         count.set(count.get() + 1);
       }
     }
 
-    String nodeReg = MetaUtils.getNodeRegByIdx(idx, nodes);
-    if (node.getDeviceTemplate() != null) {
-      upperTemplate = node.getDeviceTemplate();
+    String nodeReg = MetaUtils.getNodeRegByIdx(childIndex, nodes);
+    if (curNode.getDeviceTemplate() != null) {
+      upperTemplate = curNode.getDeviceTemplate();
     }
 
-    // we should use template when all child is measurement or this node has no child
+    // we should use template when all children are measurements or this node has no child
     if (!nodeReg.contains(PATH_WILDCARD)) {
-      MNode next = node.getChild(nodeReg);
+      MNode next = curNode.getChild(nodeReg);
       if (next != null) {
         findPath(
             next,
             nodes,
-            idx + 1,
+            childIndex + 1,
             timeseriesSchemaList,
             hasLimit,
             needLast,
@@ -1273,14 +1269,14 @@ public class MTree implements Serializable {
             upperTemplate);
       }
     } else {
-      for (MNode child : node.getChildren().values()) {
+      for (MNode child : curNode.getChildren().values()) {
         if (!Pattern.matches(nodeReg.replace("*", ".*"), child.getName())) {
           continue;
         }
         findPath(
             child,
             nodes,
-            idx + 1,
+            childIndex + 1,
             timeseriesSchemaList,
             hasLimit,
             needLast,
@@ -1293,32 +1289,32 @@ public class MTree implements Serializable {
     }
 
     // template part
-    if (!(node instanceof MeasurementMNode) && node.isUseTemplate()) {
+    if (!(curNode instanceof MeasurementMNode) && curNode.isUseTemplate()) {
       if (upperTemplate != null) {
         HashSet<IMeasurementSchema> set = new HashSet<>();
         for (IMeasurementSchema schema : upperTemplate.getSchemaMap().values()) {
           if (set.add(schema)) {
             if (schema instanceof MeasurementSchema) {
-              addMeasurementSchema(
-                  new MeasurementMNode(node, schema.getMeasurementId(), schema, null),
-                  timeseriesSchemaList,
-                  needLast,
-                  queryContext,
-                  schema,
-                  nodeReg);
+              if (Pattern.matches(nodeReg.replace("*", ".*"), schema.getMeasurementId())) {
+                timeseriesSchemaList.add(
+                    getTimeseriesInfo(
+                        new MeasurementMNode(curNode, schema.getMeasurementId(), schema, null),
+                        needLast,
+                        queryContext));
+              }
             } else if (schema instanceof VectorMeasurementSchema) {
               VectorMeasurementSchema vectorMeasurementSchema = (VectorMeasurementSchema) schema;
               if (Pattern.matches(
                   nodeReg.replace("*", ".*"), vectorMeasurementSchema.getMeasurementId())) {
-                String firstNode = schema.getValueMeasurementIdList().get(0);
-                addVectorMeasurementSchemaForTemplate(
-                    new MeasurementMNode(node, firstNode, schema, null),
-                    timeseriesSchemaList,
-                    needLast,
-                    queryContext,
-                    schema,
-                    MetaUtils.getNodeRegByIdx(idx + 1, nodes),
-                    vectorMeasurementSchema.getMeasurementId());
+                String firstNode = vectorMeasurementSchema.getSubMeasurementsList().get(0);
+                timeseriesSchemaList.addAll(
+                    getVectorTimeseriesInfoForTemplate(
+                        new MeasurementMNode(curNode, firstNode, schema, null),
+                        needLast,
+                        queryContext,
+                        vectorMeasurementSchema,
+                        MetaUtils.getNodeRegByIdx(childIndex + 1, nodes),
+                        vectorMeasurementSchema.getMeasurementId()));
               }
             }
           }
@@ -1327,88 +1323,186 @@ public class MTree implements Serializable {
     }
   }
 
-  private void addMeasurementSchema(
-      MNode node,
-      List<Pair<PartialPath, String[]>> timeseriesSchemaList,
-      boolean needLast,
-      QueryContext queryContext,
-      IMeasurementSchema measurementSchema,
-      String reg)
-      throws StorageGroupNotSetException {
-    if (Pattern.matches(reg.replace("*", ".*"), measurementSchema.getMeasurementId())) {
-      PartialPath nodePath = node.getPartialPath();
-      String[] tsRow = new String[7];
-      tsRow[0] = ((MeasurementMNode) node).getAlias();
-      tsRow[1] = getStorageGroupPath(nodePath).getFullPath();
-      tsRow[2] = measurementSchema.getType().toString();
-      tsRow[3] = measurementSchema.getEncodingType().toString();
-      tsRow[4] = measurementSchema.getCompressor().toString();
-      tsRow[5] = String.valueOf(((MeasurementMNode) node).getOffset());
-      tsRow[6] =
-          needLast ? String.valueOf(getLastTimeStamp((MeasurementMNode) node, queryContext)) : null;
-      Pair<PartialPath, String[]> temp = new Pair<>(nodePath, tsRow);
-      timeseriesSchemaList.add(temp);
+  /**
+   * For query
+   *
+   * <p>Iterate through MTree to fetch metadata info of all leaf nodes under the given seriesPath
+   */
+  @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning
+  private void findPath(
+      MNode curNode,
+      String[] nodes,
+      int childIndex,
+      List<PartialPath> pathList,
+      Template upperTemplate)
+      throws MetadataException {
+    if (curNode instanceof MeasurementMNode
+        // For example: nodes: [root, sg, d1, s1, ss1], mtree: root.sg.d1.s1
+        // node: root.sg.d1.s1, idx = 4 < length, will not be chosen
+        && (nodes.length <= childIndex
+            || ((MeasurementMNode) curNode).getSchema() instanceof VectorMeasurementSchema)) {
+      MeasurementMNode measurementMNode = (MeasurementMNode) curNode;
+      IMeasurementSchema measurementSchema = ((MeasurementMNode) curNode).getSchema();
+      if (measurementSchema instanceof MeasurementSchema) {
+        pathList.add(curNode.getPartialPath());
+      } else if (measurementSchema instanceof VectorMeasurementSchema) {
+        String nextNode = MetaUtils.getNodeRegByIdx(childIndex, nodes);
+        pathList.addAll(getVectorMeasurementPaths(measurementMNode, nextNode));
+      }
+    }
+
+    String nodeReg = MetaUtils.getNodeRegByIdx(childIndex, nodes);
+    if (curNode.getDeviceTemplate() != null) {
+      upperTemplate = curNode.getDeviceTemplate();
+    }
+
+    // we should use template when all children are measurements or this node has no child
+    if (!nodeReg.contains(PATH_WILDCARD)) {
+      MNode next = curNode.getChild(nodeReg);
+      if (next != null) {
+        findPath(next, nodes, childIndex + 1, pathList, upperTemplate);
+      }
+    } else {
+      for (MNode child : curNode.getChildren().values()) {
+        if (!Pattern.matches(nodeReg.replace("*", ".*"), child.getName())) {
+          continue;
+        }
+        findPath(child, nodes, childIndex + 1, pathList, upperTemplate);
+      }
+    }
+
+    // template part
+    if (!(curNode instanceof MeasurementMNode) && curNode.isUseTemplate()) {
+      if (upperTemplate != null) {
+        HashSet<IMeasurementSchema> set = new HashSet<>();
+        for (IMeasurementSchema schema : upperTemplate.getSchemaMap().values()) {
+          if (set.add(schema)) {
+            if (schema instanceof MeasurementSchema) {
+              MNode mNode = new MeasurementMNode(curNode, schema.getMeasurementId(), schema, null);
+              pathList.add(mNode.getPartialPath());
+            } else if (schema instanceof VectorMeasurementSchema) {
+              VectorMeasurementSchema vectorMeasurementSchema = (VectorMeasurementSchema) schema;
+              if (Pattern.matches(
+                  nodeReg.replace("*", ".*"), vectorMeasurementSchema.getMeasurementId())) {
+                String firstNode = schema.getSubMeasurementsList().get(0);
+                pathList.addAll(
+                    getVectorMeasurementPathsForTemplate(
+                        new MeasurementMNode(curNode, firstNode, schema, null),
+                        schema,
+                        MetaUtils.getNodeRegByIdx(childIndex + 1, nodes),
+                        vectorMeasurementSchema.getMeasurementId()));
+              }
+            }
+          }
+        }
+      }
     }
   }
 
-  private void addVectorMeasurementSchema(
-      MNode node,
-      List<Pair<PartialPath, String[]>> timeseriesSchemaList,
-      boolean needLast,
-      QueryContext queryContext,
-      IMeasurementSchema schema,
-      String reg)
-      throws StorageGroupNotSetException, IllegalPathException {
-    List<String> measurements = schema.getValueMeasurementIdList();
-    for (int i = 0; i < measurements.size(); i++) {
-      if (!Pattern.matches(reg.replace("*", ".*"), measurements.get(i))) {
+  /**
+   * For show time series. [name, alias, storage group, dataType, encoding, compression, offset,
+   * lastTimeStamp]
+   */
+  private String[] getTimeseriesInfo(
+      MeasurementMNode node, boolean needLast, QueryContext queryContext)
+      throws StorageGroupNotSetException {
+    MeasurementSchema measurementSchema = (MeasurementSchema) node.getSchema();
+    String[] tsRow = new String[8];
+    tsRow[0] = node.getFullPath();
+    tsRow[1] = node.getAlias();
+    tsRow[2] = getStorageGroupPath(node.getPartialPath()).getFullPath();
+    tsRow[3] = measurementSchema.getType().toString();
+    tsRow[4] = measurementSchema.getEncodingType().toString();
+    tsRow[5] = measurementSchema.getCompressor().toString();
+    tsRow[6] = String.valueOf(node.getOffset());
+    tsRow[7] = needLast ? String.valueOf(getLastTimeStamp(node, queryContext)) : null;
+    return tsRow;
+  }
+
+  private List<String[]> getVectorTimeseriesInfo(
+      MeasurementMNode node, boolean needLast, QueryContext queryContext, String nextNode)
+      throws StorageGroupNotSetException {
+    List<String[]> tsRows = new ArrayList<>();
+    VectorMeasurementSchema schema = (VectorMeasurementSchema) node.getSchema();
+    List<String> subMeasurements = schema.getSubMeasurementsList();
+    for (int i = 0; i < subMeasurements.size(); i++) {
+      if (!Pattern.matches(nextNode.replace("*", ".*"), subMeasurements.get(i))) {
         continue;
       }
       PartialPath devicePath = node.getPartialPath();
-      String[] tsRow = new String[7];
-      tsRow[0] = null;
-      tsRow[1] = getStorageGroupPath(devicePath).getFullPath();
-      tsRow[2] = schema.getValueTSDataTypeList().get(i).toString();
-      tsRow[3] = schema.getValueTSEncodingList().get(i).toString();
-      tsRow[4] = schema.getCompressor().toString();
-      tsRow[5] = "-1";
-      tsRow[6] =
-          needLast ? String.valueOf(getLastTimeStamp((MeasurementMNode) node, queryContext)) : null;
-      Pair<PartialPath, String[]> temp =
-          new Pair<>(new PartialPath(devicePath.getFullPath(), measurements.get(i)), tsRow);
-      timeseriesSchemaList.add(temp);
+      String[] tsRow = new String[8];
+      tsRow[0] = devicePath.getFullPath() + "." + subMeasurements.get(i);
+      tsRow[1] = null;
+      tsRow[2] = getStorageGroupPath(devicePath).getFullPath();
+      tsRow[3] = schema.getSubMeasurementsTSDataTypeList().get(i).toString();
+      tsRow[4] = schema.getSubMeasurementsTSEncodingList().get(i).toString();
+      tsRow[5] = schema.getCompressor().toString();
+      tsRow[6] = "-1";
+      tsRow[7] = needLast ? String.valueOf(getLastTimeStamp(node, queryContext)) : null;
+      tsRows.add(tsRow);
     }
+    return tsRows;
   }
 
-  private void addVectorMeasurementSchemaForTemplate(
+  private List<String[]> getVectorTimeseriesInfoForTemplate(
       MNode node,
-      List<Pair<PartialPath, String[]>> timeseriesSchemaList,
       boolean needLast,
       QueryContext queryContext,
-      IMeasurementSchema schema,
-      String reg,
+      VectorMeasurementSchema schema,
+      String nextNode,
       String vectorId)
       throws StorageGroupNotSetException, IllegalPathException {
-    List<String> measurements = schema.getValueMeasurementIdList();
-    for (int i = 0; i < measurements.size(); i++) {
-      if (!Pattern.matches(reg.replace("*", ".*"), measurements.get(i))) {
+    List<String[]> tsRows = new ArrayList<>();
+    List<String> subMeasurements = schema.getSubMeasurementsList();
+    for (int i = 0; i < subMeasurements.size(); i++) {
+      if (!Pattern.matches(nextNode.replace("*", ".*"), subMeasurements.get(i))) {
         continue;
       }
       PartialPath devicePath =
           new PartialPath(node.getPartialPath().getDevicePath().getFullPath(), vectorId);
-      String[] tsRow = new String[7];
-      tsRow[0] = null;
-      tsRow[1] = getStorageGroupPath(devicePath).getFullPath();
-      tsRow[2] = schema.getValueTSDataTypeList().get(i).toString();
-      tsRow[3] = schema.getValueTSEncodingList().get(i).toString();
-      tsRow[4] = schema.getCompressor().toString();
-      tsRow[5] = "-1";
-      tsRow[6] =
+      String[] tsRow = new String[8];
+      tsRow[0] = devicePath.getFullPath() + "." + subMeasurements.get(i);
+      tsRow[1] = null;
+      tsRow[2] = getStorageGroupPath(devicePath).getFullPath();
+      tsRow[3] = schema.getSubMeasurementsTSDataTypeList().get(i).toString();
+      tsRow[4] = schema.getSubMeasurementsTSEncodingList().get(i).toString();
+      tsRow[5] = schema.getCompressor().toString();
+      tsRow[6] = "-1";
+      tsRow[7] =
           needLast ? String.valueOf(getLastTimeStamp((MeasurementMNode) node, queryContext)) : null;
-      Pair<PartialPath, String[]> temp =
-          new Pair<>(new PartialPath(devicePath.getFullPath(), measurements.get(i)), tsRow);
-      timeseriesSchemaList.add(temp);
+      tsRows.add(tsRow);
     }
+    return tsRows;
+  }
+
+  /** For query */
+  private List<PartialPath> getVectorMeasurementPaths(MeasurementMNode node, String nextNode)
+      throws IllegalPathException {
+    List<PartialPath> paths = new ArrayList<>();
+    List<String> subMeasurements = node.getSchema().getSubMeasurementsList();
+    for (String subMeasurement : subMeasurements) {
+      if (!Pattern.matches(nextNode.replace("*", ".*"), subMeasurement)) {
+        continue;
+      }
+      paths.add(new PartialPath(node.getPartialPath().getFullPath(), subMeasurement));
+    }
+    return paths;
+  }
+
+  private List<PartialPath> getVectorMeasurementPathsForTemplate(
+      MNode node, IMeasurementSchema schema, String nextNode, String vectorId)
+      throws IllegalPathException {
+    List<PartialPath> paths = new ArrayList<>();
+    List<String> subMeasurements = schema.getSubMeasurementsList();
+    PartialPath devicePath =
+        new PartialPath(node.getPartialPath().getDevicePath().getFullPath(), vectorId);
+    for (int i = 0; i < subMeasurements.size(); i++) {
+      if (!Pattern.matches(nextNode.replace("*", ".*"), subMeasurements.get(i))) {
+        continue;
+      }
+      paths.add(new PartialPath(devicePath.getFullPath(), subMeasurements.get(i)));
+    }
+    return paths;
   }
 
   /**
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/VectorPartialPath.java b/server/src/main/java/org/apache/iotdb/db/metadata/VectorPartialPath.java
index 65ef534..a16caf4 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/VectorPartialPath.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/VectorPartialPath.java
@@ -28,7 +28,6 @@ import java.util.Objects;
  * VectorPartialPath represents a vector's fullPath. It not only contains the full path of vector's
  * own name, but also has subSensorsPathList which contain all the fullPath of vector's sub sensors.
  * e.g. VectorPartialPath1(root.sg1.d1.vector1, [root.sg1.d1.vector1.s1, root.sg1.d1.vector1.s2])
- * VectorPartialPath2(root.sg1.d1.vector2, [root.sg1.d1.vector2.s1, root.sg1.d1.vector2.s2])
  */
 public class VectorPartialPath extends PartialPath {
 
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/MeasurementMNode.java b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/MeasurementMNode.java
index e2d309b..edda52d 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/MeasurementMNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/MeasurementMNode.java
@@ -201,8 +201,8 @@ public class MeasurementMNode extends MNode {
     if (schema instanceof MeasurementSchema) {
       return schema.getType();
     } else {
-      int index = schema.getMeasurementIdColumnIndex(measurementId);
-      return schema.getValueTSDataTypeList().get(index);
+      int index = schema.getSubMeasurementColumnIndex(measurementId);
+      return schema.getSubMeasurementsTSDataTypeList().get(index);
     }
   }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/template/Template.java b/server/src/main/java/org/apache/iotdb/db/metadata/template/Template.java
index 5a59c52..4c9384d 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/template/Template.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/template/Template.java
@@ -163,7 +163,7 @@ public class Template {
       if (schemaEntry.getValue() instanceof VectorMeasurementSchema) {
         VectorMeasurementSchema vectorMeasurementSchema =
             (VectorMeasurementSchema) schemaEntry.getValue();
-        res.put(schemaEntry.getKey(), vectorMeasurementSchema.getValueMeasurementIdList());
+        res.put(schemaEntry.getKey(), vectorMeasurementSchema.getSubMeasurementsList());
       } else {
         res.put(schemaEntry.getKey(), new ArrayList<>());
       }
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java
index f2668d3..ce02133 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java
@@ -185,7 +185,7 @@ public class QueryOperator extends Operator {
         List<TSDataType> seriesTypes = generator.getSeriesTypes(filterPaths);
         HashMap<PartialPath, TSDataType> pathTSDataTypeHashMap = new HashMap<>();
         for (int i = 0; i < filterPaths.size(); i++) {
-          rawDataQueryPlan.addFilterPathInDeviceToMeasurements(filterPaths.get(i));
+          rawDataQueryPlan.addPathToDeviceToMeasurements(filterPaths.get(i));
           pathTSDataTypeHashMap.put(filterPaths.get(i), seriesTypes.get(i));
         }
         IExpression expression = filterOperator.transformToExpression(pathTSDataTypeHashMap);
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertRowPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertRowPlan.java
index 6990fec..18d7c86 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertRowPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertRowPlan.java
@@ -280,7 +280,7 @@ public class InsertRowPlan extends InsertPlan {
         }
         // for aligned timeseries
         else {
-          for (TSDataType dataType : measurementMNodes[i].getSchema().getValueTSDataTypeList()) {
+          for (TSDataType dataType : measurementMNodes[i].getSchema().getSubMeasurementsTSDataTypeList()) {
             dataTypes[columnIndex] = dataType;
             try {
               values[columnIndex] =
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/RawDataQueryPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/RawDataQueryPlan.java
index 43c474e..cbaa214 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/RawDataQueryPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/RawDataQueryPlan.java
@@ -167,7 +167,7 @@ public class RawDataQueryPlan extends QueryPlan {
     return deviceToMeasurements.getOrDefault(device, new HashSet<>());
   }
 
-  public void addFilterPathInDeviceToMeasurements(Path path) {
+  public void addPathToDeviceToMeasurements(Path path) {
     deviceToMeasurements
         .computeIfAbsent(path.getDevice(), key -> new HashSet<>())
         .add(path.getMeasurement());
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java
index 667a984..564c39d 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java
@@ -112,7 +112,7 @@ public class MemUtils {
         // time and index column memSize
         memSize += (end - start) * (8L + 4L);
         // value columns memSize
-        for (TSDataType type : schema.getValueTSDataTypeList()) {
+        for (TSDataType type : schema.getSubMeasurementsTSDataTypeList()) {
           if (type == TSDataType.TEXT && addingTextDataSize) {
             for (int j = start; j < end; j++) {
               memSize += getBinarySize(((Binary[]) insertTabletPlan.getColumns()[columnCount])[j]);
diff --git a/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java b/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
index 52fbd1f..8b4c452 100644
--- a/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
+++ b/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
@@ -199,7 +199,7 @@ public class LogReplayer {
                     + tPlan.getMeasurements()[i]));
         columnIndex++;
       } else if (tPlan.isAligned()) {
-        List<TSDataType> datatypes = mNodes[i].getSchema().getValueTSDataTypeList();
+        List<TSDataType> datatypes = mNodes[i].getSchema().getSubMeasurementsTSDataTypeList();
         for (int j = 0; j < datatypes.size(); j++) {
           if (tPlan.getDataTypes()[columnIndex] == null) {
             tPlan.getDataTypes()[columnIndex] = datatypes.get(j);
@@ -207,7 +207,7 @@ public class LogReplayer {
             tPlan.markFailedMeasurementInsertion(
                 i,
                 new DataTypeMismatchException(
-                    mNodes[i].getSchema().getValueMeasurementIdList().get(j),
+                    mNodes[i].getSchema().getSubMeasurementsList().get(j),
                     tPlan.getDataTypes()[columnIndex],
                     datatypes.get(j)));
           }
diff --git a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBQueryTimeoutIT.java b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBQueryTimeoutIT.java
index 8e10cf1..979447f 100644
--- a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBQueryTimeoutIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBQueryTimeoutIT.java
@@ -51,7 +51,7 @@ public class IoTDBQueryTimeoutIT {
     EnvironmentUtils.cleanEnv();
   }
 
-  /** Test show query processlist, there is supposed to no result. */
+  /** Test show query processlist. */
   @Test
   public void queryProcessListTest() {
     String headerResult = "Time, queryId, statement, ";
@@ -71,11 +71,6 @@ public class IoTDBQueryTimeoutIT {
       }
       Assert.assertEquals(headerResult, headerBuilder.toString());
 
-      int cnt = 0;
-      while (resultSet.next()) {
-        cnt++;
-      }
-      Assert.assertEquals(0, cnt);
     } catch (Exception e) {
       e.printStackTrace();
       fail(e.getMessage());
diff --git a/session/src/main/java/org/apache/iotdb/session/Session.java b/session/src/main/java/org/apache/iotdb/session/Session.java
index 447c2b5..6322499 100644
--- a/session/src/main/java/org/apache/iotdb/session/Session.java
+++ b/session/src/main/java/org/apache/iotdb/session/Session.java
@@ -1253,10 +1253,10 @@ public class Session {
       request.setIsAligned(true);
       IMeasurementSchema measurementSchema = tablet.getSchemas().get(0);
       request.setPrefixPath(tablet.prefixPath);
-      int measurementsSize = measurementSchema.getValueMeasurementIdList().size();
+      int measurementsSize = measurementSchema.getSubMeasurementsList().size();
       for (int i = 0; i < measurementsSize; i++) {
-        request.addToMeasurements(measurementSchema.getValueMeasurementIdList().get(i));
-        request.addToTypes(measurementSchema.getValueTSDataTypeList().get(i).ordinal());
+        request.addToMeasurements(measurementSchema.getSubMeasurementsList().get(i));
+        request.addToTypes(measurementSchema.getSubMeasurementsTSDataTypeList().get(i).ordinal());
       }
       request.setIsAligned(true);
     } else {
@@ -1666,10 +1666,10 @@ public class Session {
         }
         columnIndex++;
       } else {
-        int measurementSize = schema.getValueMeasurementIdList().size();
+        int measurementSize = schema.getSubMeasurementsList().size();
         for (int j = 0; j < measurementSize; j++) {
           tablet.values[columnIndex] =
-              sortList(tablet.values[columnIndex], schema.getValueTSDataTypeList().get(j), index);
+              sortList(tablet.values[columnIndex], schema.getSubMeasurementsTSDataTypeList().get(j), index);
           if (tablet.bitMaps != null && tablet.bitMaps[columnIndex] != null) {
             tablet.bitMaps[columnIndex] = sortBitMap(tablet.bitMaps[columnIndex], index);
           }
diff --git a/session/src/main/java/org/apache/iotdb/session/SessionUtils.java b/session/src/main/java/org/apache/iotdb/session/SessionUtils.java
index f028990..9705d7f 100644
--- a/session/src/main/java/org/apache/iotdb/session/SessionUtils.java
+++ b/session/src/main/java/org/apache/iotdb/session/SessionUtils.java
@@ -50,9 +50,9 @@ public class SessionUtils {
         getValueBufferOfDataType(schema.getType(), tablet, indexOfValues, valueBuffer);
         indexOfValues++;
       } else {
-        for (int j = 0; j < schema.getValueTSDataTypeList().size(); j++) {
+        for (int j = 0; j < schema.getSubMeasurementsTSDataTypeList().size(); j++) {
           getValueBufferOfDataType(
-              schema.getValueTSDataTypeList().get(j), tablet, indexOfValues, valueBuffer);
+              schema.getSubMeasurementsTSDataTypeList().get(j), tablet, indexOfValues, valueBuffer);
           indexOfValues++;
         }
       }
diff --git a/session/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java b/session/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java
index 15bd740..c37b6ad 100644
--- a/session/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java
+++ b/session/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java
@@ -393,15 +393,15 @@ public class IoTDBSessionSimpleIT {
       int rowIndex = tablet.rowSize++;
       tablet.addTimestamp(rowIndex, timestamp);
       tablet.addValue(
-          schemaList.get(0).getValueMeasurementIdList().get(0),
+          schemaList.get(0).getSubMeasurementsList().get(0),
           rowIndex,
           new SecureRandom().nextLong());
       tablet.addValue(
-          schemaList.get(0).getValueMeasurementIdList().get(1),
+          schemaList.get(0).getSubMeasurementsList().get(1),
           rowIndex,
           new SecureRandom().nextInt());
       tablet.addValue(
-          schemaList.get(0).getValueMeasurementIdList().get(2), rowIndex, new Binary("test"));
+          schemaList.get(0).getSubMeasurementsList().get(2), rowIndex, new Binary("test"));
       timestamp++;
     }
 
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/VectorChunkWriterImpl.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/VectorChunkWriterImpl.java
index 8f1e907..3447560 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/VectorChunkWriterImpl.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/VectorChunkWriterImpl.java
@@ -44,10 +44,10 @@ public class VectorChunkWriterImpl implements IChunkWriter {
             schema.getTimeTSEncoding(),
             schema.getTimeEncoder());
 
-    List<String> valueMeasurementIdList = schema.getValueMeasurementIdList();
-    List<TSDataType> valueTSDataTypeList = schema.getValueTSDataTypeList();
-    List<TSEncoding> valueTSEncodingList = schema.getValueTSEncodingList();
-    List<Encoder> valueEncoderList = schema.getValueEncoderList();
+    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++) {
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/Tablet.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/Tablet.java
index 2c8d958..86eb0dd 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/Tablet.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/Tablet.java
@@ -98,7 +98,7 @@ public class Tablet {
     int indexInSchema = 0;
     for (IMeasurementSchema schema : schemas) {
       if (schema.getType() == TSDataType.VECTOR) {
-        for (String measurementId : schema.getValueMeasurementIdList()) {
+        for (String measurementId : schema.getSubMeasurementsList()) {
           measurementIndex.put(measurementId, indexInSchema);
         }
       } else {
@@ -124,8 +124,8 @@ public class Tablet {
     int indexOfSchema = measurementIndex.get(measurementId);
     IMeasurementSchema measurementSchema = schemas.get(indexOfSchema);
     if (measurementSchema.getType().equals(TSDataType.VECTOR)) {
-      int indexInVector = measurementSchema.getMeasurementIdColumnIndex(measurementId);
-      TSDataType dataType = measurementSchema.getValueTSDataTypeList().get(indexInVector);
+      int indexInVector = measurementSchema.getSubMeasurementColumnIndex(measurementId);
+      TSDataType dataType = measurementSchema.getSubMeasurementsTSDataTypeList().get(indexInVector);
       addValueOfDataType(dataType, rowIndex, indexInVector, value);
     } else {
       addValueOfDataType(measurementSchema.getType(), rowIndex, indexOfSchema, value);
@@ -210,7 +210,7 @@ public class Tablet {
     int valueColumnsSize = 0;
     for (IMeasurementSchema schema : schemas) {
       if (schema instanceof VectorMeasurementSchema) {
-        valueColumnsSize += schema.getValueMeasurementIdList().size();
+        valueColumnsSize += schema.getSubMeasurementsList().size();
       } else {
         valueColumnsSize++;
       }
@@ -231,8 +231,8 @@ public class Tablet {
   }
 
   private int buildVectorColumns(VectorMeasurementSchema schema, int idx) {
-    for (int i = 0; i < schema.getValueMeasurementIdList().size(); i++) {
-      TSDataType dataType = schema.getValueTSDataTypeList().get(i);
+    for (int i = 0; i < schema.getSubMeasurementsList().size(); i++) {
+      TSDataType dataType = schema.getSubMeasurementsTSDataTypeList().get(i);
       values[idx] = createValueColumnOfDataType(dataType);
       idx++;
     }
@@ -281,8 +281,8 @@ public class Tablet {
         valueOccupation += calOccupationOfOneColumn(schema.getType(), columnIndex);
         columnIndex++;
       } else {
-        for (int j = 0; j < schema.getValueTSDataTypeList().size(); j++) {
-          TSDataType dataType = schema.getValueTSDataTypeList().get(j);
+        for (int j = 0; j < schema.getSubMeasurementsTSDataTypeList().size(); j++) {
+          TSDataType dataType = schema.getSubMeasurementsTSDataTypeList().get(j);
           valueOccupation += calOccupationOfOneColumn(dataType, columnIndex);
           columnIndex++;
         }
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/IMeasurementSchema.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/IMeasurementSchema.java
index fb3358d..8898bf1 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/IMeasurementSchema.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/IMeasurementSchema.java
@@ -49,15 +49,15 @@ public interface IMeasurementSchema {
 
   Map<String, String> getProps();
 
-  List<String> getValueMeasurementIdList();
+  List<String> getSubMeasurementsList();
 
-  List<TSDataType> getValueTSDataTypeList();
+  List<TSDataType> getSubMeasurementsTSDataTypeList();
 
-  List<TSEncoding> getValueTSEncodingList();
+  List<TSEncoding> getSubMeasurementsTSEncodingList();
 
-  List<Encoder> getValueEncoderList();
+  List<Encoder> getSubMeasurementsEncoderList();
 
-  int getMeasurementIdColumnIndex(String measurementId);
+  int getSubMeasurementColumnIndex(String measurementId);
 
   int serializeTo(ByteBuffer buffer);
 
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchema.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchema.java
index 4778ca6..26e6060 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchema.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchema.java
@@ -223,22 +223,22 @@ public class MeasurementSchema
   }
 
   @Override
-  public List<String> getValueMeasurementIdList() {
+  public List<String> getSubMeasurementsList() {
     throw new UnsupportedOperationException("unsupported method for MeasurementSchema");
   }
 
   @Override
-  public List<TSDataType> getValueTSDataTypeList() {
+  public List<TSDataType> getSubMeasurementsTSDataTypeList() {
     throw new UnsupportedOperationException("unsupported method for MeasurementSchema");
   }
 
   @Override
-  public List<TSEncoding> getValueTSEncodingList() {
+  public List<TSEncoding> getSubMeasurementsTSEncodingList() {
     throw new UnsupportedOperationException("unsupported method for MeasurementSchema");
   }
 
   @Override
-  public List<Encoder> getValueEncoderList() {
+  public List<Encoder> getSubMeasurementsEncoderList() {
     throw new UnsupportedOperationException("unsupported method for MeasurementSchema");
   }
 
@@ -393,7 +393,7 @@ public class MeasurementSchema
   }
 
   @Override
-  public int getMeasurementIdColumnIndex(String measurementId) {
+  public int getSubMeasurementColumnIndex(String measurementId) {
     return 0;
   }
 }
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 f9eb2b6..c50302c 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
@@ -43,8 +43,8 @@ import java.util.Objects;
 public class VectorMeasurementSchema
     implements IMeasurementSchema, Comparable<VectorMeasurementSchema>, Serializable {
 
-  private String vectorMeausurementId;
-  private Map<String, Integer> measurementsToIndexMap;
+  private String vectorMeasurementId;
+  private Map<String, Integer> subMeasurementsIndexMap;
   private byte[] types;
   private byte[] encodings;
   private TSEncodingBuilder[] encodingConverters;
@@ -58,10 +58,10 @@ public class VectorMeasurementSchema
       TSDataType[] types,
       TSEncoding[] encodings,
       CompressionType compressionType) {
-    this.vectorMeausurementId = measurementId;
-    this.measurementsToIndexMap = new HashMap<>();
+    this.vectorMeasurementId = measurementId;
+    this.subMeasurementsIndexMap = new HashMap<>();
     for (int i = 0; i < measurements.length; i++) {
-      measurementsToIndexMap.put(measurements[i], i);
+      subMeasurementsIndexMap.put(measurements[i], i);
     }
     byte[] typesInByte = new byte[types.length];
     for (int i = 0; i < types.length; i++) {
@@ -79,10 +79,10 @@ public class VectorMeasurementSchema
   }
 
   public VectorMeasurementSchema(String measurementId, String[] measurements, TSDataType[] types) {
-    this.vectorMeausurementId = measurementId;
-    this.measurementsToIndexMap = new HashMap<>();
+    this.vectorMeasurementId = measurementId;
+    this.subMeasurementsIndexMap = new HashMap<>();
     for (int i = 0; i < measurements.length; i++) {
-      measurementsToIndexMap.put(measurements[i], i);
+      subMeasurementsIndexMap.put(measurements[i], i);
     }
     this.types = new byte[types.length];
     for (int i = 0; i < types.length; i++) {
@@ -111,7 +111,7 @@ public class VectorMeasurementSchema
 
   @Override
   public String getMeasurementId() {
-    return vectorMeausurementId;
+    return vectorMeasurementId;
   }
 
   @Override
@@ -159,16 +159,16 @@ public class VectorMeasurementSchema
   }
 
   @Override
-  public List<String> getValueMeasurementIdList() {
-    String[] measurements = new String[measurementsToIndexMap.size()];
-    for (Map.Entry<String, Integer> entry : measurementsToIndexMap.entrySet()) {
+  public List<String> getSubMeasurementsList() {
+    String[] measurements = new String[subMeasurementsIndexMap.size()];
+    for (Map.Entry<String, Integer> entry : subMeasurementsIndexMap.entrySet()) {
       measurements[entry.getValue()] = entry.getKey();
     }
     return Arrays.asList(measurements);
   }
 
   @Override
-  public List<TSDataType> getValueTSDataTypeList() {
+  public List<TSDataType> getSubMeasurementsTSDataTypeList() {
     List<TSDataType> dataTypeList = new ArrayList<>();
     for (byte dataType : types) {
       dataTypeList.add(TSDataType.deserialize(dataType));
@@ -177,7 +177,7 @@ public class VectorMeasurementSchema
   }
 
   @Override
-  public List<TSEncoding> getValueTSEncodingList() {
+  public List<TSEncoding> getSubMeasurementsTSEncodingList() {
     List<TSEncoding> encodingList = new ArrayList<>();
     for (byte encoding : encodings) {
       encodingList.add(TSEncoding.deserialize(encoding));
@@ -186,7 +186,7 @@ public class VectorMeasurementSchema
   }
 
   @Override
-  public List<Encoder> getValueEncoderList() {
+  public List<Encoder> getSubMeasurementsEncoderList() {
     List<Encoder> encoderList = new ArrayList<>();
     for (int i = 0; i < encodings.length; i++) {
       TSEncoding encoding = TSEncoding.deserialize(encodings[i]);
@@ -202,17 +202,17 @@ public class VectorMeasurementSchema
   }
 
   @Override
-  public int getMeasurementIdColumnIndex(String measurementId) {
-    return measurementsToIndexMap.get(measurementId);
+  public int getSubMeasurementColumnIndex(String measurementId) {
+    return subMeasurementsIndexMap.get(measurementId);
   }
 
   @Override
   public int serializeTo(ByteBuffer buffer) {
     int byteLen = 0;
-    byteLen += ReadWriteIOUtils.write(vectorMeausurementId, buffer);
-    byteLen += ReadWriteIOUtils.write(measurementsToIndexMap.size(), buffer);
+    byteLen += ReadWriteIOUtils.write(vectorMeasurementId, buffer);
+    byteLen += ReadWriteIOUtils.write(subMeasurementsIndexMap.size(), buffer);
 
-    for (Map.Entry<String, Integer> entry : measurementsToIndexMap.entrySet()) {
+    for (Map.Entry<String, Integer> entry : subMeasurementsIndexMap.entrySet()) {
       byteLen += ReadWriteIOUtils.write(entry.getKey(), buffer);
       byteLen += ReadWriteIOUtils.write(entry.getValue(), buffer);
     }
@@ -230,10 +230,10 @@ public class VectorMeasurementSchema
   @Override
   public int serializeTo(OutputStream outputStream) throws IOException {
     int byteLen = 0;
-    byteLen += ReadWriteIOUtils.write(vectorMeausurementId, outputStream);
-    byteLen += ReadWriteIOUtils.write(measurementsToIndexMap.size(), outputStream);
+    byteLen += ReadWriteIOUtils.write(vectorMeasurementId, outputStream);
+    byteLen += ReadWriteIOUtils.write(subMeasurementsIndexMap.size(), outputStream);
 
-    for (Map.Entry<String, Integer> entry : measurementsToIndexMap.entrySet()) {
+    for (Map.Entry<String, Integer> entry : subMeasurementsIndexMap.entrySet()) {
       byteLen += ReadWriteIOUtils.write(entry.getKey(), outputStream);
       byteLen += ReadWriteIOUtils.write(entry.getValue(), outputStream);
     }
@@ -267,7 +267,7 @@ public class VectorMeasurementSchema
   public static VectorMeasurementSchema deserializeFrom(InputStream inputStream)
       throws IOException {
     VectorMeasurementSchema vectorMeasurementSchema = new VectorMeasurementSchema();
-    vectorMeasurementSchema.vectorMeausurementId = ReadWriteIOUtils.readString(inputStream);
+    vectorMeasurementSchema.vectorMeasurementId = ReadWriteIOUtils.readString(inputStream);
 
     int measurementSize = ReadWriteIOUtils.readInt(inputStream);
     Map<String, Integer> measurementsToIndexMap = new HashMap<>();
@@ -275,7 +275,7 @@ public class VectorMeasurementSchema
       measurementsToIndexMap.put(
           ReadWriteIOUtils.readString(inputStream), ReadWriteIOUtils.readInt(inputStream));
     }
-    vectorMeasurementSchema.measurementsToIndexMap = measurementsToIndexMap;
+    vectorMeasurementSchema.subMeasurementsIndexMap = measurementsToIndexMap;
 
     byte[] types = new byte[measurementSize];
     for (int i = 0; i < measurementSize; i++) {
@@ -295,14 +295,14 @@ public class VectorMeasurementSchema
 
   public static VectorMeasurementSchema deserializeFrom(ByteBuffer buffer) {
     VectorMeasurementSchema vectorMeasurementSchema = new VectorMeasurementSchema();
-    vectorMeasurementSchema.vectorMeausurementId = ReadWriteIOUtils.readString(buffer);
+    vectorMeasurementSchema.vectorMeasurementId = 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;
+    vectorMeasurementSchema.subMeasurementsIndexMap = measurementsToIndexMap;
 
     byte[] types = new byte[measurementSize];
     for (int i = 0; i < measurementSize; i++) {
@@ -331,13 +331,13 @@ public class VectorMeasurementSchema
     VectorMeasurementSchema that = (VectorMeasurementSchema) o;
     return Arrays.equals(types, that.types)
         && Arrays.equals(encodings, that.encodings)
-        && Objects.equals(vectorMeausurementId, that.vectorMeausurementId)
+        && Objects.equals(vectorMeasurementId, that.vectorMeasurementId)
         && Objects.equals(compressor, that.compressor);
   }
 
   @Override
   public int hashCode() {
-    return Objects.hash(vectorMeausurementId, types, encodings, compressor);
+    return Objects.hash(vectorMeasurementId, types, encodings, compressor);
   }
 
   /** compare by vector name */
@@ -346,16 +346,16 @@ public class VectorMeasurementSchema
     if (equals(o)) {
       return 0;
     } else {
-      return this.vectorMeausurementId.compareTo(o.vectorMeausurementId);
+      return this.vectorMeasurementId.compareTo(o.vectorMeasurementId);
     }
   }
 
   @Override
   public String toString() {
     StringContainer sc = new StringContainer("");
-    sc.addTail(vectorMeausurementId, ",");
+    sc.addTail(vectorMeasurementId, ",");
     // string is not in real order
-    for (Map.Entry<String, Integer> entry : measurementsToIndexMap.entrySet()) {
+    for (Map.Entry<String, Integer> entry : subMeasurementsIndexMap.entrySet()) {
       sc.addTail(
           "[",
           entry.getKey(),
diff --git a/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/VectorMeasurementSchemaStub.java b/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/VectorMeasurementSchemaStub.java
index d4fbef2..4763f22 100644
--- a/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/VectorMeasurementSchemaStub.java
+++ b/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/VectorMeasurementSchemaStub.java
@@ -79,22 +79,22 @@ public class VectorMeasurementSchemaStub implements IMeasurementSchema {
   }
 
   @Override
-  public List<String> getValueMeasurementIdList() {
+  public List<String> getSubMeasurementsList() {
     return Arrays.asList("s1", "s2", "s3");
   }
 
   @Override
-  public List<TSDataType> getValueTSDataTypeList() {
+  public List<TSDataType> getSubMeasurementsTSDataTypeList() {
     return Arrays.asList(TSDataType.FLOAT, TSDataType.INT32, TSDataType.DOUBLE);
   }
 
   @Override
-  public List<TSEncoding> getValueTSEncodingList() {
+  public List<TSEncoding> getSubMeasurementsTSEncodingList() {
     return Arrays.asList(TSEncoding.PLAIN, TSEncoding.PLAIN, TSEncoding.PLAIN);
   }
 
   @Override
-  public List<Encoder> getValueEncoderList() {
+  public List<Encoder> getSubMeasurementsEncoderList() {
     return Arrays.asList(
         new PlainEncoder(TSDataType.FLOAT, 0),
         new PlainEncoder(TSDataType.INT32, 0),
@@ -122,7 +122,7 @@ public class VectorMeasurementSchemaStub implements IMeasurementSchema {
   }
 
   @Override
-  public int getMeasurementIdColumnIndex(String measurementId) {
+  public int getSubMeasurementColumnIndex(String measurementId) {
     return 0;
   }
 }