From 9f0b93e3c6870267ceac5ced22ef030fac181ce6 Mon Sep 17 00:00:00 2001 From: camby <104178625@qq.com> Date: Tue, 22 Mar 2022 16:35:30 +0800 Subject: [PATCH] [feature-wip](array-type) Fix conflict while merge array-type branch (#8594) --- be/src/olap/tablet_schema.cpp | 9 +++------ be/src/vec/data_types/data_type_factory.cpp | 4 ++-- be/src/vec/data_types/data_type_factory.hpp | 2 +- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/be/src/olap/tablet_schema.cpp b/be/src/olap/tablet_schema.cpp index 45b33f7480..63d4e833aa 100644 --- a/be/src/olap/tablet_schema.cpp +++ b/be/src/olap/tablet_schema.cpp @@ -498,12 +498,9 @@ vectorized::Block TabletSchema::create_block(const std::vector& return vectorized::Block block; for (int i = 0; i < return_columns.size(); ++i) { const auto& col = _cols[return_columns[i]]; -/* TODO: -- auto data_type = vectorized::IDataType::from_olap_engine(col.type(), -- col.is_nullable() || (tablet_columns_need_convert_null != nullptr && -- tablet_columns_need_convert_null->find(return_columns[i]) != tablet_columns_need_convert_null->end())); -*/ - auto data_type = vectorized::DataTypeFactory::instance().create_data_type(col); + bool is_nullable = (tablet_columns_need_convert_null != nullptr && + tablet_columns_need_convert_null->find(return_columns[i]) != tablet_columns_need_convert_null->end()); + auto data_type = vectorized::DataTypeFactory::instance().create_data_type(col, is_nullable); auto column = data_type->create_column(); block.insert({std::move(column), data_type, col.name()}); } diff --git a/be/src/vec/data_types/data_type_factory.cpp b/be/src/vec/data_types/data_type_factory.cpp index 5c6e39fe74..88737eb626 100644 --- a/be/src/vec/data_types/data_type_factory.cpp +++ b/be/src/vec/data_types/data_type_factory.cpp @@ -37,7 +37,7 @@ DataTypePtr DataTypeFactory::create_data_type(const doris::Field& col_desc) { return nested; } -DataTypePtr DataTypeFactory::create_data_type(const TabletColumn& col_desc) { +DataTypePtr DataTypeFactory::create_data_type(const TabletColumn& col_desc, bool is_nullable) { DataTypePtr nested = nullptr; if (col_desc.type() == OLAP_FIELD_TYPE_ARRAY) { DCHECK(col_desc.get_subtype_count() == 1); @@ -46,7 +46,7 @@ DataTypePtr DataTypeFactory::create_data_type(const TabletColumn& col_desc) { nested = _create_primitive_data_type(col_desc.type()); } - if (col_desc.is_nullable() && nested) { + if ((is_nullable || col_desc.is_nullable()) && nested) { return std::make_shared(nested); } return nested; diff --git a/be/src/vec/data_types/data_type_factory.hpp b/be/src/vec/data_types/data_type_factory.hpp index c78a4ef344..8c42fd60b9 100644 --- a/be/src/vec/data_types/data_type_factory.hpp +++ b/be/src/vec/data_types/data_type_factory.hpp @@ -81,7 +81,7 @@ public: } DataTypePtr create_data_type(const doris::Field& col_desc); - DataTypePtr create_data_type(const TabletColumn& col_desc); + DataTypePtr create_data_type(const TabletColumn& col_desc, bool is_nullable = false); DataTypePtr create_data_type(const TypeDescriptor& col_desc, bool is_nullable = true);