summaryrefslogtreecommitdiff
path: root/storage
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2017-03-09 22:06:22 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2017-03-10 08:15:25 +0200
commita20340cf859ba1b10174d4b8ee002d1548bf102c (patch)
treee0be26cad1a7a2a75c03f128312362feb9f83a95 /storage
parent0ef91c89582fd9cacf0f7b2801351de4772ef374 (diff)
downloadmariadb-git-a20340cf859ba1b10174d4b8ee002d1548bf102c.tar.gz
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.
Diffstat (limited to 'storage')
-rw-r--r--storage/innobase/include/trx0purge.h7
-rw-r--r--storage/innobase/include/trx0rseg.h9
-rw-r--r--storage/innobase/include/trx0rseg.ic12
-rw-r--r--storage/innobase/include/trx0undo.h16
-rw-r--r--storage/innobase/include/trx0undo.ic17
-rw-r--r--storage/innobase/include/ut0stage.h1
-rw-r--r--storage/innobase/srv/srv0start.cc3
-rw-r--r--storage/innobase/trx/trx0purge.cc58
-rw-r--r--storage/innobase/trx/trx0rec.cc5
-rw-r--r--storage/innobase/trx/trx0roll.cc3
-rw-r--r--storage/innobase/trx/trx0rseg.cc46
-rw-r--r--storage/innobase/trx/trx0sys.cc6
-rw-r--r--storage/innobase/trx/trx0trx.cc7
-rw-r--r--storage/innobase/trx/trx0undo.cc94
14 files changed, 84 insertions, 200 deletions
diff --git a/storage/innobase/include/trx0purge.h b/storage/innobase/include/trx0purge.h
index 245262b794f..ef4024d9908 100644
--- a/storage/innobase/include/trx0purge.h
+++ b/storage/innobase/include/trx0purge.h
@@ -210,11 +210,8 @@ struct TrxUndoRsegsIterator {
TrxUndoRsegsIterator();
/** Sets the next rseg to purge in purge_sys.
- @return page size of the table for which the log is.
- NOTE: if rseg is NULL when this function returns this means that
- there are no rollback segments to purge and then the returned page
- size object should not be used. */
- const page_size_t set_next();
+ @return whether anything is to be purged */
+ bool set_next();
private:
// Disable copying
diff --git a/storage/innobase/include/trx0rseg.h b/storage/innobase/include/trx0rseg.h
index 5c263bf347c..a3e770b4f21 100644
--- a/storage/innobase/include/trx0rseg.h
+++ b/storage/innobase/include/trx0rseg.h
@@ -35,7 +35,6 @@ Created 3/26/1996 Heikki Tuuri
/** Gets a rollback segment header.
@param[in] space space where placed
@param[in] page_no page number of the header
-@param[in] page_size page size
@param[in,out] mtr mini-transaction
@return rollback segment header, page x-latched */
UNIV_INLINE
@@ -43,13 +42,11 @@ trx_rsegf_t*
trx_rsegf_get(
ulint space,
ulint page_no,
- const page_size_t& page_size,
mtr_t* mtr);
/** Gets a newly created rollback segment header.
@param[in] space space where placed
@param[in] page_no page number of the header
-@param[in] page_size page size
@param[in,out] mtr mini-transaction
@return rollback segment header, page x-latched */
UNIV_INLINE
@@ -57,7 +54,6 @@ trx_rsegf_t*
trx_rsegf_get_new(
ulint space,
ulint page_no,
- const page_size_t& page_size,
mtr_t* mtr);
/***************************************************************//**
@@ -104,7 +100,6 @@ trx_rseg_get_on_id(ulint id)
This function is called only when a new rollback segment is created in
the database.
@param[in] space space id
-@param[in] page_size page size
@param[in] max_size max size in pages
@param[in] rseg_slot_no rseg id == slot number in trx sys
@param[in,out] mtr mini-transaction
@@ -112,7 +107,6 @@ the database.
ulint
trx_rseg_header_create(
ulint space,
- const page_size_t& page_size,
ulint max_size,
ulint rseg_slot_no,
mtr_t* mtr);
@@ -168,9 +162,6 @@ struct trx_rseg_t {
/** page number of the rollback segment header */
ulint page_no;
- /** page size of the relevant tablespace */
- page_size_t page_size;
-
/** maximum allowed size in pages */
ulint max_size;
diff --git a/storage/innobase/include/trx0rseg.ic b/storage/innobase/include/trx0rseg.ic
index d1985baf494..0a33c747668 100644
--- a/storage/innobase/include/trx0rseg.ic
+++ b/storage/innobase/include/trx0rseg.ic
@@ -30,7 +30,6 @@ Created 3/26/1996 Heikki Tuuri
/** Gets a rollback segment header.
@param[in] space space where placed
@param[in] page_no page number of the header
-@param[in] page_size page size
@param[in,out] mtr mini-transaction
@return rollback segment header, page x-latched */
UNIV_INLINE
@@ -38,14 +37,15 @@ trx_rsegf_t*
trx_rsegf_get(
ulint space,
ulint page_no,
- const page_size_t& page_size,
mtr_t* mtr)
{
buf_block_t* block;
trx_rsegf_t* header;
+ ut_ad(space <= srv_undo_tablespaces || space == SRV_TMP_SPACE_ID);
+
block = buf_page_get(
- page_id_t(space, page_no), page_size, RW_X_LATCH, mtr);
+ page_id_t(space, page_no), univ_page_size, RW_X_LATCH, mtr);
buf_block_dbg_add_level(block, SYNC_RSEG_HEADER);
@@ -57,7 +57,6 @@ trx_rsegf_get(
/** Gets a newly created rollback segment header.
@param[in] space space where placed
@param[in] page_no page number of the header
-@param[in] page_size page size
@param[in,out] mtr mini-transaction
@return rollback segment header, page x-latched */
UNIV_INLINE
@@ -65,14 +64,15 @@ trx_rsegf_t*
trx_rsegf_get_new(
ulint space,
ulint page_no,
- const page_size_t& page_size,
mtr_t* mtr)
{
buf_block_t* block;
trx_rsegf_t* header;
+ ut_ad(space <= srv_undo_tablespaces || space == SRV_TMP_SPACE_ID);
+
block = buf_page_get(
- page_id_t(space, page_no), page_size, RW_X_LATCH, mtr);
+ page_id_t(space, page_no), univ_page_size, RW_X_LATCH, mtr);
buf_block_dbg_add_level(block, SYNC_RSEG_HEADER_NEW);
diff --git a/storage/innobase/include/trx0undo.h b/storage/innobase/include/trx0undo.h
index 1acb5b7c1ad..043d1dda22f 100644
--- a/storage/innobase/include/trx0undo.h
+++ b/storage/innobase/include/trx0undo.h
@@ -1,6 +1,7 @@
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
+Copyright (c) 2017, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@@ -98,27 +99,19 @@ trx_read_roll_ptr(
/** Gets an undo log page and x-latches it.
@param[in] page_id page id
-@param[in] page_size page size
@param[in,out] mtr mini-transaction
@return pointer to page x-latched */
UNIV_INLINE
page_t*
-trx_undo_page_get(
- const page_id_t& page_id,
- const page_size_t& page_size,
- mtr_t* mtr);
+trx_undo_page_get(const page_id_t& page_id, mtr_t* mtr);
/** Gets an undo log page and s-latches it.
@param[in] page_id page id
-@param[in] page_size page size
@param[in,out] mtr mini-transaction
@return pointer to page s-latched */
UNIV_INLINE
page_t*
-trx_undo_page_get_s_latched(
- const page_id_t& page_id,
- const page_size_t& page_size,
- mtr_t* mtr);
+trx_undo_page_get_s_latched(const page_id_t& page_id, mtr_t* mtr);
/******************************************************************//**
Returns the previous undo record on the page in the specified log, or
@@ -188,7 +181,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
@@ -197,7 +189,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,
@@ -455,7 +446,6 @@ struct trx_undo_t {
/*-----------------------------*/
ulint space; /*!< space id where the undo log
placed */
- page_size_t page_size;
ulint hdr_page_no; /*!< page number of the header page in
the undo log */
ulint hdr_offset; /*!< header offset of the undo log on
diff --git a/storage/innobase/include/trx0undo.ic b/storage/innobase/include/trx0undo.ic
index 62d9e64b13f..a0790022d7f 100644
--- a/storage/innobase/include/trx0undo.ic
+++ b/storage/innobase/include/trx0undo.ic
@@ -1,6 +1,7 @@
/*****************************************************************************
Copyright (c) 1996, 2013, Oracle and/or its affiliates. All Rights Reserved.
+Copyright (c) 2017, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@@ -153,17 +154,13 @@ trx_read_roll_ptr(
/** Gets an undo log page and x-latches it.
@param[in] page_id page id
-@param[in] page_size page size
@param[in,out] mtr mini-transaction
@return pointer to page x-latched */
UNIV_INLINE
page_t*
-trx_undo_page_get(
- const page_id_t& page_id,
- const page_size_t& page_size,
- mtr_t* mtr)
+trx_undo_page_get(const page_id_t& page_id, mtr_t* mtr)
{
- buf_block_t* block = buf_page_get(page_id, page_size,
+ buf_block_t* block = buf_page_get(page_id, univ_page_size,
RW_X_LATCH, mtr);
buf_block_dbg_add_level(block, SYNC_TRX_UNDO_PAGE);
@@ -173,17 +170,13 @@ trx_undo_page_get(
/** Gets an undo log page and s-latches it.
@param[in] page_id page id
-@param[in] page_size page size
@param[in,out] mtr mini-transaction
@return pointer to page s-latched */
UNIV_INLINE
page_t*
-trx_undo_page_get_s_latched(
- const page_id_t& page_id,
- const page_size_t& page_size,
- mtr_t* mtr)
+trx_undo_page_get_s_latched(const page_id_t& page_id, mtr_t* mtr)
{
- buf_block_t* block = buf_page_get(page_id, page_size,
+ buf_block_t* block = buf_page_get(page_id, univ_page_size,
RW_S_LATCH, mtr);
buf_block_dbg_add_level(block, SYNC_TRX_UNDO_PAGE);
diff --git a/storage/innobase/include/ut0stage.h b/storage/innobase/include/ut0stage.h
index 1cccb0b8f84..baad5cd77b4 100644
--- a/storage/innobase/include/ut0stage.h
+++ b/storage/innobase/include/ut0stage.h
@@ -1,6 +1,7 @@
/*****************************************************************************
Copyright (c) 2014, 2015, Oracle and/or its affiliates. All Rights Reserved.
+Copyright (c) 2017, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
diff --git a/storage/innobase/srv/srv0start.cc b/storage/innobase/srv/srv0start.cc
index 393ff7f7f2f..adaa8448f21 100644
--- a/storage/innobase/srv/srv0start.cc
+++ b/storage/innobase/srv/srv0start.cc
@@ -1047,8 +1047,7 @@ srv_undo_tablespaces_init(
if (space_id == *it) {
trx_rseg_header_create(
- *it, univ_page_size, ULINT_MAX,
- i, &mtr);
+ *it, ULINT_MAX, i, &mtr);
}
}
diff --git a/storage/innobase/trx/trx0purge.cc b/storage/innobase/trx/trx0purge.cc
index ec109f5d7a3..c522af5d67a 100644
--- a/storage/innobase/trx/trx0purge.cc
+++ b/storage/innobase/trx/trx0purge.cc
@@ -81,11 +81,9 @@ TrxUndoRsegsIterator::TrxUndoRsegsIterator()
}
/** Sets the next rseg to purge in purge_sys.
-@return page size of the table for which the log is.
-NOTE: if rseg is NULL when this function returns this means that
-there are no rollback segments to purge and then the returned page
-size object should not be used. */
-const page_size_t
+@return whether anything is to be purged */
+inline
+bool
TrxUndoRsegsIterator::set_next()
{
mutex_enter(&purge_sys->pq_mutex);
@@ -141,9 +139,7 @@ TrxUndoRsegsIterator::set_next()
mutex_exit(&purge_sys->pq_mutex);
purge_sys->rseg = NULL;
-
- /* return a dummy object, not going to be used by the caller */
- return(univ_page_size);
+ return false;
}
purge_sys->rseg = *m_iter++;
@@ -164,8 +160,6 @@ TrxUndoRsegsIterator::set_next()
|| is_system_tablespace(
purge_sys->rseg->space));
- const page_size_t page_size(purge_sys->rseg->page_size);
-
ut_a(purge_sys->iter.trx_no <= purge_sys->rseg->last_trx_no);
purge_sys->iter.trx_no = purge_sys->rseg->last_trx_no;
@@ -174,7 +168,7 @@ TrxUndoRsegsIterator::set_next()
mutex_exit(&purge_sys->rseg->mutex);
- return(page_size);
+ return(true);
}
/** Build a purge 'query' graph. The actual purge is performed by executing
@@ -275,9 +269,7 @@ trx_purge_add_update_undo_to_history(
undo = undo_ptr->update_undo;
rseg = undo->rseg;
- rseg_header = trx_rsegf_get(
- undo->rseg->space, undo->rseg->page_no, undo->rseg->page_size,
- mtr);
+ rseg_header = trx_rsegf_get(rseg->space, rseg->page_no, mtr);
undo_header = undo_page + undo->hdr_offset;
@@ -385,12 +377,10 @@ trx_purge_free_segment(
mutex_enter(&rseg->mutex);
- rseg_hdr = trx_rsegf_get(
- rseg->space, rseg->page_no, rseg->page_size, &mtr);
+ rseg_hdr = trx_rsegf_get(rseg->space, rseg->page_no, &mtr);
undo_page = trx_undo_page_get(
- page_id_t(rseg->space, hdr_addr.page), rseg->page_size,
- &mtr);
+ page_id_t(rseg->space, hdr_addr.page), &mtr);
seg_hdr = undo_page + TRX_UNDO_SEG_HDR;
log_hdr = undo_page + hdr_addr.boffset;
@@ -483,8 +473,7 @@ trx_purge_truncate_rseg_history(
}
mutex_enter(&(rseg->mutex));
- rseg_hdr = trx_rsegf_get(rseg->space, rseg->page_no,
- rseg->page_size, &mtr);
+ rseg_hdr = trx_rsegf_get(rseg->space, rseg->page_no, &mtr);
hdr_addr = trx_purge_get_log_from_hist(
flst_get_last(rseg_hdr + TRX_RSEG_HISTORY, &mtr));
@@ -499,7 +488,7 @@ loop:
}
undo_page = trx_undo_page_get(page_id_t(rseg->space, hdr_addr.page),
- rseg->page_size, &mtr);
+ &mtr);
log_hdr = undo_page + hdr_addr.boffset;
@@ -554,8 +543,7 @@ loop:
}
mutex_enter(&(rseg->mutex));
- rseg_hdr = trx_rsegf_get(rseg->space, rseg->page_no,
- rseg->page_size, &mtr);
+ rseg_hdr = trx_rsegf_get(rseg->space, rseg->page_no, &mtr);
hdr_addr = prev_hdr_addr;
@@ -1189,8 +1177,7 @@ trx_purge_rseg_get_next_history_log(
mtr_start(&mtr);
undo_page = trx_undo_page_get_s_latched(
- page_id_t(rseg->space, rseg->last_page_no),
- rseg->page_size, &mtr);
+ page_id_t(rseg->space, rseg->last_page_no), &mtr);
log_hdr = undo_page + rseg->last_offset;
@@ -1242,7 +1229,7 @@ trx_purge_rseg_get_next_history_log(
log_hdr = trx_undo_page_get_s_latched(page_id_t(rseg->space,
prev_log_addr.page),
- rseg->page_size, &mtr)
+ &mtr)
+ prev_log_addr.boffset;
trx_no = mach_read_from_8(log_hdr + TRX_UNDO_TRX_NO);
@@ -1275,12 +1262,10 @@ trx_purge_rseg_get_next_history_log(
mutex_exit(&rseg->mutex);
}
-/** Position the purge sys "iterator" on the undo record to use for purging.
-@param[in] page_size page size */
+/** Position the purge sys "iterator" on the undo record to use for purging. */
static
void
-trx_purge_read_undo_rec(
- const page_size_t& page_size)
+trx_purge_read_undo_rec()
{
ulint offset;
ulint page_no;
@@ -1298,7 +1283,6 @@ trx_purge_read_undo_rec(
undo_rec = trx_undo_get_first_rec(
purge_sys->rseg->space,
- page_size,
purge_sys->hdr_page_no,
purge_sys->hdr_offset, RW_S_LATCH, &mtr);
@@ -1340,10 +1324,8 @@ trx_purge_choose_next_log(void)
{
ut_ad(!purge_sys->next_stored);
- const page_size_t& page_size = purge_sys->rseg_iter.set_next();
-
- if (purge_sys->rseg != NULL) {
- trx_purge_read_undo_rec(page_size);
+ if (purge_sys->rseg_iter.set_next()) {
+ trx_purge_read_undo_rec();
} else {
/* There is nothing to do yet. */
os_thread_yield();
@@ -1378,8 +1360,6 @@ trx_purge_get_next_rec(
page_no = purge_sys->page_no;
offset = purge_sys->offset;
- const page_size_t page_size(purge_sys->rseg->page_size);
-
if (offset == 0) {
/* It is the dummy undo log record, which means that there is
no need to purge this undo log */
@@ -1397,7 +1377,7 @@ trx_purge_get_next_rec(
mtr_start(&mtr);
undo_page = trx_undo_page_get_s_latched(page_id_t(space, page_no),
- page_size, &mtr);
+ &mtr);
rec = undo_page + offset;
@@ -1455,7 +1435,7 @@ trx_purge_get_next_rec(
mtr_start(&mtr);
undo_page = trx_undo_page_get_s_latched(
- page_id_t(space, page_no), page_size, &mtr);
+ page_id_t(space, page_no), &mtr);
rec = undo_page + offset;
} else {
diff --git a/storage/innobase/trx/trx0rec.cc b/storage/innobase/trx/trx0rec.cc
index 52a0f7708f5..42bd6ce5136 100644
--- a/storage/innobase/trx/trx0rec.cc
+++ b/storage/innobase/trx/trx0rec.cc
@@ -1972,7 +1972,7 @@ trx_undo_report_row_operation(
page_no = undo->last_page_no;
undo_block = buf_page_get_gen(
- page_id_t(undo->space, page_no), undo->page_size, RW_X_LATCH,
+ page_id_t(undo->space, page_no), univ_page_size, RW_X_LATCH,
buf_pool_is_obsolete(undo->withdraw_clock)
? NULL : undo->guess_block, BUF_GET, __FILE__, __LINE__,
&mtr, &err);
@@ -2127,8 +2127,7 @@ trx_undo_get_undo_rec_low(
mtr_start(&mtr);
undo_page = trx_undo_page_get_s_latched(
- page_id_t(rseg->space, page_no), rseg->page_size,
- &mtr);
+ page_id_t(rseg->space, page_no), &mtr);
undo_rec = trx_undo_rec_copy(undo_page + offset, heap);
diff --git a/storage/innobase/trx/trx0roll.cc b/storage/innobase/trx/trx0roll.cc
index dc779fefc58..838eb8e7835 100644
--- a/storage/innobase/trx/trx0roll.cc
+++ b/storage/innobase/trx/trx0roll.cc
@@ -930,8 +930,7 @@ trx_roll_pop_top_rec(
ut_ad(mutex_own(&trx->undo_mutex));
page_t* undo_page = trx_undo_page_get_s_latched(
- page_id_t(undo->space, undo->top_page_no),
- undo->page_size, mtr);
+ page_id_t(undo->space, undo->top_page_no), mtr);
ulint offset = undo->top_offset;
diff --git a/storage/innobase/trx/trx0rseg.cc b/storage/innobase/trx/trx0rseg.cc
index b084dbdaf2c..9fcc10ec975 100644
--- a/storage/innobase/trx/trx0rseg.cc
+++ b/storage/innobase/trx/trx0rseg.cc
@@ -43,7 +43,6 @@ Created 3/26/1996 Heikki Tuuri
This function is called only when a new rollback segment is created in
the database.
@param[in] space space id
-@param[in] page_size page size
@param[in] max_size max size in pages
@param[in] rseg_slot_no rseg id == slot number in trx sys
@param[in,out] mtr mini-transaction
@@ -51,7 +50,6 @@ the database.
ulint
trx_rseg_header_create(
ulint space,
- const page_size_t& page_size,
ulint max_size,
ulint rseg_slot_no,
mtr_t* mtr)
@@ -80,7 +78,7 @@ trx_rseg_header_create(
page_no = block->page.id.page_no();
/* Get the rollback segment file page */
- rsegf = trx_rsegf_get_new(space, page_no, page_size, mtr);
+ rsegf = trx_rsegf_get_new(space, page_no, mtr);
/* Initialize max size field */
mlog_write_ulint(rsegf + TRX_RSEG_MAX_SIZE, max_size,
@@ -166,7 +164,6 @@ array in the trx system object.
@param[in] id rollback segment id
@param[in] space space where the segment is placed
@param[in] page_no page number of the segment header
-@param[in] page_size page size
@param[in,out] mtr mini-transaction */
static
void
@@ -174,7 +171,6 @@ trx_rseg_mem_create(
ulint id,
ulint space,
ulint page_no,
- const page_size_t& page_size,
mtr_t* mtr)
{
ulint len;
@@ -188,7 +184,6 @@ trx_rseg_mem_create(
rseg->id = id;
rseg->space = space;
- rseg->page_size.copy_from(page_size);
rseg->page_no = page_no;
rseg->trx_ref_count = 0;
rseg->skip_allocation = false;
@@ -206,7 +201,7 @@ trx_rseg_mem_create(
trx_sys->rseg_array[id] = rseg;
- rseg_header = trx_rsegf_get_new(space, page_no, page_size, mtr);
+ rseg_header = trx_rsegf_get_new(space, page_no, mtr);
rseg->max_size = mtr_read_ulint(
rseg_header + TRX_RSEG_MAX_SIZE, MLOG_4BYTES, mtr);
@@ -231,8 +226,8 @@ trx_rseg_mem_create(
rseg->last_offset = node_addr.boffset;
undo_log_hdr = trx_undo_page_get(
- page_id_t(rseg->space, node_addr.page),
- rseg->page_size, mtr) + node_addr.boffset;
+ page_id_t(rseg->space, node_addr.page), mtr)
+ + node_addr.boffset;
rseg->last_trx_no = mach_read_from_8(
undo_log_hdr + TRX_UNDO_TRX_NO);
@@ -262,29 +257,17 @@ trx_rseg_array_init()
mtr_t mtr;
for (ulint i = 0; i < TRX_SYS_N_RSEGS; i++) {
- ut_a(!trx_rseg_get_on_id(i));
- ulint page_no;
-
+ ut_ad(!trx_rseg_get_on_id(i));
mtr.start();
- trx_sysf_t* sys_header = trx_sysf_get(&mtr);
-
- page_no = trx_sysf_rseg_get_page_no(sys_header, i, &mtr);
+ trx_sysf_t* sys_header = trx_sysf_get(&mtr);
+ ulint page_no = trx_sysf_rseg_get_page_no(
+ sys_header, i, &mtr);
if (page_no != FIL_NULL) {
- ulint space;
-
- space = trx_sysf_rseg_get_space(sys_header, i, &mtr);
-
- bool found = true;
- const page_size_t& page_size
- = is_system_tablespace(space)
- ? univ_page_size
- : fil_space_get_page_size(space, &found);
-
- ut_ad(found);
-
trx_rseg_mem_create(
- i, space, page_no, page_size, &mtr);
+ i,
+ trx_sysf_rseg_get_space(sys_header, i, &mtr),
+ page_no, &mtr);
}
mtr.commit();
@@ -320,13 +303,11 @@ trx_rseg_create(
break;
}
- page_size_t page_size(space->flags);
ulint slot_no = trx_sysf_rseg_find_free(
&mtr, space->purpose == FIL_TYPE_TEMPORARY, nth_free_slot);
ulint page_no = slot_no == ULINT_UNDEFINED
? FIL_NULL
- : trx_rseg_header_create(
- space_id, page_size, ULINT_MAX, slot_no, &mtr);
+ : trx_rseg_header_create(space_id, ULINT_MAX, slot_no, &mtr);
if (page_no != FIL_NULL) {
trx_sysf_t* sys_header = trx_sysf_get(&mtr);
@@ -335,8 +316,7 @@ trx_rseg_create(
sys_header, slot_no, &mtr);
ut_a(id == space_id || trx_sys_is_noredo_rseg_slot(slot_no));
- trx_rseg_mem_create(
- slot_no, space_id, page_no, page_size, &mtr);
+ trx_rseg_mem_create(slot_no, space_id, page_no, &mtr);
}
mtr.commit();
diff --git a/storage/innobase/trx/trx0sys.cc b/storage/innobase/trx/trx0sys.cc
index 9b500c9bb5f..ffee282d498 100644
--- a/storage/innobase/trx/trx0sys.cc
+++ b/storage/innobase/trx/trx0sys.cc
@@ -224,10 +224,6 @@ trx_sys_update_mysql_binlog_offset(
return;
}
- if (sys_header == NULL) {
- sys_header = trx_sysf_get(mtr);
- }
-
if (mach_read_from_4(sys_header + field
+ TRX_SYS_MYSQL_LOG_MAGIC_N_FLD)
!= TRX_SYS_MYSQL_LOG_MAGIC_N) {
@@ -571,7 +567,7 @@ trx_sysf_create(
/* Create the first rollback segment in the SYSTEM tablespace */
slot_no = trx_sysf_rseg_find_free(mtr, false, 0);
- page_no = trx_rseg_header_create(TRX_SYS_SPACE, univ_page_size,
+ page_no = trx_rseg_header_create(TRX_SYS_SPACE,
ULINT_MAX, slot_no, mtr);
ut_a(slot_no == TRX_SYS_SYSTEM_RSEG_ID);
diff --git a/storage/innobase/trx/trx0trx.cc b/storage/innobase/trx/trx0trx.cc
index 879f08d85e8..b7a934e363d 100644
--- a/storage/innobase/trx/trx0trx.cc
+++ b/storage/innobase/trx/trx0trx.cc
@@ -750,8 +750,7 @@ trx_resurrect_table_locks(
/* trx_rseg_mem_create() may have acquired an X-latch on this
page, so we cannot acquire an S-latch. */
undo_page = trx_undo_page_get(
- page_id_t(undo->space, undo->top_page_no), undo->page_size,
- &mtr);
+ page_id_t(undo->space, undo->top_page_no), &mtr);
undo_rec = undo_page + undo->top_offset;
@@ -1577,8 +1576,6 @@ trx_write_serialisation_history(
trx_t* trx, /*!< in/out: transaction */
mtr_t* mtr) /*!< in/out: mini-transaction */
{
- trx_sysf_t* sys_header = NULL;
-
/* Change the undo log segment states from TRX_UNDO_ACTIVE to some
other state: these modifications to the file data structure define
the transaction as committed in the file based domain, at the
@@ -1698,8 +1695,8 @@ trx_write_serialisation_history(
MONITOR_INC(MONITOR_TRX_COMMIT_UNDO);
+ trx_sysf_t* sys_header = trx_sysf_get(mtr);
#ifdef WITH_WSREP
- sys_header = trx_sysf_get(mtr);
/* Update latest MySQL wsrep XID in trx sys header. */
if (wsrep_is_wsrep_xid(trx->xid)) {
trx_sys_update_wsrep_checkpoint(trx->xid, sys_header, mtr);
diff --git a/storage/innobase/trx/trx0undo.cc b/storage/innobase/trx/trx0undo.cc
index 4bc40680c4b..26c8c4471e2 100644
--- a/storage/innobase/trx/trx0undo.cc
+++ b/storage/innobase/trx/trx0undo.cc
@@ -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. */