This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 1112dba525 [be ut]add some case for array type in block_test (#10656) 1112dba525 is described below commit 1112dba52580ab7590c4d1dfd7c6964406f18f2c Author: carlvinhust2012 <huchengha...@126.com> AuthorDate: Sat Jul 9 12:00:42 2022 +0800 [be ut]add some case for array type in block_test (#10656) Co-authored-by: hucheng01 <huchen...@baidu.com> --- be/test/vec/core/block_test.cpp | 67 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/be/test/vec/core/block_test.cpp b/be/test/vec/core/block_test.cpp index d20842b017..fd87842589 100644 --- a/be/test/vec/core/block_test.cpp +++ b/be/test/vec/core/block_test.cpp @@ -33,6 +33,7 @@ #include "vec/columns/column_string.h" #include "vec/columns/column_vector.h" #include "vec/data_types/data_type.h" +#include "vec/data_types/data_type_array.h" #include "vec/data_types/data_type_bitmap.h" #include "vec/data_types/data_type_date.h" #include "vec/data_types/data_type_date_time.h" @@ -192,6 +193,50 @@ void block_to_pb(const vectorized::Block& block, PBlock* pblock) { EXPECT_EQ(type_and_name.name, pblock->column_metas()[0].name()); } +void fill_block_with_array_int(vectorized::Block& block) { + auto off_column = vectorized::ColumnVector<vectorized::IColumn::Offset>::create(); + auto data_column = vectorized::ColumnVector<int32_t>::create(); + // init column array with [[1,2,3],[],[4],[5,6]] + std::vector<vectorized::IColumn::Offset> offs = {0, 3, 3, 4, 6}; + std::vector<int32_t> vals = {1, 2, 3, 4, 5, 6}; + for (size_t i = 1; i < offs.size(); ++i) { + off_column->insert_data((const char*)(&offs[i]), 0); + } + for (auto& v : vals) { + data_column->insert_data((const char*)(&v), 0); + } + + auto column_array_ptr = + vectorized::ColumnArray::create(std::move(data_column), std::move(off_column)); + vectorized::DataTypePtr nested_type(std::make_shared<vectorized::DataTypeInt32>()); + vectorized::DataTypePtr array_type(std::make_shared<vectorized::DataTypeArray>(nested_type)); + vectorized::ColumnWithTypeAndName test_array_int(std::move(column_array_ptr), array_type, + "test_array_int"); + block.insert(test_array_int); +} + +void fill_block_with_array_string(vectorized::Block& block) { + auto off_column = vectorized::ColumnVector<vectorized::IColumn::Offset>::create(); + auto data_column = vectorized::ColumnString::create(); + // init column array with [["abc","de"],["fg"],[], [""]]; + std::vector<vectorized::IColumn::Offset> offs = {0, 2, 3, 3, 4}; + std::vector<std::string> vals = {"abc", "de", "fg", ""}; + for (size_t i = 1; i < offs.size(); ++i) { + off_column->insert_data((const char*)(&offs[i]), 0); + } + for (auto& v : vals) { + data_column->insert_data(v.data(), v.size()); + } + + auto column_array_ptr = + vectorized::ColumnArray::create(std::move(data_column), std::move(off_column)); + vectorized::DataTypePtr nested_type(std::make_shared<vectorized::DataTypeString>()); + vectorized::DataTypePtr array_type(std::make_shared<vectorized::DataTypeArray>(nested_type)); + vectorized::ColumnWithTypeAndName test_array_string(std::move(column_array_ptr), array_type, + "test_array_string"); + block.insert(test_array_string); +} + TEST(BlockTest, SerializeAndDeserializeBlock) { config::compress_rowbatches = true; // int @@ -343,6 +388,21 @@ TEST(BlockTest, SerializeAndDeserializeBlock) { block_to_pb(block, &pblock); std::string s1 = pblock.DebugString(); + vectorized::Block block2(pblock); + PBlock pblock2; + block_to_pb(block2, &pblock2); + std::string s2 = pblock2.DebugString(); + EXPECT_EQ(s1, s2); + } + // array int and array string + { + vectorized::Block block; + fill_block_with_array_int(block); + fill_block_with_array_string(block); + PBlock pblock; + block_to_pb(block, &pblock); + std::string s1 = pblock.DebugString(); + vectorized::Block block2(pblock); PBlock pblock2; block_to_pb(block2, &pblock2); @@ -426,5 +486,12 @@ TEST(BlockTest, dump_data) { vectorized::Block block({test_int, test_string, test_decimal, test_nullable_int32, test_date, test_datetime, test_date_v2}); EXPECT_GT(block.dump_data().size(), 1); + + // test dump array int and array string + vectorized::Block block1; + fill_block_with_array_int(block1); + fill_block_with_array_string(block1); + // Note: here we should set 'row_num' in dump_data + EXPECT_GT(block1.dump_data(10).size(), 1); } } // namespace doris --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org