Class BitVector

All Implemented Interfaces:
Closeable, AutoCloseable, Iterable<ValueVector>, ElementAddressableVector, FieldVector, FixedWidthVector, ValueVector, VectorDefinitionSetter

public final class BitVector extends BaseFixedWidthVector
BitVector implements a fixed width (1 bit) vector of boolean values which could be null. Each value in the vector corresponds to a single bit in the underlying data stream backing the vector.
  • Constructor Details

    • BitVector

      public BitVector(String name, BufferAllocator allocator)
      Instantiate a BitVector. This doesn't allocate any memory for the data in vector.
      Parameters:
      name - name of the vector
      allocator - allocator for memory management.
    • BitVector

      public BitVector(String name, FieldType fieldType, BufferAllocator allocator)
      Instantiate a BitVector. This doesn't allocate any memory for the data in vector.
      Parameters:
      name - name of the vector
      fieldType - type of Field materialized by this vector
      allocator - allocator for memory management.
    • BitVector

      public BitVector(Field field, BufferAllocator allocator)
      Instantiate a BitVector. This doesn't allocate any memory for the data in vector.
      Parameters:
      field - the Field materialized by this vector
      allocator - allocator for memory management.
  • Method Details

    • getReaderImpl

      protected FieldReader getReaderImpl()
      Description copied from class: BaseValueVector
      Each vector has a different reader that implements the FieldReader interface. Overridden methods must make sure to return the correct concrete reader implementation.
      Specified by:
      getReaderImpl in class BaseValueVector
      Returns:
      Returns a lambda that initializes a reader when called.
    • getMinorType

      public Types.MinorType getMinorType()
      Get minor type for this vector. The vector holds values belonging to a particular type.
      Returns:
      Types.MinorType
    • setInitialCapacity

      public void setInitialCapacity(int valueCount)
      Sets the desired value capacity for the vector. This function doesn't allocate any memory for the vector.
      Specified by:
      setInitialCapacity in interface ValueVector
      Overrides:
      setInitialCapacity in class BaseFixedWidthVector
      Parameters:
      valueCount - desired number of elements in the vector
    • getValueBufferValueCapacity

      protected int getValueBufferValueCapacity()
      Overrides:
      getValueBufferValueCapacity in class BaseFixedWidthVector
    • getBufferSizeFor

      public int getBufferSizeFor(int count)
      Get the potential buffer size for a particular number of records.
      Specified by:
      getBufferSizeFor in interface ValueVector
      Overrides:
      getBufferSizeFor in class BaseFixedWidthVector
      Parameters:
      count - desired number of elements in the vector
      Returns:
      estimated size of underlying buffers if the vector holds a given number of elements
    • getBufferSize

      public int getBufferSize()
      Get the size (number of bytes) of underlying buffers used by this vector.
      Specified by:
      getBufferSize in interface ValueVector
      Overrides:
      getBufferSize in class BaseFixedWidthVector
      Returns:
      size of underlying buffers.
    • splitAndTransferTo

      public void splitAndTransferTo(int startIndex, int length, BaseFixedWidthVector target)
      Slice this vector at desired index and length and transfer the corresponding data to the target vector.
      Overrides:
      splitAndTransferTo in class BaseFixedWidthVector
      Parameters:
      startIndex - start position of the split in source vector.
      length - length of the split.
      target - destination vector
    • get

      public int get(int index) throws IllegalStateException
      Get the element at the given index from the vector.
      Parameters:
      index - position of element
      Returns:
      element at given index
      Throws:
      IllegalStateException
    • get

      public void get(int index, NullableBitHolder holder)
      Get the element at the given index from the vector and sets the state in holder. If element at given index is null, holder.isSet will be zero.
      Parameters:
      index - position of element
    • getObject

      public Boolean getObject(int index)
      Same as get(int).
      Parameters:
      index - position of element
      Returns:
      element at given index
    • copyFrom

      public void copyFrom(int fromIndex, int thisIndex, ValueVector from)
      Copy a cell value from a particular index in source vector to a particular position in this vector.
      Specified by:
      copyFrom in interface ValueVector
      Overrides:
      copyFrom in class BaseFixedWidthVector
      Parameters:
      fromIndex - position to copy from in source vector
      thisIndex - position to copy to in this vector
      from - source vector
    • set

      public void set(int index, int value)
      Set the element at the given index to the given value.
      Parameters:
      index - position of element
      value - value of element
    • set

      public void set(int index, NullableBitHolder holder) throws IllegalArgumentException
      Set the element at the given index to the value set in data holder. If the value in holder is not indicated as set, element in the at the given index will be null.
      Parameters:
      index - position of element
      holder - nullable data holder for value of element
      Throws:
      IllegalArgumentException
    • set

      public void set(int index, BitHolder holder)
      Set the element at the given index to the value set in data holder.
      Parameters:
      index - position of element
      holder - data holder for value of element
    • setSafe

      public void setSafe(int index, int value)
      Same as set(int, int) except that it handles the case when index is greater than or equal to existing value capacity BaseFixedWidthVector.getValueCapacity().
      Parameters:
      index - position of element
      value - value of element
    • setSafe

      public void setSafe(int index, NullableBitHolder holder) throws IllegalArgumentException
      Same as set(int, NullableBitHolder) except that it handles the case when index is greater than or equal to existing value capacity BaseFixedWidthVector.getValueCapacity().
      Parameters:
      index - position of element
      holder - nullable data holder for value of element
      Throws:
      IllegalArgumentException
    • setSafe

      public void setSafe(int index, BitHolder holder)
      Same as set(int, BitHolder) except that it handles the case when index is greater than or equal to existing value capacity BaseFixedWidthVector.getValueCapacity().
      Parameters:
      index - position of element
      holder - data holder for value of element
    • set

      public void set(int index, int isSet, int value)
      Store the given value at a particular position in the vector. isSet indicates whether the value is NULL or not.
      Parameters:
      index - position of the new value
      isSet - 0 for NULL value, 1 otherwise
      value - element value
    • setSafe

      public void setSafe(int index, int isSet, int value)
      Same as set(int, int, int) except that it handles the case when index is greater than or equal to current value capacity of the vector.
      Parameters:
      index - position of the new value
      isSet - 0 for NULL value, 1 otherwise
      value - element value
    • setToOne

      public void setToOne(int index)
      Set the element at the given index to one.
      Parameters:
      index - position of element
    • setSafeToOne

      public void setSafeToOne(int index)
      Same as setToOne(int) except that it handles the case when index is greater than or equal to current value capacity of the vector.
      Parameters:
      index - position of the element
    • getDataPointer

      public ArrowBufPointer getDataPointer(int index)
      Description copied from interface: ElementAddressableVector
      Gets the pointer for the data at the given index.
      Specified by:
      getDataPointer in interface ElementAddressableVector
      Overrides:
      getDataPointer in class BaseFixedWidthVector
      Parameters:
      index - the index for the data.
      Returns:
      the pointer to the data.
    • getDataPointer

      public ArrowBufPointer getDataPointer(int index, ArrowBufPointer reuse)
      Description copied from interface: ElementAddressableVector
      Gets the pointer for the data at the given index.
      Specified by:
      getDataPointer in interface ElementAddressableVector
      Overrides:
      getDataPointer in class BaseFixedWidthVector
      Parameters:
      index - the index for the data.
      reuse - the data pointer to fill, this avoids creating a new pointer object.
      Returns:
      the pointer to the data, it should be the same one as the input parameter
    • hashCode

      public int hashCode(int index)
      Description copied from interface: ValueVector
      Returns hashCode of element in index with the default hasher.
      Specified by:
      hashCode in interface ValueVector
      Overrides:
      hashCode in class BaseFixedWidthVector
    • hashCode

      public int hashCode(int index, ArrowBufHasher hasher)
      Description copied from interface: ValueVector
      Returns hashCode of element in index with the given hasher.
      Specified by:
      hashCode in interface ValueVector
      Overrides:
      hashCode in class BaseFixedWidthVector
    • setRangeToOne

      public void setRangeToOne(int firstBitIndex, int count)
      Set count bits to 1 in data starting at firstBitIndex.
      Parameters:
      firstBitIndex - the index of the first bit to set
      count - the number of bits to set
    • getTransferPair

      public TransferPair getTransferPair(String ref, BufferAllocator allocator)
      Construct a TransferPair comprising this and a target vector of the same type.
      Specified by:
      getTransferPair in interface ValueVector
      Specified by:
      getTransferPair in class BaseFixedWidthVector
      Parameters:
      ref - name of the target vector
      allocator - allocator for the target vector
      Returns:
      TransferPair
    • getTransferPair

      public TransferPair getTransferPair(Field field, BufferAllocator allocator)
      Construct a TransferPair comprising this and a target vector of the same type.
      Specified by:
      getTransferPair in interface ValueVector
      Specified by:
      getTransferPair in class BaseFixedWidthVector
      Parameters:
      field - Field object used by the target vector
      allocator - allocator for the target vector
      Returns:
      TransferPair
    • makeTransferPair

      public TransferPair makeTransferPair(ValueVector to)
      Construct a TransferPair with a desired target vector of the same type.
      Parameters:
      to - target vector
      Returns:
      TransferPair