[FEAT MERGE] merge transfer

Co-authored-by: wxhwang <wxhwang@126.com>
Co-authored-by: godyangfight <godyangfight@gmail.com>
Co-authored-by: Tyshawn <tuyunshan@gmail.com>
This commit is contained in:
xuhuleon
2023-06-21 11:42:26 +00:00
committed by ob-robot
parent d06678002e
commit 9dae112952
1280 changed files with 149724 additions and 48813 deletions

View File

@ -10,7 +10,6 @@
* See the Mulan PubL v2 for more details.
*/
#define USING_LOG_PREFIX STORAGE
#include <gtest/gtest.h>
#define private public
@ -31,7 +30,15 @@ using namespace compaction;
using namespace unittest;
namespace storage
{
namespace mds
{
void *MdsAllocator::alloc(const int64_t size) {
return ob_malloc(size, "MDS");
}
void MdsAllocator::free(void *ptr) {
return ob_free(ptr);
}
}
template<typename T>
int prepare_partition_merge_iter(ObMergeParameter &merge_param,
common::ObIAllocator &allocator,
@ -90,13 +97,10 @@ void ObMajorRowsMergerTest::SetUpTestCase()
ObLSService *ls_svr = MTL(ObLSService*);
ASSERT_EQ(OB_SUCCESS, ls_svr->get_ls(ls_id, ls_handle, ObLSGetMod::STORAGE_MOD));
// create tablet
obrpc::ObBatchCreateTabletArg create_tablet_arg;
share::schema::ObTableSchema table_schema;
ASSERT_EQ(OB_SUCCESS, gen_create_tablet_arg(tenant_id_, ls_id, tablet_id, create_tablet_arg, 1, &table_schema));
ObLSTabletService *ls_tablet_svr = ls_handle.get_ls()->get_tablet_svr();
ASSERT_EQ(OB_SUCCESS, TestTabletHelper::create_tablet(*ls_tablet_svr, create_tablet_arg));
uint64_t table_id = 12345;
ASSERT_EQ(OB_SUCCESS, build_test_schema(table_schema, table_id));
ASSERT_EQ(OB_SUCCESS, TestTabletHelper::create_tablet(ls_handle, tablet_id, table_schema, allocator_));
}
void ObMajorRowsMergerTest::TearDownTestCase()
@ -150,9 +154,10 @@ void ObMajorRowsMergerTest::prepare_merge_context(const ObMergeType &merge_type,
merge_context.sstable_version_range_ = trans_version_range;
merge_context.param_.report_ = &rs_reporter_;
merge_context.progressive_merge_num_ = 0;
const common::ObIArray<ObITable *> &tables = merge_context.tables_handle_.get_tables();
merge_context.scn_range_.start_scn_ = tables.at(0)->get_start_scn();
merge_context.scn_range_.end_scn_ = tables.at(tables.count() - 1)->get_end_scn();
const int64_t tables_count = merge_context.tables_handle_.get_count();
merge_context.scn_range_.start_scn_ = merge_context.tables_handle_.get_table(0)->get_start_scn();
merge_context.scn_range_.end_scn_ = merge_context.tables_handle_.get_table(tables_count - 1)->get_end_scn();
merge_context.merge_scn_ = merge_context.scn_range_.end_scn_;
ASSERT_EQ(OB_SUCCESS, merge_context.init_merge_info());
ASSERT_EQ(OB_SUCCESS, merge_context.merge_info_.prepare_index_builder(index_desc_));
@ -234,7 +239,7 @@ TEST_F(ObMajorRowsMergerTest, tset_compare_func)
OK(iter_0->next());
OK(iter_1->next());
const ObTableReadInfo &read_info = iter_0->get_read_info();
const ObITableReadInfo &read_info = iter_0->get_read_info();
int64_t cmp_ret;
ObPartitionMergeLoserTreeItem item_0, item_1;
item_0.iter_ = iter_0;
@ -346,7 +351,7 @@ TEST_F(ObMajorRowsMergerTest, single)
ObPartitionMergeLoserTreeItem item_0, item_1;
item_0.iter_ = iter_0; item_0.iter_idx_ = 0;
item_1.iter_ = iter_1; item_1.iter_idx_ = 1;
const ObTableReadInfo &read_info = iter_0->get_read_info();
const ObITableReadInfo &read_info = iter_0->get_read_info();
ObPartitionMergeLoserTreeCmp cmp(read_info.get_datum_utils(), read_info.get_schema_rowkey_count());
ObPartitionMajorRowsMerger merger(cmp);
@ -455,7 +460,7 @@ TEST_F(ObMajorRowsMergerTest, two_iters)
item_0.iter_idx_ = 0;
item_1.iter_ = iter_1;
item_1.iter_idx_ = 1;
const ObTableReadInfo &read_info = iter_0->get_read_info();
const ObITableReadInfo &read_info = iter_0->get_read_info();
ObPartitionMergeLoserTreeCmp cmp(read_info.get_datum_utils(), read_info.get_schema_rowkey_count());
ObPartitionMajorRowsMerger merger(cmp);
@ -496,8 +501,8 @@ TEST_F(ObMajorRowsMergerTest, two_iters)
int main(int argc, char **argv)
{
system("rm -rf test_major_rows_merger.log*");
OB_LOGGER.set_file_name("test_major_rows_merger.log");
OB_LOGGER.set_log_level("INFO");
OB_LOGGER.set_file_name("test_major_rows_merger.log", true, false);
oceanbase::common::ObLogger::get_logger().set_log_level("INFO");
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();