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);
308 std::shared_ptr<ValueVector> vectorToReference) {
310 std::move(vectorToReference));
316 for (
auto i = 0u; i < sel.
getSelSize(); i++) {
336 return keyVector->getData() + keyVector->getNumBytesPerValue() * listEntry.
offset;
341 return valueVector->getData() + valueVector->getNumBytesPerValue() * listEntry.
offset;
#define KUZU_API
Definition api.h:25
#define KU_ASSERT(condition)
Definition assert.h:19
Definition in_mem_overflow_buffer.h:33
Definition auxiliary_buffer.h:79
Definition value_vector.h:190
static void setDataVector(const ValueVector *vector, std::shared_ptr< ValueVector > dataVector)
Definition value_vector.h:201
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 void appendDataVector(ValueVector *dstVector, ValueVector *srcDataVector, uint64_t numValuesToAppend)
static void copyToRowData(const ValueVector *vector, uint32_t pos, uint8_t *rowData, InMemOverflowBuffer *rowOverflowBuffer)
static list_entry_t addList(ValueVector *vector, uint64_t listSize)
Definition value_vector.h:232
static const ListAuxiliaryBuffer & getAuxBuffer(const ValueVector &vector)
Definition value_vector.h:192
static void resizeDataVector(ValueVector *vector, uint64_t numValues)
Definition value_vector.h:236
static void copyListEntryAndBufferMetaData(ValueVector &vector, const SelectionVector &selVector, const ValueVector &other, const SelectionVector &otherSelVector)
static ListAuxiliaryBuffer & getAuxBufferUnsafe(const ValueVector &vector)
Definition value_vector.h:195
static uint8_t * getListValues(const ValueVector *vector, const list_entry_t &listEntry)
Definition value_vector.h:221
static void copyFromRowData(ValueVector *vector, uint32_t pos, const uint8_t *rowData)
static uint64_t getDataVectorSize(const ValueVector *vector)
Definition value_vector.h:217
static ValueVector * getDataVector(const ValueVector *vector)
Definition value_vector.h:209
static uint8_t * getListValuesWithOffset(const ValueVector *vector, const list_entry_t &listEntry, offset_t elementOffsetInList)
Definition value_vector.h:226
static std::shared_ptr< ValueVector > getSharedDataVector(const ValueVector *vector)
Definition value_vector.h:213
KUZU_API LogicalTypeID getLogicalTypeID() const
Definition types.h:279
KUZU_API PhysicalTypeID getPhysicalType() const
Definition types.h:283
Definition value_vector.h:322
static ValueVector * getValueVector(const ValueVector *vector)
Definition value_vector.h:329
static uint8_t * getMapKeys(const ValueVector *vector, const list_entry_t &listEntry)
Definition value_vector.h:334
static uint8_t * getMapValues(const ValueVector *vector, const list_entry_t &listEntry)
Definition value_vector.h:339
static ValueVector * getKeyVector(const ValueVector *vector)
Definition value_vector.h:324
Definition null_mask.h:72
Definition sel_vector.h:98
sel_t getSelSize() const
Definition sel_vector.h:68
Definition value_vector.h:155
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, const char *srcStr, uint64_t length)
static void addString(ValueVector *vector, uint32_t vectorPos, const std::string &srcStr)
static void addString(ValueVector *vector, uint32_t vectorPos, ku_string_t &srcStr)
static ku_string_t & reserveString(ValueVector *vector, uint32_t vectorPos, uint64_t length)
static InMemOverflowBuffer * getInMemOverflowBuffer(ValueVector *vector)
Definition value_vector.h:157
static void copyToRowData(const ValueVector *vector, uint32_t pos, uint8_t *rowData, InMemOverflowBuffer *rowOverflowBuffer)
static void addString(kuzu::common::ValueVector *vector, ku_string_t &dstStr, const std::string &srcStr)
Definition value_vector.h:262
static const std::vector< std::shared_ptr< ValueVector > > & getFieldVectors(const ValueVector *vector)
Definition value_vector.h:264
static void copyFromVectorData(ValueVector *dstVector, const uint8_t *dstData, const ValueVector *srcVector, const uint8_t *srcData)
static void copyFromRowData(ValueVector *vector, uint32_t pos, const uint8_t *rowData)
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 ValueVector * getFieldVectorRaw(const ValueVector &vector, const std::string &fieldName)
Definition value_vector.h:276
static std::shared_ptr< ValueVector > getFieldVector(const ValueVector *vector, struct_field_idx_t idx)
Definition value_vector.h:270
Definition value_vector.h:295
static void setTagField(ValueVector &vector, SelectionVector &sel, union_field_idx_t tag)
Definition value_vector.h:313
static void referenceVector(ValueVector *vector, union_field_idx_t fieldIdx, std::shared_ptr< ValueVector > vectorToReference)
Definition value_vector.h:307
static ValueVector * getValVector(const ValueVector *vector, union_field_idx_t fieldIdx)
Definition value_vector.h:302
static ValueVector * getTagVector(const ValueVector *vector)
Definition value_vector.h:297
Definition value_vector.h:21
friend class ArrowColumnVector
Definition value_vector.h:26
static bool discardNull(ValueVector &vector)
uint8_t * getData() const
Definition value_vector.h:119
ValueVector(LogicalType dataType, storage::MemoryManager *memoryManager=nullptr, std::shared_ptr< DataChunkState > dataChunkState=nullptr)
void copyFromRowData(uint32_t pos, const uint8_t *rowData)
void copyToRowData(uint32_t pos, uint8_t *rowData, InMemOverflowBuffer *rowOverflowBuffer) const
void resetAuxiliaryBuffer()
void forEachNonNull(Func &&func) const
Definition value_vector.h:59
void setState(const std::shared_ptr< DataChunkState > &state_)
void copyFromValue(uint64_t pos, const Value &value)
std::unique_ptr< Value > getAsValue(uint64_t pos) const
friend class StringVector
Definition value_vector.h:25
void setAllNonNull()
Definition value_vector.h:76
uint8_t isNull(uint32_t pos) const
Definition value_vector.h:84
void serialize(Serializer &ser) const
ValueVector(LogicalTypeID dataTypeID, storage::MemoryManager *memoryManager=nullptr)
Definition value_vector.h:31
const T & getValue(uint32_t pos) const
Definition value_vector.h:97
LogicalType dataType
Definition value_vector.h:145
friend class ListVector
Definition value_vector.h:22
static std::unique_ptr< ValueVector > deSerialize(Deserializer &deSer, storage::MemoryManager *mm, std::shared_ptr< DataChunkState > dataChunkState)
friend class ListAuxiliaryBuffer
Definition value_vector.h:23
void copyFromVectorData(uint64_t dstPos, const ValueVector *srcVector, uint64_t srcPos)
uint32_t countNonNull() const
DELETE_COPY_AND_MOVE(ValueVector)
const NullMask & getNullMask() const
Definition value_vector.h:82
friend class StructVector
Definition value_vector.h:24
bool hasNoNullsGuarantee() const
Definition value_vector.h:78
T & getValue(uint32_t pos)
Definition value_vector.h:101
void setAllNull()
Definition value_vector.h:75
uint32_t getNumBytesPerValue() const
Definition value_vector.h:93
void setAsSingleNullEntry()
Definition value_vector.h:85
void setValue(uint32_t pos, T val)
void copyFromVectorData(uint8_t *dstData, const ValueVector *srcVector, const uint8_t *srcVectorData)
offset_t readNodeOffset(uint32_t pos) const
Definition value_vector.h:121
bool setNullFromBits(const uint64_t *srcNullEntries, uint64_t srcOffset, uint64_t dstOffset, uint64_t numBitsToCopy, bool invert=false)
void setNullRange(uint32_t startPos, uint32_t len, bool value)
Definition value_vector.h:79
void setNull(uint32_t pos, bool isNull)
SelectionVector * getSelVectorPtr() const
Definition value_vector.h:136
std::shared_ptr< DataChunkState > state
Definition value_vector.h:146
std::optional< T > firstNonNull() const
Definition value_vector.h:40
Definition array_utils.h:7
@ LIST
Definition types.h:244
@ STRING
Definition types.h:243
@ ARRAY
Definition types.h:245
struct_field_idx_t union_field_idx_t
Definition types.h:50
uint64_t sel_t
Definition types.h:30
LogicalTypeID
Definition types.h:177
@ LIST
Definition types.h:211
@ INTERNAL_ID
Definition types.h:206
@ UNION
Definition types.h:215
uint64_t offset_t
Definition types.h:79
uint8_t struct_field_idx_t
Definition types.h:49
TO ku_dynamic_cast(FROM *old)
Definition cast.h:11
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 union_field_idx_t getInternalFieldIdx(union_field_idx_t idx)
static constexpr union_field_idx_t TAG_FIELD_IDX
Definition types.h:597
Definition ku_string.h:12
offset_t offset
Definition types.h:115