get kv from tablet
This commit is contained in:
		@ -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();
 | 
			
		||||
 | 
			
		||||
@ -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();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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 {
 | 
			
		||||
        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);
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user