Commit b36200d3 authored by marko's avatar marko

branches/zip: Minor cleanup.

trx_undo_report_row_operation(), trx_undo_report_dict_operation():
Reduce the scope of some variables.  Move the return(DB_SUCCESS)
case inside the for loop.
parent b9437998
...@@ -1237,7 +1237,6 @@ trx_undo_report_row_operation( ...@@ -1237,7 +1237,6 @@ trx_undo_report_row_operation(
{ {
trx_t* trx; trx_t* trx;
trx_undo_t* undo; trx_undo_t* undo;
ulint offset;
ulint page_no; ulint page_no;
trx_rseg_t* rseg; trx_rseg_t* rseg;
mtr_t mtr; mtr_t mtr;
...@@ -1310,6 +1309,7 @@ trx_undo_report_row_operation( ...@@ -1310,6 +1309,7 @@ trx_undo_report_row_operation(
for (;;) { for (;;) {
buf_block_t* undo_block; buf_block_t* undo_block;
page_t* undo_page; page_t* undo_page;
ulint offset;
undo_block = buf_page_get_gen(undo->space, undo->zip_size, undo_block = buf_page_get_gen(undo->space, undo->zip_size,
page_no, RW_X_LATCH, page_no, RW_X_LATCH,
...@@ -1329,7 +1329,7 @@ trx_undo_report_row_operation( ...@@ -1329,7 +1329,7 @@ trx_undo_report_row_operation(
cmpl_info, &mtr); cmpl_info, &mtr);
} }
if (offset == 0) { if (UNIV_UNLIKELY(offset == 0)) {
/* The record did not fit on the page. We erase the /* The record did not fit on the page. We erase the
end segment of the undo log page and write a log end segment of the undo log page and write a log
record of it: this is to ensure that in the debug record of it: this is to ensure that in the debug
...@@ -1352,7 +1352,14 @@ trx_undo_report_row_operation( ...@@ -1352,7 +1352,14 @@ trx_undo_report_row_operation(
UT_DULINT_INC(trx->undo_no); UT_DULINT_INC(trx->undo_no);
mutex_exit(&trx->undo_mutex); mutex_exit(&trx->undo_mutex);
break;
*roll_ptr = trx_undo_build_roll_ptr(
op_type == TRX_UNDO_INSERT_OP,
rseg->id, page_no, offset);
if (UNIV_LIKELY_NULL(heap)) {
mem_heap_free(heap);
}
return(DB_SUCCESS);
} }
ut_ad(page_no == undo->last_page_no); ut_ad(page_no == undo->last_page_no);
...@@ -1382,13 +1389,6 @@ trx_undo_report_row_operation( ...@@ -1382,13 +1389,6 @@ trx_undo_report_row_operation(
return(DB_OUT_OF_FILE_SPACE); return(DB_OUT_OF_FILE_SPACE);
} }
} }
*roll_ptr = trx_undo_build_roll_ptr(op_type == TRX_UNDO_INSERT_OP,
rseg->id, page_no, offset);
if (UNIV_LIKELY_NULL(heap)) {
mem_heap_free(heap);
}
return(DB_SUCCESS);
} }
/*************************************************************************** /***************************************************************************
...@@ -1419,8 +1419,6 @@ trx_undo_report_dict_operation( ...@@ -1419,8 +1419,6 @@ trx_undo_report_dict_operation(
inserted undo log record */ inserted undo log record */
{ {
trx_undo_t* undo; trx_undo_t* undo;
buf_block_t* undo_block;
ulint offset;
ulint page_no; ulint page_no;
trx_rseg_t* rseg; trx_rseg_t* rseg;
mtr_t mtr; mtr_t mtr;
...@@ -1469,6 +1467,9 @@ trx_undo_report_dict_operation( ...@@ -1469,6 +1467,9 @@ trx_undo_report_dict_operation(
mtr_start(&mtr); mtr_start(&mtr);
for (;;) { for (;;) {
buf_block_t* undo_block;
ulint offset;
undo_block = buf_page_get_gen(undo->space, undo->zip_size, undo_block = buf_page_get_gen(undo->space, undo->zip_size,
page_no, RW_X_LATCH, page_no, RW_X_LATCH,
undo->guess_block, BUF_GET, undo->guess_block, BUF_GET,
...@@ -1515,7 +1516,7 @@ trx_undo_report_dict_operation( ...@@ -1515,7 +1516,7 @@ trx_undo_report_dict_operation(
return(DB_ERROR); return(DB_ERROR);
} }
if (offset == 0) { if (UNIV_UNLIKELY(offset == 0)) {
/* The record did not fit on the page. We erase the /* The record did not fit on the page. We erase the
end segment of the undo log page and write a log end segment of the undo log page and write a log
record of it: this is to ensure that in the debug record of it: this is to ensure that in the debug
...@@ -1523,14 +1524,25 @@ trx_undo_report_dict_operation( ...@@ -1523,14 +1524,25 @@ trx_undo_report_dict_operation(
records stays identical to the original page */ records stays identical to the original page */
trx_undo_erase_page_end(undo_block->frame, &mtr); trx_undo_erase_page_end(undo_block->frame, &mtr);
}
mtr_commit(&mtr); mtr_commit(&mtr);
} else {
if (offset != 0) {
/* Success */ /* Success */
mtr_commit(&mtr);
break; undo->empty = FALSE;
undo->top_page_no = page_no;
undo->top_offset = offset;
undo->top_undo_no = trx->undo_no;
undo->guess_block = undo_block;
UT_DULINT_INC(trx->undo_no);
mutex_exit(&(trx->undo_mutex));
*roll_ptr = trx_undo_build_roll_ptr(TRUE, rseg->id,
page_no, offset);
return(DB_SUCCESS);
} }
ut_ad(page_no == undo->last_page_no); ut_ad(page_no == undo->last_page_no);
...@@ -1558,20 +1570,6 @@ trx_undo_report_dict_operation( ...@@ -1558,20 +1570,6 @@ trx_undo_report_dict_operation(
return(DB_OUT_OF_FILE_SPACE); return(DB_OUT_OF_FILE_SPACE);
} }
} }
undo->empty = FALSE;
undo->top_page_no = page_no;
undo->top_offset = offset;
undo->top_undo_no = trx->undo_no;
undo->guess_block = undo_block;
UT_DULINT_INC(trx->undo_no);
mutex_exit(&(trx->undo_mutex));
*roll_ptr = trx_undo_build_roll_ptr(TRUE, rseg->id, page_no, offset);
return(DB_SUCCESS);
} }
/*============== BUILDING PREVIOUS VERSION OF A RECORD ===============*/ /*============== BUILDING PREVIOUS VERSION OF A RECORD ===============*/
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment