maria:bb-10.3-MDEV-28656-galera

Last commit made on 2022-06-09
Get this branch:
git clone -b bb-10.3-MDEV-28656-galera https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10.3-MDEV-28656-galera
Repository:
lp:maria

Recent commits

e7133e1... by Julius Goryavsky <email address hidden>

MDEV-28690 addendum: fixed regression in tests for qpress

a1f66c3... by Julius Goryavsky <email address hidden>

MDEV-28656: Inability to roll upgrade without stopping the Galera cluster

9829313... by Marko Mäkelä

MDEV-28779: ALTER TABLE IMPORT TABLESPACE corrupts an encrypted table

PageConverter::update_header(): Remove an unnecessary write.
The field that was originally called FIL_PAGE_FILE_FLUSH_LSN only
made sense for the first page of the system tablespace
(initially, for the first page of each file of the system tablespace).
It never had any meaning for .ibd files, and it lost its original
meaning in MariaDB Server 10.8.1 when
commit b07920b634f455c39e3650c6163bec2a8ce0ffe0 (MDEV-27199)
removed the ability to start without ib_logfile0.

If the most significant 32 bits of the LSN are nonzero, this
unnecessary write would write the wrong encryption key identifier
to the page. The first page of any file is never encrypted,
so normally those bytes should be 0 for any .ibd file.

2cd1edf... by Daniel Lewart <email address hidden>

MDEV-25577 mariadb-tzinfo-to-sql generates superfluous warnings

The zoneinfo directory is littered with non-timezone information files.

These frequently contain extensions, not present in real timezone files.

Alo leapseconds is frequently there and is not a timezone file.

9c207c8... by GuiXiaoDi <email address hidden>

mysql.server.sh fix for non-Red Hat platforms

The else condition is meant to be here to define the functions
if the Red Hat include file isn't there.

Fixes: commit 467011bcac3b3f42ae6f21dde8d88e78708b21d1 / MDEV-26614

RedHat -> Red Hat by Daniel Black

44ab6cb... by Marko Mäkelä

Cleanup: Remove unused error code DB_FORCED_ABORT

MariaDB never supported this form of preemption via high-priority
transactions. This error code shold not have been added in the
first place, in commit 2e814d4702d71a04388386a9f591d14a35980bfe.

960f034... by chansuke <email address hidden>

MDEV-25273: fix typo (s/strucures/structures/)

37ea077... by Sergei Golubchik

main.help: flush help tables after modifying them

otherwise following tests that crash the server will see them
corrupted

7c4efab... by Sergei Golubchik

typo fixed: [[space]] -> [[:space:]]

19c7216... by Sergey Petrunia

MDEV-28749: restore_prev_nj_state() doesn't update cur_sj_inner_tables correctly

(Try 2) (Cherry-pick back into 10.3)

The code that updates semi-join optimization state for a join order prefix
had several bugs. The visible effect was bad optimization for FirstMatch or
LooseScan strategies: they either weren't considered when they should have
been, or considered when they shouldn't have been.

In order to hit the bug, the optimizer needs to consider several different
join prefixes in a certain order. Queries with "obvious" query plans which
prune all join orders except one are not affected.

Internally, the bugs in updates of semi-join state were:
1. restore_prev_sj_state() assumed that
  "we assume remaining_tables doesnt contain @tab"
  which wasn't true.
2. Another bug in this function: it did remove bits from
   join->cur_sj_inner_tables but never added them.
3. greedy_search() adds tables into the join prefix but neglects to update
   the semi-join optimization state. (It does update nested outer join
   state, see this call:
     check_interleaving_with_nj(best_table)
   but there's no matching call to update the semi-join state.
   (This wasn't visible because most of the state is in the POSITION
    structure which is updated. But there is also state in JOIN, too)

The patch:
- Fixes all of the above
- Adds JOIN::dbug_verify_sj_inner_tables() which is used to verify the
  state is correct at every step.
- Renames advance_sj_state() to optimize_semi_joins().
  = Introduces update_sj_state() which ideally should have been called
    "advance_sj_state" but I didn't reuse the name to not create confusion.