This is an automated email from the ASF dual-hosted git repository.
JingsongLi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git
The following commit(s) were added to refs/heads/master by this push:
new ea293d58fa [common] Fix missing rows for null range bitmap indexes
(#9140)
ea293d58fa is described below
commit ea293d58fa792f59c41487683f1729a7d4376cb6
Author: Arnav Balyan <[email protected]>
AuthorDate: Thu Aug 13 19:44:11 2026 +0530
[common] Fix missing rows for null range bitmap indexes (#9140)
---
.../org/apache/paimon/fileindex/rangebitmap/RangeBitmap.java | 4 ++--
.../fileindex/rangebitmap/RangeBitmapFileIndexTest.java | 11 ++++++++---
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git
a/paimon-common/src/main/java/org/apache/paimon/fileindex/rangebitmap/RangeBitmap.java
b/paimon-common/src/main/java/org/apache/paimon/fileindex/rangebitmap/RangeBitmap.java
index c338f47bfc..5b44e1dfe1 100644
---
a/paimon-common/src/main/java/org/apache/paimon/fileindex/rangebitmap/RangeBitmap.java
+++
b/paimon-common/src/main/java/org/apache/paimon/fileindex/rangebitmap/RangeBitmap.java
@@ -225,7 +225,7 @@ public class RangeBitmap {
private RoaringBitmap32 isNull(@Nullable RoaringBitmap32 foundSet) {
if (cardinality <= 0) {
- return rid > 0 ? RoaringBitmap32.bitmapOf(0, rid - 1) : new
RoaringBitmap32();
+ return rid > 0 ? RoaringBitmap32.bitmapOfRange(0, rid) : new
RoaringBitmap32();
}
if (foundSet != null && foundSet.isEmpty()) {
@@ -306,7 +306,7 @@ public class RangeBitmap {
@Nullable RoaringBitmap32 foundSet,
BiFunction<Integer, RoaringBitmap32, RoaringBitmap32> function) {
if (cardinality <= 0) {
- return rid > 0 ? RoaringBitmap32.bitmapOf(0, rid - 1) : new
RoaringBitmap32();
+ return rid > 0 ? RoaringBitmap32.bitmapOfRange(0, rid) : new
RoaringBitmap32();
}
RoaringBitmap32 bitmap;
diff --git
a/paimon-common/src/test/java/org/apache/paimon/fileindex/rangebitmap/RangeBitmapFileIndexTest.java
b/paimon-common/src/test/java/org/apache/paimon/fileindex/rangebitmap/RangeBitmapFileIndexTest.java
index e56bfe7a0d..01c072520b 100644
---
a/paimon-common/src/test/java/org/apache/paimon/fileindex/rangebitmap/RangeBitmapFileIndexTest.java
+++
b/paimon-common/src/test/java/org/apache/paimon/fileindex/rangebitmap/RangeBitmapFileIndexTest.java
@@ -423,8 +423,9 @@ public class RangeBitmapFileIndexTest {
FieldRef fieldRef = new FieldRef(0, "", intType);
RangeBitmapFileIndex bitmapFileIndex = new
RangeBitmapFileIndex(intType, new Options());
FileIndexWriter writer = bitmapFileIndex.createWriter();
- writer.writeRecord(null);
- writer.writeRecord(null);
+ for (int i = 0; i < 5; i++) {
+ writer.writeRecord(null);
+ }
// build index
byte[] bytes = writer.serializedBytes();
@@ -433,7 +434,7 @@ public class RangeBitmapFileIndexTest {
// test is null
assertThat(((BitmapIndexResult) reader.visitIsNull(fieldRef)).get())
- .isEqualTo(RoaringBitmap32.bitmapOf(0, 1));
+ .isEqualTo(RoaringBitmap32.bitmapOfRange(0, 5));
// test is not null
assertThat(((BitmapIndexResult) reader.visitIsNotNull(fieldRef)).get())
.isEqualTo(RoaringBitmap32.bitmapOf());
@@ -444,6 +445,10 @@ public class RangeBitmapFileIndexTest {
// test GT
assertThat(((BitmapIndexResult) reader.visitGreaterThan(fieldRef,
0)).get())
.isEqualTo(RoaringBitmap32.bitmapOf());
+
+ TopN topN = new TopN(fieldRef, ASCENDING, NULLS_FIRST, 1);
+ assertThat(((BitmapIndexResult) reader.visitTopN(topN, null)).get())
+ .isEqualTo(RoaringBitmap32.bitmapOfRange(0, 5));
}
@Test