maria:bb-10.9-MDEV-28313-21423-26603

Last commit made on 2022-04-28
Get this branch:
git clone -b bb-10.9-MDEV-28313-21423-26603 https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10.9-MDEV-28313-21423-26603
Repository:
lp:maria

Recent commits

cdc328a... by Marko Mäkelä

Merge

b0dbb43... by Marko Mäkelä

MDEV-21423 trx_sys performance regression by lf_find

lock_sec_rec_read_check_and_lock(): Remove a redundant check
for trx_sys.get_min_trx_id(). This would be checked in
lock_sec_rec_some_has_impl() anyway. Also, test the
cheapest conditions first.

lock_sec_rec_some_has_impl(): Replace trx_sys.get_min_trx_id()
with trx_sys.find_same_or_older() that is much easier to evaluate.

Inspired by mysql/mysql-server@0a0c0db97e9c9705f4dffc629a770fb87a60cb22

483522d... by Marko Mäkelä

Merge 10.6

2aed566... by Marko Mäkelä

Cleanup: alignas(CPU_LEVEL1_DCACHE_LINESIZE)

Let us replace all use of MY_ALIGNED in InnoDB with C++11 alignas.

CACHE_LINE_SIZE: Replaced with CPU_LEVEL1_DCACHE_LINESIZE.

03f9bb8... by Marko Mäkelä

MDEV-28313: Shrink ReadView::m_mutex

A few PERFORMANCE_SCHEMA instrumentation keys were not exposed
in all_innodb_mutexes[]. Let us remove them.

The keys fts_pll_tokenize_mutex_key and read_view_mutex_key were
internally used. Let us make ReadView::m_mutex use the simpler
and smaller srw_mutex, hoping to improve memory access patterns.

8074ab5... by Marko Mäkelä

MDEV-28313: Shrink rw_trx_hash_element_t::mutex

The element mutex is unnecessarily large. The PERFORMANCE_SCHEMA
instrumentation was not even enabled.

0cd2e6c... by Marko Mäkelä

MDEV-28313: InnoDB transactions are not aligned at cache lines

trx_lock_t: Remove byte pad[256] and use
alignas(CPU_LEVEL1_DCACHE_LINESIZE) instead.

trx_t: Declare n_ref (the first member) aligned at cache line.

Pool: Assert that the sizes are multiples of
CPU_LEVEL1_DCACHE_LINESIZE, and invoke an aligned allocator.

f7f0bc7... by Sergei Golubchik

cleanup: un-inline dtype_get_mblen()

per Marko request

fc83964... by Sergei Golubchik

MDEV-27767 poor scaling with InnoDB and utf8mb3 because of charset stats

Access the all_charsets[] array directly in a hot loop.
This avoids get_charset() that increments a shared counter via
my_collation_statistics_inc_use_count(), causing a scalability issue.

Instead, call get_charset() when a table is opened (and InnoDB
fills in dtype_t values) - this is enough, as charset is marked
ready (MY_CS_READY) only once, on the first get_charset() call,
after that it can be accessed directly.

This also fixes a potential bug in InnoDB. It used to access charsets
directly when filling dtype_t values. This wasn't preceded by any
get_charset() call inside InnoDB. Normally the server would call
get_charset() on reading the frm, but if the table was first opened
from a purge thread InnoDB could, theoretically, access a not-ready
charset in innobase_get_cset_width().

abe9712... by Rucha Deodhar <email address hidden>

MDEV-27972: Unexpected behavior with negative zero (-0) in
JSON Path

Analysis: When we have '-' followed by 0, then the state is
changed to JE_SYN, meaning syntax error.
Fix: Change the state to PS_INT instead, because we are
reading '0' next (integer) and it is not a syntax error.