public interface ValueVector extends Closeable, Iterable<ValueVector>
A value vector
stores underlying data in-memory in a columnar fashion that is compact and
efficient. The column whose data is stored, is referred by getField()
.
It is important that vector is allocated before attempting to read or write.
There are a few "rules" around vectors:
Please note that the current implementation doesn't enforce those rules, hence we may find few places that deviate from these rules (e.g. offset vectors in Variable Length and Repeated vector)
This interface "should" strive to guarantee this order of operation:
allocate > mutate > setvaluecount > access > clear (or allocate to start the process over).
Modifier and Type | Method and Description |
---|---|
<OUT,IN> OUT |
accept(VectorVisitor<OUT,IN> visitor,
IN value)
Accept a generic
VectorVisitor and return the result. |
void |
allocateNew()
Allocate new buffers.
|
boolean |
allocateNewSafe()
Allocates new buffers.
|
void |
clear()
Release any owned ArrowBuf and reset the ValueVector to the initial state.
|
void |
close()
Alternative to clear().
|
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.
|
void |
copyFromSafe(int fromIndex,
int thisIndex,
ValueVector from)
Same as
copyFrom(int, int, ValueVector) except that
it handles the case when the capacity of the vector needs to be expanded
before copy. |
BufferAllocator |
getAllocator() |
ArrowBuf[] |
getBuffers(boolean clear)
Return the underlying buffers associated with this vector.
|
int |
getBufferSize()
Get the number of bytes used by this vector.
|
int |
getBufferSizeFor(int valueCount)
Returns the number of bytes that is used by this vector if it holds the given number
of values.
|
ArrowBuf |
getDataBuffer()
Gets the underlying buffer associated with data vector.
|
Field |
getField()
Get information about how this field is materialized.
|
Types.MinorType |
getMinorType() |
String |
getName()
Gets the name of the vector.
|
int |
getNullCount()
Returns number of null elements in the vector.
|
Object |
getObject(int index)
Get friendly type object from the vector.
|
ArrowBuf |
getOffsetBuffer()
Gets the underlying buffer associated with offset vector.
|
FieldReader |
getReader()
Get a reader for this vector.
|
TransferPair |
getTransferPair(BufferAllocator allocator)
To transfer quota responsibility.
|
TransferPair |
getTransferPair(String ref,
BufferAllocator allocator) |
TransferPair |
getTransferPair(String ref,
BufferAllocator allocator,
CallBack callBack) |
ArrowBuf |
getValidityBuffer()
Gets the underlying buffer associated with validity vector.
|
int |
getValueCapacity()
Returns the maximum number of values that can be stored in this vector instance.
|
int |
getValueCount()
Gets the number of values.
|
int |
hashCode(int index)
Returns hashCode of element in index with the default hasher.
|
int |
hashCode(int index,
ArrowBufHasher hasher)
Returns hashCode of element in index with the given hasher.
|
boolean |
isNull(int index)
Check whether an element in the vector is null.
|
TransferPair |
makeTransferPair(ValueVector target)
Makes a new transfer pair used to transfer underlying buffers.
|
void |
reAlloc()
Allocate new buffer with double capacity, and copy data into the new buffer.
|
void |
reset()
Reset the ValueVector to the initial state without releasing any owned ArrowBuf.
|
void |
setInitialCapacity(int numRecords)
Set the initial record capacity.
|
void |
setValueCount(int valueCount)
Set number of values in the vector.
|
forEach, iterator, spliterator
void allocateNew() throws OutOfMemoryException
OutOfMemoryException
- Thrown if no memory can be allocated.boolean allocateNewSafe()
void reAlloc()
BufferAllocator getAllocator()
void setInitialCapacity(int numRecords)
numRecords
- the initial record capacity.int getValueCapacity()
void close()
close
in interface AutoCloseable
close
in interface Closeable
void clear()
void reset()
Field getField()
Types.MinorType getMinorType()
TransferPair getTransferPair(BufferAllocator allocator)
allocator
- the target allocatortransfer pair
, creating a new target vector of
the same type.TransferPair getTransferPair(String ref, BufferAllocator allocator)
TransferPair getTransferPair(String ref, BufferAllocator allocator, CallBack callBack)
TransferPair makeTransferPair(ValueVector target)
target
- the target for the transfertransfer pair
that is used to transfer underlying
buffers into the target vector.FieldReader getReader()
field reader
that supports reading values
from this vector.int getBufferSize()
int getBufferSizeFor(int valueCount)
valueCount
- the number of values to assume this vector containsArrowBuf[] getBuffers(boolean clear)
clear
- Whether to clear vector before returning; the buffers will still be refcounted;
but the returned array will be the only reference to thembuffers
that is used by this vector instance.ArrowBuf getValidityBuffer()
ArrowBuf getDataBuffer()
ArrowBuf getOffsetBuffer()
int getValueCount()
void setValueCount(int valueCount)
Object getObject(int index)
index
- index of object to getint getNullCount()
boolean isNull(int index)
index
- index to check for nullint hashCode(int index)
int hashCode(int index, ArrowBufHasher hasher)
void copyFrom(int fromIndex, int thisIndex, ValueVector from)
fromIndex
- position to copy from in source vectorthisIndex
- position to copy to in this vectorfrom
- source vectorvoid copyFromSafe(int fromIndex, int thisIndex, ValueVector from)
copyFrom(int, int, ValueVector)
except that
it handles the case when the capacity of the vector needs to be expanded
before copy.fromIndex
- position to copy from in source vectorthisIndex
- position to copy to in this vectorfrom
- source vector<OUT,IN> OUT accept(VectorVisitor<OUT,IN> visitor, IN value)
VectorVisitor
and return the result.OUT
- the output result type.IN
- the input data together with visitor.String getName()
Copyright © 2023 The Apache Software Foundation. All rights reserved.