Class Int96ArrayBlock

  • All Implemented Interfaces:
    Block

    public class Int96ArrayBlock
    extends java.lang.Object
    implements Block
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int INT96_BYTES  
    • Constructor Summary

      Constructors 
      Constructor Description
      Int96ArrayBlock​(int positionCount, java.util.Optional<boolean[]> valueIsNull, long[] high, int[] low)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method 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.
      java.lang.String getEncodingName()
      Get the encoding for 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 at offset in the value at position.
      long getLong​(int position, int offset)
      Gets a little endian long at offset in the value at position.
      int getPositionCount()
      Returns the number of positions in this block.
      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 of block.getRegion(position, length).
      long getRetainedSizeInBytes()
      Returns the retained size of this block in memory, including over-allocations.
      Block getSingleValueBlock​(int position)
      Gets the value at the specified position as a single element block.
      long getSizeInBytes()
      Returns the size of this block as if it was compacted, ignoring any over-allocations and any unloaded nested blocks.
      boolean isNull​(int position)
      Is the specified position null?
      boolean mayHaveNull()
      Is it possible the block may have a null value? If false, the block cannot contain a null, but if true, the block may or may not have a null.
      void retainedBytesForEachPart​(java.util.function.BiConsumer<java.lang.Object,​java.lang.Long> consumer)
      consumer visits each of the internal data container and accepts the size for it.
      java.lang.String toString()  
      void writePositionTo​(int position, BlockBuilder blockBuilder)
      Appends the value at position to blockBuilder and close the entry.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • Int96ArrayBlock

        public Int96ArrayBlock​(int positionCount,
                               java.util.Optional<boolean[]> valueIsNull,
                               long[] high,
                               int[] low)
    • Method Detail

      • getSizeInBytes

        public long getSizeInBytes()
        Description copied from interface: Block
        Returns the size of this block as if it was compacted, ignoring any over-allocations and any unloaded nested blocks. For example, in dictionary blocks, this only counts each dictionary entry once, rather than each time a value is referenced.
        Specified by:
        getSizeInBytes in interface Block
      • getRegionSizeInBytes

        public long getRegionSizeInBytes​(int position,
                                         int length)
        Description copied from interface: Block
        Returns the size of block.getRegion(position, length). The method can be expensive. Do not use it outside an implementation of Block.
        Specified by:
        getRegionSizeInBytes in interface Block
      • 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 of block.getRegionSizeInBytes(position, length) where you mark all positions for the regions first.
        Specified by:
        getPositionsSizeInBytes in interface Block
      • getRetainedSizeInBytes

        public long getRetainedSizeInBytes()
        Description copied from interface: Block
        Returns the retained size of this block in memory, including over-allocations. This method is called from the inner most execution loop and must be fast.
        Specified by:
        getRetainedSizeInBytes in interface Block
      • 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 interface Block
      • retainedBytesForEachPart

        public void retainedBytesForEachPart​(java.util.function.BiConsumer<java.lang.Object,​java.lang.Long> consumer)
        Description copied from interface: Block
        consumer 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 block
        Specified by:
        retainedBytesForEachPart in interface Block
      • getPositionCount

        public int getPositionCount()
        Description copied from interface: Block
        Returns the number of positions in this block.
        Specified by:
        getPositionCount in interface Block
      • getLong

        public long getLong​(int position,
                            int offset)
        Description copied from interface: Block
        Gets a little endian long at offset in the value at position.
        Specified by:
        getLong in interface Block
      • getInt

        public int getInt​(int position,
                          int offset)
        Description copied from interface: Block
        Gets a little endian int at offset in the value at position.
        Specified by:
        getInt in interface Block
      • mayHaveNull

        public boolean mayHaveNull()
        Description copied from interface: Block
        Is it possible the block may have a null value? If false, the block cannot contain a null, but if true, the block may or may not have a null.
        Specified by:
        mayHaveNull in interface Block
      • isNull

        public boolean isNull​(int position)
        Description copied from interface: Block
        Is the specified position null?
        Specified by:
        isNull in interface Block
      • writePositionTo

        public void writePositionTo​(int position,
                                    BlockBuilder blockBuilder)
        Description copied from interface: Block
        Appends the value at position to blockBuilder and close the entry.
        Specified by:
        writePositionTo in interface Block
      • 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 interface Block
      • 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 within positions 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.

        Specified by:
        copyPositions in interface Block
      • 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.

        Specified by:
        getRegion in interface Block
      • copyRegion

        public Block copyRegion​(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 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 interface Block
      • getEncodingName

        public java.lang.String getEncodingName()
        Description copied from interface: Block
        Get the encoding for this block.
        Specified by:
        getEncodingName in interface Block
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object