Skip to content

Commit

Permalink
remove ValueVectorUtils
Browse files Browse the repository at this point in the history
  • Loading branch information
andyfengHKU committed Jun 17, 2023
1 parent b069813 commit 06a35df
Show file tree
Hide file tree
Showing 26 changed files with 106 additions and 139 deletions.
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
70 changes: 70 additions & 0 deletions src/common/vector/value_vector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<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);
}
} 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 @@ -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<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 +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;
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
6 changes: 6 additions & 0 deletions src/include/common/vector/value_vector.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -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);
};
Expand Down Expand Up @@ -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);
};
Expand Down
15 changes: 0 additions & 15 deletions src/include/common/vector/value_vector_utils.h
Original file line number Diff line number Diff line change
@@ -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
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

0 comments on commit 06a35df

Please sign in to comment.