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_; ObSSTable sstable_;
storage::ObDDLMemtable ddl_kv_; storage::ObDDLMemtable ddl_kv_;
storage::ObDDLKVHandle ddl_kvs_; storage::ObDDLKVHandle ddl_kvs_;
ObDDLKV *ddl_kv_ptr_;
ObSSTableIndexBuilder *root_index_builder_; ObSSTableIndexBuilder *root_index_builder_;
ObSSTableIndexBuilder *merge_root_index_builder_; ObSSTableIndexBuilder *merge_root_index_builder_;
ObMicroBlockData root_block_data_buf_; ObMicroBlockData root_block_data_buf_;
@ -319,6 +320,7 @@ void TestIndexBlockDataPrepare::TearDown()
partial_sstable_.reset(); partial_sstable_.reset();
ddl_kv_.reset(); ddl_kv_.reset();
ddl_kvs_.reset(); ddl_kvs_.reset();
ddl_kv_ptr_ = nullptr;
cg_read_info_handle_.reset(); cg_read_info_handle_.reset();
if (nullptr != root_block_data_buf_.buf_) { if (nullptr != root_block_data_buf_.buf_) {
allocator_.free((void *)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*/)); 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()->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_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) { SMART_VAR(ObSSTableSecMetaIterator, meta_iter) {
ObDatumRange query_range; ObDatumRange query_range;
query_range.set_whole_range(); query_range.set_whole_range();

View File

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

View File

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

View File

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

View File

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

View File

@ -1192,23 +1192,15 @@ int ObDDLMergeBlockRowIterator::get_readable_ddl_kvs(const ObIndexBlockIterParam
} else { } else {
ObTablet *cur_tablet = const_cast<ObTablet *>(iter_param.tablet_); ObTablet *cur_tablet = const_cast<ObTablet *>(iter_param.tablet_);
const uint16_t sstable_cg_idx = iter_param.sstable_->get_key().get_column_group_id(); const uint16_t sstable_cg_idx = iter_param.sstable_->get_key().get_column_group_id();
ObDDLKvMgrHandle ddl_kv_mgr_handle; ObArray<ObDDLKV *> ddl_kvs;
ObArray<ObDDLKVHandle> ddl_kvs_handle;
if (OB_ISNULL(cur_tablet)) { if (OB_ISNULL(cur_tablet)) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("tablet is null", K(ret), KP(cur_tablet)); LOG_WARN("tablet is null", K(ret), KP(cur_tablet));
} else if (OB_FAIL(cur_tablet->get_ddl_kv_mgr(ddl_kv_mgr_handle))) { } else if (OB_FAIL(cur_tablet->get_ddl_kvs(ddl_kvs))) {
if (OB_ENTRY_NOT_EXIST == ret) { LOG_WARN("failed to get ddl kvs array from tablet", K(ret));
ret = OB_SUCCESS;
LOG_INFO("ddl kv mgr not exist", K(ret), K(iter_param), KPC(cur_tablet));
} 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 { } else {
for (int64_t i = 0; OB_SUCC(ret) && i < ddl_kvs_handle.count(); ++i) { for (int64_t i = 0; OB_SUCC(ret) && i < ddl_kvs.count(); ++i) {
ObDDLKV *ddl_kv = ddl_kvs_handle.at(i).get_obj(); ObDDLKV *ddl_kv = ddl_kvs.at(i);
bool skip = false; bool skip = false;
for (int64_t j = 0; OB_SUCC(ret) && j < ddl_kv->get_ddl_memtables().count(); ++j) { 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); 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_.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_.read_info_ = read_info;
access_param.iter_param_.out_cols_project_ = &out_col_pros; 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; ObStoreRowIterator *getter = nullptr;
ObITable *table = nullptr; ObITable *table = nullptr;