30 std::shared_ptr<DataChunkState> dataChunkState =
nullptr);
42 if (selectedSize == 0) {
48 for (
size_t i = 0; i < selectedSize; i++) {
49 auto pos =
state->getSelVector()[i];
61 state->getSelVector().forEach(func);
63 state->getSelVector().forEach([&](
auto i) {
73 void setState(
const std::shared_ptr<DataChunkState>& state_);
80 nullMask.setNullFromRange(startPos, len, value);
84 uint8_t
isNull(uint32_t pos)
const {
return nullMask.isNull(pos); }
86 state->getSelVectorUnsafe().setSelSize(1);
90 bool setNullFromBits(
const uint64_t* srcNullEntries, uint64_t srcOffset, uint64_t dstOffset,
91 uint64_t numBitsToCopy,
bool invert =
false);
98 return ((T*)valueBuffer.get())[pos];
102 return ((T*)valueBuffer.get())[pos];
113 const uint8_t* srcVectorData);
119 uint8_t*
getData()
const {
return valueBuffer.get(); }
133 static std::unique_ptr<ValueVector>
deSerialize(Deserializer& deSer, storage::MemoryManager* mm,
134 std::shared_ptr<DataChunkState> dataChunkState);
137 return state ? &
state->getSelVectorUnsafe() :
nullptr;
142 void initializeValueBuffer();
146 std::shared_ptr<DataChunkState>
state;
149 std::unique_ptr<uint8_t[]> valueBuffer;
151 uint32_t numBytesPerValue;
152 std::unique_ptr<AuxiliaryBuffer> auxiliaryBuffer;
160 ->getOverflowBuffer();
175 const std::string& srcStr);
204 listBuffer.setDataVector(std::move(dataVector));
224 return dataVector->getData() + dataVector->getNumBytesPerValue() * listEntry.
offset;
230 elementOffsetInList *
getDataVector(vector)->getNumBytesPerValue();
245 const ValueVector* srcVector,
const uint8_t* srcData);
247 uint64_t numValuesToAppend);
251 static bool validateType(
const ValueVector& vector) {
273 ->getFieldVectorShared(idx);
279 ->getFieldVectorPtr(idx);
283 std::shared_ptr<ValueVector> vectorToReference) {
285 ->referenceChildVector(idx, std::move(vectorToReference));
292 const ValueVector* srcVector,
const uint8_t* srcData);
314 std::shared_ptr<ValueVector> vectorToReference) {
316 std::move(vectorToReference));
322 for (
auto i = 0u; i < sel.
getSelSize(); i++) {
342 return keyVector->getData() + keyVector->getNumBytesPerValue() * listEntry.
offset;
347 return valueVector->getData() + valueVector->getNumBytesPerValue() * listEntry.
offset;
#define LBUG_API
Definition api.h:25
#define KU_ASSERT(condition)
Definition assert.h:24
Definition in_mem_overflow_buffer.h:33
Definition auxiliary_buffer.h:68
Definition value_vector.h:190
static std::shared_ptr< ValueVector > getSharedDataVector(const ValueVector *vector)
Definition value_vector.h:213
static uint64_t getDataVectorSize(const ValueVector *vector)
Definition value_vector.h:217
static void copyListEntryAndBufferMetaData(ValueVector &vector, const SelectionVector &selVector, const ValueVector &other, const SelectionVector &otherSelVector)
static void resizeDataVector(ValueVector *vector, uint64_t numValues)
Definition value_vector.h:236
static ListAuxiliaryBuffer & getAuxBufferUnsafe(const ValueVector &vector)
Definition value_vector.h:195
static const ListAuxiliaryBuffer & getAuxBuffer(const ValueVector &vector)
Definition value_vector.h:192
static void sliceDataVector(ValueVector *vectorToSlice, uint64_t offset, uint64_t numValues)
static void copyFromVectorData(ValueVector *dstVector, uint8_t *dstData, const ValueVector *srcVector, const uint8_t *srcData)
static ValueVector * getDataVector(const ValueVector *vector)
Definition value_vector.h:209
static list_entry_t addList(ValueVector *vector, uint64_t listSize)
Definition value_vector.h:232
static void copyToRowData(const ValueVector *vector, uint32_t pos, uint8_t *rowData, InMemOverflowBuffer *rowOverflowBuffer)
static uint8_t * getListValues(const ValueVector *vector, const list_entry_t &listEntry)
Definition value_vector.h:221
static void setDataVector(const ValueVector *vector, std::shared_ptr< ValueVector > dataVector)
Definition value_vector.h:201
static uint8_t * getListValuesWithOffset(const ValueVector *vector, const list_entry_t &listEntry, offset_t elementOffsetInList)
Definition value_vector.h:226
static void appendDataVector(ValueVector *dstVector, ValueVector *srcDataVector, uint64_t numValuesToAppend)
static void copyFromRowData(ValueVector *vector, uint32_t pos, const uint8_t *rowData)
PhysicalTypeID getPhysicalType() const
Definition types.h:292
LogicalTypeID getLogicalTypeID() const
Definition types.h:288
Definition value_vector.h:328
static ValueVector * getValueVector(const ValueVector *vector)
Definition value_vector.h:335
static uint8_t * getMapKeys(const ValueVector *vector, const list_entry_t &listEntry)
Definition value_vector.h:340
static ValueVector * getKeyVector(const ValueVector *vector)
Definition value_vector.h:330
static uint8_t * getMapValues(const ValueVector *vector, const list_entry_t &listEntry)
Definition value_vector.h:345
Definition null_mask.h:72
Definition sel_vector.h:96
sel_t getSelSize() const
Definition sel_vector.h:66
Definition value_vector.h:155
static void addString(ValueVector *vector, uint32_t vectorPos, const char *srcStr, uint64_t length)
static void addString(lbug::common::ValueVector *vector, ku_string_t &dstStr, const std::string &srcStr)
static void addString(ValueVector *vector, uint32_t vectorPos, std::string_view srcStr)
static ku_string_t & reserveString(ValueVector *vector, uint32_t vectorPos, uint64_t length)
static void reserveString(ValueVector *vector, ku_string_t &dstStr, uint64_t length)
static void addString(ValueVector *vector, ku_string_t &dstStr, const char *srcStr, uint64_t length)
static void addString(ValueVector *vector, ku_string_t &dstStr, ku_string_t &srcStr)
static void addString(ValueVector *vector, uint32_t vectorPos, ku_string_t &srcStr)
static void copyToRowData(const ValueVector *vector, uint32_t pos, uint8_t *rowData, InMemOverflowBuffer *rowOverflowBuffer)
static InMemOverflowBuffer * getInMemOverflowBuffer(ValueVector *vector)
Definition value_vector.h:157
Definition value_vector.h:262
static void copyFromVectorData(ValueVector *dstVector, const uint8_t *dstData, const ValueVector *srcVector, const uint8_t *srcData)
static void referenceVector(ValueVector *vector, struct_field_idx_t idx, std::shared_ptr< ValueVector > vectorToReference)
Definition value_vector.h:282
static void copyToRowData(const ValueVector *vector, uint32_t pos, uint8_t *rowData, InMemOverflowBuffer *rowOverflowBuffer)
static std::shared_ptr< ValueVector > getFieldVector(const ValueVector *vector, struct_field_idx_t idx)
Definition value_vector.h:270
static ValueVector * getFieldVectorRaw(const ValueVector &vector, const std::string &fieldName)
Definition value_vector.h:276
static void copyFromRowData(ValueVector *vector, uint32_t pos, const uint8_t *rowData)
static const std::vector< std::shared_ptr< ValueVector > > & getFieldVectors(const ValueVector *vector)
Definition value_vector.h:264
Definition value_vector.h:295
static void setTagField(ValueVector &vector, SelectionVector &sel, union_field_idx_t tag)
Definition value_vector.h:319
static ValueVector * getTagVector(const ValueVector *vector)
Definition value_vector.h:297
static std::shared_ptr< ValueVector > getSharedValVector(const ValueVector *vector, union_field_idx_t fieldIdx)
Definition value_vector.h:307
static void referenceVector(ValueVector *vector, union_field_idx_t fieldIdx, std::shared_ptr< ValueVector > vectorToReference)
Definition value_vector.h:313
static ValueVector * getValVector(const ValueVector *vector, union_field_idx_t fieldIdx)
Definition value_vector.h:302
Definition value_vector.h:21
void setNullRange(uint32_t startPos, uint32_t len, bool value)
Definition value_vector.h:79
void serialize(Serializer &ser) const
friend class ArrowColumnVector
Definition value_vector.h:26
std::shared_ptr< DataChunkState > state
Definition value_vector.h:146
void resetAuxiliaryBuffer()
void setAllNull()
Definition value_vector.h:75
SelectionVector * getSelVectorPtr() const
Definition value_vector.h:136
static bool discardNull(ValueVector &vector)
void setNull(uint32_t pos, bool isNull)
const NullMask & getNullMask() const
Definition value_vector.h:82
void setAsSingleNullEntry()
Definition value_vector.h:85
void setValue(uint32_t pos, T val)
std::unique_ptr< Value > getAsValue(uint64_t pos) const
uint8_t isNull(uint32_t pos) const
Definition value_vector.h:84
ValueVector(LogicalTypeID dataTypeID, storage::MemoryManager *memoryManager=nullptr)
Definition value_vector.h:31
T & getValue(uint32_t pos)
Definition value_vector.h:101
bool setNullFromBits(const uint64_t *srcNullEntries, uint64_t srcOffset, uint64_t dstOffset, uint64_t numBitsToCopy, bool invert=false)
friend class StringVector
Definition value_vector.h:25
uint8_t * getData() const
Definition value_vector.h:119
void copyToRowData(uint32_t pos, uint8_t *rowData, InMemOverflowBuffer *rowOverflowBuffer) const
bool hasNoNullsGuarantee() const
Definition value_vector.h:78
friend class ListVector
Definition value_vector.h:22
uint32_t getNumBytesPerValue() const
Definition value_vector.h:93
friend class ListAuxiliaryBuffer
Definition value_vector.h:23
std::optional< T > firstNonNull() const
Definition value_vector.h:40
void forEachNonNull(Func &&func) const
Definition value_vector.h:59
void copyFromVectorData(uint8_t *dstData, const ValueVector *srcVector, const uint8_t *srcVectorData)
friend class StructVector
Definition value_vector.h:24
void copyFromRowData(uint32_t pos, const uint8_t *rowData)
void setAllNonNull()
Definition value_vector.h:76
void copyFromValue(uint64_t pos, const Value &value)
static std::unique_ptr< ValueVector > deSerialize(Deserializer &deSer, storage::MemoryManager *mm, std::shared_ptr< DataChunkState > dataChunkState)
uint32_t countNonNull() const
DELETE_COPY_AND_MOVE(ValueVector)
LogicalType dataType
Definition value_vector.h:145
void setState(const std::shared_ptr< DataChunkState > &state_)
offset_t readNodeOffset(uint32_t pos) const
Definition value_vector.h:121
void copyFromVectorData(uint64_t dstPos, const ValueVector *srcVector, uint64_t srcPos)
ValueVector(LogicalType dataType, storage::MemoryManager *memoryManager=nullptr, std::shared_ptr< DataChunkState > dataChunkState=nullptr)
const T & getValue(uint32_t pos) const
Definition value_vector.h:97
Definition array_utils.h:7
TO ku_dynamic_cast(FROM *old)
Definition cast.h:11
uint64_t sel_t
Definition types.h:30
struct_field_idx_t union_field_idx_t
Definition types.h:50
uint16_t struct_field_idx_t
Definition types.h:49
@ LIST
Definition types.h:253
@ STRING
Definition types.h:252
@ ARRAY
Definition types.h:254
LogicalTypeID
Definition types.h:184
@ LIST
Definition types.h:219
@ INTERNAL_ID
Definition types.h:213
@ UNION
Definition types.h:223
uint64_t offset_t
Definition types.h:79
Definition array_utils.h:7
Definition value_vector.h:180
static void addBlob(ValueVector *vector, uint32_t pos, const uint8_t *data, uint64_t length)
Definition value_vector.h:184
static void addBlob(ValueVector *vector, uint32_t pos, const char *data, uint32_t length)
Definition value_vector.h:181
static struct_field_idx_t getFieldIdx(const LogicalType &type, const std::string &key)
static constexpr union_field_idx_t TAG_FIELD_IDX
Definition types.h:605
static union_field_idx_t getInternalFieldIdx(union_field_idx_t idx)
Definition ku_string.h:12
offset_t offset
Definition types.h:115