get kv from tablet

This commit is contained in:
renju96
2024-01-09 11:48:55 +00:00
committed by ob-robot
parent f29560b9b4
commit e4c6364956
7 changed files with 19 additions and 13 deletions

View File

@ -112,6 +112,7 @@ protected:
ObSSTable sstable_;
storage::ObDDLMemtable ddl_kv_;
storage::ObDDLKVHandle ddl_kvs_;
ObDDLKV *ddl_kv_ptr_;
ObSSTableIndexBuilder *root_index_builder_;
ObSSTableIndexBuilder *merge_root_index_builder_;
ObMicroBlockData root_block_data_buf_;
@ -319,6 +320,7 @@ void TestIndexBlockDataPrepare::TearDown()
partial_sstable_.reset();
ddl_kv_.reset();
ddl_kvs_.reset();
ddl_kv_ptr_ = nullptr;
cg_read_info_handle_.reset();
if (nullptr != root_block_data_buf_.buf_) {
allocator_.free((void *)root_block_data_buf_.buf_);
@ -1181,6 +1183,9 @@ void TestIndexBlockDataPrepare::prepare_merge_ddl_kvs()
ASSERT_EQ(OB_SUCCESS, tablet_handle.get_obj()->get_ddl_kv_mgr(ddl_kv_mgr_handle, true /*CREATE*/));
ddl_kv_mgr_handle.get_obj()->set_ddl_kv(0, ddl_kvs_);
ddl_kv_mgr_handle.get_obj()->freeze_ddl_kv(ddl_start_scn, sstable_.get_data_version(), 4000, ddl_start_scn);
ddl_kv_ptr_ = ddl_kvs_.get_obj();
tablet_handle.get_obj()->ddl_kvs_ = &ddl_kv_ptr_;
tablet_handle.get_obj()->ddl_kv_count_ = 1;
SMART_VAR(ObSSTableSecMetaIterator, meta_iter) {
ObDatumRange query_range;
query_range.set_whole_range();

View File

@ -110,6 +110,8 @@ void TestDDLMergeRowMultiScanner::SetUp()
void TestDDLMergeRowMultiScanner::TearDown()
{
tablet_handle_.get_obj()->ddl_kv_count_ = 0;
tablet_handle_.get_obj()->ddl_kvs_ = nullptr;
tablet_handle_.reset();
TestIndexBlockDataPrepare::TearDown();
}

View File

@ -107,6 +107,8 @@ void TestDDLMergeRowScanner::SetUp()
void TestDDLMergeRowScanner::TearDown()
{
tablet_handle_.get_obj()->ddl_kv_count_ = 0;
tablet_handle_.get_obj()->ddl_kvs_ = nullptr;
tablet_handle_.reset();
TestIndexBlockDataPrepare::TearDown();
}

View File

@ -81,6 +81,8 @@ void TestIndexSSTableEstimator::SetUp()
void TestIndexSSTableEstimator::TearDown()
{
destroy_query_param();
tablet_handle_.get_obj()->ddl_kv_count_ = 0;
tablet_handle_.get_obj()->ddl_kvs_ = nullptr;
tablet_handle_.reset();
TestIndexBlockDataPrepare::TearDown();
}

View File

@ -84,6 +84,8 @@ void TestMultiVersionIndexSSTableEstimator::SetUp()
void TestMultiVersionIndexSSTableEstimator::TearDown()
{
destroy_query_param();
tablet_handle_.get_obj()->ddl_kv_count_ = 0;
tablet_handle_.get_obj()->ddl_kvs_ = nullptr;
tablet_handle_.reset();
TestIndexBlockDataPrepare::TearDown();
}

View File

@ -1192,23 +1192,15 @@ int ObDDLMergeBlockRowIterator::get_readable_ddl_kvs(const ObIndexBlockIterParam
} else {
ObTablet *cur_tablet = const_cast<ObTablet *>(iter_param.tablet_);
const uint16_t sstable_cg_idx = iter_param.sstable_->get_key().get_column_group_id();
ObDDLKvMgrHandle ddl_kv_mgr_handle;
ObArray<ObDDLKVHandle> ddl_kvs_handle;
ObArray<ObDDLKV *> ddl_kvs;
if (OB_ISNULL(cur_tablet)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("tablet is null", K(ret), KP(cur_tablet));
} else if (OB_FAIL(cur_tablet->get_ddl_kv_mgr(ddl_kv_mgr_handle))) {
if (OB_ENTRY_NOT_EXIST == ret) {
ret = OB_SUCCESS;
LOG_INFO("ddl kv mgr not exist", K(ret), K(iter_param), KPC(cur_tablet));
} else if (OB_FAIL(cur_tablet->get_ddl_kvs(ddl_kvs))) {
LOG_WARN("failed to get ddl kvs array from tablet", K(ret));
} else {
LOG_WARN("get ddl kv mgr failed", K(ret), K(iter_param), KPC(cur_tablet));
}
} else if (OB_FAIL(ddl_kv_mgr_handle.get_obj()->get_ddl_kvs(false/*not frozen_only*/, ddl_kvs_handle))) {
LOG_WARN("get freezed ddl kv failed", K(ret), K(ddl_kv_mgr_handle));
} else {
for (int64_t i = 0; OB_SUCC(ret) && i < ddl_kvs_handle.count(); ++i) {
ObDDLKV *ddl_kv = ddl_kvs_handle.at(i).get_obj();
for (int64_t i = 0; OB_SUCC(ret) && i < ddl_kvs.count(); ++i) {
ObDDLKV *ddl_kv = ddl_kvs.at(i);
bool skip = false;
for (int64_t j = 0; OB_SUCC(ret) && j < ddl_kv->get_ddl_memtables().count(); ++j) {
ObDDLMemtable *cur_ddl_memtable = ddl_kv->get_ddl_memtables().at(j);

View File

@ -5585,6 +5585,7 @@ void ObLSTabletService::dump_diag_info_for_old_row_loss(
access_param.iter_param_.tablet_id_ = data_table.tablet_iter_.get_tablet()->get_tablet_meta().tablet_id_;
access_param.iter_param_.read_info_ = read_info;
access_param.iter_param_.out_cols_project_ = &out_col_pros;
access_param.iter_param_.set_tablet_handle(data_table.get_tablet_handle());
ObStoreRowIterator *getter = nullptr;
ObITable *table = nullptr;