From 9819cd350620b7e4d25bacb41583ad71194e5e76 Mon Sep 17 00:00:00 2001 From: jinhelin Date: Wed, 31 Aug 2022 16:26:51 +0800 Subject: [PATCH 1/4] TestUtils: Add new utils that support check inputstream with unordered blocks. --- .../tests/gtest_dm_delta_merge_store.cpp | 78 ++++++------- dbms/src/TestUtils/InputStreamTestUtils.cpp | 108 ++++++++++++++++++ dbms/src/TestUtils/InputStreamTestUtils.h | 12 ++ 3 files changed, 159 insertions(+), 39 deletions(-) diff --git a/dbms/src/Storages/DeltaMerge/tests/gtest_dm_delta_merge_store.cpp b/dbms/src/Storages/DeltaMerge/tests/gtest_dm_delta_merge_store.cpp index 0259d228038..471d59f760c 100644 --- a/dbms/src/Storages/DeltaMerge/tests/gtest_dm_delta_merge_store.cpp +++ b/dbms/src/Storages/DeltaMerge/tests/gtest_dm_delta_merge_store.cpp @@ -261,7 +261,7 @@ try /* keep_order= */ false, /* is_fast_scan= */ false, /* expected_block_size= */ 1024)[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, col_str_define.name, col_i8_define.name}), createColumns({ @@ -275,7 +275,7 @@ try // test readRaw const auto & columns = store->getTableColumns(); BlockInputStreamPtr in = store->readRaw(*db_context, db_context->getSettingsRef(), columns, 1, /* keep_order= */ false)[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, col_str_define.name, col_i8_define.name}), createColumns({ @@ -439,7 +439,7 @@ try /* keep_order= */ false, /* is_fast_scan= */ false, /* expected_block_size= */ 1024)[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, col_str_define.name, col_i8_define.name}), createColumns({ @@ -488,7 +488,7 @@ try /* keep_order= */ false, /* is_fast_scan= */ false, /* expected_block_size= */ 1024)[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name}), createColumns({ @@ -515,7 +515,7 @@ try /* keep_order= */ false, /* is_fast_scan= */ false, /* expected_block_size= */ 1024)[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name}), createColumns({ @@ -590,7 +590,7 @@ try /* keep_order= */ false, /* is_fast_scan= */ false, /* expected_block_size= */ 1024)[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name}), createColumns({ @@ -665,7 +665,7 @@ try /* keep_order= */ false, /* is_fast_scan= */ false, /* expected_block_size= */ 1024)[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name}), createColumns({ @@ -686,7 +686,7 @@ try /* keep_order= */ false, /* is_fast_scan= */ false, /* expected_block_size= */ 1024)[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name}), createColumns({ @@ -731,7 +731,7 @@ try /* keep_order= */ false, /* is_fast_scan= */ false, /* expected_block_size= */ 1024)[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name}), createColumns({ @@ -761,7 +761,7 @@ try /* keep_order= */ false, /* is_fast_scan= */ false, /* expected_block_size= */ 1024)[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name}), createColumns({ @@ -920,7 +920,7 @@ try /* expected_block_size= */ 1024); ASSERT_EQ(ins.size(), 1UL); BlockInputStreamPtr in = ins[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, VERSION_COLUMN_NAME}), createColumns({ @@ -946,7 +946,7 @@ try /* expected_block_size= */ 1024); ASSERT_EQ(ins.size(), 1UL); BlockInputStreamPtr in = ins[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, VERSION_COLUMN_NAME}), createColumns({ @@ -1069,7 +1069,7 @@ try /* expected_block_size= */ 1024); ASSERT_EQ(ins.size(), 1); BlockInputStreamPtr in = ins[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, VERSION_COLUMN_NAME}), createColumns({ @@ -1095,7 +1095,7 @@ try /* expected_block_size= */ 1024); ASSERT_EQ(ins.size(), 1); BlockInputStreamPtr in = ins[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, VERSION_COLUMN_NAME}), createColumns({ @@ -1173,7 +1173,7 @@ try /* expected_block_size= */ 1024); ASSERT_EQ(ins.size(), 1); BlockInputStreamPtr in = ins[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, VERSION_COLUMN_NAME}), createColumns({ @@ -1283,7 +1283,7 @@ try BlockInputStreamPtr in = ins[0]; LOG_FMT_TRACE(&Poco::Logger::get(GET_GTEST_FULL_NAME), "start to check data of [1,{}]", num_rows_write_in_total); - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name}), createColumns({ @@ -1378,7 +1378,7 @@ try ASSERT_EQ(col.column_id, col_id_ddl); ASSERT_TRUE(col.type->equals(*col_type_after_ddl)); } - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, col_name_ddl}), createColumns({ @@ -1463,7 +1463,7 @@ try const Block head = in->getHeader(); ASSERT_FALSE(head.has(col_name_to_drop)); } - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name}), createColumns({ @@ -1551,7 +1551,7 @@ try ASSERT_TRUE(col.type->equals(*col_type_to_add)); } } - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, col_name_c1, col_name_to_add}), createColumns({ @@ -1618,7 +1618,7 @@ try /* is_fast_scan= */ false, /* expected_block_size= */ 1024)[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, col_name_to_add}), createColumns({ @@ -1684,7 +1684,7 @@ try /* is_fast_scan= */ false, /* expected_block_size= */ 1024)[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, col_name_to_add}), createColumns({ @@ -1749,7 +1749,7 @@ try /* keep_order= */ false, /* is_fast_scan= */ false, /* expected_block_size= */ 1024)[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, col_name_to_add}), createColumns({ @@ -1814,7 +1814,7 @@ try /* keep_order= */ false, /* is_fast_scan= */ false, /* expected_block_size= */ 1024)[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, col_name_to_add}), createColumns({ @@ -1880,7 +1880,7 @@ try /* is_fast_scan= */ false, /* expected_block_size= */ 1024)[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, col_name_to_add}), createColumns({ @@ -1948,7 +1948,7 @@ try num_rows_write, MyDateTime(1999, 9, 9, 12, 34, 56, 0).toPackedUInt()); - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, col_name_to_add}), createColumns({ @@ -2013,7 +2013,7 @@ try /* keep_order= */ false, /* is_fast_scan= */ false, /* expected_block_size= */ 1024)[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, col_name_to_add}), createColumns({ @@ -2106,7 +2106,7 @@ try ASSERT_THROW(head.getByName(col_name_before_ddl), ::DB::Exception); } - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, col_name_after_ddl}), createColumns({ @@ -2222,7 +2222,7 @@ try // check old col name is not exist ASSERT_THROW(head.getByName(col_name_before_ddl), ::DB::Exception); } - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({col_name_after_ddl}), createColumns({ @@ -2270,7 +2270,7 @@ try // check old col name is not exist ASSERT_THROW(head.getByName(col_name_before_ddl), ::DB::Exception); } - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({col_name_after_ddl}), createColumns({ @@ -2344,7 +2344,7 @@ try /* keep_order= */ false, /* is_fast_scan= */ false, /* expected_block_size= */ 1024)[0]; - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, col_name_to_add}), createColumns({ @@ -2388,7 +2388,7 @@ try /* expected_block_size= */ 1024)[0]; // FIXME!!! - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, col_name_to_add}), createColumns({ @@ -2505,7 +2505,7 @@ try std::transform(tmp.begin(), tmp.end(), std::back_inserter(res), [](Int64 v) { return genMockCommonHandle(v, rowkey_column_size); }); return res; }(); - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, col_i8_define.name, col_str_define.name}), createColumns({ @@ -2526,7 +2526,7 @@ try std::transform(tmp.begin(), tmp.end(), std::back_inserter(res), [](Int64 v) { return genMockCommonHandle(v, rowkey_column_size); }); return res; }(); - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name, col_i8_define.name, col_str_define.name}), createColumns({ @@ -2607,7 +2607,7 @@ try return res; }(); ASSERT_EQ(common_handle_coldata.size(), 3 * num_write_rows); - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name}), createColumns({ @@ -2679,7 +2679,7 @@ try return res; }(); ASSERT_EQ(common_handle_coldata.size(), 3 * num_write_rows); - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name}), createColumns({ @@ -2708,7 +2708,7 @@ try return res; }(); ASSERT_EQ(common_handle_coldata.size(), 2 * num_write_rows); - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name}), createColumns({ @@ -2764,7 +2764,7 @@ try return res; }(); ASSERT_EQ(common_handle_coldata.size(), num_rows_write); - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name}), createColumns({ @@ -2801,7 +2801,7 @@ try return res; }(); ASSERT_EQ(common_handle_coldata.size(), num_rows_write - num_deleted_rows); - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name}), createColumns({ @@ -2865,7 +2865,7 @@ try LOG_FMT_TRACE(&Poco::Logger::get(GET_GTEST_FULL_NAME), "start to check data of [1,{}]", num_rows_write_in_total); - ASSERT_INPUTSTREAM_COLS_UR( + ASSERT_UNORDERED_INPUTSTREAM_COLS_UR( in, Strings({DMTestEnv::pk_name}), createColumns({ diff --git a/dbms/src/TestUtils/InputStreamTestUtils.cpp b/dbms/src/TestUtils/InputStreamTestUtils.cpp index 011ac15fa30..9ab11772b55 100644 --- a/dbms/src/TestUtils/InputStreamTestUtils.cpp +++ b/dbms/src/TestUtils/InputStreamTestUtils.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -362,5 +363,112 @@ ::testing::AssertionResult InputStreamVSBlockUnrestrictlyCompareColumns( return ::testing::AssertionFailure() << reason; } +::testing::AssertionResult UnorderedInputStreamVSBlockUnrestrictlyCompareColumns( + const char * stream_expr, + const char * colnames_expr, + const char * columns_expr, + const BlockInputStreamPtr & stream, + const Strings & colnames, + const ColumnsWithTypeAndName & columns) +{ + RUNTIME_CHECK_MSG( + stream != nullptr, + "ASSERT_UNORDERED_INPUTSTREAM_COLS_UR: `{}` should be not null", + stream_expr); + RUNTIME_CHECK_MSG( + colnames.size() == columns.size(), + "ASSERT_UNORDERED_INPUTSTREAM_COLS_UR: `{}` (len = {}) should have equal length as `{}` (len = {})", + colnames_expr, + colnames.size(), + columns_expr, + columns.size()); + + Block expect_block(columns); + expect_block.checkNumberOfRows(); // check the input + + // Blocks are unordered when read-thread-pool enabled. + // So read all blocks and sort them by handle column or column at position 0. + size_t num_rows_expect = expect_block.rows(); + size_t num_rows_read = 0; + std::vector blocks; + stream->readPrefix(); + while (Block read_block = stream->read()) + { + num_rows_read += read_block.rows(); + + if (num_rows_read > num_rows_expect) + { + auto reason = fmt::format(R"r( + ({}).read() return more rows({}) than expected + ({}).rows() + Which is: {} + last block is: {})r", + stream_expr, + num_rows_read, + columns_expr, + num_rows_expect, + getColumnsContent(read_block.getColumnsWithTypeAndName())); + return ::testing::AssertionFailure() << reason; + } + blocks.emplace_back(std::move(read_block)); + } + stream->readSuffix(); + + auto cmp_blk = [](const Block & a, const Block & b) { + const auto & col_a = a.has(EXTRA_HANDLE_COLUMN_NAME) ? a.getByName(EXTRA_HANDLE_COLUMN_NAME) : a.getByPosition(0); + const auto & col_b = b.has(EXTRA_HANDLE_COLUMN_NAME) ? b.getByName(EXTRA_HANDLE_COLUMN_NAME) : b.getByPosition(0); + if (col_a.column->size() == 0 || col_b.column->size() == 0) + { + return false; + } + const auto & field_a = (*col_a.column)[0]; + const auto & field_b = (*col_b.column)[0]; + return field_a < field_b; + }; + std::sort(blocks.begin(), blocks.end(), cmp_blk); + + size_t start_offset = 0; + for (const auto & read_block : blocks) + { + for (size_t col_idx = 0; col_idx < colnames.size(); ++col_idx) + { + const auto & col_name = colnames[col_idx]; + // Copy the [start_offset, read_block.rows()) of `expect_block` + const auto & expect_full_col = expect_block.getByPosition(col_idx); + auto expect_col = expect_full_col.cloneEmpty(); + auto column_data = expect_col.type->createColumn(); + column_data->insertRangeFrom(*expect_full_col.column, start_offset, read_block.rows()); + expect_col.column = std::move(column_data); + + const auto & actual_col = read_block.getByName(col_name); + if (auto res = DB::tests::columnEqual(expect_col, actual_col); !res) + { + auto expect_expr = fmt::format("expect block: {}", getColumnsContent(expect_block.getColumnsWithTypeAndName(), start_offset, start_offset + read_block.rows())); + Block actual_block_to_cmp; + for (const auto & col_name : colnames) + actual_block_to_cmp.insert(read_block.getByName(col_name)); + auto actual_expr = fmt::format("actual block: {}", getColumnsContent(actual_block_to_cmp.getColumnsWithTypeAndName())); + return res << fmt::format("\n details: [column={}] [prev_nrows={}] [cur_nrows={}]:\n {}\n {}", col_name, start_offset, start_offset + read_block.rows(), expect_expr, actual_expr); + } + } + + start_offset += read_block.rows(); + } + + if (num_rows_expect == num_rows_read) + return ::testing::AssertionSuccess(); + + // Less rows than expected + auto reason = fmt::format(R"r( ({}).read() return num of rows + Which is: {} + the num rows of ({}) + Which is: {})r", + stream_expr, + num_rows_read, + columns_expr, + num_rows_expect); + return ::testing::AssertionFailure() << reason; +} + } // namespace tests } // namespace DB diff --git a/dbms/src/TestUtils/InputStreamTestUtils.h b/dbms/src/TestUtils/InputStreamTestUtils.h index 82b2768df16..79cd1d7cc5e 100644 --- a/dbms/src/TestUtils/InputStreamTestUtils.h +++ b/dbms/src/TestUtils/InputStreamTestUtils.h @@ -71,5 +71,17 @@ ::testing::AssertionResult InputStreamVSBlockUnrestrictlyCompareColumns( #define ASSERT_INPUTSTREAM_COLS_UR(stream, colnames, columns) \ ASSERT_PRED_FORMAT3(::DB::tests::InputStreamVSBlockUnrestrictlyCompareColumns, stream, colnames, columns) +// Similar to `InputStreamVSBlockUnrestrictlyCompareColumns` but assume inputstream's blocks are unordered. +// It is only used for normal mode. (The blocks of fast mode have overlap.) +// This function read all blocks first and sort them by handle column or column at position 0 if EXTRA_HANDLE_COLUMN_NAME not exist. +::testing::AssertionResult UnorderedInputStreamVSBlockUnrestrictlyCompareColumns( + const char * stream_expr, + const char * colnames_expr, + const char * columns_expr, + const BlockInputStreamPtr & stream, + const Strings & colnames, + const ColumnsWithTypeAndName & columns); +#define ASSERT_UNORDERED_INPUTSTREAM_COLS_UR(stream, colnames, columns) \ + ASSERT_PRED_FORMAT3(::DB::tests::UnorderedInputStreamVSBlockUnrestrictlyCompareColumns, stream, colnames, columns) } // namespace tests } // namespace DB From 1119b76769a1629a643e70974d34c51436458555 Mon Sep 17 00:00:00 2001 From: jinhelin Date: Thu, 1 Sep 2022 13:53:49 +0800 Subject: [PATCH 2/4] Update comment. --- dbms/src/TestUtils/InputStreamTestUtils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dbms/src/TestUtils/InputStreamTestUtils.cpp b/dbms/src/TestUtils/InputStreamTestUtils.cpp index 9ab11772b55..8db81605e9d 100644 --- a/dbms/src/TestUtils/InputStreamTestUtils.cpp +++ b/dbms/src/TestUtils/InputStreamTestUtils.cpp @@ -386,7 +386,7 @@ ::testing::AssertionResult UnorderedInputStreamVSBlockUnrestrictlyCompareColumns Block expect_block(columns); expect_block.checkNumberOfRows(); // check the input - // Blocks are unordered when read-thread-pool enabled. + // Blocks can be unordered when read-thread-pool enabled. // So read all blocks and sort them by handle column or column at position 0. size_t num_rows_expect = expect_block.rows(); size_t num_rows_read = 0; From 0011a27378a2a4c8419c237ae56654542407ae8a Mon Sep 17 00:00:00 2001 From: jinhelin Date: Thu, 1 Sep 2022 14:55:23 +0800 Subject: [PATCH 3/4] Update dbms/src/TestUtils/InputStreamTestUtils.cpp Co-authored-by: yanweiqi <592838129@qq.com> --- dbms/src/TestUtils/InputStreamTestUtils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dbms/src/TestUtils/InputStreamTestUtils.cpp b/dbms/src/TestUtils/InputStreamTestUtils.cpp index 8db81605e9d..6f56112121f 100644 --- a/dbms/src/TestUtils/InputStreamTestUtils.cpp +++ b/dbms/src/TestUtils/InputStreamTestUtils.cpp @@ -417,7 +417,7 @@ ::testing::AssertionResult UnorderedInputStreamVSBlockUnrestrictlyCompareColumns auto cmp_blk = [](const Block & a, const Block & b) { const auto & col_a = a.has(EXTRA_HANDLE_COLUMN_NAME) ? a.getByName(EXTRA_HANDLE_COLUMN_NAME) : a.getByPosition(0); const auto & col_b = b.has(EXTRA_HANDLE_COLUMN_NAME) ? b.getByName(EXTRA_HANDLE_COLUMN_NAME) : b.getByPosition(0); - if (col_a.column->size() == 0 || col_b.column->size() == 0) + if (col_a.column->empty() || col_b.column->empty()) { return false; } From db82f7e3d003e56fde6338051ec80be3333ac840 Mon Sep 17 00:00:00 2001 From: jinhelin Date: Thu, 1 Sep 2022 14:57:33 +0800 Subject: [PATCH 4/4] Update dbms/src/TestUtils/InputStreamTestUtils.cpp Co-authored-by: yanweiqi <592838129@qq.com> --- dbms/src/TestUtils/InputStreamTestUtils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dbms/src/TestUtils/InputStreamTestUtils.cpp b/dbms/src/TestUtils/InputStreamTestUtils.cpp index 6f56112121f..1e08fdf88c0 100644 --- a/dbms/src/TestUtils/InputStreamTestUtils.cpp +++ b/dbms/src/TestUtils/InputStreamTestUtils.cpp @@ -441,7 +441,7 @@ ::testing::AssertionResult UnorderedInputStreamVSBlockUnrestrictlyCompareColumns expect_col.column = std::move(column_data); const auto & actual_col = read_block.getByName(col_name); - if (auto res = DB::tests::columnEqual(expect_col, actual_col); !res) + if (auto res = columnEqual(expect_col, actual_col); !res) { auto expect_expr = fmt::format("expect block: {}", getColumnsContent(expect_block.getColumnsWithTypeAndName(), start_offset, start_offset + read_block.rows())); Block actual_block_to_cmp;