maria:bb-11.0-midenok-MDEV-30421

Last commit made on 2023-03-26
Get this branch:
git clone -b bb-11.0-midenok-MDEV-30421 https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-11.0-midenok-MDEV-30421
Repository:
lp:maria

Recent commits

06a7eb2... by midenok

MDEV-30421 Allow administrators to enable or disable parallel replication on a per-table basis

Per-domain dedicated thread for processing ordered transactions. The
thread is reserved from the total number of domain threads (controlled
by slave_parallel_threads and slave_domain_parallel_threads). Whether
the event goes to ordered thread depends on FL_ALLOW_PARALLEL flag as
well as several other conditions. FL_ALLOW_PARALLEL is passed from
master and is set for the event depending on master configuration
directives. To allow dedicated slave on server one must enable it
explicitly with configuration directive:

  set global slave_ordered_thread= 1;

Originally it was controlled by skip_parallel_replication session
variable which can be changed per-statement. This patch adds several
more directives to control it on per-schema and per-table levels:

  parallel_do_db
  parallel_do_table
  parallel_ignore_db
  parallel_ignore_table
  parallel_wild_do_table
  parallel_wild_ignore_table

Each directive is comma-separated list of fully-qualified table
names. Spaces after comma are ignored (but not before).

"Table" directives take precedence over "db" directives. "Do"
directives take precedence over "ignore" directives. "Wild" directives
are checked if "do" and "ignore" directives did not match.

If none of the above directives present everything is considered
parallel. If any of the above directives present and the table did not
match anything in the lists it is considered ordered.

Examples:

  set @@global.parallel_do_db= "db_parallel";
  set @@global.parallel_ignore_db= "db_serial";
  set global parallel_do_table= "db_serial.t3, db_serial.t1";
  set global parallel_wild_ignore_table= "db_parallel.non_parallel_%"

Normal behaviour of ordered transaction is before start to wait any of
prior transactions to commit: they get into different commit
groups. But since all the ordered transactions (within one domain) go
to a single thread we may avoid that restriction with this directive
on slave:

  set global slave_ordered_dont_wait= 1;

When set events without explicit FL_WAITED flag going to ordered
thread nonetheless accept optimistic speculation. I.e. they get into
same commit group with parallel events: ordered event is executed in
parallel with parallel events.

8f934a8... by midenok

Vanilla cleanup for do_gco_wait()

1beb600... by midenok

Vanilla optimization for tables_ok()

Don't do strmov() if not needed. Initialize buffer outside of loop.

9c04949... by midenok

Compilation fixes

a79abb6... by Tuukka Pasanen <email address hidden>

MDEV-30778: Remove Awk from mysql_install_db

Commit reduces need of AWK-command at least
for Debian mariadb-server-compat package.

Commit removes need of AWK-command from
scripts/mysql_install_db.sh script.

AWK command is replace by purely Posix sh compiliant version.

9277248... by Marko Mäkelä

MDEV-30911 Multi-batch recovery of ROW_FORMAT=COMPRESSED table hangs

In commit d6aed21621e438e6135415c0c09fc6adfc0be368 a condition at
the start of buf_read_ahead_random() was refactored. Only the caller
buf_read_recv_pages() was adjusted for this. We must in fact adjust
every caller and make sure that spare blocks will be allocated
while crash recovery is in progress. This is the simplest fix;
ideally recovery would operate on the compressed page frame.

The observed recovery hang occurred because pages 0 and 3 of a
tablespace were being read due to buf_page_get_gen() calls by
trx_resurrect_table_locks() before the log records for these pages
had been applied. In buf_page_t::read_complete() we would skip
the call to recv_recover_page() because no uncompressed page frame
had been allocated for the block.

f6cb93b... by Sergey Petrunia

Fix the testcase for MDEV-30693

221b5d7... by Marko Mäkelä

Merge 10.11 into 11.0

faeca00... by Marko Mäkelä

Merge 10.10 into 10.11

78d0d74... by Marko Mäkelä

Merge 10.9 into 10.10