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 9e88c16b20205976db08aaacd72e33a5995d4d97
Author: JackieTien97 <[email protected]>
AuthorDate: Thu Nov 4 19:49:26 2021 +0800

    support select only one series in vector and delete useless functions in 
IChunkWriter interface
---
 .../iotdb/AlignedTimeseriesSessionExample.java     |   4 +-
 .../db/engine/cache/TimeSeriesMetadataCache.java   | 171 ---------------------
 .../inner/utils/InnerSpaceCompactionUtils.java     |   3 +-
 .../engine/memtable/AlignedWritableMemChunk.java   |  19 ++-
 .../db/engine/memtable/IWritableMemChunk.java      |   1 -
 .../iotdb/db/engine/memtable/WritableMemChunk.java |  16 +-
 .../iotdb/db/query/reader/chunk/MemPageReader.java |   5 +-
 .../apache/iotdb/db/tools/TsFileRewriteTool.java   |  12 +-
 .../org/apache/iotdb/db/utils/FileLoaderUtils.java |  51 +++---
 .../java/org/apache/iotdb/db/utils/MergeUtils.java |  35 ++---
 .../utils/CompactionFileGeneratorUtils.java        |   9 +-
 .../tsfile/write/chunk/AlignedChunkWriterImpl.java |  48 ------
 .../tsfile/write/chunk/ChunkGroupWriterImpl.java   |  23 ++-
 .../iotdb/tsfile/write/chunk/ChunkWriterImpl.java  |  41 ++---
 .../iotdb/tsfile/write/chunk/IChunkWriter.java     |  45 ------
 .../write/record/datapoint/BooleanDataPoint.java   |   6 +-
 .../tsfile/write/record/datapoint/DataPoint.java   |   4 +-
 .../write/record/datapoint/DoubleDataPoint.java    |   6 +-
 .../write/record/datapoint/FloatDataPoint.java     |   6 +-
 .../write/record/datapoint/IntDataPoint.java       |   6 +-
 .../write/record/datapoint/LongDataPoint.java      |   6 +-
 .../write/record/datapoint/StringDataPoint.java    |   6 +-
 22 files changed, 119 insertions(+), 404 deletions(-)

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 e4909de..e21cc64 100644
--- 
a/example/session/src/main/java/org/apache/iotdb/AlignedTimeseriesSessionExample.java
+++ 
b/example/session/src/main/java/org/apache/iotdb/AlignedTimeseriesSessionExample.java
@@ -72,8 +72,10 @@ public class AlignedTimeseriesSessionExample {
     //    insertTabletWithAlignedTimeseriesMethod2();
     //    insertNullableTabletWithAlignedTimeseries();
     //    insertTabletsWithAlignedTimeseries();
-
     selectTest();
+    session.executeNonQueryStatement("flush");
+    selectTest();
+
     //    selectWithValueFilterTest();
     //    selectWithGroupByTest();
     //    selectWithLastTest();
diff --git 
a/server/src/main/java/org/apache/iotdb/db/engine/cache/TimeSeriesMetadataCache.java
 
b/server/src/main/java/org/apache/iotdb/db/engine/cache/TimeSeriesMetadataCache.java
index 94d834a..b9438a2 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/engine/cache/TimeSeriesMetadataCache.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/engine/cache/TimeSeriesMetadataCache.java
@@ -26,7 +26,6 @@ import org.apache.iotdb.db.query.control.FileReaderManager;
 import org.apache.iotdb.db.utils.TestOnly;
 import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
 import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
 import org.apache.iotdb.tsfile.read.common.Path;
 import org.apache.iotdb.tsfile.utils.BloomFilter;
@@ -42,15 +41,11 @@ import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
 import java.lang.ref.WeakReference;
-import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
-import java.util.TreeSet;
 import java.util.WeakHashMap;
 import java.util.concurrent.atomic.AtomicLong;
 
@@ -182,172 +177,6 @@ public class TimeSeriesMetadataCache {
     }
   }
 
