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

jiangtian pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/tsfile.git


The following commit(s) were added to refs/heads/develop by this push:
     new 02727c5a Revert "Correct the retained size calculation for 
BinaryColumn and BinaryColumnBuilder"
02727c5a is described below

commit 02727c5a9c98ca754b5a35a2cdf5d2f698934853
Author: DESKTOP-L0L5GPJ\jt <[email protected]>
AuthorDate: Sat Jan 18 12:51:27 2025 +0800

    Revert "Correct the retained size calculation for BinaryColumn and 
BinaryColumnBuilder"
    
    This reverts commit 3929106a53d15d46fce16d50825a913e8f860969.
---
 .../main/java/org/apache/tsfile/utils/RamUsageEstimator.java | 12 ------------
 .../java/org/apache/tsfile/file/header/ChunkGroupHeader.java |  2 ++
 .../org/apache/tsfile/read/common/block/TsBlockBuilder.java  |  4 ++++
 .../apache/tsfile/read/common/block/column/BinaryColumn.java |  6 ++++--
 .../tsfile/read/common/block/column/BinaryColumnBuilder.java |  5 ++++-
 .../apache/tsfile/read/common/block/column/TimeColumn.java   |  3 ++-
 .../apache/tsfile/read/common/block/column/TsBlockSerde.java |  1 +
 7 files changed, 17 insertions(+), 16 deletions(-)

diff --git 
a/java/common/src/main/java/org/apache/tsfile/utils/RamUsageEstimator.java 
b/java/common/src/main/java/org/apache/tsfile/utils/RamUsageEstimator.java
index d357a42e..3a35d226 100644
--- a/java/common/src/main/java/org/apache/tsfile/utils/RamUsageEstimator.java
+++ b/java/common/src/main/java/org/apache/tsfile/utils/RamUsageEstimator.java
@@ -271,18 +271,6 @@ public final class RamUsageEstimator {
         : alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Double.BYTES * 
arr.length);
   }
 
-  public static long sizeOf(Accountable[] arr) {
-    if (arr == null) {
-      return 0;
-    } else {
-      long size = shallowSizeOf(arr);
-      for (Accountable obj : arr) {
-        size += obj != null ? obj.ramBytesUsed() : 0;
-      }
-      return size;
-    }
-  }
-
   /** Returns the size in bytes of the String[] object. */
   public static long sizeOf(String[] arr) {
     long size = shallowSizeOf(arr);
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/file/header/ChunkGroupHeader.java 
b/java/tsfile/src/main/java/org/apache/tsfile/file/header/ChunkGroupHeader.java
index ba3371e9..b46f0e0c 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/file/header/ChunkGroupHeader.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/file/header/ChunkGroupHeader.java
@@ -53,6 +53,7 @@ public class ChunkGroupHeader {
   }
 
   private int getSerializedSize(IDeviceID deviceID) {
+    // TODO: add an interface in IDeviceID
     int length = deviceID.serializedSize();
     return Byte.BYTES + ReadWriteForEncodingUtils.varIntSize(length) + length;
   }
@@ -72,6 +73,7 @@ public class ChunkGroupHeader {
       }
     }
 
