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

cwylie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-druid.git


The following commit(s) were added to refs/heads/master by this push:
     new 9909761  use RoaringBitmapWriter for RoaringBitmap construction (#6764)
9909761 is described below

commit 99097617a129a8c6c6bbdafb09ba427d7f3994ef
Author: Richard Startin <[email protected]>
AuthorDate: Wed Jan 9 01:18:41 2019 +0000

    use RoaringBitmapWriter for RoaringBitmap construction (#6764)
---
 pom.xml                                            |  4 +-
 .../collections/bitmap/WrappedRoaringBitmap.java   | 44 ++++++++++++----------
 2 files changed, 26 insertions(+), 22 deletions(-)

diff --git a/pom.xml b/pom.xml
index 03bf814..5a9f2c7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -681,7 +681,7 @@
             <dependency>
                 <groupId>org.roaringbitmap</groupId>
                 <artifactId>RoaringBitmap</artifactId>
-                <version>0.7.30</version>
+                <version>0.7.36</version>
             </dependency>
             <dependency>
                 <groupId>org.ow2.asm</groupId>
@@ -987,7 +987,7 @@
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>animal-sniffer-maven-plugin</artifactId>
-                <version>1.15</version>
+                <version>1.17</version>
                 <executions>
                     <execution>
                         <id>check-java-api</id>
diff --git 
a/processing/src/main/java/org/apache/druid/collections/bitmap/WrappedRoaringBitmap.java
 
b/processing/src/main/java/org/apache/druid/collections/bitmap/WrappedRoaringBitmap.java
index bf20138..8690af3 100644
--- 
a/processing/src/main/java/org/apache/druid/collections/bitmap/WrappedRoaringBitmap.java
+++ 
b/processing/src/main/java/org/apache/druid/collections/bitmap/WrappedRoaringBitmap.java
@@ -22,6 +22,7 @@ package org.apache.druid.collections.bitmap;
 import com.google.common.base.Throwables;
 import org.roaringbitmap.IntIterator;
 import org.roaringbitmap.RoaringBitmap;
+import org.roaringbitmap.RoaringBitmapWriter;
 import org.roaringbitmap.buffer.MutableRoaringBitmap;
 
 import java.io.ByteArrayOutputStream;
@@ -39,7 +40,7 @@ public class WrappedRoaringBitmap implements MutableBitmap
   /**
    * Underlying bitmap.
    */
-  private MutableRoaringBitmap bitmap;
+  private RoaringBitmapWriter<MutableRoaringBitmap> writer;
 
   /**
    * Creates a new WrappedRoaringBitmap wrapping an empty MutableRoaringBitmap
@@ -56,17 +57,17 @@ public class WrappedRoaringBitmap implements MutableBitmap
    */
   public WrappedRoaringBitmap(boolean compressRunOnSerialization)
   {
-    this.bitmap = new MutableRoaringBitmap();
+    this.writer = RoaringBitmapWriter.bufferWriter().get();
     this.compressRunOnSerialization = compressRunOnSerialization;
   }
 
   ImmutableBitmap toImmutableBitmap()
   {
-    MutableRoaringBitmap mrb = bitmap.clone();
+    MutableRoaringBitmap bitmap = writer.get().clone();
     if (compressRunOnSerialization) {
-      mrb.runOptimize();
+      bitmap.runOptimize();
     }
-    return new WrappedImmutableRoaringBitmap(mrb);
+    return new 
WrappedImmutableRoaringBitmap(bitmap.toImmutableRoaringBitmap());
   }
 
   @Override
@@ -74,6 +75,7 @@ public class WrappedRoaringBitmap implements MutableBitmap
   {
     try {
       final ByteArrayOutputStream out = new ByteArrayOutputStream();
+      MutableRoaringBitmap bitmap = writer.get();
       if (compressRunOnSerialization) {
         bitmap.runOptimize();
       }
@@ -88,21 +90,22 @@ public class WrappedRoaringBitmap implements MutableBitmap
   @Override
   public void clear()
   {
-    this.bitmap.clear();
+    this.writer.reset();
   }
 
   @Override
   public void or(MutableBitmap mutableBitmap)
   {
     WrappedRoaringBitmap other = (WrappedRoaringBitmap) mutableBitmap;
-    MutableRoaringBitmap unwrappedOtherBitmap = other.bitmap;
-    bitmap.or(unwrappedOtherBitmap);
+    MutableRoaringBitmap unwrappedOtherBitmap = other.writer.get();
+    writer.get().or(unwrappedOtherBitmap);
   }
 
 
   @Override
   public int getSizeInBytes()
   {
+    MutableRoaringBitmap bitmap = writer.get();
     if (compressRunOnSerialization) {
       bitmap.runOptimize();
     }
@@ -112,21 +115,22 @@ public class WrappedRoaringBitmap implements MutableBitmap
   @Override
   public void add(int entry)
   {
-    bitmap.add(entry);
+    writer.add(entry);
   }
 
   @Override
   public int size()
   {
-    return bitmap.getCardinality();
+    return writer.get().getCardinality();
   }
 
   public void serialize(ByteBuffer buffer)
   {
-    if (compressRunOnSerialization) {
-      bitmap.runOptimize();
-    }
     try {
+      MutableRoaringBitmap bitmap = writer.get();
+      if (compressRunOnSerialization) {
+        bitmap.runOptimize();
+      }
       bitmap.serialize(
           new DataOutputStream(
               new OutputStream()
@@ -180,38 +184,38 @@ public class WrappedRoaringBitmap implements MutableBitmap
   @Override
   public String toString()
   {
-    return getClass().getSimpleName() + bitmap;
+    return getClass().getSimpleName() + writer.getUnderlying();
   }
 
   @Override
   public void remove(int entry)
   {
-    bitmap.remove(entry);
+    writer.get().remove(entry);
   }
 
   @Override
   public IntIterator iterator()
   {
-    return bitmap.getIntIterator();
+    return writer.get().getIntIterator();
   }
 
   @Override
   public boolean isEmpty()
   {
-    return bitmap.isEmpty();
+    return writer.get().isEmpty();
   }
 
   @Override
   public ImmutableBitmap intersection(ImmutableBitmap otherBitmap)
   {
     WrappedRoaringBitmap other = (WrappedRoaringBitmap) otherBitmap;
-    MutableRoaringBitmap unwrappedOtherBitmap = other.bitmap;
-    return new WrappedImmutableRoaringBitmap(MutableRoaringBitmap.and(bitmap, 
unwrappedOtherBitmap));
+    MutableRoaringBitmap unwrappedOtherBitmap = other.writer.get();
+    return new 
WrappedImmutableRoaringBitmap(MutableRoaringBitmap.and(writer.get(), 
unwrappedOtherBitmap));
   }
 
   @Override
   public boolean get(int value)
   {
-    return bitmap.contains(value);
+    return writer.get().contains(value);
   }
 }


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

Reply via email to