Package io.prestosql.spi.block
Class AbstractSingleMapBlock
- java.lang.Object
-
- io.prestosql.spi.block.AbstractSingleMapBlock
-
- All Implemented Interfaces:
Block
- Direct Known Subclasses:
SingleMapBlock
,SingleMapBlockWriter
public abstract class AbstractSingleMapBlock extends Object implements Block
-
-
Constructor Summary
Constructors Constructor Description AbstractSingleMapBlock()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
bytesCompare(int position, int offset, int length, io.airlift.slice.Slice otherSlice, int otherOffset, int otherLength)
Compares the byte sequences atoffset
in the value atposition
to the byte sequence atotherOffset
inotherSlice
.boolean
bytesEqual(int position, int offset, io.airlift.slice.Slice otherSlice, int otherOffset, int length)
Is the byte sequences atoffset
in the value atposition
equal to the byte sequence atotherOffset
inotherSlice
.int
compareTo(int position, int offset, int length, Block otherBlock, int otherPosition, int otherOffset, int otherLength)
Compares the byte sequences atoffset
in the value atposition
to the byte sequence atotherOffset
in the value atotherPosition
inotherBlock
.Block
copyPositions(int[] positions, int offset, int length)
Returns a block containing the specified positions.Block
copyRegion(int position, int length)
Returns a block starting at the specified position and extends for the specified length.boolean
equals(int position, int offset, Block otherBlock, int otherPosition, int otherOffset, int length)
Is the byte sequences atoffset
in the value atposition
equal to the byte sequence atotherOffset
in the value atotherPosition
inotherBlock
.byte
getByte(int position, int offset)
Gets a byte atoffset
in the value atposition
.List<Block>
getChildren()
Gets the direct child blocks of this block.long
getEstimatedDataSizeForStats(int position)
Returns the estimated in memory data size for stats of position.int
getInt(int position, int offset)
Gets a little endian int atoffset
in the value atposition
.long
getLong(int position, int offset)
Gets a little endian long atoffset
in the value atposition
.<T> T
getObject(int position, Class<T> clazz)
Gets an object in the value atposition
.long
getPositionsSizeInBytes(boolean[] positions)
Returns the size of of all positions marked true in the positions array.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 ofblock.getRegion(position, length)
.short
getShort(int position, int offset)
Gets a little endian short atoffset
in the value atposition
.Block
getSingleValueBlock(int position)
Gets the value at the specified position as a single element block.io.airlift.slice.Slice
getSlice(int position, int offset, int length)
Gets a slice atoffset
in the value atposition
.int
getSliceLength(int position)
Gets the length of the value at theposition
.long
hash(int position, int offset, int length)
Calculates the hash code the byte sequences atoffset
in the value atposition
.boolean
isNull(int position)
Is the specified position null?void
writeBytesTo(int position, int offset, int length, BlockBuilder blockBuilder)
Appends the byte sequences atoffset
in the value atposition
toblockBuilder
.void
writePositionTo(int position, BlockBuilder blockBuilder)
Appends the value atposition
toblockBuilder
and close the entry.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.prestosql.spi.block.Block
getEncodingName, getLoadedBlock, getLogicalSizeInBytes, getPositionCount, getPositions, getRetainedSizeInBytes, getSizeInBytes, isLoaded, mayHaveNull, retainedBytesForEachPart
-
-
-
-
Method Detail
-
getChildren
public final List<Block> getChildren()
Description copied from interface:Block
Gets the direct child blocks of this block.- Specified by:
getChildren
in interfaceBlock
-
isNull
public boolean isNull(int position)
Description copied from interface:Block
Is the specified position null?
-
getByte
public byte getByte(int position, int offset)
Description copied from interface:Block
Gets a byte atoffset
in the value atposition
.
-
getShort
public short getShort(int position, int offset)
Description copied from interface:Block
Gets a little endian short atoffset
in the value atposition
.
-
getInt
public int getInt(int position, int offset)
Description copied from interface:Block
Gets a little endian int atoffset
in the value atposition
.
-
getLong
public long getLong(int position, int offset)
Description copied from interface:Block
Gets a little endian long atoffset
in the value atposition
.
-
getSlice
public io.airlift.slice.Slice getSlice(int position, int offset, int length)
Description copied from interface:Block
Gets a slice atoffset
in the value atposition
.
-
getSliceLength
public int getSliceLength(int position)
Description copied from interface:Block
Gets the length of the value at theposition
. This method must be implemented if @{code getSlice} is implemented.- Specified by:
getSliceLength
in interfaceBlock
-
compareTo
public int compareTo(int position, int offset, int length, Block otherBlock, int otherPosition, int otherOffset, int otherLength)
Description copied from interface:Block
Compares the byte sequences atoffset
in the value atposition
to the byte sequence atotherOffset
in the value atotherPosition
inotherBlock
. This method must be implemented if @{code getSlice} is implemented.
-
bytesEqual
public boolean bytesEqual(int position, int offset, io.airlift.slice.Slice otherSlice, int otherOffset, int length)
Description copied from interface:Block
Is the byte sequences atoffset
in the value atposition
equal to the byte sequence atotherOffset
inotherSlice
. This method must be implemented if @{code getSlice} is implemented.- Specified by:
bytesEqual
in interfaceBlock
-
bytesCompare
public int bytesCompare(int position, int offset, int length, io.airlift.slice.Slice otherSlice, int otherOffset, int otherLength)
Description copied from interface:Block
Compares the byte sequences atoffset
in the value atposition
to the byte sequence atotherOffset
inotherSlice
. This method must be implemented if @{code getSlice} is implemented.- Specified by:
bytesCompare
in interfaceBlock
-
writeBytesTo
public void writeBytesTo(int position, int offset, int length, BlockBuilder blockBuilder)
Description copied from interface:Block
Appends the byte sequences atoffset
in the value atposition
toblockBuilder
. This method must be implemented if @{code getSlice} is implemented.- Specified by:
writeBytesTo
in interfaceBlock
-
equals
public boolean equals(int position, int offset, Block otherBlock, int otherPosition, int otherOffset, int length)
Description copied from interface:Block
Is the byte sequences atoffset
in the value atposition
equal to the byte sequence atotherOffset
in the value atotherPosition
inotherBlock
. This method must be implemented if @{code getSlice} is implemented.
-
hash
public long hash(int position, int offset, int length)
Description copied from interface:Block
Calculates the hash code the byte sequences atoffset
in the value atposition
. This method must be implemented if @{code getSlice} is implemented.
-
getObject
public <T> T getObject(int position, Class<T> clazz)
Description copied from interface:Block
Gets an object in the value atposition
.
-
writePositionTo
public void writePositionTo(int position, BlockBuilder blockBuilder)
Description copied from interface:Block
Appends the value atposition
toblockBuilder
and close the entry.- Specified by:
writePositionTo
in interfaceBlock
-
getSingleValueBlock
public Block getSingleValueBlock(int position)
Description copied from interface:Block
Gets the value at the specified position as a single element block. The method must copy the data into a new block.This method is useful for operators that hold on to a single value without holding on to the entire block.
- Specified by:
getSingleValueBlock
in interfaceBlock
-
getEstimatedDataSizeForStats
public long getEstimatedDataSizeForStats(int position)
Description copied from interface:Block
Returns the estimated in memory data size for stats of position. Do not use it for other purpose.- Specified by:
getEstimatedDataSizeForStats
in interfaceBlock
-
getRegionSizeInBytes
public long getRegionSizeInBytes(int position, int length)
Description copied from interface:Block
Returns the size ofblock.getRegion(position, length)
. The method can be expensive. Do not use it outside an implementation of Block.- Specified by:
getRegionSizeInBytes
in interfaceBlock
-
getPositionsSizeInBytes
public long getPositionsSizeInBytes(boolean[] positions)
Description copied from interface:Block
Returns the size of of all positions marked true in the positions array. This is equivalent to multiple calls ofblock.getRegionSizeInBytes(position, length)
where you mark all positions for the regions first.- Specified by:
getPositionsSizeInBytes
in interfaceBlock
-
copyPositions
public Block copyPositions(int[] positions, int offset, int length)
Description copied from interface:Block
Returns a block containing the specified positions. Positions to copy are stored in a subarray withinpositions
array that starts atoffset
and has length oflength
. All specified positions must be valid for this block.The returned block must be a compact representation of the original block.
- Specified by:
copyPositions
in interfaceBlock
-
getRegion
public Block getRegion(int positionOffset, int length)
Description copied from interface:Block
Returns a block starting at the specified position and extends for the specified length. The specified region must be entirely contained within this block.The 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.
-
copyRegion
public Block copyRegion(int position, int length)
Description copied from interface:Block
Returns a block starting at the specified position and extends for the specified length. The specified region must be entirely contained within this block.The 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.
- Specified by:
copyRegion
in interfaceBlock
-
-