From 06a35df3777978d2b71cb18ff77c4d4b13666cc2 Mon Sep 17 00:00:00 2001 From: xiyang Date: Sat, 17 Jun 2023 16:12:51 -0400 Subject: [PATCH] remove ValueVectorUtils --- src/common/vector/CMakeLists.txt | 1 - src/common/vector/value_vector.cpp | 70 +++++++++++++++++++ src/common/vector/value_vector_utils.cpp | 70 ------------------- src/expression_evaluator/case_evaluator.cpp | 2 - .../literal_evaluator.cpp | 2 - src/function/vector_cast_operations.cpp | 1 - src/function/vector_list_operation.cpp | 1 - src/include/common/vector/value_vector.h | 6 ++ .../common/vector/value_vector_utils.h | 15 ---- src/include/function/aggregate/collect.h | 4 +- .../operations/list_any_value_operation.h | 2 +- .../list/operations/list_distinct_operation.h | 2 +- .../list/operations/list_extract_operation.h | 2 +- .../list/operations/list_unique_operation.h | 2 +- .../operations/base_map_extract_operation.h | 1 - .../map/operations/map_creation_operation.h | 1 - .../map/operations/map_extract_operation.h | 1 - .../map/operations/map_values_operation.h | 1 - .../function/map/vector_map_operations.h | 2 +- .../operations/regexp_extract_all_operation.h | 2 +- .../struct/vector_struct_operations.h | 2 +- .../function/union/vector_union_operations.h | 1 - src/include/processor/operator/unwind.h | 1 - src/processor/mapper/map_expressions_scan.cpp | 1 - .../aggregate/aggregate_hash_table.cpp | 9 ++- src/processor/result/factorized_table.cpp | 43 +++++------- 26 files changed, 106 insertions(+), 139 deletions(-) delete mode 100644 src/common/vector/value_vector_utils.cpp diff --git a/src/common/vector/CMakeLists.txt b/src/common/vector/CMakeLists.txt index 94a1055ba39..f301adf4c53 100644 --- a/src/common/vector/CMakeLists.txt +++ b/src/common/vector/CMakeLists.txt @@ -1,7 +1,6 @@ add_library(kuzu_common_vector OBJECT value_vector.cpp - value_vector_utils.cpp auxiliary_buffer.cpp) set(ALL_OBJECT_FILES diff --git a/src/common/vector/value_vector.cpp b/src/common/vector/value_vector.cpp index 0a4d48632bd..fd261d6c2bb 100644 --- a/src/common/vector/value_vector.cpp +++ b/src/common/vector/value_vector.cpp @@ -70,6 +70,33 @@ void ValueVector::copyFromRowData(uint32_t pos, const uint8_t* rowData) { } } +void ValueVector::copyToRowData( + uint32_t pos, uint8_t* rowData, InMemOverflowBuffer* rowOverflowBuffer) const { + switch (dataType.getPhysicalType()) { + case PhysicalTypeID::STRUCT: { + StructVector::copyToRowData(this, pos, rowData, rowOverflowBuffer); + } break; + case PhysicalTypeID::VAR_LIST: { + ListVector::copyToRowData(this, pos, rowData, rowOverflowBuffer); + } break; + case PhysicalTypeID::STRING: { + auto& srcStr = getValue(pos); + auto& dstStr = *(ku_string_t*)rowData; + if (ku_string_t::isShortString(srcStr.len)) { + dstStr.setShortString(srcStr); + } else { + dstStr.overflowPtr = + reinterpret_cast(rowOverflowBuffer->allocateSpace(srcStr.len)); + dstStr.setLongString(srcStr); + } + } break; + default: { + auto dataTypeSize = LogicalTypeUtils::getRowLayoutSize(dataType); + memcpy(rowData, getData() + pos * dataTypeSize, dataTypeSize); + } + } +} + void ValueVector::copyFromVectorData( uint8_t* dstData, const ValueVector* srcVector, const uint8_t* srcVectorData) { assert(srcVector->dataType.getPhysicalType() == dataType.getPhysicalType()); @@ -238,6 +265,30 @@ void ListVector::copyFromRowData(ValueVector* vector, uint32_t pos, const uint8_ } } +void ListVector::copyToRowData(const ValueVector* vector, uint32_t pos, uint8_t* rowData, + InMemOverflowBuffer* rowOverflowBuffer) { + auto& srcListEntry = vector->getValue(pos); + auto srcListDataVector = common::ListVector::getDataVector(vector); + auto& dstListEntry = *(ku_list_t*)rowData; + dstListEntry.size = srcListEntry.size; + auto nullBytesSize = NullBuffer::getNumBytesForNullValues(dstListEntry.size); + auto dataRowLayoutSize = LogicalTypeUtils::getRowLayoutSize(srcListDataVector->dataType); + auto dstListOverflowSize = dataRowLayoutSize * dstListEntry.size + nullBytesSize; + auto dstListOverflow = rowOverflowBuffer->allocateSpace(dstListOverflowSize); + dstListEntry.overflowPtr = reinterpret_cast(dstListOverflow); + NullBuffer::initNullBytes(dstListOverflow, dstListEntry.size); + auto dstListValues = dstListOverflow + nullBytesSize; + for (auto i = 0u; i < srcListEntry.size; i++) { + if (srcListDataVector->isNull(srcListEntry.offset + i)) { + NullBuffer::setNull(dstListOverflow, i); + } else { + srcListDataVector->copyToRowData( + srcListEntry.offset + i, dstListValues, rowOverflowBuffer); + } + dstListValues += dataRowLayoutSize; + } +} + void ListVector::copyFromVectorData(ValueVector* dstVector, uint8_t* dstData, const ValueVector* srcVector, const uint8_t* srcData) { auto& srcListEntry = *(common::list_entry_t*)(srcData); @@ -275,6 +326,25 @@ void StructVector::copyFromRowData(ValueVector* vector, uint32_t pos, const uint } } +void StructVector::copyToRowData(const ValueVector* vector, uint32_t pos, uint8_t* rowData, + InMemOverflowBuffer* rowOverflowBuffer) { + // The storage structure of STRUCT type in factorizedTable is: + // [NULLBYTES, FIELD1, FIELD2, ...] + auto& structFields = StructVector::getFieldVectors(vector); + NullBuffer::initNullBytes(rowData, structFields.size()); + auto structNullBytes = rowData; + auto structValues = structNullBytes + NullBuffer::getNumBytesForNullValues(structFields.size()); + for (auto i = 0u; i < structFields.size(); i++) { + auto structField = structFields[i]; + if (structField->isNull(pos)) { + NullBuffer::setNull(structNullBytes, i); + } else { + structField->copyToRowData(pos, structValues, rowOverflowBuffer); + } + structValues += LogicalTypeUtils::getRowLayoutSize(structField->dataType); + } +} + void StructVector::copyFromVectorData(ValueVector* dstVector, const uint8_t* dstData, const ValueVector* srcVector, const uint8_t* srcData) { auto& srcPos = *(int64_t*)srcData; diff --git a/src/common/vector/value_vector_utils.cpp b/src/common/vector/value_vector_utils.cpp deleted file mode 100644 index d7ed01624d5..00000000000 --- a/src/common/vector/value_vector_utils.cpp +++ /dev/null @@ -1,70 +0,0 @@ -#include "common/vector/value_vector_utils.h" - -#include "common/null_buffer.h" - -using namespace kuzu; -using namespace common; - -void ValueVectorUtils::copyNonNullDataWithSameTypeOutFromPos(const ValueVector& srcVector, - uint64_t pos, uint8_t* dstData, InMemOverflowBuffer& dstOverflowBuffer) { - switch (srcVector.dataType.getPhysicalType()) { - case PhysicalTypeID::STRUCT: { - // The storage structure of STRUCT type in factorizedTable is: - // [NULLBYTES, FIELD1, FIELD2, ...] - auto structFields = StructVector::getFieldVectors(&srcVector); - NullBuffer::initNullBytes(dstData, structFields.size()); - auto structNullBytes = dstData; - auto structValues = - structNullBytes + NullBuffer::getNumBytesForNullValues(structFields.size()); - for (auto i = 0u; i < structFields.size(); i++) { - auto structField = structFields[i]; - if (structField->isNull(pos)) { - NullBuffer::setNull(structNullBytes, i); - } else { - copyNonNullDataWithSameTypeOutFromPos( - *structField, pos, structValues, dstOverflowBuffer); - } - structValues += LogicalTypeUtils::getRowLayoutSize(structField->dataType); - } - } break; - case PhysicalTypeID::VAR_LIST: { - auto srcListEntry = srcVector.getValue(pos); - auto srcListDataVector = common::ListVector::getDataVector(&srcVector); - ku_list_t dstList; - dstList.size = srcListEntry.size; - auto dstListOverflowSize = - LogicalTypeUtils::getRowLayoutSize(srcListDataVector->dataType) * dstList.size + - NullBuffer::getNumBytesForNullValues(dstList.size); - dstList.overflowPtr = - reinterpret_cast(dstOverflowBuffer.allocateSpace(dstListOverflowSize)); - auto dstListNullBytes = reinterpret_cast(dstList.overflowPtr); - NullBuffer::initNullBytes(dstListNullBytes, dstList.size); - auto dstListValues = dstListNullBytes + NullBuffer::getNumBytesForNullValues(dstList.size); - for (auto i = 0u; i < srcListEntry.size; i++) { - if (srcListDataVector->isNull(srcListEntry.offset + i)) { - NullBuffer::setNull(dstListNullBytes, i); - } else { - copyNonNullDataWithSameTypeOutFromPos( - *srcListDataVector, srcListEntry.offset + i, dstListValues, dstOverflowBuffer); - } - dstListValues += LogicalTypeUtils::getRowLayoutSize(srcListDataVector->dataType); - } - memcpy(dstData, &dstList, sizeof(dstList)); - } break; - case PhysicalTypeID::STRING: { - auto& srcStr = srcVector.getValue(pos); - auto& dstStr = *(ku_string_t*)dstData; - if (ku_string_t::isShortString(srcStr.len)) { - dstStr.setShortString(srcStr); - } else { - dstStr.overflowPtr = - reinterpret_cast(dstOverflowBuffer.allocateSpace(srcStr.len)); - dstStr.setLongString(srcStr); - } - } break; - default: { - auto dataTypeSize = LogicalTypeUtils::getRowLayoutSize(srcVector.dataType); - memcpy(dstData, srcVector.getData() + pos * dataTypeSize, dataTypeSize); - } - } -} diff --git a/src/expression_evaluator/case_evaluator.cpp b/src/expression_evaluator/case_evaluator.cpp index ab2c8af69bb..43102a2cf14 100644 --- a/src/expression_evaluator/case_evaluator.cpp +++ b/src/expression_evaluator/case_evaluator.cpp @@ -1,7 +1,5 @@ #include "expression_evaluator/case_evaluator.h" -#include "common/vector/value_vector_utils.h" - using namespace kuzu::common; using namespace kuzu::processor; using namespace kuzu::storage; diff --git a/src/expression_evaluator/literal_evaluator.cpp b/src/expression_evaluator/literal_evaluator.cpp index 0781063261f..94463276dc5 100644 --- a/src/expression_evaluator/literal_evaluator.cpp +++ b/src/expression_evaluator/literal_evaluator.cpp @@ -1,7 +1,5 @@ #include "expression_evaluator/literal_evaluator.h" -#include "common/vector/value_vector_utils.h" - using namespace kuzu::common; using namespace kuzu::storage; diff --git a/src/function/vector_cast_operations.cpp b/src/function/vector_cast_operations.cpp index 4298831c808..7c73358c8ae 100644 --- a/src/function/vector_cast_operations.cpp +++ b/src/function/vector_cast_operations.cpp @@ -1,6 +1,5 @@ #include "function/cast/vector_cast_operations.h" -#include "common/vector/value_vector_utils.h" #include "function/cast/cast_operations.h" using namespace kuzu::common; diff --git a/src/function/vector_list_operation.cpp b/src/function/vector_list_operation.cpp index 22fe5423c4a..45e25e08832 100644 --- a/src/function/vector_list_operation.cpp +++ b/src/function/vector_list_operation.cpp @@ -1,6 +1,5 @@ #include "binder/expression_binder.h" #include "common/types/ku_list.h" -#include "common/vector/value_vector_utils.h" #include "function/list/operations/list_any_value_operation.h" #include "function/list/operations/list_append_operation.h" #include "function/list/operations/list_concat_operation.h" diff --git a/src/include/common/vector/value_vector.h b/src/include/common/vector/value_vector.h index 1f165f1c39f..b933eb09bb7 100644 --- a/src/include/common/vector/value_vector.h +++ b/src/include/common/vector/value_vector.h @@ -56,6 +56,8 @@ class ValueVector { void setValue(uint32_t pos, T val); // This function assumes rowData is non-NULL. void copyFromRowData(uint32_t pos, const uint8_t* rowData); + void copyToRowData( + uint32_t pos, uint8_t* rowData, InMemOverflowBuffer* rowOverflowBuffer) const; void copyFromVectorData( uint8_t* dstData, const ValueVector* srcVector, const uint8_t* srcVectorData); @@ -128,6 +130,8 @@ class ListVector { } static void copyFromRowData(ValueVector* vector, uint32_t pos, const uint8_t* rowData); + static void copyToRowData(const ValueVector* vector, uint32_t pos, uint8_t* rowData, + InMemOverflowBuffer* rowOverflowBuffer); static void copyFromVectorData(ValueVector* dstVector, uint8_t* dstData, const ValueVector* srcVector, const uint8_t* srcData); }; @@ -160,6 +164,8 @@ class StructVector { } static void copyFromRowData(ValueVector* vector, uint32_t pos, const uint8_t* rowData); + static void copyToRowData(const ValueVector* vector, uint32_t pos, uint8_t* rowData, + InMemOverflowBuffer* rowOverflowBuffer); static void copyFromVectorData(ValueVector* dstVector, const uint8_t* dstData, const ValueVector* srcVector, const uint8_t* srcData); }; diff --git a/src/include/common/vector/value_vector_utils.h b/src/include/common/vector/value_vector_utils.h index f7e429200af..e69de29bb2d 100644 --- a/src/include/common/vector/value_vector_utils.h +++ b/src/include/common/vector/value_vector_utils.h @@ -1,15 +0,0 @@ -#pragma once - -#include "common/vector/value_vector.h" - -namespace kuzu { -namespace common { - -class ValueVectorUtils { -public: - static void copyNonNullDataWithSameTypeOutFromPos(const ValueVector& srcVector, uint64_t pos, - uint8_t* dstData, InMemOverflowBuffer& dstOverflowBuffer); -}; - -} // namespace common -} // namespace kuzu diff --git a/src/include/function/aggregate/collect.h b/src/include/function/aggregate/collect.h index 170003c218f..1d188194db4 100644 --- a/src/include/function/aggregate/collect.h +++ b/src/include/function/aggregate/collect.h @@ -1,6 +1,5 @@ #pragma once -#include "common/vector/value_vector_utils.h" #include "processor/result/factorized_table.h" namespace kuzu { @@ -74,8 +73,7 @@ struct CollectFunction { for (auto i = 0u; i < multiplicity; ++i) { auto tuple = state->factorizedTable->appendEmptyTuple(); state->isNull = false; - common::ValueVectorUtils::copyNonNullDataWithSameTypeOutFromPos( - *input, pos, tuple, *state->factorizedTable->getInMemOverflowBuffer()); + input->copyToRowData(pos, tuple, state->factorizedTable->getInMemOverflowBuffer()); } } diff --git a/src/include/function/list/operations/list_any_value_operation.h b/src/include/function/list/operations/list_any_value_operation.h index 95604ffe0e9..63110fdf2fd 100644 --- a/src/include/function/list/operations/list_any_value_operation.h +++ b/src/include/function/list/operations/list_any_value_operation.h @@ -1,6 +1,6 @@ #pragma once -#include "common/vector/value_vector_utils.h" +#include "common/vector/value_vector.h" namespace kuzu { namespace function { diff --git a/src/include/function/list/operations/list_distinct_operation.h b/src/include/function/list/operations/list_distinct_operation.h index d57f97f8cc5..327d9caf35f 100644 --- a/src/include/function/list/operations/list_distinct_operation.h +++ b/src/include/function/list/operations/list_distinct_operation.h @@ -2,7 +2,7 @@ #include -#include "common/vector/value_vector_utils.h" +#include "common/vector/value_vector.h" namespace kuzu { namespace function { diff --git a/src/include/function/list/operations/list_extract_operation.h b/src/include/function/list/operations/list_extract_operation.h index 97c8ecb0b7d..6efe00beab4 100644 --- a/src/include/function/list/operations/list_extract_operation.h +++ b/src/include/function/list/operations/list_extract_operation.h @@ -4,7 +4,7 @@ #include #include "common/types/ku_string.h" -#include "common/vector/value_vector_utils.h" +#include "common/vector/value_vector.h" #include "function/string/operations/array_extract_operation.h" namespace kuzu { diff --git a/src/include/function/list/operations/list_unique_operation.h b/src/include/function/list/operations/list_unique_operation.h index 3cd7d02886d..14a7dd3f447 100644 --- a/src/include/function/list/operations/list_unique_operation.h +++ b/src/include/function/list/operations/list_unique_operation.h @@ -2,7 +2,7 @@ #include -#include "common/vector/value_vector_utils.h" +#include "common/vector/value_vector.h" namespace kuzu { namespace function { diff --git a/src/include/function/map/operations/base_map_extract_operation.h b/src/include/function/map/operations/base_map_extract_operation.h index 5ace4ef15fe..ae27c0ca3c4 100644 --- a/src/include/function/map/operations/base_map_extract_operation.h +++ b/src/include/function/map/operations/base_map_extract_operation.h @@ -1,7 +1,6 @@ #pragma once #include "common/vector/value_vector.h" -#include "common/vector/value_vector_utils.h" namespace kuzu { namespace function { diff --git a/src/include/function/map/operations/map_creation_operation.h b/src/include/function/map/operations/map_creation_operation.h index 49d19bf86eb..045f98ccdd4 100644 --- a/src/include/function/map/operations/map_creation_operation.h +++ b/src/include/function/map/operations/map_creation_operation.h @@ -1,7 +1,6 @@ #pragma once #include "common/vector/value_vector.h" -#include "common/vector/value_vector_utils.h" namespace kuzu { namespace function { diff --git a/src/include/function/map/operations/map_extract_operation.h b/src/include/function/map/operations/map_extract_operation.h index 973888918d1..65bd48e4317 100644 --- a/src/include/function/map/operations/map_extract_operation.h +++ b/src/include/function/map/operations/map_extract_operation.h @@ -1,7 +1,6 @@ #pragma once #include "common/vector/value_vector.h" -#include "common/vector/value_vector_utils.h" namespace kuzu { namespace function { diff --git a/src/include/function/map/operations/map_values_operation.h b/src/include/function/map/operations/map_values_operation.h index 0d25fcc57b4..ffa28d579af 100644 --- a/src/include/function/map/operations/map_values_operation.h +++ b/src/include/function/map/operations/map_values_operation.h @@ -1,7 +1,6 @@ #pragma once #include "common/vector/value_vector.h" -#include "common/vector/value_vector_utils.h" namespace kuzu { namespace function { diff --git a/src/include/function/map/vector_map_operations.h b/src/include/function/map/vector_map_operations.h index 1fee44b740b..1b53c5ded1d 100644 --- a/src/include/function/map/vector_map_operations.h +++ b/src/include/function/map/vector_map_operations.h @@ -1,6 +1,6 @@ #pragma once -#include "common/vector/value_vector_utils.h" +#include "common/vector/value_vector.h" #include "function/vector_operations.h" namespace kuzu { diff --git a/src/include/function/string/operations/regexp_extract_all_operation.h b/src/include/function/string/operations/regexp_extract_all_operation.h index 2becb5a49a3..fca09d2a4d3 100644 --- a/src/include/function/string/operations/regexp_extract_all_operation.h +++ b/src/include/function/string/operations/regexp_extract_all_operation.h @@ -1,7 +1,7 @@ #pragma once #include "base_regexp_operation.h" -#include "common/vector/value_vector_utils.h" +#include "common/vector/value_vector.h" #include "re2.h" namespace kuzu { diff --git a/src/include/function/struct/vector_struct_operations.h b/src/include/function/struct/vector_struct_operations.h index 0a2cb48b80a..bf8ae43dcc4 100644 --- a/src/include/function/struct/vector_struct_operations.h +++ b/src/include/function/struct/vector_struct_operations.h @@ -1,6 +1,6 @@ #pragma once -#include "common/vector/value_vector_utils.h" +#include "common/vector/value_vector.h" #include "function/vector_operations.h" namespace kuzu { diff --git a/src/include/function/union/vector_union_operations.h b/src/include/function/union/vector_union_operations.h index 5357417d2cf..f9e7126d986 100644 --- a/src/include/function/union/vector_union_operations.h +++ b/src/include/function/union/vector_union_operations.h @@ -1,6 +1,5 @@ #pragma once -#include "common/vector/value_vector_utils.h" #include "function/vector_operations.h" namespace kuzu { diff --git a/src/include/processor/operator/unwind.h b/src/include/processor/operator/unwind.h index abd49a33073..fd46559fd88 100644 --- a/src/include/processor/operator/unwind.h +++ b/src/include/processor/operator/unwind.h @@ -1,7 +1,6 @@ #pragma once #include "binder/expression/expression.h" -#include "common/vector/value_vector_utils.h" #include "expression_evaluator/base_evaluator.h" #include "processor/operator/physical_operator.h" #include "processor/result/result_set.h" diff --git a/src/processor/mapper/map_expressions_scan.cpp b/src/processor/mapper/map_expressions_scan.cpp index a729bdce3ae..2b6caf988d0 100644 --- a/src/processor/mapper/map_expressions_scan.cpp +++ b/src/processor/mapper/map_expressions_scan.cpp @@ -1,4 +1,3 @@ -#include "common/vector/value_vector_utils.h" #include "planner/logical_plan/logical_operator/logical_expressions_scan.h" #include "processor/mapper/plan_mapper.h" #include "processor/operator/table_scan/factorized_table_scan.h" diff --git a/src/processor/operator/aggregate/aggregate_hash_table.cpp b/src/processor/operator/aggregate/aggregate_hash_table.cpp index 990a0f53164..b00f107d8af 100644 --- a/src/processor/operator/aggregate/aggregate_hash_table.cpp +++ b/src/processor/operator/aggregate/aggregate_hash_table.cpp @@ -1,7 +1,6 @@ #include "processor/operator/aggregate/aggregate_hash_table.h" #include "common/utils.h" -#include "common/vector/value_vector_utils.h" #include "function/aggregate/base_count.h" #include "function/hash/vector_hash_operations.h" @@ -249,9 +248,9 @@ void AggregateHashTable::initializeFTEntryWithFlatVec( for (auto i = 0u; i < numEntriesToInitialize; i++) { auto idx = entryIdxesToInitialize[i]; auto entry = hashSlotsToUpdateAggState[idx]->entry; - ValueVectorUtils::copyNonNullDataWithSameTypeOutFromPos(*groupByFlatVector, + groupByFlatVector->copyToRowData( groupByFlatVector->state->selVector->selectedPositions[0], entry + colOffset, - *factorizedTable->getInMemOverflowBuffer()); + factorizedTable->getInMemOverflowBuffer()); } } } @@ -263,9 +262,9 @@ void AggregateHashTable::initializeFTEntryWithUnflatVec( if (groupByUnflatVector->hasNoNullsGuarantee()) { for (auto i = 0u; i < numEntriesToInitialize; i++) { auto entryIdx = entryIdxesToInitialize[i]; - ValueVectorUtils::copyNonNullDataWithSameTypeOutFromPos(*groupByUnflatVector, entryIdx, + groupByUnflatVector->copyToRowData(entryIdx, hashSlotsToUpdateAggState[entryIdx]->entry + colOffset, - *factorizedTable->getInMemOverflowBuffer()); + factorizedTable->getInMemOverflowBuffer()); } } else { for (auto i = 0u; i < numEntriesToInitialize; i++) { diff --git a/src/processor/result/factorized_table.cpp b/src/processor/result/factorized_table.cpp index c52ab8115e5..a22c8b82ec0 100644 --- a/src/processor/result/factorized_table.cpp +++ b/src/processor/result/factorized_table.cpp @@ -3,7 +3,7 @@ #include "common/data_chunk/data_chunk_state.h" #include "common/exception.h" #include "common/null_buffer.h" -#include "common/vector/value_vector_utils.h" +#include "common/vector/value_vector.h" using namespace kuzu::common; using namespace kuzu::storage; @@ -245,8 +245,8 @@ void FactorizedTable::updateFlatCell( if (valueVector->isNull(pos)) { setNonOverflowColNull(tuplePtr + tableSchema->getNullMapOffset(), colIdx); } else { - ValueVectorUtils::copyNonNullDataWithSameTypeOutFromPos( - *valueVector, pos, tuplePtr + tableSchema->getColOffset(colIdx), *inMemOverflowBuffer); + valueVector->copyToRowData( + pos, tuplePtr + tableSchema->getColOffset(colIdx), inMemOverflowBuffer.get()); } } @@ -419,9 +419,8 @@ void FactorizedTable::copyFlatVectorToFlatColumn( if (vector.isNull(valuePositionInVectorToAppend)) { setNonOverflowColNull(dstDataPtr + tableSchema->getNullMapOffset(), colIdx); } else { - ValueVectorUtils::copyNonNullDataWithSameTypeOutFromPos(vector, - valuePositionInVectorToAppend, dstDataPtr + colOffsetInDataBlock, - *inMemOverflowBuffer); + vector.copyToRowData(valuePositionInVectorToAppend, dstDataPtr + colOffsetInDataBlock, + inMemOverflowBuffer.get()); } dstDataPtr += tableSchema->getNumBytesPerTuple(); } @@ -434,9 +433,8 @@ void FactorizedTable::copyUnflatVectorToFlatColumn(const ValueVector& vector, if (vector.state->selVector->isUnfiltered()) { if (vector.hasNoNullsGuarantee()) { for (auto i = 0u; i < blockAppendInfo.numTuplesToAppend; i++) { - ValueVectorUtils::copyNonNullDataWithSameTypeOutFromPos(vector, - numAppendedTuples + i, dstTuple + byteOffsetOfColumnInTuple, - *inMemOverflowBuffer); + vector.copyToRowData(numAppendedTuples + i, dstTuple + byteOffsetOfColumnInTuple, + inMemOverflowBuffer.get()); dstTuple += tableSchema->getNumBytesPerTuple(); } } else { @@ -444,9 +442,8 @@ void FactorizedTable::copyUnflatVectorToFlatColumn(const ValueVector& vector, if (vector.isNull(numAppendedTuples + i)) { setNonOverflowColNull(dstTuple + tableSchema->getNullMapOffset(), colIdx); } else { - ValueVectorUtils::copyNonNullDataWithSameTypeOutFromPos(vector, - numAppendedTuples + i, dstTuple + byteOffsetOfColumnInTuple, - *inMemOverflowBuffer); + vector.copyToRowData(numAppendedTuples + i, + dstTuple + byteOffsetOfColumnInTuple, inMemOverflowBuffer.get()); } dstTuple += tableSchema->getNumBytesPerTuple(); } @@ -454,9 +451,9 @@ void FactorizedTable::copyUnflatVectorToFlatColumn(const ValueVector& vector, } else { if (vector.hasNoNullsGuarantee()) { for (auto i = 0u; i < blockAppendInfo.numTuplesToAppend; i++) { - ValueVectorUtils::copyNonNullDataWithSameTypeOutFromPos(vector, + vector.copyToRowData( vector.state->selVector->selectedPositions[numAppendedTuples + i], - dstTuple + byteOffsetOfColumnInTuple, *inMemOverflowBuffer); + dstTuple + byteOffsetOfColumnInTuple, inMemOverflowBuffer.get()); dstTuple += tableSchema->getNumBytesPerTuple(); } } else { @@ -465,8 +462,8 @@ void FactorizedTable::copyUnflatVectorToFlatColumn(const ValueVector& vector, if (vector.isNull(pos)) { setNonOverflowColNull(dstTuple + tableSchema->getNullMapOffset(), colIdx); } else { - ValueVectorUtils::copyNonNullDataWithSameTypeOutFromPos( - vector, pos, dstTuple + byteOffsetOfColumnInTuple, *inMemOverflowBuffer); + vector.copyToRowData( + pos, dstTuple + byteOffsetOfColumnInTuple, inMemOverflowBuffer.get()); } dstTuple += tableSchema->getNumBytesPerTuple(); } @@ -509,8 +506,7 @@ overflow_value_t FactorizedTable::appendVectorToUnflatTupleBlocks( if (vector.hasNoNullsGuarantee()) { auto dstDataBuffer = overflowBlockBuffer; for (auto i = 0u; i < numFlatTuplesInVector; i++) { - ValueVectorUtils::copyNonNullDataWithSameTypeOutFromPos( - vector, i, dstDataBuffer, *inMemOverflowBuffer); + vector.copyToRowData(i, dstDataBuffer, inMemOverflowBuffer.get()); dstDataBuffer += numBytesPerValue; } } else { @@ -519,8 +515,7 @@ overflow_value_t FactorizedTable::appendVectorToUnflatTupleBlocks( if (vector.isNull(i)) { setOverflowColNull(overflowBlockBuffer + numBytesForData, colIdx, i); } else { - ValueVectorUtils::copyNonNullDataWithSameTypeOutFromPos( - vector, i, dstDataBuffer, *inMemOverflowBuffer); + vector.copyToRowData(i, dstDataBuffer, inMemOverflowBuffer.get()); } dstDataBuffer += numBytesPerValue; } @@ -529,9 +524,8 @@ overflow_value_t FactorizedTable::appendVectorToUnflatTupleBlocks( if (vector.hasNoNullsGuarantee()) { auto dstDataBuffer = overflowBlockBuffer; for (auto i = 0u; i < numFlatTuplesInVector; i++) { - ValueVectorUtils::copyNonNullDataWithSameTypeOutFromPos(vector, - vector.state->selVector->selectedPositions[i], dstDataBuffer, - *inMemOverflowBuffer); + vector.copyToRowData(vector.state->selVector->selectedPositions[i], dstDataBuffer, + inMemOverflowBuffer.get()); dstDataBuffer += numBytesPerValue; } } else { @@ -541,8 +535,7 @@ overflow_value_t FactorizedTable::appendVectorToUnflatTupleBlocks( if (vector.isNull(pos)) { setOverflowColNull(overflowBlockBuffer + numBytesForData, colIdx, i); } else { - ValueVectorUtils::copyNonNullDataWithSameTypeOutFromPos( - vector, pos, dstDataBuffer, *inMemOverflowBuffer); + vector.copyToRowData(pos, dstDataBuffer, inMemOverflowBuffer.get()); } dstDataBuffer += numBytesPerValue; }