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();
         }

Reply via email to