This is an automated email from the ASF dual-hosted git repository.
gian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/master by this push:
new 22abc10f245 update RoaringBitmap to 0.9.49 (#15006)
22abc10f245 is described below
commit 22abc10f24596972ea367ff6efcae1014c242650
Author: Xavier Léauté <[email protected]>
AuthorDate: Wed Sep 20 15:52:27 2023 -0700
update RoaringBitmap to 0.9.49 (#15006)
* update RoaringBitmap to 0.9.49
update RoaringBitmap from 0.9.0 to 0.9.49
Many optimizations and improvements have gone into recent releases of
RoaringBitmap. It seems worthwhile to incorporate those.
* implement workaround for BatchIterator interface change
* add test case for BatchIteratorAdapter.advanceIfNeeded
---
licenses.yaml | 2 +-
pom.xml | 2 +-
.../collections/bitmap/BatchIteratorAdapter.java | 12 ++++--
.../druid/collections/bitmap/ImmutableBitmap.java | 2 +-
.../bitmap/BatchIteratorAdapterTest.java} | 46 +++++++---------------
5 files changed, 27 insertions(+), 37 deletions(-)
diff --git a/licenses.yaml b/licenses.yaml
index 734e834f173..f3ed4c2547f 100644
--- a/licenses.yaml
+++ b/licenses.yaml
@@ -2464,7 +2464,7 @@ name: RoaringBitmap
license_category: binary
module: java-core
license_name: Apache License version 2.0
-version: 0.9.0
+version: 0.9.49
libraries:
- org.roaringbitmap: RoaringBitmap
- org.roaringbitmap: shims
diff --git a/pom.xml b/pom.xml
index 0064fa4fc50..172bd90919d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -912,7 +912,7 @@
<dependency>
<groupId>org.roaringbitmap</groupId>
<artifactId>RoaringBitmap</artifactId>
- <version>0.9.0</version>
+ <version>0.9.49</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
diff --git
a/processing/src/main/java/org/apache/druid/collections/bitmap/BatchIteratorAdapter.java
b/processing/src/main/java/org/apache/druid/collections/bitmap/BatchIteratorAdapter.java
index 225999f02c0..056acfea2b2 100644
---
a/processing/src/main/java/org/apache/druid/collections/bitmap/BatchIteratorAdapter.java
+++
b/processing/src/main/java/org/apache/druid/collections/bitmap/BatchIteratorAdapter.java
@@ -21,13 +21,13 @@ package org.apache.druid.collections.bitmap;
import com.google.common.base.Preconditions;
import org.roaringbitmap.BatchIterator;
-import org.roaringbitmap.IntIterator;
+import org.roaringbitmap.PeekableIntIterator;
public final class BatchIteratorAdapter implements BatchIterator
{
- private final IntIterator iterator;
+ private final PeekableIntIterator iterator;
- public BatchIteratorAdapter(IntIterator iterator)
+ public BatchIteratorAdapter(PeekableIntIterator iterator)
{
this.iterator = Preconditions.checkNotNull(iterator, "iterator");
}
@@ -49,6 +49,12 @@ public final class BatchIteratorAdapter implements
BatchIterator
return iterator.hasNext();
}
+ @Override
+ public void advanceIfNeeded(int target)
+ {
+ iterator.advanceIfNeeded(target);
+ }
+
@Override
public BatchIterator clone()
{
diff --git
a/processing/src/main/java/org/apache/druid/collections/bitmap/ImmutableBitmap.java
b/processing/src/main/java/org/apache/druid/collections/bitmap/ImmutableBitmap.java
index c73a48c0ae4..5dbdad93de5 100644
---
a/processing/src/main/java/org/apache/druid/collections/bitmap/ImmutableBitmap.java
+++
b/processing/src/main/java/org/apache/druid/collections/bitmap/ImmutableBitmap.java
@@ -47,7 +47,7 @@ public interface ImmutableBitmap
*/
default BatchIterator batchIterator()
{
- return new BatchIteratorAdapter(iterator());
+ return new BatchIteratorAdapter(peekableIterator());
}
/**
diff --git
a/processing/src/main/java/org/apache/druid/collections/bitmap/BatchIteratorAdapter.java
b/processing/src/test/java/org/apache/druid/collections/bitmap/BatchIteratorAdapterTest.java
similarity index 53%
copy from
processing/src/main/java/org/apache/druid/collections/bitmap/BatchIteratorAdapter.java
copy to
processing/src/test/java/org/apache/druid/collections/bitmap/BatchIteratorAdapterTest.java
index 225999f02c0..6630348406b 100644
---
a/processing/src/main/java/org/apache/druid/collections/bitmap/BatchIteratorAdapter.java
+++
b/processing/src/test/java/org/apache/druid/collections/bitmap/BatchIteratorAdapterTest.java
@@ -19,40 +19,24 @@
package org.apache.druid.collections.bitmap;
-import com.google.common.base.Preconditions;
+import org.apache.druid.collections.IntSetTestUtility;
+import org.junit.Assert;
+import org.junit.Test;
import org.roaringbitmap.BatchIterator;
-import org.roaringbitmap.IntIterator;
-public final class BatchIteratorAdapter implements BatchIterator
-{
- private final IntIterator iterator;
-
- public BatchIteratorAdapter(IntIterator iterator)
- {
- this.iterator = Preconditions.checkNotNull(iterator, "iterator");
- }
-
- @Override
- public int nextBatch(int[] buffer)
- {
- int i;
- for (i = 0; i < buffer.length && iterator.hasNext(); i++) {
- buffer[i] = iterator.next();
- }
+import java.util.BitSet;
- return i;
- }
-
- @Override
- public boolean hasNext()
- {
- return iterator.hasNext();
- }
-
- @Override
- public BatchIterator clone()
+public class BatchIteratorAdapterTest
+{
+ @Test
+ public void advanceIfNeeded()
{
- // It's okay to make a "new BatchIteratorAdapter" instead of calling
super.clone(), since this class is final.
- return new BatchIteratorAdapter(iterator.clone());
+ BitSet simpleBitSet =
IntSetTestUtility.createSimpleBitSet(IntSetTestUtility.getSetBits());
+ WrappedBitSetBitmap bitSetBitmap = new WrappedBitSetBitmap(simpleBitSet);
+ BatchIterator batchIterator = bitSetBitmap.batchIterator();
+ batchIterator.advanceIfNeeded(4);
+ int[] batch = new int[3];
+ batchIterator.nextBatch(batch);
+ Assert.assertArrayEquals(new int[]{5, 8, 13}, batch);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]