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


The following commit(s) were added to refs/heads/new_vector by this push:
     new 8adf766  change some interface
8adf766 is described below

commit 8adf766410e79f6dc91a19a063f8b19cb03ba654
Author: JackieTien97 <[email protected]>
AuthorDate: Thu Oct 28 15:39:23 2021 +0800

    change some interface
---
 .../db/engine/storagegroup/TsFileProcessor.java    | 50 +++++---------------
 .../iotdb/db/utils/datastructure/VectorTVList.java | 17 ++++---
 .../tsfile/write/schema/IMeasurementSchema.java    | 13 ++++--
 .../write/schema/UnaryMeasurementSchema.java       | 27 +++++++----
 .../write/schema/VectorMeasurementSchema.java      | 54 +++++++++++++++++-----
 .../write/writer/VectorMeasurementSchemaStub.java  |  7 +++
 6 files changed, 95 insertions(+), 73 deletions(-)

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 4318a5b..1cea48a 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
@@ -18,6 +18,16 @@
  */
 package org.apache.iotdb.db.engine.storagegroup;
 
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.ConcurrentLinkedDeque;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBConstant;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
@@ -58,7 +68,6 @@ import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.service.rpc.thrift.TSStatus;
 import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
 import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
-import org.apache.iotdb.tsfile.file.metadata.VectorChunkMetadata;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.read.common.TimeRange;
 import org.apache.iotdb.tsfile.utils.Binary;
