You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2022/12/28 06:22:58 UTC

[iotdb] branch master updated: Fix Bug in NullColumn

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

jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 8bb400d17a Fix Bug in NullColumn
8bb400d17a is described below

commit 8bb400d17af8531cd8caf7c29123300c0322a4d2
Author: Weihao Li <60...@users.noreply.github.com>
AuthorDate: Wed Dec 28 14:22:53 2022 +0800

    Fix Bug in NullColumn
---
 .../tsfile/read/common/block/column/NullColumn.java   | 19 ++-----------------
 .../apache/iotdb/tsfile/read/common/ColumnTest.java   | 12 ++++++++++++
 2 files changed, 14 insertions(+), 17 deletions(-)

diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/NullColumn.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/NullColumn.java
index 29a9f8ae6b..d9307d44c0 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/NullColumn.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/NullColumn.java
@@ -36,24 +36,9 @@ public class NullColumn implements Column {
 
   private final int positionCount;
 
-  private final int arrayOffset;
-
   private final long retainedSizeInBytes;
 
   public NullColumn(int positionCount) {
-    if (positionCount < 0) {
-      throw new IllegalArgumentException("positionCount is negative");
-    }
-    this.positionCount = positionCount;
-    arrayOffset = 0;
-    retainedSizeInBytes = INSTANCE_SIZE;
-  }
-
-  public NullColumn(int arrayOffset, int positionCount) {
-    if (arrayOffset < 0) {
-      throw new IllegalArgumentException("arrayOffset is negative");
-    }
-    this.arrayOffset = positionCount;
     if (positionCount < 0) {
       throw new IllegalArgumentException("positionCount is negative");
     }
@@ -99,7 +84,7 @@ public class NullColumn implements Column {
   @Override
   public Column getRegion(int positionOffset, int length) {
     checkValidRegion(getPositionCount(), positionOffset, length);
-    return new NullColumn(positionOffset + arrayOffset, length);
+    return new NullColumn(length);
   }
 
   @Override
@@ -107,7 +92,7 @@ public class NullColumn implements Column {
     if (fromIndex > positionCount) {
       throw new IllegalArgumentException("fromIndex is not valid");
     }
-    return new NullColumn(arrayOffset + fromIndex, positionCount - fromIndex);
+    return new NullColumn(positionCount - fromIndex);
   }
 
   @Override
diff --git a/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/ColumnTest.java b/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/ColumnTest.java
index 11b0c13d2e..bfd05e2434 100644
--- a/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/ColumnTest.java
+++ b/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/ColumnTest.java
@@ -23,6 +23,7 @@ import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumn;
 import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumnBuilder;
 import org.apache.iotdb.tsfile.read.common.block.column.BooleanColumn;
 import org.apache.iotdb.tsfile.read.common.block.column.BooleanColumnBuilder;
+import org.apache.iotdb.tsfile.read.common.block.column.Column;
 import org.apache.iotdb.tsfile.read.common.block.column.DoubleColumn;
 import org.apache.iotdb.tsfile.read.common.block.column.DoubleColumnBuilder;
 import org.apache.iotdb.tsfile.read.common.block.column.FloatColumn;
@@ -31,6 +32,7 @@ import org.apache.iotdb.tsfile.read.common.block.column.IntColumn;
 import org.apache.iotdb.tsfile.read.common.block.column.IntColumnBuilder;
 import org.apache.iotdb.tsfile.read.common.block.column.LongColumn;
 import org.apache.iotdb.tsfile.read.common.block.column.LongColumnBuilder;
+import org.apache.iotdb.tsfile.read.common.block.column.NullColumn;
 import org.apache.iotdb.tsfile.read.common.block.column.RunLengthEncodedColumn;
 import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
 import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
@@ -168,6 +170,16 @@ public class ColumnTest {
     Assert.assertEquals(9, longColumn.getLong(1));
   }
 
+  @Test
+  public void nullColumnTest() {
+    NullColumn nullColumn = new NullColumn(10);
+    Column subRegion = nullColumn.getRegion(7, 2);
+    Column subColumn = subRegion.subColumn(1);
+
+    Assert.assertEquals(2, subRegion.getPositionCount());
+    Assert.assertEquals(1, subColumn.getPositionCount());
+  }
+
   @Test
   public void runLengthEncodedColumnSubColumnTest() {
     LongColumnBuilder longColumnBuilder = new LongColumnBuilder(null, 1);