public class VariableWidthBlock extends AbstractVariableWidthBlock
| Constructor and Description |
|---|
VariableWidthBlock(int positionCount,
io.airlift.slice.Slice slice,
int[] offsets,
Optional<boolean[]> valueIsNull) |
| Modifier and Type | Method and Description |
|---|---|
Block |
copyPositions(int[] positions,
int offset,
int length)
Returns a block containing the specified positions.
|
Block |
copyRegion(int positionOffset,
int length)
Returns a block starting at the specified position and extends for the
specified length.
|
int |
getPositionCount()
Returns the number of positions in this block.
|
protected int |
getPositionOffset(int position) |
long |
getPositionsSizeInBytes(boolean[] positions)
Returns the size of of all positions marked true in the positions array.
|
protected io.airlift.slice.Slice |
getRawSlice(int position) |
Block |
getRegion(int positionOffset,
int length)
Returns a block starting at the specified position and extends for the
specified length.
|
long |
getRegionSizeInBytes(int position,
int length)
Returns the size of
block.getRegion(position, length). |
long |
getRetainedSizeInBytes()
Returns the retained size of this block in memory, including over-allocations.
|
long |
getSizeInBytes()
Returns the size of this block as if it was compacted, ignoring any over-allocations.
|
int |
getSliceLength(int position)
Gets the length of the value at the
position. |
protected boolean |
isEntryNull(int position) |
boolean |
mayHaveNull()
Is it possible the block may have a null value? If false, the block can not contain
a null, but if true, the block may or may not have a null.
|
void |
retainedBytesForEachPart(BiConsumer<Object,Long> consumer)
consumer visits each of the internal data container and accepts the size for it. |
String |
toString() |
bytesCompare, bytesEqual, checkReadablePosition, compareTo, equals, getByte, getEncodingName, getEstimatedDataSizeForStats, getInt, getLong, getLong, getShort, getSingleValueBlock, getSlice, hash, isNull, writeBytesTo, writePositionToclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetLoadedBlock, getLogicalSizeInBytes, getObject, getPositionspublic VariableWidthBlock(int positionCount,
io.airlift.slice.Slice slice,
int[] offsets,
Optional<boolean[]> valueIsNull)
protected final int getPositionOffset(int position)
getPositionOffset in class AbstractVariableWidthBlockpublic int getSliceLength(int position)
Blockposition.
This method must be implemented if @{code getSlice} is implemented.public boolean mayHaveNull()
Blockprotected boolean isEntryNull(int position)
isEntryNull in class AbstractVariableWidthBlockpublic int getPositionCount()
Blockpublic long getSizeInBytes()
Blockpublic long getRegionSizeInBytes(int position,
int length)
Blockblock.getRegion(position, length).
The method can be expensive. Do not use it outside an implementation of Block.public long getPositionsSizeInBytes(boolean[] positions)
Blockblock.getRegionSizeInBytes(position, length)
where you mark all positions for the regions first.public long getRetainedSizeInBytes()
Blockpublic void retainedBytesForEachPart(BiConsumer<Object,Long> consumer)
Blockconsumer visits each of the internal data container and accepts the size for it.
This method can be helpful in cases such as memory counting for internal data structure.
Also, the method should be non-recursive, only visit the elements at the top level,
and specifically should not call retainedBytesForEachPart on nested blocks
consumer should be called at least once with the current block and
must include the instance size of the current blockpublic Block copyPositions(int[] positions, int offset, int length)
Blockpositions array
that starts at offset and has length of length.
All specified positions must be valid for this block.
The returned block must be a compact representation of the original block.
protected io.airlift.slice.Slice getRawSlice(int position)
getRawSlice in class AbstractVariableWidthBlockpublic Block getRegion(int positionOffset, int length)
BlockThe region can be a view over this block. If this block is released the region block may also be released. If the region block is released this block may also be released.
public Block copyRegion(int positionOffset, int length)
BlockThe region returned must be a compact representation of the original block, unless their internal representation will be exactly the same. This method is useful for operators that hold on to a range of values without holding on to the entire block.
Copyright © 2012–2019. All rights reserved.