+    // TODO: add an interface in IDeviceID
     final IDeviceID deviceID = deserializeDeviceID(inputStream, versionNumber);
     return new ChunkGroupHeader(deviceID);
   }
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlockBuilder.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlockBuilder.java
index 028bffc9..918551d9 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlockBuilder.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlockBuilder.java
@@ -104,6 +104,8 @@ public class TsBlockBuilder {
     valueColumnBuilders = new ColumnBuilder[types.size()];
 
     for (int i = 0; i < valueColumnBuilders.length; i++) {
+      // TODO use Type interface to encapsulate createColumnBuilder to each 
concrete type class
+      // instead of switch-case
       switch (types.get(i)) {
         case BOOLEAN:
           valueColumnBuilders[i] =
@@ -174,6 +176,8 @@ public class TsBlockBuilder {
     valueColumnBuilders = new ColumnBuilder[types.size()];
     int initialExpectedEntries = timeColumnBuilder.getPositionCount();
     for (int i = 0; i < valueColumnBuilders.length; i++) {
+      // TODO use Type interface to encapsulate createColumnBuilder to each 
concrete type class
+      // instead of switch-case
       switch (types.get(i)) {
         case BOOLEAN:
           valueColumnBuilders[i] =
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumn.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumn.java
index 9b8a82cc..ec36fc4f 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumn.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumn.java
@@ -32,8 +32,8 @@ import java.util.Optional;
 import static 
org.apache.tsfile.read.common.block.column.ColumnUtil.checkArrayRange;
 import static 
org.apache.tsfile.read.common.block.column.ColumnUtil.checkReadablePosition;
 import static 
org.apache.tsfile.read.common.block.column.ColumnUtil.checkValidRegion;
-import static org.apache.tsfile.utils.RamUsageEstimator.sizeOf;
 import static org.apache.tsfile.utils.RamUsageEstimator.sizeOfBooleanArray;
+import static org.apache.tsfile.utils.RamUsageEstimator.sizeOfObjectArray;
 
 public class BinaryColumn implements Column {
 
@@ -75,7 +75,9 @@ public class BinaryColumn implements Column {
     }
     this.valueIsNull = valueIsNull;
 
-    retainedSizeInBytes = INSTANCE_SIZE + sizeOfBooleanArray(positionCount) + 
sizeOf(values);
+    // TODO we need to sum up all the Binary's retainedSize here
+    retainedSizeInBytes =
+        INSTANCE_SIZE + sizeOfBooleanArray(positionCount) + 
sizeOfObjectArray(positionCount);
   }
 
   @Override
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumnBuilder.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumnBuilder.java
index d9c560dc..a82d82fc 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumnBuilder.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumnBuilder.java
@@ -32,6 +32,7 @@ import java.util.Arrays;
 
 import static java.lang.Math.max;
 import static 
org.apache.tsfile.read.common.block.column.ColumnUtil.calculateBlockResetSize;
+import static org.apache.tsfile.utils.RamUsageEstimator.shallowSizeOf;
 import static org.apache.tsfile.utils.RamUsageEstimator.sizeOf;
 
 public class BinaryColumnBuilder implements ColumnBuilder {
@@ -128,6 +129,7 @@ public class BinaryColumnBuilder implements ColumnBuilder {
 
   @Override
   public long getRetainedSizeInBytes() {
+    // TODO we need to sum up all the Binary's retainedSize here
     long size = INSTANCE_SIZE + arraysRetainedSizeInBytes;
     if (columnBuilderStatus != null) {
       size += ColumnBuilderStatus.INSTANCE_SIZE;
@@ -137,6 +139,7 @@ public class BinaryColumnBuilder implements ColumnBuilder {
 
   @Override
   public ColumnBuilder newColumnBuilderLike(ColumnBuilderStatus 
columnBuilderStatus) {
+    // TODO we should take retain size into account here
     return new BinaryColumnBuilder(columnBuilderStatus, 
calculateBlockResetSize(positionCount));
   }
 
@@ -155,6 +158,6 @@ public class BinaryColumnBuilder implements ColumnBuilder {
   }
 
   private void updateArraysDataSize() {
-    arraysRetainedSizeInBytes = sizeOf(valueIsNull) + sizeOf(values);
+    arraysRetainedSizeInBytes = sizeOf(valueIsNull) + shallowSizeOf(values);
   }
 }
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TimeColumn.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TimeColumn.java
index df9fa746..3b1880a9 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TimeColumn.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TimeColumn.java
@@ -100,7 +100,8 @@ public class TimeColumn implements Column {
 
   @Override
   public boolean[] isNull() {
-    throw new UnsupportedOperationException("isNull is not supported for 
TimeColumn");
+    // todo
+    return null;
   }
 
   @Override
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TsBlockSerde.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TsBlockSerde.java
index e7a503e6..e887a577 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TsBlockSerde.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TsBlockSerde.java
@@ -67,6 +67,7 @@ public class TsBlockSerde {
     }
 
     // Time column.
+    // TODO: a TimeColumn will be deserialized as a LongColumn
     Column timeColumn =
         ColumnEncoderFactory.get(columnEncodings.get(0))
             .readColumn(byteBuffer, TSDataType.INT64, positionCount);

Reply via email to