From e4c6364956c8043e94c9279d905e40571a22416c Mon Sep 17 00:00:00 2001 From: renju96 Date: Tue, 9 Jan 2024 11:48:55 +0000 Subject: [PATCH] get kv from tablet --- .../blocksstable/ob_index_block_data_prepare.h | 5 +++++ .../test_ddl_merge_row_multi_scanner.cpp | 2 ++ .../test_ddl_merge_row_scanner.cpp | 2 ++ .../storage/test_index_sstable_estimator.cpp | 2 ++ .../test_index_sstable_multi_estimator.cpp | 2 ++ .../ob_ddl_index_block_row_iterator.cpp | 18 +++++------------- src/storage/ls/ob_ls_tablet_service.cpp | 1 + 7 files changed, 19 insertions(+), 13 deletions(-) diff --git a/mittest/mtlenv/storage/blocksstable/ob_index_block_data_prepare.h b/mittest/mtlenv/storage/blocksstable/ob_index_block_data_prepare.h index 9e394d55d6..d7e67da953 100644 --- a/mittest/mtlenv/storage/blocksstable/ob_index_block_data_prepare.h +++ b/mittest/mtlenv/storage/blocksstable/ob_index_block_data_prepare.h @@ -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(); diff --git a/mittest/mtlenv/storage/blocksstable/test_ddl_merge_row_multi_scanner.cpp b/mittest/mtlenv/storage/blocksstable/test_ddl_merge_row_multi_scanner.cpp index 6e145c3252..9efa17d893 100644 --- a/mittest/mtlenv/storage/blocksstable/test_ddl_merge_row_multi_scanner.cpp +++ b/mittest/mtlenv/storage/blocksstable/test_ddl_merge_row_multi_scanner.cpp @@ -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(); } diff --git a/mittest/mtlenv/storage/blocksstable/test_ddl_merge_row_scanner.cpp b/mittest/mtlenv/storage/blocksstable/test_ddl_merge_row_scanner.cpp index 9177b394f1..08b5ce20b7 100644 --- a/mittest/mtlenv/storage/blocksstable/test_ddl_merge_row_scanner.cpp +++ b/mittest/mtlenv/storage/blocksstable/test_ddl_merge_row_scanner.cpp @@ -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(); } diff --git a/mittest/mtlenv/storage/test_index_sstable_estimator.cpp b/mittest/mtlenv/storage/test_index_sstable_estimator.cpp index f0005bbd41..d4aba0edbf 100644 --- a/mittest/mtlenv/storage/test_index_sstable_estimator.cpp +++ b/mittest/mtlenv/storage/test_index_sstable_estimator.cpp @@ -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(); } diff --git a/mittest/mtlenv/storage/test_index_sstable_multi_estimator.cpp b/mittest/mtlenv/storage/test_index_sstable_multi_estimator.cpp index 86242c71f8..674fc009b6 100644 --- a/mittest/mtlenv/storage/test_index_sstable_multi_estimator.cpp +++ b/mittest/mtlenv/storage/test_index_sstable_multi_estimator.cpp @@ -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(); } diff --git a/src/storage/blocksstable/index_block/ob_ddl_index_block_row_iterator.cpp b/src/storage/blocksstable/index_block/ob_ddl_index_block_row_iterator.cpp index a5ad968b19..119b1cd1ae 100644 --- a/src/storage/blocksstable/index_block/ob_ddl_index_block_row_iterator.cpp +++ b/src/storage/blocksstable/index_block/ob_ddl_index_block_row_iterator.cpp @@ -1192,23 +1192,15 @@ int ObDDLMergeBlockRowIterator::get_readable_ddl_kvs(const ObIndexBlockIterParam } else { ObTablet *cur_tablet = const_cast(iter_param.tablet_); const uint16_t sstable_cg_idx = iter_param.sstable_->get_key().get_column_group_id(); - ObDDLKvMgrHandle ddl_kv_mgr_handle; - ObArray ddl_kvs_handle; + ObArray 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 { - 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 if (OB_FAIL(cur_tablet->get_ddl_kvs(ddl_kvs))) { + LOG_WARN("failed to get ddl kvs array from tablet", K(ret)); } 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); diff --git a/src/storage/ls/ob_ls_tablet_service.cpp b/src/storage/ls/ob_ls_tablet_service.cpp index 9630d0ba19..cb07fd40c2 100644 --- a/src/storage/ls/ob_ls_tablet_service.cpp +++ b/src/storage/ls/ob_ls_tablet_service.cpp @@ -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;