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

Jackie-Jiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new 732f921f6f4 Fix the serialized size of off-heap distinct count sets 
(#20203)
732f921f6f4 is described below

commit 732f921f6f4d3f522a1a81edc8b151bb37fd178a
Author: Xiaotian (Jackie) Jiang <[email protected]>
AuthorDate: Tue Nov 10 20:44:56 2026 -0800

    Fix the serialized size of off-heap distinct count sets (#20203)
---
 .../aggregation/function/distinct/OffHeap128BitSet.java      |  2 +-
 .../query/aggregation/function/distinct/OffHeap32BitSet.java |  2 +-
 .../query/aggregation/function/distinct/OffHeap64BitSet.java |  2 +-
 .../query/aggregation/function/distinct/OffHeapSetTest.java  | 12 +++++++++---
 4 files changed, 12 insertions(+), 6 deletions(-)

diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/distinct/OffHeap128BitSet.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/distinct/OffHeap128BitSet.java
index eee8440e20e..5e6d73e5517 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/distinct/OffHeap128BitSet.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/distinct/OffHeap128BitSet.java
@@ -186,7 +186,7 @@ public class OffHeap128BitSet extends BaseOffHeapSet {
   @Override
   public byte[] serialize() {
     int size = size();
-    byte[] bytes = new byte[Integer.BYTES + size << 4];
+    byte[] bytes = new byte[Integer.BYTES + (size << 4)];
     ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);
     byteBuffer.putInt(size);
     Value buffer = new Value();
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/distinct/OffHeap32BitSet.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/distinct/OffHeap32BitSet.java
index d17dd0072a8..e2728cf64ac 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/distinct/OffHeap32BitSet.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/distinct/OffHeap32BitSet.java
@@ -144,7 +144,7 @@ public class OffHeap32BitSet extends BaseOffHeapSet {
   @Override
   public byte[] serialize() {
     int size = size();
-    byte[] bytes = new byte[Integer.BYTES + size << 2];
+    byte[] bytes = new byte[Integer.BYTES + (size << 2)];
     ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);
     byteBuffer.putInt(size);
     IntIterator iterator = iterator();
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/distinct/OffHeap64BitSet.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/distinct/OffHeap64BitSet.java
index 1d0a7c435e6..69f0ae7c2db 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/distinct/OffHeap64BitSet.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/distinct/OffHeap64BitSet.java
@@ -143,7 +143,7 @@ public class OffHeap64BitSet extends BaseOffHeapSet {
   @Override
   public byte[] serialize() {
     int size = size();
-    byte[] bytes = new byte[Integer.BYTES + size << 3];
+    byte[] bytes = new byte[Integer.BYTES + (size << 3)];
     ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);
     byteBuffer.putInt(size);
     LongIterator iterator = iterator();
diff --git 
a/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/distinct/OffHeapSetTest.java
 
b/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/distinct/OffHeapSetTest.java
index c94e06d7fdb..7d950dddf03 100644
--- 
a/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/distinct/OffHeapSetTest.java
+++ 
b/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/distinct/OffHeapSetTest.java
@@ -65,7 +65,9 @@ public class OffHeapSetTest {
       }
       verify(offHeapSet, onHeapSet);
 
-      try (OffHeap32BitSet offHeapSet2 = 
OffHeap32BitSet.deserialize(ByteBuffer.wrap(offHeapSet.serialize()))) {
+      byte[] bytes = offHeapSet.serialize();
+      assertEquals(bytes.length, Integer.BYTES + offHeapSet.size() * 
Integer.BYTES);
+      try (OffHeap32BitSet offHeapSet2 = 
OffHeap32BitSet.deserialize(ByteBuffer.wrap(bytes))) {
         verify(offHeapSet2, onHeapSet);
       }
 
@@ -115,7 +117,9 @@ public class OffHeapSetTest {
       }
       verify(offHeapSet, onHeapSet);
 
-      try (OffHeap64BitSet offHeapSet2 = 
OffHeap64BitSet.deserialize(ByteBuffer.wrap(offHeapSet.serialize()))) {
+      byte[] bytes = offHeapSet.serialize();
+      assertEquals(bytes.length, Integer.BYTES + offHeapSet.size() * 
Long.BYTES);
+      try (OffHeap64BitSet offHeapSet2 = 
OffHeap64BitSet.deserialize(ByteBuffer.wrap(bytes))) {
         verify(offHeapSet2, onHeapSet);
       }
 
@@ -167,7 +171,9 @@ public class OffHeapSetTest {
       }
       verify(offHeapSet, onHeapSet);
 
-      try (OffHeap128BitSet offHeapSet2 = 
OffHeap128BitSet.deserialize(ByteBuffer.wrap(offHeapSet.serialize()))) {
+      byte[] bytes = offHeapSet.serialize();
+      assertEquals(bytes.length, Integer.BYTES + offHeapSet.size() * 2 * 
Long.BYTES);
+      try (OffHeap128BitSet offHeapSet2 = 
OffHeap128BitSet.deserialize(ByteBuffer.wrap(bytes))) {
         verify(offHeapSet2, onHeapSet);
       }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to