Skip to content
Closed
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
135 changes: 0 additions & 135 deletions be/src/vec/exec/volap_scanner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,139 +82,4 @@ Status VOlapScanner::get_block(RuntimeState* state, vectorized::Block* block, bo
void VOlapScanner::set_tablet_reader() {
_tablet_reader = std::make_unique<BlockReader>();
}

void VOlapScanner::_convert_row_to_block(std::vector<vectorized::MutableColumnPtr>* columns) {
size_t slots_size = _query_slots.size();
for (int i = 0; i < slots_size; ++i) {
SlotDescriptor* slot_desc = _query_slots[i];
auto cid = _return_columns[i];

auto* column_ptr = (*columns)[i].get();
if (slot_desc->is_nullable()) {
auto* nullable_column = reinterpret_cast<ColumnNullable*>((*columns)[i].get());
if (_read_row_cursor.is_null(cid)) {
nullable_column->insert_data(nullptr, 0);
continue;
} else {
nullable_column->get_null_map_data().push_back(0);
column_ptr = &nullable_column->get_nested_column();
}
}

char* ptr = (char*)_read_row_cursor.cell_ptr(cid);
switch (slot_desc->type().type) {
case TYPE_BOOLEAN: {
assert_cast<ColumnVector<UInt8>*>(column_ptr)->insert_data(ptr, 0);
break;
}
case TYPE_TINYINT: {
assert_cast<ColumnVector<Int8>*>(column_ptr)->insert_data(ptr, 0);
break;
}
case TYPE_SMALLINT: {
assert_cast<ColumnVector<Int16>*>(column_ptr)->insert_data(ptr, 0);
break;
}
case TYPE_INT: {
assert_cast<ColumnVector<Int32>*>(column_ptr)->insert_data(ptr, 0);
break;
}
case TYPE_BIGINT: {
assert_cast<ColumnVector<Int64>*>(column_ptr)->insert_data(ptr, 0);
break;
}
case TYPE_LARGEINT: {
assert_cast<ColumnVector<Int128>*>(column_ptr)->insert_data(ptr, 0);
break;
}
case TYPE_FLOAT: {
assert_cast<ColumnVector<Float32>*>(column_ptr)->insert_data(ptr, 0);
break;
}
case TYPE_DOUBLE: {
assert_cast<ColumnVector<Float64>*>(column_ptr)->insert_data(ptr, 0);
break;
}
case TYPE_CHAR: {
Slice* slice = reinterpret_cast<Slice*>(ptr);
assert_cast<ColumnString*>(column_ptr)
->insert_data(slice->data, strnlen(slice->data, slice->size));
break;
}
case TYPE_VARCHAR:
case TYPE_STRING: {
Slice* slice = reinterpret_cast<Slice*>(ptr);
assert_cast<ColumnString*>(column_ptr)->insert_data(slice->data, slice->size);
break;
}
case TYPE_OBJECT: {
Slice* slice = reinterpret_cast<Slice*>(ptr);
// insert_default()
auto* target_column = assert_cast<ColumnBitmap*>(column_ptr);

target_column->insert_default();
BitmapValue* pvalue = nullptr;
int pos = target_column->size() - 1;
pvalue = &target_column->get_element(pos);

if (slice->size != 0) {
BitmapValue value;
value.deserialize(slice->data);
*pvalue = std::move(value);
} else {
*pvalue = std::move(*reinterpret_cast<BitmapValue*>(slice->data));
}
break;
}
case TYPE_HLL: {
Slice* slice = reinterpret_cast<Slice*>(ptr);
auto* target_column = assert_cast<ColumnHLL*>(column_ptr);

target_column->insert_default();
HyperLogLog* pvalue = nullptr;
int pos = target_column->size() - 1;
pvalue = &target_column->get_element(pos);
if (slice->size != 0) {
HyperLogLog value;
value.deserialize(*slice);
*pvalue = std::move(value);
} else {
*pvalue = std::move(*reinterpret_cast<HyperLogLog*>(slice->data));
}
break;
}
case TYPE_DECIMALV2: {
int64_t int_value = *(int64_t*)(ptr);
int32_t frac_value = *(int32_t*)(ptr + sizeof(int64_t));
DecimalV2Value data(int_value, frac_value);
assert_cast<ColumnDecimal<Decimal128>*>(column_ptr)
->insert_data(reinterpret_cast<char*>(&data), 0);
break;
}
case TYPE_DATETIME: {
uint64_t value = *reinterpret_cast<uint64_t*>(ptr);
VecDateTimeValue data(value);
assert_cast<ColumnVector<Int64>*>(column_ptr)
->insert_data(reinterpret_cast<char*>(&data), 0);
break;
}
case TYPE_DATE: {
uint64_t value = 0;
value = *(unsigned char*)(ptr + 2);
value <<= 8;
value |= *(unsigned char*)(ptr + 1);
value <<= 8;
value |= *(unsigned char*)(ptr);
VecDateTimeValue date;
date.from_olap_date(value);
assert_cast<ColumnVector<Int64>*>(column_ptr)
->insert_data(reinterpret_cast<char*>(&date), 0);
break;
}
default: {
break;
}
}
}
}
} // namespace doris::vectorized
2 changes: 0 additions & 2 deletions be/src/vec/exec/volap_scanner.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,6 @@ class VOlapScanner : public OlapScanner {
virtual void set_tablet_reader() override;

private:
// TODO: Remove this function after we finish reader vec
void _convert_row_to_block(std::vector<vectorized::MutableColumnPtr>* columns);
VExprContext* _vconjunct_ctx = nullptr;
bool _need_to_close = false;
};
Expand Down