You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2022/07/09 04:00:48 UTC

[doris] branch master updated: [be ut]add some case for array type in block_test (#10656)

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 <hu...@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 <hu...@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-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org