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]

Reply via email to