-  /**
-   * Support for vector. allSensors > subSensors
-   *
-   * @param key vector's own fullPath, e.g. root.sg1.d1.vector
-   * @param subSensorList all subSensors of this vector in query, e.g. 
[vector.s1, vector.s2,
-   *     vector.s3]
-   */
-  // Suppress synchronize warning
-  // Suppress high Cognitive Complexity warning
-  @SuppressWarnings({"squid:S1860", "squid:S3776"})
-  public List<TimeseriesMetadata> get(
-      TimeSeriesMetadataCacheKey key, List<String> subSensorList, boolean 
debug)
-      throws IOException {
-    Set<String> allSensors = new HashSet<>(subSensorList);
-    // add the time column
-    allSensors.add("");
-    if (!CACHE_ENABLE) {
-      // bloom filter part
-      TsFileSequenceReader reader = 
FileReaderManager.getInstance().get(key.filePath, true);
-      BloomFilter bloomFilter = reader.readBloomFilter();
-      if (bloomFilter != null
-          && !bloomFilter.contains(key.device + IoTDBConstant.PATH_SEPARATOR + 
key.measurement)) {
-        return Collections.emptyList();
-      }
-      return readTimeseriesMetadataForVector(reader, key, subSensorList, 
allSensors);
-    }
-
-    List<TimeseriesMetadata> res = new ArrayList<>();
-    getVectorTimeSeriesMetadataListFromCache(key, subSensorList, res);
-
-    if (res.isEmpty()) {
-      if (debug) {
-        DEBUG_LOGGER.info(
-            "Cache miss: {}.{} in file: {}", key.device, key.measurement, 
key.filePath);
-        DEBUG_LOGGER.info("Device: {}, all sensors: {}", key.device, 
allSensors);
-      }
-      // allow for the parallelism of different devices
-      synchronized (
-          devices.computeIfAbsent(key.device + SEPARATOR + key.filePath, 
WeakReference::new)) {
-        // double check
-        getVectorTimeSeriesMetadataListFromCache(key, subSensorList, res);
-        if (res.isEmpty()) {
-          Path path = new Path(key.device, key.measurement);
-          // bloom filter part
-          TsFileSequenceReader reader = 
FileReaderManager.getInstance().get(key.filePath, true);
-          BloomFilter bloomFilter = reader.readBloomFilter();
-          if (bloomFilter != null && 
!bloomFilter.contains(path.getFullPath())) {
-            if (debug) {
-              DEBUG_LOGGER.info("TimeSeries meta data {} is filter by 
bloomFilter!", key);
-            }
-            return Collections.emptyList();
-          }
-          res = readTimeseriesMetadataForVector(reader, key, subSensorList, 
allSensors);
-          Iterator<TimeseriesMetadata> iterator = res.iterator();
-          Set<String> subSensorSet = new HashSet<>(subSensorList);
-          subSensorSet.add(key.measurement);
-          // Note: allSensors > subSensors
-          // Put TimeSeriesMetadata of all sensors used in this query into 
cache
-          // Remove redundant TimeSeriesMetadata that do not belong to 
subSensors
-          while (iterator.hasNext()) {
-            TimeseriesMetadata metadata = iterator.next();
-            TimeSeriesMetadataCacheKey k =
-                new TimeSeriesMetadataCacheKey(
-                    key.filePath, key.device, metadata.getMeasurementId());
-            lruCache.put(k, metadata);
-            if (!subSensorSet.contains(metadata.getMeasurementId())) {
-              iterator.remove();
-            }
-          }
-        }
-      }
-    }
-    if (debug) {
-      if (res.isEmpty()) {
-        DEBUG_LOGGER.info("The file doesn't have this time series {}.", key);
-      } else {
-        DEBUG_LOGGER.info(
-            "Get timeseries: {}.{}  metadata in file: {}  from cache: {}.",
-            key.device,
-            key.measurement,
-            key.filePath,
-            res);
-      }
-    }
-
-    return res;
-  }
-
-  /**
-   * Support for vector, extraction of common function of `get`
-   *
-   * @param key vector's own fullPath, e.g. root.sg1.d1.vector
-   * @param subSensorList all subSensors of this vector in one query, e.g. 
[vector.s1, vector.s2,
-   *     vector.s3]
-   * @param allSensors all sensors of the device in one device, to vector, 
this should contain both
-   *     vector name and subSensors' name, e.g. [vector, vector.s1, vector.s2, 
vector.s3]
-   * @param reader TsFileSequenceReader created by file
-   */
-  private List<TimeseriesMetadata> readTimeseriesMetadataForVector(
-      TsFileSequenceReader reader,
-      TimeSeriesMetadataCacheKey key,
-      List<String> subSensorList,
-      Set<String> allSensors)
-      throws IOException {
-    Path path = new Path(key.device, key.measurement);
-    List<TimeseriesMetadata> timeSeriesMetadataList =
-        reader.readTimeseriesMetadata(path, allSensors);
-    // for new implementation of index tree, subSensor may not all stored in 
one leaf
-    // for this case, it's necessary to make sure all subSensor's timeseries 
add to list
-    TreeSet<String> subSensorsSet = new TreeSet<>(subSensorList);
-    for (int i = 0; i < timeSeriesMetadataList.size(); i++) {
-      TimeseriesMetadata tsMetadata = timeSeriesMetadataList.get(i);
-      if (tsMetadata.getTSDataType().equals(TSDataType.VECTOR)
-          && tsMetadata.getMeasurementId().equals(key.measurement)) {
-        for (int j = i + 1; j < timeSeriesMetadataList.size(); j++) {
-          tsMetadata = timeSeriesMetadataList.get(j);
-          if (!subSensorsSet.isEmpty() && 
subSensorsSet.contains(tsMetadata.getMeasurementId())) {
-            subSensorsSet.remove(tsMetadata.getMeasurementId());
-          }
-        }
-        break;
-      }
-    }
-    while (!subSensorsSet.isEmpty()) {
-      Path subPath = new Path(key.device, subSensorsSet.first());
-      List<TimeseriesMetadata> subTsMetaDataList =
-          reader.readTimeseriesMetadata(subPath, allSensors);
-      for (TimeseriesMetadata tsMetadata : subTsMetaDataList) {
-        if (!subSensorsSet.isEmpty() && 
subSensorsSet.contains(tsMetadata.getMeasurementId())) {
-          subSensorsSet.remove(tsMetadata.getMeasurementId());
-        }
-      }
-      timeSeriesMetadataList.addAll(subTsMetaDataList);
-    }
-    return timeSeriesMetadataList;
-  }
-
-  /**
-   * !!!Attention!!!
-   *
-   * <p>For a vector, e.g. root.sg1.d1.vector1(s1, s2) 
TimeSeriesMetadataCacheKey for vector1 should
-   * be {filePath: ""./data/data/seq/......., device: root.sg1.d1, 
measurement: vector1}, vector1
-   * will be in both device and measurement TimeSeriesMetadataCacheKey for 
vector1.s1 should be
-   * {filePath: ""./data/data/seq/......., device: root.sg1.d1, measurement: 
vector.s1}
-   * TimeSeriesMetadataCacheKey for vector1.s2 should be {filePath: 
""./data/data/seq/.......,
-   * device: root.sg1.d1, measurement: vector.s2}
-   */
-  private void getVectorTimeSeriesMetadataListFromCache(
-      TimeSeriesMetadataCacheKey key, List<String> subSensorList, 
List<TimeseriesMetadata> res) {
-    TimeseriesMetadata timeseriesMetadata = lruCache.getIfPresent(key);
-    if (timeseriesMetadata != null) {
-      res.add(timeseriesMetadata);
-      for (String subSensor : subSensorList) {
-        timeseriesMetadata =
-            lruCache.getIfPresent(
-                new TimeSeriesMetadataCacheKey(key.filePath, key.device, 
subSensor));
-        if (timeseriesMetadata != null) {
-          res.add(timeseriesMetadata);
-        } else {
-          res.clear();
-          break;
-        }
-      }
-    }
-  }
-
   public double calculateTimeSeriesMetadataHitRatio() {
     return lruCache.stats().hitRate();
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/utils/InnerSpaceCompactionUtils.java
 
b/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/utils/InnerSpaceCompactionUtils.java
index 8032cfe..abffc09 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/utils/InnerSpaceCompactionUtils.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/utils/InnerSpaceCompactionUtils.java
@@ -46,7 +46,6 @@ import org.apache.iotdb.tsfile.read.reader.IPointReader;
 import org.apache.iotdb.tsfile.read.reader.chunk.ChunkReaderByTimestamp;
 import org.apache.iotdb.tsfile.utils.Pair;
 import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
 import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter;
 
 import com.google.common.util.concurrent.RateLimiter;
@@ -202,7 +201,7 @@ public class InnerSpaceCompactionUtils {
     if (isChunkMetadataEmpty) {
       return;
     }
-    IChunkWriter chunkWriter;
+    ChunkWriterImpl chunkWriter;
     try {
       chunkWriter =
           new ChunkWriterImpl(
diff --git 
a/server/src/main/java/org/apache/iotdb/db/engine/memtable/AlignedWritableMemChunk.java
 
b/server/src/main/java/org/apache/iotdb/db/engine/memtable/AlignedWritableMemChunk.java
index a04651e..1315a4c 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/engine/memtable/AlignedWritableMemChunk.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/engine/memtable/AlignedWritableMemChunk.java
@@ -225,7 +225,7 @@ public class AlignedWritableMemChunk implements 
IWritableMemChunk {
 
   @Override
   public void encode(IChunkWriter chunkWriter) {
-
+    AlignedChunkWriterImpl alignedChunkWriter = (AlignedChunkWriterImpl) 
chunkWriter;
     List<Integer> timeDuplicateAlignedRowIndexList = null;
     for (int sortedRowIndex = 0; sortedRowIndex < list.size(); 
sortedRowIndex++) {
       long time = list.getTime(sortedRowIndex);
@@ -253,24 +253,27 @@ public class AlignedWritableMemChunk implements 
IWritableMemChunk {
         boolean isNull = list.isValueMarked(originRowIndex, columnIndex);
         switch (dataTypes.get(columnIndex)) {
           case BOOLEAN:
-            chunkWriter.write(
+            alignedChunkWriter.write(
                 time, list.getBooleanByValueIndex(originRowIndex, 
columnIndex), isNull);
             break;
           case INT32:
-            chunkWriter.write(time, list.getIntByValueIndex(originRowIndex, 
columnIndex), isNull);
+            alignedChunkWriter.write(
+                time, list.getIntByValueIndex(originRowIndex, columnIndex), 
isNull);
             break;
           case INT64:
-            chunkWriter.write(time, list.getLongByValueIndex(originRowIndex, 
columnIndex), isNull);
+            alignedChunkWriter.write(
+                time, list.getLongByValueIndex(originRowIndex, columnIndex), 
isNull);
             break;
           case FLOAT:
-            chunkWriter.write(time, list.getFloatByValueIndex(originRowIndex, 
columnIndex), isNull);
+            alignedChunkWriter.write(
+                time, list.getFloatByValueIndex(originRowIndex, columnIndex), 
isNull);
             break;
           case DOUBLE:
-            chunkWriter.write(
+            alignedChunkWriter.write(
                 time, list.getDoubleByValueIndex(originRowIndex, columnIndex), 
isNull);
             break;
           case TEXT:
-            chunkWriter.write(
+            alignedChunkWriter.write(
                 time, list.getBinaryByValueIndex(originRowIndex, columnIndex), 
isNull);
             break;
           default:
@@ -280,7 +283,7 @@ public class AlignedWritableMemChunk implements 
IWritableMemChunk {
             break;
         }
       }
-      chunkWriter.write(time);
+      alignedChunkWriter.write(time);
       timeDuplicateAlignedRowIndexList = null;
     }
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/engine/memtable/IWritableMemChunk.java
 
b/server/src/main/java/org/apache/iotdb/db/engine/memtable/IWritableMemChunk.java
index 203f4e6..ee10ea1 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/engine/memtable/IWritableMemChunk.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/engine/memtable/IWritableMemChunk.java
@@ -102,7 +102,6 @@ public interface IWritableMemChunk {
    *
    * <p>the mechanism is just like copy on write
    *
-   * @param measurementList the measurementList to be queried
    * @return sorted tv list
    */
   TVList getSortedTvListForQuery(List<IMeasurementSchema> schemaList);
diff --git 
a/server/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java
 
b/server/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java
index aeb1c66..99afe0e 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java
@@ -302,6 +302,8 @@ public class WritableMemChunk implements IWritableMemChunk {
   @Override
   public void encode(IChunkWriter chunkWriter) {
 
+    ChunkWriterImpl chunkWriterImpl = (ChunkWriterImpl) chunkWriter;
+
     for (int sortedRowIndex = 0; sortedRowIndex < list.size(); 
sortedRowIndex++) {
       long time = list.getTime(sortedRowIndex);
 
@@ -312,27 +314,27 @@ public class WritableMemChunk implements 
IWritableMemChunk {
 
       // store last point for SDT
       if (sortedRowIndex + 1 == list.size()) {
-        ((ChunkWriterImpl) chunkWriter).setLastPoint(true);
+        ((ChunkWriterImpl) chunkWriterImpl).setLastPoint(true);
       }
 
       switch (schema.getType()) {
         case BOOLEAN:
-          chunkWriter.write(time, list.getBoolean(sortedRowIndex), false);
+          chunkWriterImpl.write(time, list.getBoolean(sortedRowIndex));
           break;
         case INT32:
-          chunkWriter.write(time, list.getInt(sortedRowIndex), false);
+          chunkWriterImpl.write(time, list.getInt(sortedRowIndex));
           break;
         case INT64:
-          chunkWriter.write(time, list.getLong(sortedRowIndex), false);
+          chunkWriterImpl.write(time, list.getLong(sortedRowIndex));
           break;
         case FLOAT:
-          chunkWriter.write(time, list.getFloat(sortedRowIndex), false);
+          chunkWriterImpl.write(time, list.getFloat(sortedRowIndex));
           break;
         case DOUBLE:
-          chunkWriter.write(time, list.getDouble(sortedRowIndex), false);
+          chunkWriterImpl.write(time, list.getDouble(sortedRowIndex));
           break;
         case TEXT:
-          chunkWriter.write(time, list.getBinary(sortedRowIndex), false);
+          chunkWriterImpl.write(time, list.getBinary(sortedRowIndex));
           break;
         default:
           LOGGER.error("WritableMemChunk does not support data type: {}", 
schema.getType());
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 fa3d256..ea64694 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
@@ -18,7 +18,6 @@
  */
 package org.apache.iotdb.db.query.reader.chunk;
 
-import java.io.IOException;
 import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
@@ -30,6 +29,8 @@ import org.apache.iotdb.tsfile.read.filter.operator.AndFilter;
 import org.apache.iotdb.tsfile.read.reader.IPageReader;
 import org.apache.iotdb.tsfile.read.reader.IPointReader;
 
+import java.io.IOException;
+
 public class MemPageReader implements IPageReader {
 
   private final IPointReader timeValuePairIterator;
@@ -45,7 +46,7 @@ public class MemPageReader implements IPageReader {
 
   @Override
   public BatchData getAllSatisfiedPageData(boolean ascending) throws 
IOException {
-    TSDataType  dataType = chunkMetadata.getDataType();
+    TSDataType dataType = chunkMetadata.getDataType();
     BatchData batchData = BatchDataFactory.createBatchData(dataType, 
ascending, false);
     while (timeValuePairIterator.hasNextTimeValuePair()) {
       TimeValuePair timeValuePair = timeValuePairIterator.nextTimeValuePair();
diff --git 
a/server/src/main/java/org/apache/iotdb/db/tools/TsFileRewriteTool.java 
b/server/src/main/java/org/apache/iotdb/db/tools/TsFileRewriteTool.java
index b3183ab..8c61368 100644
--- a/server/src/main/java/org/apache/iotdb/db/tools/TsFileRewriteTool.java
+++ b/server/src/main/java/org/apache/iotdb/db/tools/TsFileRewriteTool.java
@@ -436,22 +436,22 @@ public class TsFileRewriteTool implements AutoCloseable {
       getOrDefaultTsFileIOWriter(oldTsFile, partitionId);
       switch (schema.getType()) {
         case INT32:
-          chunkWriter.write(time, (int) value, false);
+          chunkWriter.write(time, (int) value);
           break;
         case INT64:
-          chunkWriter.write(time, (long) value, false);
+          chunkWriter.write(time, (long) value);
           break;
         case FLOAT:
-          chunkWriter.write(time, (float) value, false);
+          chunkWriter.write(time, (float) value);
           break;
         case DOUBLE:
-          chunkWriter.write(time, (double) value, false);
+          chunkWriter.write(time, (double) value);
           break;
         case BOOLEAN:
-          chunkWriter.write(time, (boolean) value, false);
+          chunkWriter.write(time, (boolean) value);
           break;
         case TEXT:
-          chunkWriter.write(time, (Binary) value, false);
+          chunkWriter.write(time, (Binary) value);
           break;
         default:
           throw new UnSupportedDataTypeException(
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 e1e4594..85517fe 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
@@ -19,6 +19,7 @@
 package org.apache.iotdb.db.utils;
 
 import org.apache.iotdb.db.engine.cache.TimeSeriesMetadataCache;
+import 
org.apache.iotdb.db.engine.cache.TimeSeriesMetadataCache.TimeSeriesMetadataCacheKey;
 import org.apache.iotdb.db.engine.modification.Modification;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.metadata.path.AlignedPath;
@@ -47,6 +48,7 @@ import org.apache.iotdb.tsfile.read.reader.chunk.ChunkReader;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map.Entry;
 import java.util.Set;
@@ -165,31 +167,34 @@ public class FileLoaderUtils {
       // load all the TimeseriesMetadata of vector, the first one is for time 
column and the
       // remaining is for sub sensors
       // the order of timeSeriesMetadata list is same as subSensorList's order
-      List<TimeseriesMetadata> timeSeriesMetadata =
-          TimeSeriesMetadataCache.getInstance()
-              .get(
-                  new TimeSeriesMetadataCache.TimeSeriesMetadataCacheKey(
-                      resource.getTsFilePath(), vectorPath.getDevice(), ""),
-                  new ArrayList<>(vectorPath.getMeasurementList()),
-                  context.isDebug());
-
-      // assemble VectorTimeSeriesMetadata
-      if (timeSeriesMetadata != null && !timeSeriesMetadata.isEmpty()) {
-        timeSeriesMetadata
-            .get(0)
-            .setChunkMetadataLoader(
-                new DiskChunkMetadataLoader(resource, vectorPath, context, 
filter));
-        for (int i = 1; i < timeSeriesMetadata.size(); i++) {
-          PartialPath subPath = vectorPath.getPathWithMeasurement(i - 1);
-          timeSeriesMetadata
-              .get(i)
-              .setChunkMetadataLoader(
-                  new DiskChunkMetadataLoader(resource, subPath, context, 
filter));
+      TimeSeriesMetadataCache cache = TimeSeriesMetadataCache.getInstance();
+      List<String> valueMeasurementList = vectorPath.getMeasurementList();
+      ;
+      Set<String> allSensors = new HashSet<>(valueMeasurementList);
+      allSensors.add("");
+      boolean isDebug = context.isDebug();
+      String filePath = resource.getTsFilePath();
+      ;
+      String deviceId = vectorPath.getDevice();
+      TimeseriesMetadata timeColumn =
+          cache.get(new TimeSeriesMetadataCacheKey(filePath, deviceId, ""), 
allSensors, isDebug);
+      if (timeColumn != null) {
+        timeColumn.setChunkMetadataLoader(
+            new DiskChunkMetadataLoader(resource, vectorPath, context, 
filter));
+        List<TimeseriesMetadata> valueTimeSeriesMetadataList =
+            new ArrayList<>(valueMeasurementList.size());
+        for (String valueMeasurement : valueMeasurementList) {
+          TimeseriesMetadata valueColumn =
+              cache.get(
+                  new TimeSeriesMetadataCacheKey(filePath, deviceId, 
valueMeasurement),
+                  allSensors,
+                  isDebug);
+          valueColumn.setChunkMetadataLoader(
+              new DiskChunkMetadataLoader(resource, vectorPath, context, 
filter));
+          valueTimeSeriesMetadataList.add(valueColumn);
         }
         alignedTimeSeriesMetadata =
-            new AlignedTimeSeriesMetadata(
-                timeSeriesMetadata.get(0),
-                timeSeriesMetadata.subList(1, timeSeriesMetadata.size()));
+            new AlignedTimeSeriesMetadata(timeColumn, 
valueTimeSeriesMetadataList);
       }
     } else { // if the tsfile is unclosed, we just get it directly from 
TsFileResource
       alignedTimeSeriesMetadata = (AlignedTimeSeriesMetadata) 
resource.getTimeSeriesMetadata();
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/MergeUtils.java 
b/server/src/main/java/org/apache/iotdb/db/utils/MergeUtils.java
index 343c03d..052c834 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/MergeUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/MergeUtils.java
@@ -30,7 +30,7 @@ import org.apache.iotdb.tsfile.read.common.BatchData;
 import org.apache.iotdb.tsfile.read.common.Chunk;
 import org.apache.iotdb.tsfile.read.common.Path;
 import org.apache.iotdb.tsfile.read.reader.chunk.ChunkReader;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
+import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -50,28 +50,25 @@ public class MergeUtils {
     // util class
   }
 
-  public static void writeTVPair(TimeValuePair timeValuePair, IChunkWriter 
chunkWriter) {
+  public static void writeTVPair(TimeValuePair timeValuePair, ChunkWriterImpl 
chunkWriter) {
     switch (chunkWriter.getDataType()) {
       case TEXT:
-        chunkWriter.write(
-            timeValuePair.getTimestamp(), 
timeValuePair.getValue().getBinary(), false);
+        chunkWriter.write(timeValuePair.getTimestamp(), 
timeValuePair.getValue().getBinary());
         break;
       case DOUBLE:
-        chunkWriter.write(
-            timeValuePair.getTimestamp(), 
timeValuePair.getValue().getDouble(), false);
+        chunkWriter.write(timeValuePair.getTimestamp(), 
timeValuePair.getValue().getDouble());
         break;
       case BOOLEAN:
-        chunkWriter.write(
-            timeValuePair.getTimestamp(), 
timeValuePair.getValue().getBoolean(), false);
+        chunkWriter.write(timeValuePair.getTimestamp(), 
timeValuePair.getValue().getBoolean());
         break;
       case INT64:
-        chunkWriter.write(timeValuePair.getTimestamp(), 
timeValuePair.getValue().getLong(), false);
+        chunkWriter.write(timeValuePair.getTimestamp(), 
timeValuePair.getValue().getLong());
         break;
       case INT32:
-        chunkWriter.write(timeValuePair.getTimestamp(), 
timeValuePair.getValue().getInt(), false);
+        chunkWriter.write(timeValuePair.getTimestamp(), 
timeValuePair.getValue().getInt());
         break;
       case FLOAT:
-        chunkWriter.write(timeValuePair.getTimestamp(), 
timeValuePair.getValue().getFloat(), false);
+        chunkWriter.write(timeValuePair.getTimestamp(), 
timeValuePair.getValue().getFloat());
         break;
       default:
         throw new UnsupportedOperationException("Unknown data type " + 
chunkWriter.getDataType());
@@ -95,7 +92,7 @@ public class MergeUtils {
     return totalSize;
   }
 
-  public static int writeChunkWithoutUnseq(Chunk chunk, IChunkWriter 
chunkWriter)
+  public static int writeChunkWithoutUnseq(Chunk chunk, ChunkWriterImpl 
chunkWriter)
       throws IOException {
     ChunkReader chunkReader = new ChunkReader(chunk, null);
     int ptWritten = 0;
@@ -109,25 +106,25 @@ public class MergeUtils {
     return ptWritten;
   }
 
-  public static void writeBatchPoint(BatchData batchData, int i, IChunkWriter 
chunkWriter) {
+  public static void writeBatchPoint(BatchData batchData, int i, 
ChunkWriterImpl chunkWriter) {
     switch (chunkWriter.getDataType()) {
       case TEXT:
-        chunkWriter.write(batchData.getTimeByIndex(i), 
batchData.getBinaryByIndex(i), false);
+        chunkWriter.write(batchData.getTimeByIndex(i), 
batchData.getBinaryByIndex(i));
         break;
       case DOUBLE:
-        chunkWriter.write(batchData.getTimeByIndex(i), 
batchData.getDoubleByIndex(i), false);
+        chunkWriter.write(batchData.getTimeByIndex(i), 
batchData.getDoubleByIndex(i));
         break;
       case BOOLEAN:
-        chunkWriter.write(batchData.getTimeByIndex(i), 
batchData.getBooleanByIndex(i), false);
+        chunkWriter.write(batchData.getTimeByIndex(i), 
batchData.getBooleanByIndex(i));
         break;
       case INT64:
-        chunkWriter.write(batchData.getTimeByIndex(i), 
batchData.getLongByIndex(i), false);
+        chunkWriter.write(batchData.getTimeByIndex(i), 
batchData.getLongByIndex(i));
         break;
       case INT32:
-        chunkWriter.write(batchData.getTimeByIndex(i), 
batchData.getIntByIndex(i), false);
+        chunkWriter.write(batchData.getTimeByIndex(i), 
batchData.getIntByIndex(i));
         break;
       case FLOAT:
-        chunkWriter.write(batchData.getTimeByIndex(i), 
batchData.getFloatByIndex(i), false);
+        chunkWriter.write(batchData.getTimeByIndex(i), 
batchData.getFloatByIndex(i));
         break;
       default:
         throw new UnsupportedOperationException("Unknown data type " + 
chunkWriter.getDataType());
diff --git 
a/server/src/test/java/org/apache/iotdb/db/engine/compaction/utils/CompactionFileGeneratorUtils.java
 
b/server/src/test/java/org/apache/iotdb/db/engine/compaction/utils/CompactionFileGeneratorUtils.java
index 579c145..57b4b6b 100644
--- 
a/server/src/test/java/org/apache/iotdb/db/engine/compaction/utils/CompactionFileGeneratorUtils.java
+++ 
b/server/src/test/java/org/apache/iotdb/db/engine/compaction/utils/CompactionFileGeneratorUtils.java
@@ -32,7 +32,6 @@ import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.utils.Pair;
 import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
 import org.apache.iotdb.tsfile.write.schema.UnaryMeasurementSchema;
 import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter;
 
@@ -126,11 +125,11 @@ public class CompactionFileGeneratorUtils {
       for (String sensor : deviceMeasurementEntry.getValue()) {
         long currTime = startTime;
         for (List<Long> chunk : chunkPagePointsNum) {
-          IChunkWriter chunkWriter =
+          ChunkWriterImpl chunkWriter =
               new ChunkWriterImpl(new UnaryMeasurementSchema(sensor, 
TSDataType.INT64), true);
           for (Long page : chunk) {
             for (long i = 0; i < page; i++) {
-              chunkWriter.write(currTime, currTime, false);
+              chunkWriter.write(currTime, currTime);
               newTsFileResource.updateStartTime(device, currTime);
               newTsFileResource.updateEndTime(device, currTime);
               currTime++;
@@ -183,12 +182,12 @@ public class CompactionFileGeneratorUtils {
       writer.startChunkGroup(device);
       for (String sensor : deviceMeasurementEntry.getValue()) {
         List<long[][]> chunks = chunkPagePointsNum.get(currChunksIndex);
-        IChunkWriter chunkWriter =
+        ChunkWriterImpl chunkWriter =
             new ChunkWriterImpl(new UnaryMeasurementSchema(sensor, 
TSDataType.INT64), true);
         for (long[][] pages : chunks) {
           for (long[] starEndTime : pages) {
             for (long i = starEndTime[0]; i < starEndTime[1]; i++) {
-              chunkWriter.write(i, i, false);
+              chunkWriter.write(i, i);
               newTsFileResource.updateStartTime(device, i);
               newTsFileResource.updateEndTime(device, i);
             }
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/AlignedChunkWriterImpl.java
 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/AlignedChunkWriterImpl.java
index f466d80..0bd9bc5 100644
--- 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/AlignedChunkWriterImpl.java
+++ 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/AlignedChunkWriterImpl.java
@@ -63,37 +63,30 @@ public class AlignedChunkWriterImpl implements IChunkWriter 
{
     this.valueIndex = 0;
   }
 
-  @Override
   public void write(long time, int value, boolean isNull) {
     valueChunkWriterList.get(valueIndex++).write(time, value, isNull);
   }
 
-  @Override
   public void write(long time, long value, boolean isNull) {
     valueChunkWriterList.get(valueIndex++).write(time, value, isNull);
   }
 
-  @Override
   public void write(long time, boolean value, boolean isNull) {
     valueChunkWriterList.get(valueIndex++).write(time, value, isNull);
   }
 
-  @Override
   public void write(long time, float value, boolean isNull) {
     valueChunkWriterList.get(valueIndex++).write(time, value, isNull);
   }
 
-  @Override
   public void write(long time, double value, boolean isNull) {
     valueChunkWriterList.get(valueIndex++).write(time, value, isNull);
   }
 
-  @Override
   public void write(long time, Binary value, boolean isNull) {
     valueChunkWriterList.get(valueIndex++).write(time, value, isNull);
   }
 
-  @Override
   public void write(long time) {
     valueIndex = 0;
     timeChunkWriter.write(time);
@@ -102,37 +95,6 @@ public class AlignedChunkWriterImpl implements IChunkWriter 
{
     }
   }
 
-  // TODO tsfile write interface
-  @Override
-  public void write(long[] timestamps, int[] values, int batchSize) {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public void write(long[] timestamps, long[] values, int batchSize) {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public void write(long[] timestamps, boolean[] values, int batchSize) {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public void write(long[] timestamps, float[] values, int batchSize) {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public void write(long[] timestamps, double[] values, int batchSize) {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public void write(long[] timestamps, Binary[] values, int batchSize) {
-    throw new UnsupportedOperationException();
-  }
-
   /**
    * check occupied memory size, if it exceeds the PageSize threshold, 
construct a page and put it
    * to pageBuffer
@@ -188,14 +150,4 @@ public class AlignedChunkWriterImpl implements 
IChunkWriter {
       valueChunkWriter.clearPageWriter();
     }
   }
-
-  @Override
-  public int getNumOfPages() {
-    return timeChunkWriter.getNumOfPages();
-  }
-
-  @Override
-  public TSDataType getDataType() {
-    return TSDataType.VECTOR;
-  }
 }
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkGroupWriterImpl.java
 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkGroupWriterImpl.java
index b7ceb30..f7887e6 100644
--- 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkGroupWriterImpl.java
+++ 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkGroupWriterImpl.java
@@ -74,7 +74,7 @@ public class ChunkGroupWriterImpl implements 
IChunkGroupWriter {
         throw new NoMeasurementException(
             "time " + time + ", measurement id " + measurementId + " not 
found!");
       }
-      point.writeTo(time, chunkWriters.get(measurementId));
+      point.writeTo(time, (ChunkWriterImpl) chunkWriters.get(measurementId));
     }
   }
 
@@ -109,7 +109,8 @@ public class ChunkGroupWriterImpl implements 
IChunkGroupWriter {
     VectorMeasurementSchema vectorMeasurementSchema =
         (VectorMeasurementSchema) tablet.getSchemas().get(index);
     List<TSDataType> valueDataTypes = 
vectorMeasurementSchema.getSubMeasurementsTSDataTypeList();
-    IChunkWriter vectorChunkWriter = chunkWriters.get(measurement);
+    AlignedChunkWriterImpl vectorChunkWriter =
+        (AlignedChunkWriterImpl) chunkWriters.get(measurement);
     for (int row = 0; row < batchSize; row++) {
       long time = tablet.timestamps[row];
       for (int columnIndex = 0; columnIndex < valueDataTypes.size(); 
columnIndex++) {
@@ -161,33 +162,27 @@ public class ChunkGroupWriterImpl implements 
IChunkGroupWriter {
     int batchSize = tablet.rowSize;
     switch (dataType) {
       case INT32:
-        chunkWriters
-            .get(measurementId)
+        ((ChunkWriterImpl) chunkWriters.get(measurementId))
             .write(tablet.timestamps, (int[]) tablet.values[index], batchSize);
         break;
       case INT64:
-        chunkWriters
-            .get(measurementId)
+        ((ChunkWriterImpl) chunkWriters.get(measurementId))
             .write(tablet.timestamps, (long[]) tablet.values[index], 
batchSize);
         break;
       case FLOAT:
-        chunkWriters
-            .get(measurementId)
+        ((ChunkWriterImpl) chunkWriters.get(measurementId))
             .write(tablet.timestamps, (float[]) tablet.values[index], 
batchSize);
         break;
       case DOUBLE:
-        chunkWriters
-            .get(measurementId)
+        ((ChunkWriterImpl) chunkWriters.get(measurementId))
             .write(tablet.timestamps, (double[]) tablet.values[index], 
batchSize);
         break;
       case BOOLEAN:
-        chunkWriters
-            .get(measurementId)
+        ((ChunkWriterImpl) chunkWriters.get(measurementId))
             .write(tablet.timestamps, (boolean[]) tablet.values[index], 
batchSize);
         break;
       case TEXT:
-        chunkWriters
-            .get(measurementId)
+        ((ChunkWriterImpl) chunkWriters.get(measurementId))
             .write(tablet.timestamps, (Binary[]) tablet.values[index], 
batchSize);
         break;
       default:
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkWriterImpl.java 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkWriterImpl.java
index f93cad3..d603c58 100644
--- 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkWriterImpl.java
+++ 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkWriterImpl.java
@@ -46,12 +46,12 @@ public class ChunkWriterImpl implements IChunkWriter {
 
   private static final Logger logger = 
LoggerFactory.getLogger(ChunkWriterImpl.class);
 
-  private IMeasurementSchema measurementSchema;
+  private final IMeasurementSchema measurementSchema;
 
-  private ICompressor compressor;
+  private final ICompressor compressor;
 
   /** all pages of this chunk. */
-  private PublicBAOS pageBuffer;
+  private final PublicBAOS pageBuffer;
 
   private int numOfPages;
 
@@ -145,8 +145,7 @@ public class ChunkWriterImpl implements IChunkWriter {
     }
   }
 
-  @Override
-  public void write(long time, long value, boolean isNull) {
+  public void write(long time, long value) {
     // store last point for sdtEncoding, it still needs to go through encoding 
process
     // in case it exceeds compdev and needs to store second last point
     if (!isSdtEncoding || sdtEncoder.encodeLong(time, value)) {
@@ -160,8 +159,7 @@ public class ChunkWriterImpl implements IChunkWriter {
     checkPageSizeAndMayOpenANewPage();
   }
 
-  @Override
-  public void write(long time, int value, boolean isNull) {
+  public void write(long time, int value) {
     if (!isSdtEncoding || sdtEncoder.encodeInt(time, value)) {
       pageWriter.write(
           isSdtEncoding ? sdtEncoder.getTime() : time,
@@ -173,14 +171,12 @@ public class ChunkWriterImpl implements IChunkWriter {
     checkPageSizeAndMayOpenANewPage();
   }
 
-  @Override
-  public void write(long time, boolean value, boolean isNull) {
+  public void write(long time, boolean value) {
     pageWriter.write(time, value);
     checkPageSizeAndMayOpenANewPage();
   }
 
-  @Override
-  public void write(long time, float value, boolean isNull) {
+  public void write(long time, float value) {
     if (!isSdtEncoding || sdtEncoder.encodeFloat(time, value)) {
       pageWriter.write(
           isSdtEncoding ? sdtEncoder.getTime() : time,
@@ -193,8 +189,7 @@ public class ChunkWriterImpl implements IChunkWriter {
     checkPageSizeAndMayOpenANewPage();
   }
 
-  @Override
-  public void write(long time, double value, boolean isNull) {
+  public void write(long time, double value) {
     if (!isSdtEncoding || sdtEncoder.encodeDouble(time, value)) {
       pageWriter.write(
           isSdtEncoding ? sdtEncoder.getTime() : time,
@@ -206,18 +201,11 @@ public class ChunkWriterImpl implements IChunkWriter {
     checkPageSizeAndMayOpenANewPage();
   }
 
-  @Override
-  public void write(long time, Binary value, boolean isNull) {
+  public void write(long time, Binary value) {
     pageWriter.write(time, value);
     checkPageSizeAndMayOpenANewPage();
   }
 
-  @Override
-  public void write(long time) {
-    throw new IllegalStateException("write time method is not implemented in 
common chunk writer");
-  }
-
-  @Override
   public void write(long[] timestamps, int[] values, int batchSize) {
     if (isSdtEncoding) {
       batchSize = sdtEncoder.encode(timestamps, values, batchSize);
@@ -226,7 +214,6 @@ public class ChunkWriterImpl implements IChunkWriter {
     checkPageSizeAndMayOpenANewPage();
   }
 
-  @Override
   public void write(long[] timestamps, long[] values, int batchSize) {
     if (isSdtEncoding) {
       batchSize = sdtEncoder.encode(timestamps, values, batchSize);
@@ -235,13 +222,11 @@ public class ChunkWriterImpl implements IChunkWriter {
     checkPageSizeAndMayOpenANewPage();
   }
 
-  @Override
   public void write(long[] timestamps, boolean[] values, int batchSize) {
     pageWriter.write(timestamps, values, batchSize);
     checkPageSizeAndMayOpenANewPage();
   }
 
-  @Override
   public void write(long[] timestamps, float[] values, int batchSize) {
     if (isSdtEncoding) {
       batchSize = sdtEncoder.encode(timestamps, values, batchSize);
@@ -250,7 +235,6 @@ public class ChunkWriterImpl implements IChunkWriter {
     checkPageSizeAndMayOpenANewPage();
   }
 
-  @Override
   public void write(long[] timestamps, double[] values, int batchSize) {
     if (isSdtEncoding) {
       batchSize = sdtEncoder.encode(timestamps, values, batchSize);
@@ -259,7 +243,6 @@ public class ChunkWriterImpl implements IChunkWriter {
     checkPageSizeAndMayOpenANewPage();
   }
 
-  @Override
   public void write(long[] timestamps, Binary[] values, int batchSize) {
     pageWriter.write(timestamps, values, batchSize);
     checkPageSizeAndMayOpenANewPage();
@@ -365,12 +348,6 @@ public class ChunkWriterImpl implements IChunkWriter {
     pageWriter = null;
   }
 
-  @Override
-  public int getNumOfPages() {
-    return numOfPages;
-  }
-
-  @Override
   public TSDataType getDataType() {
     return measurementSchema.getType();
   }
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/IChunkWriter.java 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/IChunkWriter.java
index fcef96a..992862e 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/IChunkWriter.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/IChunkWriter.java
@@ -18,8 +18,6 @@
  */
 package org.apache.iotdb.tsfile.write.chunk;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
 import org.apache.iotdb.tsfile.write.writer.TsFileIOWriter;
 
 import java.io.IOException;
@@ -27,45 +25,6 @@ import java.io.IOException;
 /** IChunkWriter provides a list of writing methods for different value types. 
*/
 public interface IChunkWriter {
 
-  /** write a time value pair. */
-  void write(long time, int value, boolean isNull);
-
-  /** write a time value pair. */
-  void write(long time, long value, boolean isNull);
-
-  /** write a time value pair. */
-  void write(long time, boolean value, boolean isNull);
-
-  /** write a time value pair. */
-  void write(long time, float value, boolean isNull);
-
-  /** write a time value pair. */
-  void write(long time, double value, boolean isNull);
-
-  /** write a time value pair. */
-  void write(long time, Binary value, boolean isNull);
-
-  /** write a time. */
-  void write(long time);
-
-  /** write time series */
-  void write(long[] timestamps, int[] values, int batchSize);
-
-  /** write time series */
-  void write(long[] timestamps, long[] values, int batchSize);
-
-  /** write time series */
-  void write(long[] timestamps, boolean[] values, int batchSize);
-
-  /** write time series */
-  void write(long[] timestamps, float[] values, int batchSize);
-
-  /** write time series */
-  void write(long[] timestamps, double[] values, int batchSize);
-
-  /** write time series */
-  void write(long[] timestamps, Binary[] values, int batchSize);
-
   /** flush data to TsFileIOWriter. */
   void writeToFileWriter(TsFileIOWriter tsfileWriter) throws IOException;
 
@@ -86,8 +45,4 @@ public interface IChunkWriter {
 
   /** set the current pageWriter to null, friendly for gc */
   void clearPageWriter();
-
-  int getNumOfPages();
-
-  TSDataType getDataType();
 }
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/BooleanDataPoint.java
 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/BooleanDataPoint.java
index e8b4bee..62cfdd4 100644
--- 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/BooleanDataPoint.java
+++ 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/BooleanDataPoint.java
@@ -19,7 +19,7 @@
 package org.apache.iotdb.tsfile.write.record.datapoint;
 
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
+import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -42,12 +42,12 @@ public class BooleanDataPoint extends DataPoint {
   }
 
   @Override
-  public void writeTo(long time, IChunkWriter writer) {
+  public void writeTo(long time, ChunkWriterImpl writer) {
     if (writer == null) {
       LOG.warn("given IChunkWriter is null, do nothing and return");
       return;
     }
-    writer.write(time, value, false);
+    writer.write(time, value);
   }
 
   @Override
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/DataPoint.java
 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/DataPoint.java
index 8497651..a452fc8 100644
--- 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/DataPoint.java
+++ 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/DataPoint.java
@@ -23,7 +23,7 @@ import 
org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.utils.Binary;
 import org.apache.iotdb.tsfile.utils.StringContainer;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
+import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
 
 import java.io.IOException;
 import java.math.BigDecimal;
@@ -101,7 +101,7 @@ public abstract class DataPoint {
    * @param writer writer
    * @throws IOException exception in IO
    */
-  public abstract void writeTo(long time, IChunkWriter writer) throws 
IOException;
+  public abstract void writeTo(long time, ChunkWriterImpl writer) throws 
IOException;
 
   public String getMeasurementId() {
     return measurementId;
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/DoubleDataPoint.java
 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/DoubleDataPoint.java
index 853313e..ed00375 100644
--- 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/DoubleDataPoint.java
+++ 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/DoubleDataPoint.java
@@ -19,7 +19,7 @@
 package org.apache.iotdb.tsfile.write.record.datapoint;
 
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
+import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -42,12 +42,12 @@ public class DoubleDataPoint extends DataPoint {
   }
 
   @Override
-  public void writeTo(long time, IChunkWriter writer) {
+  public void writeTo(long time, ChunkWriterImpl writer) {
     if (writer == null) {
       LOG.warn("given IChunkWriter is null, do nothing and return");
       return;
     }
-    writer.write(time, value, false);
+    writer.write(time, value);
   }
 
   @Override
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/FloatDataPoint.java
 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/FloatDataPoint.java
index 863be98..f00bdbe 100644
--- 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/FloatDataPoint.java
+++ 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/FloatDataPoint.java
@@ -19,7 +19,7 @@
 package org.apache.iotdb.tsfile.write.record.datapoint;
 
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
+import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -42,12 +42,12 @@ public class FloatDataPoint extends DataPoint {
   }
 
   @Override
-  public void writeTo(long time, IChunkWriter writer) {
+  public void writeTo(long time, ChunkWriterImpl writer) {
     if (writer == null) {
       LOG.warn("given IChunkWriter is null, do nothing and return");
       return;
     }
-    writer.write(time, value, false);
+    writer.write(time, value);
   }
 
   @Override
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/IntDataPoint.java
 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/IntDataPoint.java
index 02e0d5c..14bab49 100644
--- 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/IntDataPoint.java
+++ 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/IntDataPoint.java
@@ -19,7 +19,7 @@
 package org.apache.iotdb.tsfile.write.record.datapoint;
 
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
+import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -42,12 +42,12 @@ public class IntDataPoint extends DataPoint {
   }
 
   @Override
-  public void writeTo(long time, IChunkWriter writer) {
+  public void writeTo(long time, ChunkWriterImpl writer) {
     if (writer == null) {
       LOG.warn("given IChunkWriter is null, do nothing and return");
       return;
     }
-    writer.write(time, value, false);
+    writer.write(time, value);
   }
 
   @Override
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/LongDataPoint.java
 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/LongDataPoint.java
index 8dce510..f2549f5 100644
--- 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/LongDataPoint.java
+++ 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/LongDataPoint.java
@@ -19,7 +19,7 @@
 package org.apache.iotdb.tsfile.write.record.datapoint;
 
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
+import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -42,12 +42,12 @@ public class LongDataPoint extends DataPoint {
   }
 
   @Override
-  public void writeTo(long time, IChunkWriter writer) {
+  public void writeTo(long time, ChunkWriterImpl writer) {
     if (writer == null) {
       LOG.warn("given IChunkWriter is null, do nothing and return");
       return;
     }
-    writer.write(time, value, false);
+    writer.write(time, value);
   }
 
   @Override
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/StringDataPoint.java
 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/StringDataPoint.java
index cf371bc..72c019b 100644
--- 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/StringDataPoint.java
+++ 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/datapoint/StringDataPoint.java
@@ -20,7 +20,7 @@ package org.apache.iotdb.tsfile.write.record.datapoint;
 
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.utils.Binary;
-import org.apache.iotdb.tsfile.write.chunk.IChunkWriter;
+import org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -43,12 +43,12 @@ public class StringDataPoint extends DataPoint {
   }
 
   @Override
-  public void writeTo(long time, IChunkWriter writer) {
+  public void writeTo(long time, ChunkWriterImpl writer) {
     if (writer == null) {
       LOG.warn("given IChunkWriter is null, do nothing and return");
       return;
     }
-    writer.write(time, value, false);
+    writer.write(time, value);
   }
 
   @Override

Reply via email to