Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

remove ValueVectorUtils #1689

Merged
merged 1 commit into from
Jun 18, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion src/common/vector/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
add_library(kuzu_common_vector
OBJECT
value_vector.cpp
value_vector_utils.cpp
auxiliary_buffer.cpp)

set(ALL_OBJECT_FILES
Expand Down
75 changes: 75 additions & 0 deletions src/common/vector/value_vector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,25 @@ 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: {
StringVector::copyToRowData(this, pos, rowData, rowOverflowBuffer);
} 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());
Expand Down Expand Up @@ -218,6 +237,19 @@ void StringVector::addString(
}
}

void StringVector::copyToRowData(const ValueVector* vector, uint32_t pos, uint8_t* rowData,
InMemOverflowBuffer* rowOverflowBuffer) {
auto& srcStr = vector->getValue<ku_string_t>(pos);
auto& dstStr = *(ku_string_t*)rowData;
if (ku_string_t::isShortString(srcStr.len)) {
dstStr.setShortString(srcStr);
} else {
dstStr.overflowPtr =
reinterpret_cast<uint64_t>(rowOverflowBuffer->allocateSpace(srcStr.len));
dstStr.setLongString(srcStr);
}
}

void ListVector::copyFromRowData(ValueVector* vector, uint32_t pos, const uint8_t* rowData) {
assert(vector->dataType.getPhysicalType() == PhysicalTypeID::VAR_LIST);
auto& srcKuList = *(ku_list_t*)rowData;
Expand All @@ -238,6 +270,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<list_entry_t>(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<uint64_t>(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);
Expand Down Expand Up @@ -275,6 +331,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 = (*(struct_entry_t*)srcData).pos;
Expand Down
70 changes: 0 additions & 70 deletions src/common/vector/value_vector_utils.cpp

This file was deleted.

2 changes: 0 additions & 2 deletions src/expression_evaluator/case_evaluator.cpp
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
2 changes: 0 additions & 2 deletions src/expression_evaluator/literal_evaluator.cpp
Original file line number Diff line number Diff line change
@@ -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;

Expand Down
1 change: 0 additions & 1 deletion src/function/vector_cast_operations.cpp
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
1 change: 0 additions & 1 deletion src/function/vector_list_operation.cpp
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
8 changes: 8 additions & 0 deletions src/include/common/vector/value_vector.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ class ValueVector {
// copyFromRowData assumes rowData is non-NULL.
void copyFromRowData(uint32_t pos, const uint8_t* rowData);
// copyFromVectorData assumes srcVectorData is non-NULL.
void copyToRowData(
uint32_t pos, uint8_t* rowData, InMemOverflowBuffer* rowOverflowBuffer) const;
void copyFromVectorData(
uint8_t* dstData, const ValueVector* srcVector, const uint8_t* srcVectorData);

Expand Down Expand Up @@ -102,6 +104,8 @@ class StringVector {
static void addString(ValueVector* vector, ku_string_t& dstStr, ku_string_t& srcStr);
static void addString(
ValueVector* vector, ku_string_t& dstStr, const char* srcStr, uint64_t length);
static void copyToRowData(const ValueVector* vector, uint32_t pos, uint8_t* rowData,
InMemOverflowBuffer* rowOverflowBuffer);
};

class ListVector {
Expand Down Expand Up @@ -129,6 +133,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);
};
Expand Down Expand Up @@ -161,6 +167,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);
};
Expand Down
15 changes: 0 additions & 15 deletions src/include/common/vector/value_vector_utils.h

This file was deleted.

4 changes: 1 addition & 3 deletions src/include/function/aggregate/collect.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#pragma once

#include "common/vector/value_vector_utils.h"
#include "processor/result/factorized_table.h"

namespace kuzu {
Expand Down Expand Up @@ -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());
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#pragma once

#include "common/vector/value_vector_utils.h"
#include "common/vector/value_vector.h"

namespace kuzu {
namespace function {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

#include <set>

#include "common/vector/value_vector_utils.h"
#include "common/vector/value_vector.h"

namespace kuzu {
namespace function {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#include <cstring>

#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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

#include <set>

#include "common/vector/value_vector_utils.h"
#include "common/vector/value_vector.h"

namespace kuzu {
namespace function {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#pragma once

#include "common/vector/value_vector.h"
#include "common/vector/value_vector_utils.h"

namespace kuzu {
namespace function {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#pragma once

#include "common/vector/value_vector.h"
#include "common/vector/value_vector_utils.h"

namespace kuzu {
namespace function {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#pragma once

#include "common/vector/value_vector.h"
#include "common/vector/value_vector_utils.h"

namespace kuzu {
namespace function {
Expand Down
1 change: 0 additions & 1 deletion src/include/function/map/operations/map_values_operation.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#pragma once

#include "common/vector/value_vector.h"
#include "common/vector/value_vector_utils.h"

namespace kuzu {
namespace function {
Expand Down
2 changes: 1 addition & 1 deletion src/include/function/map/vector_map_operations.h
Original file line number Diff line number Diff line change
@@ -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 {
Expand Down
Original file line number Diff line number Diff line change
@@ -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 {
Expand Down
2 changes: 1 addition & 1 deletion src/include/function/struct/vector_struct_operations.h
Original file line number Diff line number Diff line change
@@ -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 {
Expand Down
1 change: 0 additions & 1 deletion src/include/function/union/vector_union_operations.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#pragma once

#include "common/vector/value_vector_utils.h"
#include "function/vector_operations.h"

namespace kuzu {
Expand Down
1 change: 0 additions & 1 deletion src/include/processor/operator/unwind.h
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
1 change: 0 additions & 1 deletion src/processor/mapper/map_expressions_scan.cpp
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
Loading
Loading