mirror of
https://github.com/MariaDB/server.git
synced 2026-05-16 20:07:13 +02:00
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:
parent
0ef91c8958
commit
a20340cf85
14 changed files with 84 additions and 200 deletions
|
|
@ -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. */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue