Class AbstractRepeatedMapVector
java.lang.Object
org.apache.drill.exec.vector.complex.AbstractContainerVector
org.apache.drill.exec.vector.complex.AbstractMapVector
org.apache.drill.exec.vector.complex.AbstractRepeatedMapVector
- All Implemented Interfaces:
Closeable,AutoCloseable,Iterable<ValueVector>,ContainerVectorLike,RepeatedValueVector,ValueVector
- Direct Known Subclasses:
DictVector,RepeatedMapVector
public abstract class AbstractRepeatedMapVector
extends AbstractMapVector
implements RepeatedValueVector
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclassclassNested classes/interfaces inherited from interface org.apache.drill.exec.vector.complex.RepeatedValueVector
RepeatedValueVector.RepeatedAccessor, RepeatedValueVector.RepeatedMutator -
Field Summary
FieldsFields inherited from class org.apache.drill.exec.vector.complex.AbstractContainerVector
allocator, callBack, fieldFields inherited from interface org.apache.drill.exec.vector.complex.RepeatedValueVector
DEFAULT_REPEAT_PER_RECORDFields 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
ConstructorsModifierConstructorDescriptionprotectedAbstractRepeatedMapVector(MaterializedField field, BufferAllocator allocator, CallBack callBack) protectedAbstractRepeatedMapVector(MaterializedField field, UInt4Vector offsets, CallBack callBack) -
Method Summary
Modifier and TypeMethodDescription<T extends ValueVector>
AddOrGetResult<T> addOrGetVector(VectorDescriptor descriptor) Creates and adds a child vector if none with the same name exists, else returns the vector instance.voidallocateNew(int groupCount, int innerValueCount) booleanAllocates new buffers.voidallocateOffsetsNew(int groupCount) voidclear()Release the underlying DrillBuf and reset the ValueVector to empty.voidclose()Clears out all underlying child vectors.voidcollectLedgers(Set<AllocationManager.BufferLedger> ledgers) Add the ledgers underlying the buffers underlying the components of the vector to the set provided.voidcopyEntry(int toIndex, ValueVector from, int fromIndex) voidcopyFromSafe(int fromIndex, int thisIndex, AbstractRepeatedMapVector from) voidexchange(ValueVector other) Exchange state with another value vector of the same type.abstract AbstractRepeatedMapVector.AccessorReturns anaccessorthat is used to read from this vector instance.intReturns the total size of buffers allocated by this vector.DrillBuf[]getBuffers(boolean clear) Return the underlying buffers associated with this vector.intReturns the number of bytes that is used by this vector instance.intgetBufferSizeFor(int valueCount) Returns the number of bytes that is used by this vector if it holds the given number of values.Get the metadata for this field.intgetPayloadByteCount(int valueCount) Return the number of value bytes consumed by actual data.Returns a list of scalar child vectors recursing the entire vector hierarchy.getTransferPairToSingleMap(String reference, BufferAllocator allocator) intReturns the maximum number of values that can be stored in this vector instance.voidload(UserBitShared.SerializedField metadata, DrillBuf buffer) Load the data provided in the buffer.voidsetInitialCapacity(int numRecords) Set the initial record capacityvoidtoNullable(ValueVector nullableVector) Convert a non-nullable vector to nullable by shuffling the data from one to the other.Methods inherited from class org.apache.drill.exec.vector.complex.AbstractMapVector
addOrGet, getChild, getChildByOrdinal, getChildren, getChildVectorWithOrdinal, iterator, putChild, putVector, sizeMethods inherited from class org.apache.drill.exec.vector.complex.AbstractContainerVector
allocateNew, getAllocator, getChild, getChildFieldNames, getField, supportsDirectRead, typeifyMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.drill.exec.vector.complex.ContainerVectorLike
sizeMethods inherited from interface java.lang.Iterable
forEach, iterator, spliteratorMethods inherited from interface org.apache.drill.exec.vector.complex.RepeatedValueVector
getMutatorMethods inherited from interface org.apache.drill.exec.vector.ValueVector
allocateNew, getAllocator, getField, getReader, getTransferPair, getTransferPair, makeTransferPair
-
Field Details
-
offsets
-
emptyPopulator
-
-
Constructor Details
-
AbstractRepeatedMapVector
protected AbstractRepeatedMapVector(MaterializedField field, BufferAllocator allocator, CallBack callBack) -
AbstractRepeatedMapVector
protected AbstractRepeatedMapVector(MaterializedField field, UInt4Vector offsets, CallBack callBack)
-
-
Method Details
-
getOffsetVector
- Specified by:
getOffsetVectorin interfaceRepeatedValueVector- Returns:
- the underlying offset vector or null if none exists.
-
getDataVector
- Specified by:
getDataVectorin interfaceRepeatedValueVector- Returns:
- the underlying data vector or null if none exists.
-
addOrGetVector
Description copied from interface:ContainerVectorLikeCreates and adds a child vector if none with the same name exists, else returns the vector instance.- Specified by:
addOrGetVectorin interfaceContainerVectorLike- Parameters:
descriptor- vector descriptor- Returns:
- result of operation wrapping vector corresponding to the given descriptor and whether it's newly created
-
setInitialCapacity
public void setInitialCapacity(int numRecords) Description copied from interface:ValueVectorSet the initial record capacity- Specified by:
setInitialCapacityin interfaceValueVector- Parameters:
numRecords-
-
allocateNew
public void allocateNew(int groupCount, int innerValueCount) -
allocateOffsetsNew
public void allocateOffsetsNew(int groupCount) -
fieldNameIterator
-
getPrimitiveVectors
Description copied from class:AbstractMapVectorReturns a list of scalar child vectors recursing the entire vector hierarchy.- Overrides:
getPrimitiveVectorsin classAbstractMapVector
-
getBufferSize
public int getBufferSize()Description copied from interface:ValueVectorReturns the number of bytes that is used by this vector instance. This is a bit of a misnomer. Returns the number of bytes used by data in this instance.- Specified by:
getBufferSizein interfaceValueVector- Overrides:
getBufferSizein classAbstractMapVector
-
getAllocatedSize
public int getAllocatedSize()Description copied from interface:ValueVectorReturns the total size of buffers allocated by this vector. Has meaning only when vectors are directly allocated and each vector has its own buffer. Does not have meaning for vectors deserialized from the network or disk in which multiple vectors share the same vector.- Specified by:
getAllocatedSizein interfaceValueVector- Overrides:
getAllocatedSizein classAbstractMapVector- Returns:
- allocated buffer size, in bytes
-
getBufferSizeFor
public int getBufferSizeFor(int valueCount) Description copied from interface:ValueVectorReturns 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:
getBufferSizeForin interfaceValueVector- Parameters:
valueCount- the number of values to assume this vector contains- Returns:
- the buffer size if this vector is holding valueCount values
-
close
public void close()Description copied from class:AbstractContainerVectorClears out all underlying child vectors.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein interfaceValueVector- Overrides:
closein classAbstractMapVector
-
getTransferPairToSingleMap
-
allocateNewSafe
public boolean allocateNewSafe()Description copied from interface:ValueVectorAllocates new buffers. ValueVector implements logic to determine how much to allocate.- Specified by:
allocateNewSafein interfaceValueVector- Overrides:
allocateNewSafein classAbstractMapVector- Returns:
- Returns true if allocation was successful.
-
copyFromSafe
-
copyEntry
- Specified by:
copyEntryin interfaceValueVector
-
getValueCapacity
public int getValueCapacity()Description copied from interface:ValueVectorReturns the maximum number of values that can be stored in this vector instance.- Specified by:
getValueCapacityin interfaceValueVector
-
exchange
Description copied from interface:ValueVectorExchange state with another value vector of the same type. Used to implement look-ahead writers.- Specified by:
exchangein interfaceValueVector- Overrides:
exchangein classAbstractMapVector
-
getBuffers
Description copied from interface:ValueVectorReturn the underlying buffers associated with this vector. Note that this doesn't impact the reference counts for this buffer so it only should be used for in-context access. Also note that this buffer changes regularly thus external classes shouldn't hold a reference to it (unless they change it).- Specified by:
getBuffersin interfaceValueVector- Overrides:
getBuffersin classAbstractMapVector- Parameters:
clear- Whether to clear vector before returning; the buffers will still be refcounted; but the returned array will be the only reference to them- Returns:
- The underlying
buffersthat is used by this vector instance.
-
getMetadata
Description copied from interface:ValueVectorGet the metadata for this field. Used in serialization- Specified by:
getMetadatain interfaceValueVector- Returns:
- FieldMetadata for this field.
-
clear
public void clear()Description copied from interface:ValueVectorRelease the underlying DrillBuf and reset the ValueVector to empty.- Specified by:
clearin interfaceValueVector
-
collectLedgers
Description copied from interface:ValueVectorAdd the ledgers underlying the buffers underlying the components of the vector to the set provided. Used to determine actual memory allocation.- Specified by:
collectLedgersin interfaceValueVector- Overrides:
collectLedgersin classAbstractMapVector- Parameters:
ledgers- set of ledgers to which to add ledgers for this vector
-
toNullable
Description copied from interface:ValueVectorConvert a non-nullable vector to nullable by shuffling the data from one to the other. Avoids the need to generate copy code just to change mode. If this vector is non-nullable, accepts a nullable dual (same minor type, different mode.) If the vector is non-nullable, or non-scalar, then throws an exception.- Specified by:
toNullablein interfaceValueVector- Parameters:
nullableVector- nullable vector of the same minor type as this vector
-
getPayloadByteCount
public int getPayloadByteCount(int valueCount) Description copied from interface:ValueVectorReturn the number of value bytes consumed by actual data.- Specified by:
getPayloadByteCountin interfaceValueVector- Overrides:
getPayloadByteCountin classAbstractMapVector
-
getAccessor
Description copied from interface:ValueVectorReturns anaccessorthat is used to read from this vector instance.- Specified by:
getAccessorin interfaceRepeatedValueVector- Specified by:
getAccessorin interfaceValueVector
-