|
@@ -8,9 +8,11 @@
|
|
|
package org.elasticsearch.compute.data;
|
|
|
|
|
|
import org.apache.lucene.util.RamUsageEstimator;
|
|
|
+import org.elasticsearch.common.io.stream.StreamOutput;
|
|
|
import org.elasticsearch.common.util.BitArray;
|
|
|
import org.elasticsearch.core.Releasables;
|
|
|
|
|
|
+import java.io.IOException;
|
|
|
import java.util.BitSet;
|
|
|
|
|
|
/**
|
|
@@ -54,6 +56,29 @@ public final class BooleanBigArrayBlock extends AbstractArrayBlock implements Bo
|
|
|
: firstValueIndexes[getPositionCount()] == vector.getPositionCount();
|
|
|
}
|
|
|
|
|
|
+ static BooleanBigArrayBlock readArrayBlock(BlockFactory blockFactory, BlockStreamInput in) throws IOException {
|
|
|
+ final SubFields sub = new SubFields(blockFactory, in);
|
|
|
+ BooleanBigArrayVector vector = null;
|
|
|
+ boolean success = false;
|
|
|
+ try {
|
|
|
+ vector = BooleanBigArrayVector.readArrayVector(sub.vectorPositions(), in, blockFactory);
|
|
|
+ var block = new BooleanBigArrayBlock(vector, sub.positionCount, sub.firstValueIndexes, sub.nullsMask, sub.mvOrdering);
|
|
|
+ blockFactory.adjustBreaker(block.ramBytesUsed() - vector.ramBytesUsed() - sub.bytesReserved);
|
|
|
+ success = true;
|
|
|
+ return block;
|
|
|
+ } finally {
|
|
|
+ if (success == false) {
|
|
|
+ Releasables.close(vector);
|
|
|
+ blockFactory.adjustBreaker(-sub.bytesReserved);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ void writeArrayBlock(StreamOutput out) throws IOException {
|
|
|
+ writeSubFields(out);
|
|
|
+ vector.writeArrayVector(vector.getPositionCount(), out);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public BooleanVector asVector() {
|
|
|
return null;
|