This is an automated email from the ASF dual-hosted git repository. richardstartin pushed a commit to branch rgs/rangebitmap-upgrade-and-fix in repository https://gitbox.apache.org/repos/asf/pinot.git
commit 61448cb1588c140239725e5d29afeba1436f1aef Author: Richard Startin <richard.star...@datadoghq.com> AuthorDate: Fri Nov 4 12:09:11 2022 +0000 upgrade RoaringBitmap and revert workaround for bug --- LICENSE-binary | 4 ++-- .../index/readers/BitSlicedRangeIndexReader.java | 20 +++----------------- pom.xml | 2 +- 3 files changed, 6 insertions(+), 20 deletions(-) diff --git a/LICENSE-binary b/LICENSE-binary index a8fd7eb074..beeb300fd5 100644 --- a/LICENSE-binary +++ b/LICENSE-binary @@ -453,8 +453,8 @@ org.jetbrains:annotations:13.0 org.lz4:lz4-java:1.8.0 org.objenesis:objenesis:2.1 org.quartz-scheduler:quartz:2.3.2 -org.roaringbitmap:RoaringBitmap:0.9.28 -org.roaringbitmap:shims:0.9.28 +org.roaringbitmap:RoaringBitmap:0.9.35 +org.roaringbitmap:shims:0.9.35 org.scala-lang.modules:scala-collection-compat_2.12:2.3.0 org.scala-lang.modules:scala-java8-compat_2.12:0.9.1 org.scala-lang.modules:scala-xml_2.12:1.3.0 diff --git a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/readers/BitSlicedRangeIndexReader.java b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/readers/BitSlicedRangeIndexReader.java index 9a47ad7494..0fde2d9ddc 100644 --- a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/readers/BitSlicedRangeIndexReader.java +++ b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/readers/BitSlicedRangeIndexReader.java @@ -160,14 +160,7 @@ public class BitSlicedRangeIndexReader implements RangeIndexReader<ImmutableRoar RangeBitmap rangeBitmap = mapRangeBitmap(); if (Long.compareUnsigned(max, columnMax) < 0) { if (Long.compareUnsigned(min, 0) > 0) { - // TODO: RangeBitmap has a bug in version 0.9.28 which gives wrong result computing between for 2 numbers with - // different sign. The bug is tracked here: https://github.com/RoaringBitmap/RoaringBitmap/issues/586. - // This is a work-around for the bug. - if (columnMax > 0) { - return rangeBitmap.between(min, max).toMutableRoaringBitmap(); - } else { - return rangeBitmap.gte(min, rangeBitmap.lte(max)).toMutableRoaringBitmap(); - } + return rangeBitmap.between(min, max).toMutableRoaringBitmap(); } return rangeBitmap.lte(max).toMutableRoaringBitmap(); } else { @@ -175,7 +168,7 @@ public class BitSlicedRangeIndexReader implements RangeIndexReader<ImmutableRoar return rangeBitmap.gte(min).toMutableRoaringBitmap(); } MutableRoaringBitmap all = new MutableRoaringBitmap(); - all.add(0, _numDocs); + all.add(0L, _numDocs); return all; } } @@ -184,14 +177,7 @@ public class BitSlicedRangeIndexReader implements RangeIndexReader<ImmutableRoar RangeBitmap rangeBitmap = mapRangeBitmap(); if (Long.compareUnsigned(max, columnMax) < 0) { if (Long.compareUnsigned(min, 0) > 0) { - // TODO: RangeBitmap has a bug in version 0.9.28 which gives wrong result computing between for 2 numbers with - // different sign. The bug is tracked here: https://github.com/RoaringBitmap/RoaringBitmap/issues/586. - // This is a work-around for the bug. - if (columnMax > 0) { - return (int) rangeBitmap.betweenCardinality(min, max); - } else { - return (int) rangeBitmap.gteCardinality(min, rangeBitmap.lte(max)); - } + return (int) rangeBitmap.betweenCardinality(min, max); } return (int) rangeBitmap.lteCardinality(max); } else { diff --git a/pom.xml b/pom.xml index 151c154912..79fb0b283e 100644 --- a/pom.xml +++ b/pom.xml @@ -442,7 +442,7 @@ <dependency> <groupId>org.roaringbitmap</groupId> <artifactId>RoaringBitmap</artifactId> - <version>0.9.28</version> + <version>0.9.35</version> </dependency> <dependency> <groupId>com.101tec</groupId> --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org