maria:bb-11.0-mdev-29363-no-propagate-with-subquery

Last commit made on 2024-01-22
Get this branch:
git clone -b bb-11.0-mdev-29363-no-propagate-with-subquery https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-11.0-mdev-29363-no-propagate-with-subquery
Repository:
lp:maria

Recent commits

5790cb2... by Yuchen Pei <email address hidden>

MDEV-29363 Do not change an item to another with subquery when propagating equal fields

c2da55a... by Marko Mäkelä

Merge 10.11 into 11.0

338ed5c... by Marko Mäkelä

MDEV-26195 fixup: Remove page_no_t

1eb11da... by Marko Mäkelä

Merge 10.6 into 10.11

3613fb2... by Marko Mäkelä

MDEV-33112 innodb_undo_log_truncate=ON is blocking page write

When innodb_undo_log_truncate=ON causes an InnoDB undo tablespace
to be truncated, we must guarantee that the undo tablespace will
be rebuilt atomically: After mtr_t::commit_shrink() has durably
written the mini-transaction that rebuilds the undo tablespace,
we must not write any old pages to the tablespace.

To guarantee this, in trx_purge_truncate_history() we used to
traverse the entire buf_pool.flush_list in order to acquire
exclusive latches on all pages for the undo tablespace that
reside in the buffer pool, so that those pages cannot be written
and will be evicted during mtr_t::commit_shrink(). But, this
traversal may interfere with the page writing activity of
buf_flush_page_cleaner(). It would be better to lazily discard
the old pages of the truncated undo tablespace.

fil_space_t::is_being_truncated, fil_space_t::clear_stopping(): Remove.

fil_space_t::create_lsn: A new field, identifying the LSN of the
latest rebuild of a tablespace.

buf_page_t::flush(), buf_flush_try_neighbors(): Evict pages whose
FIL_PAGE_LSN is below fil_space_t::create_lsn.

mtr_t::commit_shrink(): Update fil_space_t::create_lsn and
fil_space_t::size right before the log is durably written and the
tablespace file is being truncated.

fsp_page_create(), trx_purge_truncate_history(): Simplify the logic.

Reviewed by: Thirunarayanan Balathandayuthapani, Vladislav Lesin
Performance tested by: Axel Schwenke
Correctness tested by: Matthias Leich

593278f... by Marko Mäkelä

MDEV-32050 fixup: Remove srv_purge_rseg_truncate_frequency

4cbf75d... by Marko Mäkelä

MDEV-33137: Assertion end_lsn == page_lsn failed in recv_recover_page

trx_purge_free_segment(), trx_purge_truncate_rseg_history():
Do not claim that the blocks will be modified in the mini-transaction,
because that will not always be the case. Whenever there is a
modification, mtr_t::set_modified() will flag it.

The debug assertion that failed in recovery is checking that all
changes to data pages are covered by log records. Due to these
incorrect calls, we would unnecessarily write unmodified data pages,
which is something that commit 05fa4558e0e82302ece981deabce764491464eb2
aims to avoid.

The incorrect calls had originally been added in
commit de31ca6a212118bd29876f964497050e446bda02 (MDEV-32820) and
commit 86767bcc0f121db3ad83a74647a642754a0ce57f (MDEV-29593).

Reviewed by: Vladislav Lesin
Tested by: Elena Stepanova

c6c2a2b... by Sergei Golubchik

MDEV-33150 double-locking of LOCK_thd_kill in performance_schema.session_status

perfschema thread walker needs to take thread's LOCK_thd_kill to prevent
the thread from disappearing why it's being looked at.
But there's no need to lock it for the current thread.

In fact, it was harmful as some code down the stack might take
LOCK_thd_kill (e.g. set_killed() does it, and my_malloc_size_cb_func()
calls set_killed()). And it caused a bunch of mutexes being locked under
LOCK_thd_kill, which created problems later when my_malloc_size_cb_func()
called set_killed() at some unspecified point under some
random mutexes.

0a12263... by Sergei Golubchik

cleanup: change a function, that always return 0, to void

23e107d... by Sergei Golubchik

MDEV-33031 Assertion failure upon reading from performance schema with binlog enabled

same assertion with spider. spider status variables
didn't expect to be queried from a different thread
without LOCK_thd_data.

And they didn't expect to be queried under LOCK_thd_data either
(because spider_get_trx() calls thd_set_ha_data()).