[CP] reuse datum row before get row in different micro block

This commit is contained in:
saltonz 2023-07-20 13:24:43 +00:00 committed by ob-robot
parent 19c84854fc
commit ad8f509b1b
4 changed files with 6 additions and 0 deletions

View File

@ -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_))) {

View File

@ -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));

View File

@ -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 {

View File

@ -206,6 +206,7 @@ int ObSSTableSecMetaIterator::get_next(ObDataMacroBlockMeta &macro_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));