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

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

commit d9cac75dd6165c08b3ce8161f1d7c2cbc87fb6ef
Author: samperson1997 <[email protected]>
AuthorDate: Sun Apr 11 23:19:31 2021 +0800

    [To Vector] Fix Tablet.addValue()
---
 .../org/apache/iotdb/VectorSessionExample.java     | 40 +++++++++++++++++-----
 .../metadata/AlignedTimeseriesException.java       |  4 +++
 .../iotdb/db/metadata/template/Template.java       |  6 ++++
 .../java/org/apache/iotdb/session/Session.java     |  2 +-
 .../apache/iotdb/tsfile/write/record/Tablet.java   | 10 +++---
 5 files changed, 47 insertions(+), 15 deletions(-)

diff --git 
a/example/session/src/main/java/org/apache/iotdb/VectorSessionExample.java 
b/example/session/src/main/java/org/apache/iotdb/VectorSessionExample.java
index 75b4bbb..ac1c8cd 100644
--- a/example/session/src/main/java/org/apache/iotdb/VectorSessionExample.java
+++ b/example/session/src/main/java/org/apache/iotdb/VectorSessionExample.java
@@ -215,6 +215,30 @@ public class VectorSessionExample {
 
     Tablet tablet = new Tablet(ROOT_SG1_D1, schemaList);
 
+    // Method 1 to add tablet data
+    long timestamp = System.currentTimeMillis();
+
+    for (long row = 0; row < 100; row++) {
+      int rowIndex = tablet.rowSize++;
+      tablet.addTimestamp(rowIndex, timestamp);
+      tablet.addValue(
+          schemaList.get(0).getValueMeasurementIdList().get(0), rowIndex, new 
Random().nextLong());
+      tablet.addValue(
+          schemaList.get(0).getValueMeasurementIdList().get(1), rowIndex, new 
Random().nextInt());
+
+      if (tablet.rowSize == tablet.getMaxRowNumber()) {
+        session.insertTablet(tablet, true);
+        tablet.reset();
+      }
+      timestamp++;
+    }
+
+    if (tablet.rowSize != 0) {
+      session.insertTablet(tablet);
+      tablet.reset();
+    }
+
+    // Method 2 to add tablet data
     long[] timestamps = tablet.timestamps;
     Object[] values = tablet.values;
 
@@ -222,11 +246,11 @@ public class VectorSessionExample {
       int row = tablet.rowSize++;
       timestamps[row] = time;
 
-      long[] sensor = (long[]) values[0];
-      sensor[row] = new Random().nextLong();
+      long[] sensor1 = (long[]) values[0];
+      sensor1[row] = new Random().nextLong();
 
-      int[] sensors = (int[]) values[1];
-      sensors[row] = new Random().nextInt();
+      int[] sensor2 = (int[]) values[1];
+      sensor2[row] = new Random().nextInt();
 
       if (tablet.rowSize == tablet.getMaxRowNumber()) {
         session.insertTablet(tablet, true);
@@ -263,11 +287,11 @@ public class VectorSessionExample {
       int row = tablet.rowSize++;
       timestamps[row] = time;
 
-      long[] sensor = (long[]) values[0];
-      sensor[row] = new Random().nextLong();
+      long[] sensor1 = (long[]) values[0];
+      sensor1[row] = new Random().nextLong();
 
-      int[] sensors = (int[]) values[1];
-      sensors[row] = new Random().nextInt();
+      int[] sensor2 = (int[]) values[1];
+      sensor2[row] = new Random().nextInt();
 
       if (time % 5 == 0) {
         bitMaps[1].mark(row);
diff --git 
a/server/src/main/java/org/apache/iotdb/db/exception/metadata/AlignedTimeseriesException.java
 
b/server/src/main/java/org/apache/iotdb/db/exception/metadata/AlignedTimeseriesException.java
index 952b723..f8373d7 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/exception/metadata/AlignedTimeseriesException.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/exception/metadata/AlignedTimeseriesException.java
@@ -23,6 +23,10 @@ import org.apache.iotdb.rpc.TSStatusCode;
 
 public class AlignedTimeseriesException extends MetadataException {
 
+  /**
+   * @param message excepetion message
+   * @param path related timeseries path
+   */
   public AlignedTimeseriesException(String message, String path) {
     super(String.format("%s (Path: %s)", message, path));
     errorCode = TSStatusCode.ALIGNED_TIMESERIES_ERROR.getStatusCode();
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 cc41935..9c59b11 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
@@ -34,6 +34,7 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicLong;
 
@@ -160,4 +161,9 @@ public class Template {
     Template that = (Template) t;
     return this.name.equals(that.name) && 
this.schemaMap.equals(that.schemaMap);
   }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(name, schemaMap);
+  }
 }
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 20622a7..7ea7878 100644
--- a/session/src/main/java/org/apache/iotdb/session/Session.java
+++ b/session/src/main/java/org/apache/iotdb/session/Session.java
@@ -1541,7 +1541,7 @@ public class Session {
         int measurementSize = schema.getValueMeasurementIdList().size();
         for (int j = 0; j < measurementSize; j++) {
           tablet.values[columnIndex] =
-              sortList(tablet.values[columnIndex], 
schema.getValueTSDataTypeList().get(i), index);
+              sortList(tablet.values[columnIndex], 
schema.getValueTSDataTypeList().get(j), index);
           if (tablet.bitMaps != null && tablet.bitMaps[columnIndex] != null) {
             tablet.bitMaps[columnIndex] = 
sortBitMap(tablet.bitMaps[columnIndex], index);
           }
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 bfd0c6f..4cc93f1 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
@@ -121,13 +121,11 @@ public class Tablet {
     IMeasurementSchema measurementSchema = schemas.get(indexOfValue);
 
     if (measurementSchema.getType().equals(TSDataType.VECTOR)) {
-      for (int i = 0; i < 
measurementSchema.getValueMeasurementIdList().size(); i++) {
-        TSDataType dataType = 
measurementSchema.getValueTSDataTypeList().get(i);
-        addValueOfDataType(dataType, rowIndex, 
measurementIndex.get(measurementId), value);
-      }
+      int indexInVector = 
measurementSchema.getMeasurementIdColumnIndex(measurementId);
+      TSDataType dataType = 
measurementSchema.getValueTSDataTypeList().get(indexInVector);
+      addValueOfDataType(dataType, rowIndex, indexOfValue + indexInVector, 
value);
     } else {
-      addValueOfDataType(
-          measurementSchema.getType(), rowIndex, 
measurementIndex.get(measurementId), value);
+      addValueOfDataType(measurementSchema.getType(), rowIndex, indexOfValue, 
value);
     }
   }
 

Reply via email to