maria:bb-10.6-MDEV-30100-MDEV-25340

Last commit made on 2023-08-11
Get this branch:
git clone -b bb-10.6-MDEV-30100-MDEV-25340 https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10.6-MDEV-30100-MDEV-25340
Repository:
lp:maria

Recent commits

38ee812... by Marko Mäkelä

MDEV-25340 Server startup with large innodb_buffer_pool_size takes a long time

buf_pool_t::create(), buf_pool_t::chunk_t::create(): Only initialize
the first page descriptor of each chunk.

buf_pool_t::lazy_allocate(): Lazily initialize a previously allocated
page descriptor and advance buf_pool_t::chunk_t::blocks_end until
the allocated capacity has been reached (blocks_end == blocks + size).

buf_pool_t::lazy_allocate_size(): Return the number of allocation requests
that buf_pool_t::lazy_allocate() can serve.

buf_pool_t::fully_initialized: Set if lazy_allocate_size() == 0.

Most references to chunk->size have been replaced with
chunk->blocks_end - chunk->blocks.

b91db97... by Marko Mäkelä

squash! 5fea8ffc50afd358d1e924d32846c2740748e3da

trx_t::commit_in_memory(): Set commit_lsn=0 if the log was written.

trx_commit_complete_for_mysql(): Remove some conditions.
We will rely on trx->commit_lsn.

innobase_commit_ordered_2(): Simplify some conditions.
A read-write transaction will always carry nonzero trx_t::id.
Let us unconditionally reset mysql_log_file_name, flush_log_later
after trx_t::commit() was invoked.

f4c1784... by Marko Mäkelä

squash! cf108c61436ce93db9048ea279db4ef4f6288285

trx_t::commit_empty(): Ensure that the system-wide transaction identifier
will be persisted up to this->id, so that there will not be warnings or
errors due to a PAGE_MAX_TRX_ID being too large. We might have modified
that on secondary index pages before being rolled back, and those changes
are never rolled back.

cf108c6... by Marko Mäkelä

MDEV-30100: Assertion purge_sys.tail.trx_no <= purge_sys.rseg->last_trx_no()

trx_t::commit_empty(): A special case of transaction "commit" when
the transaction was actually rolled back or the persistent undo log
is empty. In this case, we need to change the undo log header state to
TRX_UNDO_CACHED and move the undo log from rseg->undo_list to
rseg->undo_cached for fast reuse. Furthermore, unless this is the only
undo log record in the page, we will remove the record and rewind
TRX_UNDO_PAGE_START, TRX_UNDO_PAGE_FREE, TRX_UNDO_LAST_LOG.

Even though it is not going to be written persistently anywhere,
we will invoke trx_sys.assign_new_trx_no(this), so that in the test
innodb.instant_alter everything will be purged as expected.

trx_t::write_serialisation_history(): Renamed from
trx_write_serialisation_history(). If there is no undo log,
invoke commit_empty().

trx_purge_add_undo_to_history(): Simplify an assertion and remove a
comment. This function will not be invoked on an empty undo log
anymore.

trx_undo_header_create(): Add a debug assertion.

trx_undo_mem_create_at_db_start(): Remove a duplicated assignment.

5fea8ff... by Marko Mäkelä

MDEV-30100 preparation: Simplify InnoDB transaction commit further

trx_commit_complete_for_mysql(): Remove some conditions.
We will rely on trx_flush_log_if_needed().

trx_t::must_flush_log_later: Remove. trx_commit_complete_for_mysql()
can simply check for trx_t::flush_log_later.

trx_t::commit_in_memory(): Treat flush_log_later as input and output.

trx_flush_log_if_needed_low(): Renamed to trx_flush_log_if_needed().
Assert that innodb_flush_log_at_trx_commit!=0 was checked by
the caller and that the transaction is not in XA PREPARE state.

trx_write_serialisation_history(): Move some code from
trx_purge_add_undo_to_history().

trx_prepare(): Invoke log_write_up_to() directly if needed.

innobase_commit_ordered_2(): Remove a condition, and do not reset
trx_t::flush_log_later, because it must be passed from
trx_t::commit_in_memory() to trx_commit_complete_for_mysql().

be983be... by Marko Mäkelä

MDEV-30100 preparation: Simplify InnoDB transaction commit

trx_commit_cleanup(): Clean up any temporary undo log.
Replaces trx_undo_commit_cleanup() and trx_undo_seg_free().

trx_write_serialisation_history(): Commit the mini-transaction.
Do not touch temporary undo logs. Assume that a persistent rollback
segment has been assigned.

trx_serialise(): Merged into trx_write_serialisation_history().

trx_t::commit_low(): Correct some comments and assertions.

trx_t::commit_persist(): Only invoke commit_low() on a mini-transaction
if the persistent state needs to change.

0be4781... by =?utf-8?q?Jan_Lindstr=C3=B6m?= <email address hidden>

MDEV-31737 : Node never returns from Donor/Desynced to Synced when wsrep_mode = BF_ABORT_MARIABACKUP

Problem was incorrect condition when node should have
resumed and resync at backup_end. Simplified condition
to fix the problem and added missing test case for
this wsrep_mode = BF_ABORT_MARIABACKUP.

Signed-off-by: Julius Goryavsky <email address hidden>

d28d636... by Oleksandr "Sanja" Byelkin

Merge branch '10.5' into 10.6

8852afe... by Oleksandr "Sanja" Byelkin

Merge branch '10.4' into 10.5

0ede90d... by THIRUNARAYANAN BALATHANDAYUTHAPANI

MDEV-31869 Server aborts when table does drop column

- InnoDB aborts when table is dropping the column. This is
caused by 5f09b53bdb4e973e7c7ec2c53a24c98321223f98 (MDEV-31086).
While iterating the altered table fields, we fail to consider
the dropped columns.