You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2021/11/05 10:00:37 UTC
[iotdb] branch new_vector updated: fix extends tvlist column bug
This is an automated email from the ASF dual-hosted git repository.
haonan 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 d550f1b fix extends tvlist column bug
d550f1b is described below
commit d550f1bbc18cdd1a801809ce4db0a6ab87ba3919
Author: HTHou <hh...@outlook.com>
AuthorDate: Fri Nov 5 17:54:47 2021 +0800
fix extends tvlist column bug
---
.../iotdb/db/engine/memtable/AlignedWritableMemChunk.java | 12 ++++++------
.../apache/iotdb/db/utils/datastructure/AlignedTVList.java | 3 ++-
.../iotdb/tsfile/write/schema/VectorMeasurementSchema.java | 5 +++--
3 files changed, 11 insertions(+), 9 deletions(-)
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 38e6e58..e9dbfd3 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
@@ -140,12 +140,6 @@ public class AlignedWritableMemChunk implements IWritableMemChunk {
List<String> measurementIdsInInsertPlan = vectorSchema.getSubMeasurementsList();
List<TSDataType> dataTypesInInsertPlan = vectorSchema.getSubMeasurementsTSDataTypeList();
List<TSEncoding> encodingsInInsertPlan = vectorSchema.getSubMeasurementsTSEncodingList();
- List<String> measurementIdsInTVList =
- ((VectorMeasurementSchema) this.schema).getSubMeasurementsList();
- int[] columnIndexArray = new int[measurementIdsInTVList.size()];
- for (int i = 0; i < columnIndexArray.length; i++) {
- columnIndexArray[i] = measurementIdsInInsertPlan.indexOf(measurementIdsInTVList.get(i));
- }
for (int i = 0; i < measurementIdsInInsertPlan.size(); i++) {
if (!containsMeasurement(measurementIdsInInsertPlan.get(i))) {
this.schema.addSubMeasurement(
@@ -155,6 +149,12 @@ public class AlignedWritableMemChunk implements IWritableMemChunk {
this.list.extendColumn(dataTypesInInsertPlan.get(i));
}
}
+ List<String> measurementIdsInTVList =
+ ((VectorMeasurementSchema) this.schema).getSubMeasurementsList();
+ int[] columnIndexArray = new int[measurementIdsInTVList.size()];
+ for (int i = 0; i < columnIndexArray.length; i++) {
+ columnIndexArray[i] = measurementIdsInInsertPlan.indexOf(measurementIdsInTVList.get(i));
+ }
return columnIndexArray;
}
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java
index c82ab5b..3eec517 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java
@@ -299,7 +299,7 @@ public class AlignedTVList extends TVList {
}
BitMap bitMap = new BitMap(ARRAY_SIZE);
// last bitmap should be marked to the tslist size's position
- if (i == timestamps.size()) {
+ if (i == timestamps.size() - 1) {
for (int j = 0; j < size % ARRAY_SIZE; j++) {
bitMap.mark(j);
}
@@ -311,6 +311,7 @@ public class AlignedTVList extends TVList {
// values.size() is the index of column
this.bitMaps.set(values.size(), columnBitMaps);
this.values.add(columnValue);
+ this.dataTypes.add(dataType);
}
/**
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 fb4a75f..fec2796 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
@@ -226,17 +226,18 @@ public class VectorMeasurementSchema
public void addSubMeasurement(String measurementId, TSDataType dataType, TSEncoding encoding) {
subMeasurementsToIndexMap.put(measurementId, subMeasurementsToIndexMap.size());
byte[] typesInByte = new byte[subMeasurementsToIndexMap.size()];
- for (int i = 0; i < subMeasurementsToIndexMap.size(); i++) {
+ for (int i = 0; i < subMeasurementsToIndexMap.size() - 1; i++) {
typesInByte[i] = types[i];
}
typesInByte[typesInByte.length - 1] = dataType.serialize();
this.types = typesInByte;
byte[] encodingsInByte = new byte[subMeasurementsToIndexMap.size()];
- for (int i = 0; i < subMeasurementsToIndexMap.size(); i++) {
+ for (int i = 0; i < subMeasurementsToIndexMap.size() - 1; i++) {
encodingsInByte[i] = encodings[i];
}
encodingsInByte[encodingsInByte.length - 1] = encoding.serialize();
this.encodings = encodingsInByte;
+ this.encodingConverters = new TSEncodingBuilder[subMeasurementsToIndexMap.size()];
}
@Override