From ad8f509b1bdc098f6a095412c231072a038481d7 Mon Sep 17 00:00:00 2001 From: saltonz Date: Thu, 20 Jul 2023 13:24:43 +0000 Subject: [PATCH] [CP] reuse datum row before get row in different micro block --- src/storage/blocksstable/ob_index_block_tree_cursor.cpp | 2 ++ src/storage/blocksstable/ob_macro_block_bare_iterator.cpp | 1 + src/storage/blocksstable/ob_macro_block_writer.cpp | 2 ++ src/storage/blocksstable/ob_sstable_sec_meta_iterator.cpp | 1 + 4 files changed, 6 insertions(+) diff --git a/src/storage/blocksstable/ob_index_block_tree_cursor.cpp b/src/storage/blocksstable/ob_index_block_tree_cursor.cpp index 04a0643f2..3863c0346 100755 --- a/src/storage/blocksstable/ob_index_block_tree_cursor.cpp +++ b/src/storage/blocksstable/ob_index_block_tree_cursor.cpp @@ -1080,6 +1080,7 @@ int ObIndexBlockTreeCursor::read_next_level_row(const int64_t row_idx) LOG_WARN("Fail to init index row parser with transformed index data", K(ret), K(row_idx), KPC(idx_data_header)); } + } else if (FALSE_IT(row_.reuse())) { } else if (OB_FAIL(reader_->get_row(row_idx, row_))) { LOG_WARN("Fail to read row", K(ret), K(row_idx)); } else if (OB_FAIL(idx_row_parser_.init(rowkey_column_cnt_, row_))) { @@ -1168,6 +1169,7 @@ int ObIndexBlockTreeCursor::get_micro_block_endkeys( } else { for (int64_t i = begin_idx; OB_SUCC(ret) && i <= end_idx; ++i) { ObDatumRowkey rowkey, endkey; + row_.reuse(); if (OB_FAIL(reader_->get_row(i, row_))) { LOG_WARN("Fail to get row from micro block", K(ret), K(i)); } else if (OB_FAIL(rowkey.assign(row_.storage_datums_, rowkey_column_cnt_))) { diff --git a/src/storage/blocksstable/ob_macro_block_bare_iterator.cpp b/src/storage/blocksstable/ob_macro_block_bare_iterator.cpp index fb0ae1c99..1dc1ea171 100644 --- a/src/storage/blocksstable/ob_macro_block_bare_iterator.cpp +++ b/src/storage/blocksstable/ob_macro_block_bare_iterator.cpp @@ -425,6 +425,7 @@ int ObMacroBlockRowBareIterator::open( int ObMacroBlockRowBareIterator::get_next_row(const ObDatumRow *&row) { int ret = OB_SUCCESS; + row_.reuse(); if (IS_NOT_INIT) { ret = OB_NOT_INIT; LOG_WARN("Iterator not inited", K(ret)); diff --git a/src/storage/blocksstable/ob_macro_block_writer.cpp b/src/storage/blocksstable/ob_macro_block_writer.cpp index 9f0159a59..f2d33608e 100644 --- a/src/storage/blocksstable/ob_macro_block_writer.cpp +++ b/src/storage/blocksstable/ob_macro_block_writer.cpp @@ -165,6 +165,7 @@ int ObMicroBlockBufferHelper::check_micro_block_checksum( } else { int64_t new_checksum = 0; for (int64_t it = 0; OB_SUCC(ret) && it != micro_reader->row_count(); ++it) { + check_datum_row_.reuse(); if (OB_FAIL(micro_reader->get_row(it, check_datum_row_))) { STORAGE_LOG(WARN, "get_row failed", K(ret), K(it), K(*data_store_desc_)); } else { @@ -216,6 +217,7 @@ void ObMicroBlockBufferHelper::print_micro_block_row(ObIMicroBlockReader *micro_ } else { int64_t new_checksum = 0; for (int64_t it = 0; OB_SUCC(ret) && it != micro_reader->row_count(); ++it) { + check_datum_row_.reuse(); if (OB_FAIL(micro_reader->get_row(it, check_datum_row_))) { STORAGE_LOG(WARN, "get_row failed", K(ret), K(it), K(*data_store_desc_)); } else { diff --git a/src/storage/blocksstable/ob_sstable_sec_meta_iterator.cpp b/src/storage/blocksstable/ob_sstable_sec_meta_iterator.cpp index eef994742..2f5e6eb0e 100644 --- a/src/storage/blocksstable/ob_sstable_sec_meta_iterator.cpp +++ b/src/storage/blocksstable/ob_sstable_sec_meta_iterator.cpp @@ -206,6 +206,7 @@ int ObSSTableSecMetaIterator::get_next(ObDataMacroBlockMeta ¯o_meta) { int ret = OB_SUCCESS; MacroBlockId macro_id; + row_.reuse(); if (IS_NOT_INIT) { ret = OB_NOT_INIT; LOG_WARN("Secondary meta iterator not inited", K(ret));