push memtable max_end_scn to start_scn + 1 for replay multi-transaction commit log
This commit is contained in:
@ -33,6 +33,7 @@
|
||||
#include "storage/tx_storage/ob_ls_map.h"
|
||||
#include "share/schema/ob_column_schema.h"
|
||||
#include "storage/ob_storage_schema.h"
|
||||
#include "storage/tablet/ob_tablet_multi_source_data.h"
|
||||
|
||||
namespace oceanbase
|
||||
{
|
||||
@ -525,6 +526,29 @@ TEST_F(TestMemtable, test_unsync_cnt_for_multi_data)
|
||||
ASSERT_EQ(0, storage_schema.get_unsync_cnt_for_multi_data());
|
||||
}
|
||||
|
||||
TEST_F(TestMemtable, test_mds_commit_to_empty_memtable)
|
||||
{
|
||||
ObMemtable memtable;
|
||||
EXPECT_EQ(OB_SUCCESS, init_memtable(memtable));
|
||||
ObTabletTxMultiSourceDataUnit tablet_status;
|
||||
tablet_status.tablet_status_ = ObTabletStatus::NORMAL;
|
||||
bool is_callback = true;
|
||||
bool for_replay = true;
|
||||
share::SCN scn;
|
||||
scn.set_max();
|
||||
|
||||
|
||||
ASSERT_EQ(OB_SUCCESS, memtable.save_multi_source_data_unit(&tablet_status, scn, !for_replay, memtable::MemtableRefOp::INC_REF, !is_callback));
|
||||
memtable.key_.scn_range_.start_scn_.convert_for_gts(100);
|
||||
memtable.key_.scn_range_.end_scn_.convert_for_gts(100);
|
||||
ASSERT_EQ(1, tablet_status.get_unsync_cnt_for_multi_data());
|
||||
ASSERT_EQ(OB_SUCCESS, scn.convert_for_gts(102));
|
||||
ASSERT_EQ(OB_SUCCESS, memtable.save_multi_source_data_unit(&tablet_status, scn, for_replay, memtable::MemtableRefOp::DEC_REF, is_callback));
|
||||
ASSERT_EQ(0, tablet_status.get_unsync_cnt_for_multi_data());
|
||||
ASSERT_EQ(OB_SUCCESS, scn.convert_for_gts(101));
|
||||
ASSERT_EQ(scn, memtable.get_end_scn());
|
||||
}
|
||||
|
||||
|
||||
}// end of oceanbase
|
||||
|
||||
|
Reference in New Issue
Block a user