Hard-code innodb_page_size as the undo log page size.

InnoDB undo logs currently always use the innodb_page_size,
whether they are stored in the system tablespace, in a
dedicated undo tablespace, or in the temporary tablespace.
Remove redundant page_size parameters.

TrxUndoRsegsIterator::set_next(): return bool instead of page_size.
This commit is contained in:
Marko Mäkelä 2017-03-09 22:06:22 +02:00
commit a20340cf85
14 changed files with 84 additions and 200 deletions

View file

@ -178,14 +178,8 @@ trx_undo_get_prev_rec_from_prev_page(
space = page_get_space_id(undo_page);
bool found;
const page_size_t& page_size = fil_space_get_page_size(space,
&found);
ut_ad(found);
buf_block_t* block = buf_page_get(
page_id_t(space, prev_page_no), page_size,
page_id_t(space, prev_page_no), univ_page_size,
shared ? RW_S_LATCH : RW_X_LATCH, mtr);
buf_block_dbg_add_level(block, SYNC_TRX_UNDO_PAGE);
@ -225,7 +219,6 @@ trx_undo_get_prev_rec(
/** Gets the next record in an undo log from the next page.
@param[in] space undo log header space
@param[in] page_size page size
@param[in] undo_page undo log page
@param[in] page_no undo log header page number
@param[in] offset undo log header offset on page
@ -236,7 +229,6 @@ static
trx_undo_rec_t*
trx_undo_get_next_rec_from_next_page(
ulint space,
const page_size_t& page_size,
const page_t* undo_page,
ulint page_no,
ulint offset,
@ -271,10 +263,10 @@ trx_undo_get_next_rec_from_next_page(
if (mode == RW_S_LATCH) {
next_page = trx_undo_page_get_s_latched(
next_page_id, page_size, mtr);
next_page_id, mtr);
} else {
ut_ad(mode == RW_X_LATCH);
next_page = trx_undo_page_get(next_page_id, page_size, mtr);
next_page = trx_undo_page_get(next_page_id, mtr);
}
return(trx_undo_page_get_first_rec(next_page, page_no, offset));
@ -302,13 +294,7 @@ trx_undo_get_next_rec(
space = page_get_space_id(page_align(rec));
bool found;
const page_size_t& page_size = fil_space_get_page_size(space,
&found);
ut_ad(found);
return(trx_undo_get_next_rec_from_next_page(space, page_size,
return(trx_undo_get_next_rec_from_next_page(space,
page_align(rec),
page_no, offset,
RW_S_LATCH, mtr));
@ -316,7 +302,6 @@ trx_undo_get_next_rec(
/** Gets the first record in an undo log.
@param[in] space undo log header space
@param[in] page_size page size
@param[in] page_no undo log header page number
@param[in] offset undo log header offset on page
@param[in] mode latching mode: RW_S_LATCH or RW_X_LATCH
@ -325,7 +310,6 @@ trx_undo_get_next_rec(
trx_undo_rec_t*
trx_undo_get_first_rec(
ulint space,
const page_size_t& page_size,
ulint page_no,
ulint offset,
ulint mode,
@ -337,10 +321,9 @@ trx_undo_get_first_rec(
const page_id_t page_id(space, page_no);
if (mode == RW_S_LATCH) {
undo_page = trx_undo_page_get_s_latched(
page_id, page_size, mtr);
undo_page = trx_undo_page_get_s_latched(page_id, mtr);
} else {
undo_page = trx_undo_page_get(page_id, page_size, mtr);
undo_page = trx_undo_page_get(page_id, mtr);
}
rec = trx_undo_page_get_first_rec(undo_page, page_no, offset);
@ -349,7 +332,7 @@ trx_undo_get_first_rec(
return(rec);
}
return(trx_undo_get_next_rec_from_next_page(space, page_size,
return(trx_undo_get_next_rec_from_next_page(space,
undo_page, page_no, offset,
mode, mtr));
}
@ -911,8 +894,7 @@ trx_undo_add_page(
}
header_page = trx_undo_page_get(
page_id_t(undo->space, undo->hdr_page_no),
undo->page_size, mtr);
page_id_t(undo->space, undo->hdr_page_no), mtr);
if (!fsp_reserve_free_extents(&n_reserved, undo->space, 1,
FSP_UNDO, mtr)) {
@ -977,11 +959,9 @@ trx_undo_free_page(
ut_a(hdr_page_no != page_no);
ut_ad(mutex_own(&(rseg->mutex)));
undo_page = trx_undo_page_get(
page_id_t(space, page_no), rseg->page_size, mtr);
undo_page = trx_undo_page_get(page_id_t(space, page_no), mtr);
header_page = trx_undo_page_get(
page_id_t(space, hdr_page_no), rseg->page_size, mtr);
header_page = trx_undo_page_get(page_id_t(space, hdr_page_no), mtr);
flst_remove(header_page + TRX_UNDO_SEG_HDR + TRX_UNDO_PAGE_LIST,
undo_page + TRX_UNDO_PAGE_HDR + TRX_UNDO_PAGE_NODE, mtr);
@ -994,8 +974,7 @@ trx_undo_free_page(
rseg->curr_size--;
if (in_history) {
rseg_header = trx_rsegf_get(space, rseg->page_no,
rseg->page_size, mtr);
rseg_header = trx_rsegf_get(space, rseg->page_no, mtr);
hist_size = mtr_read_ulint(rseg_header + TRX_RSEG_HISTORY_SIZE,
MLOG_4BYTES, mtr);
@ -1036,7 +1015,6 @@ trx_undo_free_last_page_func(
Other undo logs may still have records on that page, if it is an update
undo log.
@param[in] space space
@param[in] page_size page size
@param[in] hdr_page_no header page number
@param[in] hdr_offset header offset
@param[in,out] mtr mini-transaction */
@ -1044,7 +1022,6 @@ static
void
trx_undo_empty_header_page(
ulint space,
const page_size_t& page_size,
ulint hdr_page_no,
ulint hdr_offset,
mtr_t* mtr)
@ -1053,8 +1030,7 @@ trx_undo_empty_header_page(
trx_ulogf_t* log_hdr;
ulint end;
header_page = trx_undo_page_get(
page_id_t(space, hdr_page_no), page_size, mtr);
header_page = trx_undo_page_get(page_id_t(space, hdr_page_no), mtr);
log_hdr = header_page + hdr_offset;
@ -1099,8 +1075,7 @@ trx_undo_truncate_end_func(
last_page_no = undo->last_page_no;
undo_page = trx_undo_page_get(
page_id_t(undo->space, last_page_no),
undo->page_size, &mtr);
page_id_t(undo->space, last_page_no), &mtr);
rec = trx_undo_page_get_last_rec(undo_page, undo->hdr_page_no,
undo->hdr_offset);
@ -1172,8 +1147,7 @@ loop:
mtr.set_log_mode(MTR_LOG_NO_REDO);
}
rec = trx_undo_get_first_rec(rseg->space, rseg->page_size,
hdr_page_no, hdr_offset,
rec = trx_undo_get_first_rec(rseg->space, hdr_page_no, hdr_offset,
RW_X_LATCH, &mtr);
if (rec == NULL) {
/* Already empty */
@ -1197,7 +1171,7 @@ loop:
page_no = page_get_page_no(undo_page);
if (page_no == hdr_page_no) {
trx_undo_empty_header_page(rseg->space, rseg->page_size,
trx_undo_empty_header_page(rseg->space,
hdr_page_no, hdr_offset,
&mtr);
} else {
@ -1240,7 +1214,7 @@ trx_undo_seg_free(
seg_header = trx_undo_page_get(page_id_t(undo->space,
undo->hdr_page_no),
undo->page_size, &mtr)
&mtr)
+ TRX_UNDO_SEG_HDR;
file_seg = seg_header + TRX_UNDO_FSEG_HEADER;
@ -1250,8 +1224,7 @@ trx_undo_seg_free(
if (finished) {
/* Update the rseg header */
rseg_header = trx_rsegf_get(
rseg->space, rseg->page_no, rseg->page_size,
&mtr);
rseg->space, rseg->page_no, &mtr);
trx_rsegf_set_nth_undo(rseg_header, undo->id, FIL_NULL,
&mtr);
@ -1296,8 +1269,7 @@ trx_undo_mem_create_at_db_start(
ut_a(id < TRX_RSEG_N_SLOTS);
undo_page = trx_undo_page_get(
page_id_t(rseg->space, page_no), rseg->page_size, mtr);
undo_page = trx_undo_page_get(page_id_t(rseg->space, page_no), mtr);
page_header = undo_page + TRX_UNDO_PAGE_HDR;
@ -1349,8 +1321,7 @@ trx_undo_mem_create_at_db_start(
undo->top_page_no = last_addr.page;
last_page = trx_undo_page_get(
page_id_t(rseg->space, undo->last_page_no),
rseg->page_size, mtr);
page_id_t(rseg->space, undo->last_page_no), mtr);
rec = trx_undo_page_get_last_rec(last_page, page_no, offset);
@ -1405,8 +1376,7 @@ trx_undo_lists_init(
mtr_start(&mtr);
rseg_header = trx_rsegf_get_new(
rseg->space, rseg->page_no, rseg->page_size, &mtr);
rseg_header = trx_rsegf_get_new(rseg->space, rseg->page_no, &mtr);
for (i = 0; i < TRX_RSEG_N_SLOTS; i++) {
ulint page_no;
@ -1433,8 +1403,7 @@ trx_undo_lists_init(
mtr_start(&mtr);
rseg_header = trx_rsegf_get(
rseg->space, rseg->page_no, rseg->page_size,
&mtr);
rseg->space, rseg->page_no, &mtr);
/* Found a used slot */
MONITOR_INC(MONITOR_NUM_UNDO_SLOT_USED);
@ -1488,7 +1457,6 @@ trx_undo_mem_create(
undo->rseg = rseg;
undo->space = rseg->space;
undo->page_size.copy_from(rseg->page_size);
undo->hdr_page_no = page_no;
undo->hdr_offset = offset;
undo->last_page_no = page_no;
@ -1577,8 +1545,7 @@ trx_undo_create(
rseg->curr_size++;
rseg_header = trx_rsegf_get(rseg->space, rseg->page_no,
rseg->page_size, mtr);
rseg_header = trx_rsegf_get(rseg->space, rseg->page_no, mtr);
err = trx_undo_seg_create(rseg, rseg_header, type, &id,
&undo_page, mtr);
@ -1660,8 +1627,7 @@ trx_undo_reuse_cached(
ut_a(undo->id < TRX_RSEG_N_SLOTS);
undo_page = trx_undo_page_get(
page_id_t(undo->space, undo->hdr_page_no),
undo->page_size, mtr);
page_id_t(undo->space, undo->hdr_page_no), mtr);
if (type == TRX_UNDO_INSERT) {
offset = trx_undo_insert_header_reuse(undo_page, trx_id, mtr);
@ -1698,8 +1664,7 @@ trx_undo_mark_as_dict_operation(
page_t* hdr_page;
hdr_page = trx_undo_page_get(
page_id_t(undo->space, undo->hdr_page_no),
undo->page_size, mtr);
page_id_t(undo->space, undo->hdr_page_no), mtr);
switch (trx_get_dict_operation(trx)) {
case TRX_DICT_OP_NONE:
@ -1828,8 +1793,7 @@ trx_undo_set_state_at_finish(
ut_a(undo->id < TRX_RSEG_N_SLOTS);
undo_page = trx_undo_page_get(
page_id_t(undo->space, undo->hdr_page_no),
undo->page_size, mtr);
page_id_t(undo->space, undo->hdr_page_no), mtr);
seg_hdr = undo_page + TRX_UNDO_SEG_HDR;
page_hdr = undo_page + TRX_UNDO_PAGE_HDR;
@ -1877,8 +1841,7 @@ trx_undo_set_state_at_prepare(
ut_a(undo->id < TRX_RSEG_N_SLOTS);
undo_page = trx_undo_page_get(
page_id_t(undo->space, undo->hdr_page_no),
undo->page_size, mtr);
page_id_t(undo->space, undo->hdr_page_no), mtr);
seg_hdr = undo_page + TRX_UNDO_SEG_HDR;
@ -2123,10 +2086,9 @@ trx_undo_truncate_tablespace(
trx_rseg_t* rseg = undo_trunc->get_ith_rseg(i);
rseg->page_no = trx_rseg_header_create(
space_id, univ_page_size, ULINT_MAX, rseg->id, &mtr);
space_id, ULINT_MAX, rseg->id, &mtr);
rseg_header = trx_rsegf_get_new(
space_id, rseg->page_no, rseg->page_size, &mtr);
rseg_header = trx_rsegf_get_new(space_id, rseg->page_no, &mtr);
/* Before re-initialization ensure that we free the existing
structure. There can't be any active transactions. */