maria:bb-10.11-new-innodb-julius

Last commit made on 2022-12-14
Get this branch:
git clone -b bb-10.11-new-innodb-julius https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10.11-new-innodb-julius
Repository:
lp:maria

Recent commits

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

MDEV-28669 addendum: additional tests and mtr changes

This commit contains additions to mtr:

1) Running .sh scripts (which can be executed before running
   the test) moved to an earlier stage so that they can create
   directories or perform other useful actions before the boostrap
   phase of the test;
2) Changes have been added that allow the user to set a custom
   location for datadir during a test, both as an option on the
   command line and via a configuration parameter - so that tests
   can be created that use a custom datadir location, and also
   check work with this parameter;
3) Added more precise filters for options that require a new
   bootstrap with rebuilding the database before starting the test;
4) Now mtr sets an environment variable MTR_BOOTSTRAP_OPTS_<suffix>
   that can be used in scripts if these scripts need to know with
   what additional bootstrap parameters was used when server was
   started - which is relevant for those tests that require individual
   bootstrap and then re-start server from within - these tests need
   to know what additional the parameters must be passed to the
   server (except for those specific to this particular text itself),
   for example, this facilitates the launch of tests for galera
   recovery.

This commit also contains tests for Galera: for MDEV-28669,
MDEV-30157, MDEV-30220, MDEV-29591, which depend on the presence
of the above changes in mtr and are themselves a check for these
changes.

24e208b... by Julius Goryavsky <email address hidden>

MDEV-30220: rsync SST completely ignores aria-log-dir-path

This commit adds support for the --aria-log-dir-path
option on the command line and for the aria-log-dir-path
option in the configuration file to the SST scripts, since
before this change these parameters were completely ignored
during SST - SST scripts assumed that aria logs files are
always located in the same directory as logs for innodb.

Tests for this change will be added as a separate commit,
along with tests for MDEV-30157 and MDEV-28669.

0c9ca37... by Julius Goryavsky <email address hidden>

MDEV-30157: Galera SST doesn't properly handle undo* files from innodb

This fix adds separate handling for "undo*" files that contain undo
logs as part of innodb files and adds a filter for undo* to the main
filter used when initially transferring files with rsync.

14b8af3... by Julius Goryavsky <email address hidden>

pre-MDEV-30157 & pre-MDEV-28669: fixes before the main corrections

This commit adds even more correct handling of parameters
with paths if they contain leading or trailing spaces, and
also fixes problems if the user specified an explicit path
to additional directories, but these directories match the
non-standard datadir path - in this In this case, additional
subdirectories must be treated (in relation to datadir) as
if the path was not specified or implicitly specified via
"." or "./", but the script code before this fix worked
as if the user had specified separate paths for each of
the additional subdirectories (although in fact they
point to the same place where datadir points).

This fix does not contain separate tests, as tests will
be part of the main commit(s). This fix has been made as
a separate commit to facilitate review for major substantive
fixes related to MDEV-30157 and MDEV-28669.

0dd698b... by Julius Goryavsky <email address hidden>

MDEV-30157: Re-enable disabled tests

a781237... by Marko Mäkelä

fixup! c65f5865a29e3cd65c170a3c306d59d160ba1697

39e28dd... by Marko Mäkelä

MDEV-30216 Read-ahead unnecessarily allocates and frees pages

buf_read_ahead_random(), buf_read_page_background(),
buf_read_ahead_linear(): Before invoking buf_read_page_low(),
ensure with buf_pool_t::page_hash_contains() that the page doesn't exist.

buf_pool_t::page_hash_contains(): Defined as a non-inline function.
This function was previously unused.

buf_read_page(), buf_page_init_for_read(), buf_read_page_low():
Add a parameter for the buf_pool.page_hash chain, to avoid duplicated
computations.

c434f87... by Marko Mäkelä

MDEV-29986 Set innodb_undo_log_truncate=ON and innodb_undo_tablespaces=3

Starting with commit baf276e6d4a44fe7cdf3b435c0153da0a42af2b6 (MDEV-19229)
the parameter innodb_undo_tablespaces can be increased from its
previous default value 0 while allowing an upgrade from old databases.

We will change the default settings to innodb_undo_tablespaces=3
and innodb_undo_log_truncate=ON, so that the space occupied by
possible bursts of undo log records will be eventually reclaimed.

In --suite=parts, we execute CHECK TABLE t1 instead of
CHECK TABLE t1 EXTENDED because occasionally, a warning (not an error!)
of unpurged history may be issued. This is something related to
commit ab0190101b0587e0e03b2d75a967050b9a85fd1b and will have to be
investigated separately.

c65f586... by Marko Mäkelä

Work around MDEV-30157

cd6bd8a... by Marko Mäkelä

MDEV-19506 Remove the global sequence DICT_HDR_ROW_ID for DB_ROW_ID

InnoDB tables that lack a primary key (and any UNIQUE INDEX whose
all columns are NOT NULL) will use an internally generated index,
called GEN_CLUST_INDEX(DB_ROW_ID) in the InnoDB data dictionary,
and hidden from the SQL layer.

The 48-bit (6-byte) DB_ROW_ID is being assigned from a
global sequence that is persisted in the DICT_HDR page.

There is absolutely no reason for the DB_ROW_ID to be globally
unique across all InnoDB tables.

A downgrade to earlier versions will be prevented by the file format
change related to removing the InnoDB change buffer (MDEV-29694).

DICT_HDR_ROW_ID, dict_sys_t::row_id: Remove.

dict_table_t::row_id: The per-table sequence of DB_ROW_ID.

commit_try_rebuild(): Copy dict_table_t::row_id from the old table.

btr_cur_instant_init(), row_import_cleanup(): If needed, perform
the equivalent of SELECT MAX(DB_ROW_ID) to initialize
dict_table_t::row_id.

row_ins(): If needed, obtain DB_ROW_ID from dict_table_t::row_id.
Should it exceed the maximum 48-bit value, return DB_OUT_OF_FILE_SPACE
to prevent further inserts into the table.

dict_load_table_one(): Move a condition to btr_cur_instant_init_low()
so that dict_table_t::row_id will be restored also for
ROW_FORMAT=COMPRESSED tables.

Tested by: Matthias Leich