- InnoDB is doing un-necessary redo log page initialisation during
recovery and unnecessary traversal of redo log during last phase.
This patch does the optimization of removing unnecessary redo log page
initialisation and detects the memory exhaust earlier.
On by default, suppress "fallback to conventional memory"
warnings as we're never sure what the test has available.
Leave off Windows test for now. Running without SeLockMemoryPrivilege
is fatal if --large-pages is specified.
Both Windows and MMAP capable implementations fell back to a
non-MEM_LARGE_PAGES/HugeTLB allocation with the large page implementaion
failed. These can can be freed by the corresponding function.
Prior to this, if we fell back to a conventional memory, than will
results in deallocation using munmap/VirtualFree on a memory allocated
using my_malloc_lock. At worst this could succeed and the
my_malloc_lock looses its memory without knowing about it.
Changed wording in error messages from MySQL to MariaDB. In
cases where the word server could be used instead it was done.
Tests that have these errors recorded were updated.
In a multi-batch recovery, we must ensure that INIT_PAGE and
especially the MDEV-15528 FREE_PAGE records will be taken
properly into account.
Writing a FREE_PAGE record gives the server permission to omit
a page write. If recovery insists on applying log to a page
whose page flush has been omitted, then the consistency checks
in the application of high-level redo log records (appending
an undo log record, inserting or deleting an index record)
will likely fail.
mlog_init_t::add(): Return whether the state was changed.
mlog_init_t::will_avoid_read(): Determine whether a page read
will be avoided and whether older log records can be safely
skipped.
recv_sys_t::parse(): Even if store==STORE_NO, process the records
INIT_PAGE and FREE_PAGE. While processing them, we can delete older
redo log records for the page. If store!=STORE_NO, we can directly
skip redo log recods of other types if mlog_init indicates that the
page will be freed or initialized by at a later LSN.
This fix was developed in cooperation with
Thirunarayanan Balathandayuthapani.
There is a 4 MB hard limit on Travis-CI and build output needs to be less
than that. Silencing the 'make install' step gets rid of a lot of
"Installing.." and "Missing.." and removing all mysql-test files will
make the dh_missing warnings much shorter.
ADD default history partitions generates wrong partition name,
f.ex. p2 instead of p1. Gap in sequence of partition names leads to
ha_partition::open_read_partitions() fail on inexistent name.
Manual fixing such broken table requires:
1. create empty table by any name (t_empty) with correct number
of partitions;
2. stop the server;
3. rename data files (.myd, .myi or .ibd) of broken table to t_empty
fixing the partition sequence (#p2 to #p1, #p3 to #p2);
4. start the server;
5. drop the broken table;
6. rename t_empty to correct table name.
The package libcurl4-dev is a virtual package, and no package with that
name actually exists. Depend on libcurl4-openssl-dev as the primary
option in case no libcurl4-dev providing package has been installed, and
if some of them (libcurl4-gnutls-dev, libcurl4-nss-dev,
libcurl4-openssl-dev ) are installed, they also satisfy the dependency
via the virtual package.
The Travis-CI still runs on libcurl3-dev as Travis-CI also runs Ubuntu
Xenial which does not yet have libcurl4 available.
This complements commit 2e0a40bdf0.
The package libdbd-mariadb-perl has been available in Debian September
2018, so it is already included since Debian Buster and Ubuntu Disco.
Use it as the primary Recommends for MariaDB client binaries, but keep
the MySQL variant as a fall-back in case this package gets backported to
older releases that did not yet have it.
This change was done in downstream Debian packaging in
bb4ad78bc1
This fixes Lintian errors and warnings:
E: mariadb-client-10.5: manpage-not-compressed usr/share/man/man1/mariadb-analyze.1
E: mariadb-client-10.5: manpage-not-compressed usr/share/man/man1/mariadb-optimize.1
E: mariadb-client-10.5: manpage-not-compressed usr/share/man/man1/mariadb-repair.1
E: mariadb-client-10.5: manpage-not-compressed usr/share/man/man1/mysqlanalyze.1
E: mariadb-client-10.5: manpage-not-compressed usr/share/man/man1/mysqloptimize.1
E: mariadb-client-10.5: manpage-not-compressed usr/share/man/man1/mysqlrepair.1
W: mariadb-client-10.5: binary-without-manpage usr/bin/mariadb-conv
W: libmariadb-dev: binary-without-manpage usr/bin/mariadb_config
If the binary name is mariadb_config, the manpage needs to be mariadb_config.1.
Also run 'wrap-and-sort -a -v' to get lists in correct order.
In addition, sort .gitignore and remove duplicate lines.
The dpkg-buildpackage has by default sensible values for --jobs and
--try-jobs, and it also inherits whatever 'parallel' is set in
DEB_BUILD_OPTIONS. Overriding it here should not be needed and removing
it is better, since it allows build systems to control the level or
parallel builds via DEB_BUILD_OPTIONS if they want, which they often do
(e.g. to avoid CPU congestion or overheating laptops).
Make package have sensible control file relations to mysql-8.0.
Also some cleanup:
- Remove obsolete versioned control relationships. When the package
name already has a version older than current package, the extra
version is obsolete.
- Remove obsolete postinst script that was empty
- Remove priority "extra" which is deprecated, use "optional" that
applies for the whole source package instead.
The current debian/control file and other packaging of 10.5 targets the
latest Debian unstable. In autobake-deb.sh there are automatic build
adaptations for older Debian/Ubuntu releases.
Some adaptations were for Debian versions prior to Jessie and Ubuntu
versions prior to Trusty. Those distro releases are no longer supported
anyway, so these should be cleaned away now in the 10.5 release cycle.
Summary:
- Debian Jessie has libcrack2 release 2.9.2-1, no need to have adaptations
for any older environments
- Debian Jessie has libpcre3-dev release 2:8.35-3.3, no need to consider
older versions
- Systemd has been available since Debian Jessie, no need to consider
that a Debian/Ubuntu environment would not have it available
adaptations for environments for anything older