public class VectorAccessors extends Object
For a required vector:
reader index --> hyper vector --> required vector
For a nullable vector:
reader index --> hyper vector --> nullable vector
nullable vector --> bits vector
--> values vector
For a repeated vector:
reader index --> hyper vector --> repeated vector
repeated vector --> offset vector
--> values vector
And so on. In each case, we must start with a top-level vector as indicated the row index, indirected through the SV4. That is done by the reader index. That points to a top-level vector in the hyper-vector.
Most of the vectors needed are nested. These inner vectors are not part of a hyper-vector list. Instead, we must get the top-level vector, then navigate down from that vector to the desired vector.
Sometimes the navigation is static (the "bits" vector for a nullable vector.) Other times, it is a bit more dynamic: a member of a map (given by index) or the member of a union (given by type.)
These accessors can be chained to handle deeply-nested structures such as an array of maps that contains a list of unions.
Because the navigation is required on every access, the use of hyper vectors is slow. Since hyper-vectors are seldom used, we optimize for the single-batch case by caching vectors at each stage. Thus, for the single-batch case, we use different accessor implementations. To keep the rest of the code simple, both the hyper and single batch cases use the same API, but they use entirely different implementations. The methods here choose the correct implementation for the single and hyper cases.
Modifier and Type | Class and Description |
---|---|
static class |
VectorAccessors.ArrayDataHyperVectorAccessor
Vector accessor for RepeatedVector → data vector
|
static class |
VectorAccessors.ArrayOffsetHyperVectorAccessor
Vector accessor for RepeatedVector → offsets vector
|
static class |
VectorAccessors.BaseHyperVectorAccessor
Vector accessor used by the column accessors to obtain the vector for
each column value.
|
static class |
VectorAccessors.ListBitsHyperVectorStateReader
Vector accessor for ListVector → bits vector
|
static class |
VectorAccessors.ListMemberHyperVectorAccessor |
static class |
VectorAccessors.MapMemberHyperVectorAccessor
Vector accessor for AbstractMapVector → member vector
|
static class |
VectorAccessors.NullableBitsHyperVectorStateReader
Vector accessor for NullableVector → bits vector
|
static class |
VectorAccessors.NullableValuesHyperVectorAccessor
Vector accessor for NullableVector → values vector
|
static class |
VectorAccessors.NullVectorAccesor |
static class |
VectorAccessors.SingleVectorAccessor |
static class |
VectorAccessors.UnionMemberHyperVectorAccessor
Vector accessor for UnionVector → data vector
|
static class |
VectorAccessors.UnionTypeHyperVectorAccessor
Vector accessor for UnionVector → type vector
|
static class |
VectorAccessors.VarWidthOffsetHyperVectorAccessor
Vector accessor for VariableWidthVector → offsets vector
|
Constructor and Description |
---|
VectorAccessors() |
Modifier and Type | Method and Description |
---|---|
static VectorAccessor |
arrayDataAccessor(VectorAccessor repeatedAccessor) |
static VectorAccessor |
arrayOffsetVectorAccessor(VectorAccessor repeatedAccessor) |
static VectorAccessor |
listBitsAccessor(VectorAccessor nullableAccessor) |
static VectorAccessor |
nullableBitsAccessor(VectorAccessor nullableAccessor) |
static VectorAccessor |
nullableValuesAccessor(VectorAccessor nullableAccessor) |
static VectorAccessor |
varWidthOffsetVectorAccessor(VectorAccessor varWidthAccessor) |
public static VectorAccessor arrayOffsetVectorAccessor(VectorAccessor repeatedAccessor)
public static VectorAccessor arrayDataAccessor(VectorAccessor repeatedAccessor)
public static VectorAccessor varWidthOffsetVectorAccessor(VectorAccessor varWidthAccessor)
public static VectorAccessor nullableValuesAccessor(VectorAccessor nullableAccessor)
public static VectorAccessor nullableBitsAccessor(VectorAccessor nullableAccessor)
public static VectorAccessor listBitsAccessor(VectorAccessor nullableAccessor)
Copyright © 1970 The Apache Software Foundation. All rights reserved.