Package org.apache.drill.exec.vector
Class UntypedNullVector
java.lang.Object
org.apache.drill.exec.vector.BaseValueVector
org.apache.drill.exec.vector.BaseDataValueVector
org.apache.drill.exec.vector.UntypedNullVector
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Iterable<ValueVector>
,FixedWidthVector
,ValueVector
UntypedNullVector is to represent a value vector with
TypeProtos.MinorType.NULL
All values in the vector represent two semantic implications: 1) the value is unknown, 2) the type is unknown.
Because of this, we only have to keep track of the number of values in value vector,
and there is no allocated buffer to back up this value vector. Therefore, the majority of
methods in this class is either no-op, or throws UnsupportedOperationException
.-
Nested Class Summary
Modifier and TypeClassDescriptionfinal class
final class
UntypedNullVector.Mutator throws Exception for most of its mutate operations, except for the ones that set value counts.Nested classes/interfaces inherited from class org.apache.drill.exec.vector.BaseValueVector
BaseValueVector.BaseAccessor, BaseValueVector.BaseMutator
-
Field Summary
Fields inherited from class org.apache.drill.exec.vector.BaseDataValueVector
data, emptyByteArray
Fields inherited from class org.apache.drill.exec.vector.BaseValueVector
allocator, field, INITIAL_VALUE_ALLOCATION, MAX_ALLOCATION_SIZE
Fields inherited from interface org.apache.drill.exec.vector.ValueVector
BITS_VECTOR_NAME, MAX_BUFFER_SIZE, MAX_ROW_COUNT, MIN_ROW_COUNT, OFFSETS_VECTOR_NAME, VALUES_VECTOR_NAME
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Allocate new buffers.void
allocateNew
(int valueCount) Allocate a new memory space for this vector.boolean
Allocates new buffers.void
clear()
Release the underlying DrillBuf and reset the ValueVector to empty.void
copyEntry
(int toIndex, ValueVector from, int fromIndex) void
copyFrom
(int fromIndex, int thisIndex, UntypedNullVector from) void
copyFromSafe
(int fromIndex, int thisIndex, UntypedNullVector from) Returns anaccessor
that is used to read from this vector instance.int
getBufferSizeFor
(int valueCount) Returns the number of bytes that is used by this vector if it holds the given number of values.Returns anmutator
that is used to write to this vector instance.int
getPayloadByteCount
(int valueCount) Return the number of value bytes consumed by actual data.Returns afield reader
that supports reading values from this vector.getTransferPair
(String ref, BufferAllocator allocator) getTransferPair
(BufferAllocator allocator) Returns atransfer pair
, creating a new target vector of the same type.int
Returns the maximum number of values that can be stored in this vector instance.int
The width of a record in bytes.void
load
(UserBitShared.SerializedField metadata, DrillBuf buffer) Load the data provided in the buffer.Returns a newtransfer pair
that is used to transfer underlying buffers into the target vector.reallocRaw
(int newAllocationSize) Core of vector allocation.void
reset()
This method has a similar effect of allocateNew() without actually clearing and reallocating the value vector.void
setInitialCapacity
(int valueCount) Set the initial record capacityvoid
splitAndTransferTo
(int startIndex, int length, UntypedNullVector target) void
transferTo
(UntypedNullVector target) void
Zero out the underlying buffer backing this vector.Methods inherited from class org.apache.drill.exec.vector.BaseDataValueVector
close, collectLedgers, exchange, getAllocatedSize, getBuffer, getBuffers, getBufferSize
Methods inherited from class org.apache.drill.exec.vector.BaseValueVector
checkBufRefs, fillBitsVector, getAllocator, getField, getField, getMetadata, getMetadataBuilder, iterator, toNullable, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, iterator, spliterator
Methods inherited from interface org.apache.drill.exec.vector.ValueVector
close, collectLedgers, exchange, getAllocatedSize, getAllocator, getBuffers, getBufferSize, getField, getMetadata, toNullable
-
Field Details
-
VALUE_WIDTH
public static final int VALUE_WIDTHWidth of each fixed-width value.- See Also:
-
-
Constructor Details
-
UntypedNullVector
-
-
Method Details
-
getReader
Description copied from interface:ValueVector
Returns afield reader
that supports reading values from this vector.- Specified by:
getReader
in interfaceValueVector
-
getBufferSizeFor
public int getBufferSizeFor(int valueCount) Description copied from interface:ValueVector
Returns the number of bytes that is used by this vector if it holds the given number of values. The result will be the same as if Mutator.setValueCount() were called, followed by calling getBufferSize(), but without any of the closing side-effects that setValueCount() implies wrt finishing off the population of a vector. Some operations might wish to use this to determine how much memory has been used by a vector so far, even though it is not finished being populated.- Specified by:
getBufferSizeFor
in interfaceValueVector
- Parameters:
valueCount
- the number of values to assume this vector contains- Returns:
- the buffer size if this vector is holding valueCount values
-
getValueCapacity
public int getValueCapacity()Description copied from interface:ValueVector
Returns the maximum number of values that can be stored in this vector instance.- Specified by:
getValueCapacity
in interfaceValueVector
-
getAccessor
Description copied from interface:ValueVector
Returns anaccessor
that is used to read from this vector instance.- Specified by:
getAccessor
in interfaceValueVector
-
getMutator
Description copied from interface:ValueVector
Returns anmutator
that is used to write to this vector instance.- Specified by:
getMutator
in interfaceValueVector
-
setInitialCapacity
public void setInitialCapacity(int valueCount) Description copied from interface:ValueVector
Set the initial record capacity- Specified by:
setInitialCapacity
in interfaceValueVector
-
allocateNew
public void allocateNew()Description copied from interface:ValueVector
Allocate new buffers. ValueVector implements logic to determine how much to allocate.- Specified by:
allocateNew
in interfaceValueVector
-
allocateNewSafe
public boolean allocateNewSafe()Description copied from interface:ValueVector
Allocates new buffers. ValueVector implements logic to determine how much to allocate.- Specified by:
allocateNewSafe
in interfaceValueVector
- Returns:
- Returns true if allocation was successful.
-
allocateNew
public void allocateNew(int valueCount) Description copied from interface:FixedWidthVector
Allocate a new memory space for this vector. Must be called prior to using the ValueVector.- Specified by:
allocateNew
in interfaceFixedWidthVector
- Parameters:
valueCount
- Number of values in the vector.
-
reset
public void reset()Description copied from class:BaseDataValueVector
This method has a similar effect of allocateNew() without actually clearing and reallocating the value vector. The purpose is to move the value vector to a "mutate" state- Overrides:
reset
in classBaseDataValueVector
-
zeroVector
public void zeroVector()Zero out the underlying buffer backing this vector.- Specified by:
zeroVector
in interfaceFixedWidthVector
-
reallocRaw
Description copied from class:BaseDataValueVector
Core of vector allocation. Given a new size (which must be a power of two), allocate the new buffer, copy the current values, and leave the unused parts garbage-filled.- Specified by:
reallocRaw
in classBaseDataValueVector
- Parameters:
newAllocationSize
- new buffer size as a power of two- Returns:
- the new buffer
-
getValueWidth
public int getValueWidth()Description copied from interface:FixedWidthVector
The width of a record in bytes.- Specified by:
getValueWidth
in interfaceFixedWidthVector
- Returns:
- The width of a record in bytes.
-
getTransferPair
Description copied from interface:ValueVector
Returns atransfer pair
, creating a new target vector of the same type.- Specified by:
getTransferPair
in interfaceValueVector
- Overrides:
getTransferPair
in classBaseValueVector
-
getTransferPair
- Specified by:
getTransferPair
in interfaceValueVector
-
makeTransferPair
Description copied from interface:ValueVector
Returns a newtransfer pair
that is used to transfer underlying buffers into the target vector.- Specified by:
makeTransferPair
in interfaceValueVector
-
transferTo
-
splitAndTransferTo
-
getPayloadByteCount
public int getPayloadByteCount(int valueCount) Description copied from interface:ValueVector
Return the number of value bytes consumed by actual data.- Specified by:
getPayloadByteCount
in interfaceValueVector
-
copyFrom
-
copyFromSafe
-
copyEntry
- Specified by:
copyEntry
in interfaceValueVector
-
clear
public void clear()Description copied from interface:ValueVector
Release the underlying DrillBuf and reset the ValueVector to empty.- Specified by:
clear
in interfaceValueVector
- Overrides:
clear
in classBaseDataValueVector
-