mirror of
https://github.com/MariaDB/server.git
synced 2025-01-15 19:42:28 +01:00
MDEV-30671 follow-up: Remove the field TRX_UNDO_NEEDS_PURGE
Because downgrades from 11.0 to older MariaDB server are not possible due to the removal of the InnoDB change buffer, there is no need to access the field TRX_UNDO_NEEDS_PURGE anymore.
This commit is contained in:
parent
7a834d6248
commit
a75cd0a734
4 changed files with 7 additions and 28 deletions
|
@ -488,10 +488,10 @@ completely purged and trx_purge_free_segment() has started freeing it */
|
||||||
/** Transaction end identifier (if the log is in a history list),
|
/** Transaction end identifier (if the log is in a history list),
|
||||||
or 0 if the transaction has not been committed */
|
or 0 if the transaction has not been committed */
|
||||||
#define TRX_UNDO_TRX_NO 8
|
#define TRX_UNDO_TRX_NO 8
|
||||||
/** Before MariaDB 10.3.1, when purge did not reset DB_TRX_ID of
|
/* Before MariaDB 10.3.1, when purge did not reset DB_TRX_ID of
|
||||||
surviving user records, this used to be called TRX_UNDO_DEL_MARKS.
|
surviving user records, this used to be called TRX_UNDO_DEL_MARKS.
|
||||||
|
|
||||||
This field is redundant; it is only being read by some debug assertions.
|
This field was removed in MariaDB 11.0.
|
||||||
|
|
||||||
The value 1 indicates that purge needs to process the undo log segment.
|
The value 1 indicates that purge needs to process the undo log segment.
|
||||||
The value 0 indicates that all of it has been processed, and
|
The value 0 indicates that all of it has been processed, and
|
||||||
|
@ -500,7 +500,7 @@ trx_purge_free_segment() has been invoked, so the log is not safe to access.
|
||||||
Before MariaDB 10.3.1, a log segment may carry the value 0 even before
|
Before MariaDB 10.3.1, a log segment may carry the value 0 even before
|
||||||
trx_purge_free_segment() was called, for those undo log records for
|
trx_purge_free_segment() was called, for those undo log records for
|
||||||
which purge would not result in removing delete-marked records. */
|
which purge would not result in removing delete-marked records. */
|
||||||
#define TRX_UNDO_NEEDS_PURGE 16
|
/*#define TRX_UNDO_NEEDS_PURGE 16*/
|
||||||
#define TRX_UNDO_LOG_START 18 /*!< Offset of the first undo log record
|
#define TRX_UNDO_LOG_START 18 /*!< Offset of the first undo log record
|
||||||
of this log on the header page; purge
|
of this log on the header page; purge
|
||||||
may remove undo log record from the
|
may remove undo log record from the
|
||||||
|
|
|
@ -262,7 +262,6 @@ trx_purge_add_undo_to_history(const trx_t* trx, trx_undo_t*& undo, mtr_t* mtr)
|
||||||
trx_ulogf_t* undo_header = undo_page->page.frame
|
trx_ulogf_t* undo_header = undo_page->page.frame
|
||||||
+ undo->hdr_offset;
|
+ undo->hdr_offset;
|
||||||
|
|
||||||
ut_ad(mach_read_from_2(undo_header + TRX_UNDO_NEEDS_PURGE) <= 1);
|
|
||||||
ut_ad(rseg->needs_purge > trx->id);
|
ut_ad(rseg->needs_purge > trx->id);
|
||||||
|
|
||||||
if (UNIV_UNLIKELY(mach_read_from_4(TRX_RSEG + TRX_RSEG_FORMAT
|
if (UNIV_UNLIKELY(mach_read_from_4(TRX_RSEG + TRX_RSEG_FORMAT
|
||||||
|
@ -352,8 +351,6 @@ trx_purge_add_undo_to_history(const trx_t* trx, trx_undo_t*& undo, mtr_t* mtr)
|
||||||
mtr->write<8,mtr_t::MAYBE_NOP>(*undo_page,
|
mtr->write<8,mtr_t::MAYBE_NOP>(*undo_page,
|
||||||
undo_header + TRX_UNDO_TRX_NO,
|
undo_header + TRX_UNDO_TRX_NO,
|
||||||
trx->rw_trx_hash_element->no);
|
trx->rw_trx_hash_element->no);
|
||||||
mtr->write<2,mtr_t::MAYBE_NOP>(*undo_page, undo_header
|
|
||||||
+ TRX_UNDO_NEEDS_PURGE, 1U);
|
|
||||||
|
|
||||||
if (rseg->last_page_no == FIL_NULL) {
|
if (rseg->last_page_no == FIL_NULL) {
|
||||||
rseg->last_page_no = undo->hdr_page_no;
|
rseg->last_page_no = undo->hdr_page_no;
|
||||||
|
@ -408,13 +405,6 @@ trx_purge_free_segment(mtr_t &mtr, trx_rseg_t* rseg, fil_addr_t hdr_addr)
|
||||||
nullptr, BUF_GET_POSSIBLY_FREED,
|
nullptr, BUF_GET_POSSIBLY_FREED,
|
||||||
&mtr, &err))
|
&mtr, &err))
|
||||||
{
|
{
|
||||||
/* Mark the last undo log totally purged, so that if the system
|
|
||||||
crashes, the tail of the undo log will not get accessed again. The
|
|
||||||
list of pages in the undo log tail gets inconsistent during the
|
|
||||||
freeing of the segment, and therefore purge should not try to
|
|
||||||
access them again. */
|
|
||||||
mtr.write<2,mtr_t::MAYBE_NOP>(*block, block->page.frame +
|
|
||||||
hdr_addr.boffset + TRX_UNDO_NEEDS_PURGE, 0U);
|
|
||||||
while (!fseg_free_step_not_header(TRX_UNDO_SEG_HDR + TRX_UNDO_FSEG_HEADER +
|
while (!fseg_free_step_not_header(TRX_UNDO_SEG_HDR + TRX_UNDO_FSEG_HEADER +
|
||||||
block->page.frame, &mtr))
|
block->page.frame, &mtr))
|
||||||
{
|
{
|
||||||
|
@ -925,12 +915,8 @@ static void trx_purge_rseg_get_next_history_log(
|
||||||
if (const buf_block_t* undo_page=
|
if (const buf_block_t* undo_page=
|
||||||
buf_page_get_gen(page_id_t(purge_sys.rseg->space->id, prev_log_addr.page),
|
buf_page_get_gen(page_id_t(purge_sys.rseg->space->id, prev_log_addr.page),
|
||||||
0, RW_S_LATCH, nullptr, BUF_GET_POSSIBLY_FREED, &mtr))
|
0, RW_S_LATCH, nullptr, BUF_GET_POSSIBLY_FREED, &mtr))
|
||||||
{
|
trx_no= mach_read_from_8(undo_page->page.frame + prev_log_addr.boffset +
|
||||||
const byte *log_hdr= undo_page->page.frame + prev_log_addr.boffset;
|
TRX_UNDO_TRX_NO);
|
||||||
|
|
||||||
trx_no= mach_read_from_8(log_hdr + TRX_UNDO_TRX_NO);
|
|
||||||
ut_ad(mach_read_from_2(log_hdr + TRX_UNDO_NEEDS_PURGE) <= 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
mtr.commit();
|
mtr.commit();
|
||||||
|
|
||||||
|
|
|
@ -522,8 +522,6 @@ static dberr_t trx_rseg_mem_restore(trx_rseg_t *rseg, mtr_t *mtr)
|
||||||
rseg->needs_purge= id;
|
rseg->needs_purge= id;
|
||||||
|
|
||||||
rseg->set_last_commit(node_addr.boffset, id);
|
rseg->set_last_commit(node_addr.boffset, id);
|
||||||
ut_ad(mach_read_from_2(block->page.frame + node_addr.boffset +
|
|
||||||
TRX_UNDO_NEEDS_PURGE) <= 1);
|
|
||||||
|
|
||||||
if (rseg->last_page_no != FIL_NULL)
|
if (rseg->last_page_no != FIL_NULL)
|
||||||
/* There is no need to cover this operation by the purge
|
/* There is no need to cover this operation by the purge
|
||||||
|
|
|
@ -588,13 +588,8 @@ static uint16_t trx_undo_header_create(buf_block_t *undo_page, trx_id_t trx_id,
|
||||||
undo_page->page.frame) != 0))
|
undo_page->page.frame) != 0))
|
||||||
mtr->memset(undo_page, free + TRX_UNDO_TRX_NO, 8, 0);
|
mtr->memset(undo_page, free + TRX_UNDO_TRX_NO, 8, 0);
|
||||||
|
|
||||||
/* Write TRX_UNDO_NEEDS_PURGE=1 and TRX_UNDO_LOG_START. */
|
mtr->memcpy<mtr_t::MAYBE_NOP>(*undo_page, free + TRX_UNDO_LOG_START +
|
||||||
mach_write_to_2(buf, 1);
|
undo_page->page.frame, start, 2);
|
||||||
memcpy_aligned<2>(buf + 2, start, 2);
|
|
||||||
static_assert(TRX_UNDO_NEEDS_PURGE + 2 == TRX_UNDO_LOG_START,
|
|
||||||
"compatibility");
|
|
||||||
mtr->memcpy<mtr_t::MAYBE_NOP>(*undo_page, free + TRX_UNDO_NEEDS_PURGE +
|
|
||||||
undo_page->page.frame, buf, 4);
|
|
||||||
/* Initialize all fields TRX_UNDO_XID_EXISTS to TRX_UNDO_HISTORY_NODE. */
|
/* Initialize all fields TRX_UNDO_XID_EXISTS to TRX_UNDO_HISTORY_NODE. */
|
||||||
if (prev_log)
|
if (prev_log)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue