This is an automated email from the ASF dual-hosted git repository. haonan pushed a commit to branch VectorBUG in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 333efb0f9fa6c09ce310db78597d7ff81bdb5ce2 Author: HTHou <[email protected]> AuthorDate: Mon Apr 19 12:02:37 2021 +0800 [To Vector] Fix get buffer size bug when values contain TEXT data --- .../java/org/apache/iotdb/tsfile/write/record/Tablet.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) 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 6515490..437381f 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 @@ -296,20 +296,24 @@ public class Tablet { } } } + int columnIndex = 0; for (int i = 0; i < schemas.size(); i++) { IMeasurementSchema schema = schemas.get(i); if (schema instanceof MeasurementSchema) { - valueOccupation += calOccupationOfOneColumn(schema.getType(), i); + valueOccupation += calOccupationOfOneColumn(schema.getType(), columnIndex); + columnIndex++; } else { - for (TSDataType dataType : schema.getValueTSDataTypeList()) { - valueOccupation += calOccupationOfOneColumn(dataType, i); + for (int j = 0; j < schema.getValueTSDataTypeList().size(); j++) { + TSDataType dataType = schema.getValueTSDataTypeList().get(j); + valueOccupation += calOccupationOfOneColumn(dataType, columnIndex); + columnIndex++; } } } return valueOccupation; } - private int calOccupationOfOneColumn(TSDataType dataType, int i) { + private int calOccupationOfOneColumn(TSDataType dataType, int columnIndex) { int valueOccupation = 0; switch (dataType) { case BOOLEAN: @@ -325,7 +329,7 @@ public class Tablet { break; case TEXT: valueOccupation += rowSize * 4; - Binary[] binaries = (Binary[]) values[i]; + Binary[] binaries = (Binary[]) values[columnIndex]; for (int rowIndex = 0; rowIndex < rowSize; rowIndex++) { valueOccupation += binaries[rowIndex].getLength(); }
