- All Superinterfaces:
org.apache.lucene.util.Accountable,AutoCloseable,Block,BlockLoader.Block,Closeable,RefCounted,Releasable,Writeable
- All Known Implementing Classes:
BytesRefArrayBlock,BytesRefArrowBufBlock,BytesRefVectorBlock,ConstantNullBlock,OrdinalBytesRefBlock
X-Block.java.st instead.-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface org.elasticsearch.compute.data.Block
Block.MvOrderingNested classes/interfaces inherited from interface org.elasticsearch.common.io.stream.Writeable
Writeable.Reader<V>, Writeable.Writer<V> -
Field Summary
FieldsFields inherited from interface org.apache.lucene.util.Accountable
NULL_ACCOUNTABLEFields inherited from interface org.elasticsearch.compute.data.Block
ESQL_AGGREGATE_METRIC_DOUBLE_BLOCK, MAX_LOOKUP, PAGE_MEM_OVERHEAD_PER_BLOCK, SERIALIZE_BLOCK_ARRAY, SERIALIZE_BLOCK_BIG_ARRAY, SERIALIZE_BLOCK_ORDINAL, SERIALIZE_BLOCK_VALUES, SERIALIZE_BLOCK_VECTORFields inherited from interface org.elasticsearch.core.RefCounted
ALWAYS_REFERENCED -
Method Summary
Modifier and TypeMethodDescriptionReturns an ordinal bytesref block if this block is backed by a dictionary and ordinals; otherwise, returns null.asVector()Returns an efficient dense single-value view of this block.default BytesRefBlockdeepCopy(BlockFactory blockFactory) Make a deep copy of thisBlockusing the providedBlockFactory, likely copying all data.booleanCompares the given object with this block for equality.static booleanequals(BytesRefBlock block1, BytesRefBlock block2) Returnstrueif the given blocks are equal to each other, otherwisefalse.expand()Expand multivalued fields into one row per value.default BytesRefBlockfilter(boolean mayContainDuplicates, int... positions) Creates a new block that only exposes the positions provided.filter(boolean mayContainDuplicates, int[] positions, int offset, int length) Creates a new block that only exposes the positions provided.get(int valueIndex, PagedBytesCursor scratch) Retrieves the bytes value stored at the given value index using aPagedBytesCursorfor zero-copy access to the underlying paged byte storage.org.apache.lucene.util.BytesRefgetBytesRef(int valueIndex, org.apache.lucene.util.BytesRef dest) Build a contiguous array of bytes for the value stored at the given position.static inthash(BytesRefBlock block) Generates the hash code for the given block.inthashCode()Returns the hash code of this block, as defined byhash(BytesRefBlock).default booleanhasValue(int position, org.apache.lucene.util.BytesRef value, org.apache.lucene.util.BytesRef scratch) Checks if this block has the given value at position.keepMask(BooleanVector mask) ReleasableIterator<? extends BytesRefBlock> lookup(IntBlock positions, ByteSizeValue targetBlockSize) Builds an Iterator of newBlocks with the sameBlock.elementType()as this Block whose values are copied from positions in this Block.static BytesRefBlockdefault BytesRefBlockslice(int beginInclusive, int endExclusive) intThe maximum size in bytes of any single value stored in this block, or0if there are no values.default voidwriteTo(StreamOutput out) Writes only the data of the block to a stream output.Methods inherited from interface org.apache.lucene.util.Accountable
getChildResources, ramBytesUsedMethods inherited from interface org.elasticsearch.compute.data.Block
allowPassingToDifferentDriver, areAllValuesNull, attachReleasable, blockFactory, doesHaveMultivaluedFields, elementType, getFirstValueIndex, getPositionCount, getTotalValueCount, getValueCount, insertNulls, isNull, isReleased, mayHaveMultivaluedFields, mayHaveNulls, mvDeduplicated, mvOrdering, mvSortedAscendingMethods inherited from interface org.elasticsearch.core.RefCounted
decRef, hasReferences, incRef, mustIncRef, tryIncRefMethods inherited from interface org.elasticsearch.core.Releasable
close
-
Field Details
-
NULL_VALUE
static final org.apache.lucene.util.BytesRef NULL_VALUE
-
-
Method Details
-
getBytesRef
org.apache.lucene.util.BytesRef getBytesRef(int valueIndex, org.apache.lucene.util.BytesRef dest) Build a contiguous array of bytes for the value stored at the given position. The underlying data is generally stored in pages that look likebyte[][]with some data spanning more than one of the innerbyte[]arrays. In that case, this builds abyte[]in theBytesRef, copies the bytes, and returns it. Otherwise, this returns a zero-copy snapshot of the underlying data. Except arrow. Arrow always copies.If possible, use
get(int, org.elasticsearch.common.bytes.PagedBytesCursor)because it only needs to copy in the arrow implementation.There are
Block.getValueCount(int)values in each position. You can access them all with something like:int start = getFirstValueIndex(position); int end = start + getValueCount(position); for (int i = start; i < end; i++) { BytesRef v = getBytesRef(i, scratch); // do stuff }- Parameters:
valueIndex- the value index- Returns:
- the data value (as a BytesRef)
-
get
Retrieves the bytes value stored at the given value index using aPagedBytesCursorfor zero-copy access to the underlying paged byte storage. Except arrow. Arrow always copies.There are
Block.getValueCount(int)values in each position. You can access them all with something like:int start = getFirstValueIndex(position); int end = start + getValueCount(position); for (int i = start; i < end; i++) { PagedBytesCursor v = get(i, scratch); // do stuff }- Parameters:
valueIndex- the value indexscratch- the cursor to initialize and return- Returns:
- the initialized cursor pointing to the value's bytes
-
hasValue
default boolean hasValue(int position, org.apache.lucene.util.BytesRef value, org.apache.lucene.util.BytesRef scratch) Checks if this block has the given value at position. If at this index we have a multivalue, then it returns true if any values match.- Parameters:
position- the index at which we should check the value(s)value- the value to check againstscratch- the scratch BytesRef to use for this operation
-
asVector
BytesRefVector asVector()Description copied from interface:BlockReturns an efficient dense single-value view of this block. Null, if the block is not dense single-valued. That is, if mayHaveNulls returns true, or getTotalValueCount is not equal to getPositionCount. -
asOrdinals
OrdinalBytesRefBlock asOrdinals()Returns an ordinal bytesref block if this block is backed by a dictionary and ordinals; otherwise, returns null. Callers must not release the returned block as no extra reference is retained by this method. -
slice
Description copied from interface:BlockReturn a subset of thisBlockfrom positionbeginInclusiveto positionendExclusive. This may return the same instance if the range covers all positions, but if it does it willRefCounted.incRef()it.NOTE: Implementations will not try to optimize zero length slices as we expect them to be rare.
-
filter
Description copied from interface:BlockCreates a new block that only exposes the positions provided. -
filter
Description copied from interface:BlockCreates a new block that only exposes the positions provided. -
deepCopy
Make a deep copy of thisBlockusing the providedBlockFactory, likely copying all data. -
keepMask
Description copied from interface:Block -
lookup
ReleasableIterator<? extends BytesRefBlock> lookup(IntBlock positions, ByteSizeValue targetBlockSize) Description copied from interface:BlockBuilds an Iterator of newBlocks with the sameBlock.elementType()as this Block whose values are copied from positions in this Block. It has the same number ofpositionsas thepositionsparameter.For example, if this block contained
[a, b, [b, c]]and were called with the block[0, 1, 1, [1, 2]]then the result would be[a, b, b, [b, b, c]].This process produces
count(this) * count(positions)values per positions which could be quite large. Instead of returning a single Block, this returns an Iterator of Blocks containing all of the promised values.The returned
ReleasableIteratormay retain a reference to thepositionsparameter. Close it to release those references.This block is built using the same
BlockFactoryas was used to build thepositionsparameter. -
expand
BytesRefBlock expand()Description copied from interface:BlockExpand multivalued fields into one row per value. Returns the same block if there aren't any multivalued fields to expand. The returned block needs to be closed by the caller to release the block's resources. -
valueMaxByteSize
int valueMaxByteSize()The maximum size in bytes of any single value stored in this block, or0if there are no values. Scans all value indices to find the maximum.- Specified by:
valueMaxByteSizein interfaceBlock- Returns:
- the maximum byte size of any single value in this block
-
readFrom
- Throws:
IOException
-
writeTo
Description copied from interface:BlockWrites only the data of the block to a stream output. This method should be used when the type of the block is known during reading.- Specified by:
writeToin interfaceBlock- Specified by:
writeToin interfaceWriteable- Throws:
IOException
-
equals
Compares the given object with this block for equality. Returnstrueif and only if the given object is a BytesRefBlock, and both blocks areequal. -
hashCode
int hashCode()Returns the hash code of this block, as defined byhash(BytesRefBlock). -
equals
Returnstrueif the given blocks are equal to each other, otherwisefalse. Two blocks are considered equal if they have the same position count, and contain the same values (including absent null values) in the same order. This definition ensures that the equals method works properly across different implementations of the BytesRefBlock interface. -
hash
Generates the hash code for the given block. The hash code is computed from the block's values. This ensures thatblock1.equals(block2)implies thatblock1.hashCode()==block2.hashCode()for any two blocks,block1andblock2, as required by the general contract ofObject.hashCode().
-