You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by su...@apache.org on 2021/04/11 15:20:13 UTC
[iotdb] 01/01: [To Vector] Fix Tablet.addValue()
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 <sz...@mails.tsinghua.edu.cn>
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);
}
}