@@ -66,21 +75,9 @@ import org.apache.iotdb.tsfile.utils.Pair;
 import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
 import org.apache.iotdb.tsfile.write.schema.VectorMeasurementSchema;
 import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.ConcurrentLinkedDeque;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
 @SuppressWarnings("java:S1135") // ignore todos
 public class TsFileProcessor {
 
@@ -1252,32 +1249,7 @@ public class TsFileProcessor {
               modificationFile,
               new PartialPath(deviceId + IoTDBConstant.PATH_SEPARATOR + 
measurementId));
 
-      List<IChunkMetadata> chunkMetadataList = new ArrayList<>();
-      if (schema instanceof VectorMeasurementSchema) {
-        List<ChunkMetadata> timeChunkMetadataList =
-            writer.getVisibleMetadataList(deviceId, measurementId, 
schema.getType());
-        List<List<ChunkMetadata>> valueChunkMetadataList = new ArrayList<>();
-        List<String> valueMeasurementIdList = schema.getSubMeasurementsList();
-        List<TSDataType> valueDataTypeList = 
schema.getSubMeasurementsTSDataTypeList();
-        for (int i = 0; i < valueMeasurementIdList.size(); i++) {
-          valueChunkMetadataList.add(
-              writer.getVisibleMetadataList(
-                  deviceId, valueMeasurementIdList.get(i), 
valueDataTypeList.get(i)));
-        }
-
-        for (int i = 0; i < timeChunkMetadataList.size(); i++) {
-          List<IChunkMetadata> valueChunkMetadata = new ArrayList<>();
-          for (List<ChunkMetadata> chunkMetadata : valueChunkMetadataList) {
-            valueChunkMetadata.add(chunkMetadata.get(i));
-          }
-          chunkMetadataList.add(
-              new VectorChunkMetadata(timeChunkMetadataList.get(i), 
valueChunkMetadata));
-        }
-      } else {
-        chunkMetadataList =
-            new ArrayList<>(
-                writer.getVisibleMetadataList(deviceId, measurementId, 
schema.getType()));
-      }
+      List<IChunkMetadata> chunkMetadataList = 
schema.getVisibleMetadataListFromWriter(writer, deviceId);
 
       QueryUtils.modifyChunkMetaData(chunkMetadataList, modifications);
       chunkMetadataList.removeIf(context::chunkNotSatisfy);
diff --git 
a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/VectorTVList.java
 
b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/VectorTVList.java
index 05b30cd..5ba633b 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/VectorTVList.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/VectorTVList.java
@@ -19,6 +19,10 @@
 
 package org.apache.iotdb.db.utils.datastructure;
 
+import static org.apache.iotdb.db.rescon.PrimitiveArrayManager.ARRAY_SIZE;
+
+import java.util.ArrayList;
+import java.util.List;
 import org.apache.iotdb.db.rescon.PrimitiveArrayManager;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
@@ -27,11 +31,6 @@ import org.apache.iotdb.tsfile.utils.Binary;
 import org.apache.iotdb.tsfile.utils.BitMap;
 import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.apache.iotdb.db.rescon.PrimitiveArrayManager.ARRAY_SIZE;
-
 public class VectorTVList extends TVList {
 
   // data types of this vector
@@ -126,7 +125,7 @@ public class VectorTVList extends TVList {
     return getVectorByValueIndex(valueIndex, null);
   }
 
-  public Object getVector(List<Integer> timeDuplicatedIndexList) {
+  public TsPrimitiveType getVector(List<Integer> timeDuplicatedIndexList) {
     int[] validIndexesForTimeDuplicatedRows = new int[values.size()];
     for (int i = 0; i < values.size(); i++) {
       validIndexesForTimeDuplicatedRows[i] =
@@ -137,7 +136,7 @@ public class VectorTVList extends TVList {
         validIndexesForTimeDuplicatedRows);
   }
 
-  private Object getVectorByValueIndex(int valueIndex, int[] 
validIndexesForTimeDuplicatedRows) {
+  private TsPrimitiveType getVectorByValueIndex(int valueIndex, int[] 
validIndexesForTimeDuplicatedRows) {
     if (valueIndex >= size) {
       throw new ArrayIndexOutOfBoundsException(valueIndex);
     }
@@ -585,9 +584,9 @@ public class VectorTVList extends TVList {
   public TimeValuePair getTimeValuePairForTimeDuplicatedRows(
       List<Integer> indexList, long time, Integer floatPrecision, TSEncoding 
encoding) {
     if (this.dataTypes.size() == 1) {
-      return new TimeValuePair(time, ((TsPrimitiveType) 
getVector(indexList)).getVector()[0]);
+      return new TimeValuePair(time, getVector(indexList).getVector()[0]);
     } else {
-      return new TimeValuePair(time, (TsPrimitiveType) getVector(indexList));
+      return new TimeValuePair(time, getVector(indexList));
     }
   }
 
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 5680d0e..88449b1 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
@@ -18,16 +18,17 @@
  */
 package org.apache.iotdb.tsfile.write.schema;
 
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
 import java.io.IOException;
 import java.io.OutputStream;
 import java.nio.ByteBuffer;
 import java.util.List;
 import java.util.Map;
+import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
+import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
+import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter;
 
 public interface IMeasurementSchema {
 
@@ -68,6 +69,8 @@ public interface IMeasurementSchema {
 
   int serializeTo(OutputStream outputStream) throws IOException;
 
+  List<IChunkMetadata> 
getVisibleMetadataListFromWriter(RestorableTsFileIOWriter writer, String 
deviceId);
+
   /*
    1. used in cluster module to avoid useless field transfer(such as props in 
MeasurementSchema)
    2. add a flag bit at the beginning to distinguish between 
MeasurementSchema(0) and VectorMeasurementSchema(1)
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/UnaryMeasurementSchema.java
 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/UnaryMeasurementSchema.java
index e2a867b..366881d9 100644
--- 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/UnaryMeasurementSchema.java
+++ 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/UnaryMeasurementSchema.java
@@ -18,24 +18,26 @@
  */
 package org.apache.iotdb.tsfile.write.schema;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.TSEncodingBuilder;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.utils.StringContainer;
-
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.Serializable;
 import java.nio.ByteBuffer;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
+import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
+import org.apache.iotdb.tsfile.encoding.encoder.TSEncodingBuilder;
+import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
+import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.iotdb.tsfile.utils.StringContainer;
+import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter;
 
 /**
  * This class describes a measurement's information registered in {@linkplain 
Schema FileSchema},
@@ -287,6 +289,13 @@ public class UnaryMeasurementSchema
     return byteLen;
   }
 
+  @Override
+  public List<IChunkMetadata> 
getVisibleMetadataListFromWriter(RestorableTsFileIOWriter writer,
+      String deviceId) {
+    return new ArrayList<>(
+        writer.getVisibleMetadataList(deviceId, measurementId, getType()));
+  }
+
   /** function for serializing data to byte buffer. */
   @Override
   public int serializeTo(ByteBuffer buffer) {
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 22e2159..0cf5c69 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
@@ -19,15 +19,6 @@
 
 package org.apache.iotdb.tsfile.write.schema;
 
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
-import org.apache.iotdb.tsfile.encoding.encoder.TSEncodingBuilder;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import org.apache.iotdb.tsfile.utils.StringContainer;
-
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -39,6 +30,18 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
+import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
+import org.apache.iotdb.tsfile.encoding.encoder.TSEncodingBuilder;
+import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
+import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
+import org.apache.iotdb.tsfile.file.metadata.VectorChunkMetadata;
+import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.iotdb.tsfile.utils.StringContainer;
+import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter;
 
 public class VectorMeasurementSchema
     implements IMeasurementSchema, Comparable<VectorMeasurementSchema>, 
Serializable {
@@ -50,7 +53,8 @@ public class VectorMeasurementSchema
   private TSEncodingBuilder[] encodingConverters;
   private byte compressor;
 
-  public VectorMeasurementSchema() {}
+  public VectorMeasurementSchema() {
+  }
 
   public VectorMeasurementSchema(
       String vectorMeasurementId,
@@ -262,6 +266,32 @@ public class VectorMeasurementSchema
   }
 
   @Override
+  public List<IChunkMetadata> 
getVisibleMetadataListFromWriter(RestorableTsFileIOWriter writer,
+      String deviceId) {
+    List<IChunkMetadata> chunkMetadataList = new ArrayList<>();
+    List<ChunkMetadata> timeChunkMetadataList =
+        writer.getVisibleMetadataList(deviceId, "", getType());
+    List<List<ChunkMetadata>> valueChunkMetadataList = new ArrayList<>();
+    List<String> valueMeasurementIdList = getSubMeasurementsList();
+    List<TSDataType> valueDataTypeList = getSubMeasurementsTSDataTypeList();
+    for (int i = 0; i < valueMeasurementIdList.size(); i++) {
+      valueChunkMetadataList.add(
+          writer.getVisibleMetadataList(
+              deviceId, valueMeasurementIdList.get(i), 
valueDataTypeList.get(i)));
+    }
+
+    for (int i = 0; i < timeChunkMetadataList.size(); i++) {
+      List<IChunkMetadata> valueChunkMetadata = new ArrayList<>();
+      for (List<ChunkMetadata> chunkMetadata : valueChunkMetadataList) {
+        valueChunkMetadata.add(chunkMetadata.get(i));
+      }
+      chunkMetadataList.add(
+          new VectorChunkMetadata(timeChunkMetadataList.get(i), 
valueChunkMetadata));
+    }
+    return chunkMetadataList;
+  }
+
+  @Override
   public int partialSerializeTo(OutputStream outputStream) throws IOException {
     ReadWriteIOUtils.write((byte) 1, outputStream);
     return 1 + serializeTo(outputStream);
@@ -353,7 +383,9 @@ public class VectorMeasurementSchema
     return Objects.hash(vectorMeasurementId, types, encodings, compressor);
   }
 
-  /** compare by vector name */
+  /**
+   * compare by vector name
+   */
   @Override
   public int compareTo(VectorMeasurementSchema o) {
     if (equals(o)) {
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 5e499d5..2b1051e 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
@@ -20,6 +20,7 @@ package org.apache.iotdb.tsfile.write.writer;
 
 import org.apache.iotdb.tsfile.encoding.encoder.Encoder;
 import org.apache.iotdb.tsfile.encoding.encoder.PlainEncoder;
+import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
@@ -112,6 +113,12 @@ public class VectorMeasurementSchemaStub implements 
IMeasurementSchema {
   }
 
   @Override
+  public List<IChunkMetadata> 
getVisibleMetadataListFromWriter(RestorableTsFileIOWriter writer,
+      String deviceId) {
+    return null;
+  }
+
+  @Override
   public int partialSerializeTo(OutputStream outputStream) {
     return 0;
   }

Reply via email to