Fix spider init bugs (MDEV-22979, MDEV-27233, MDEV-28218) while
preventing regression on old ones (MDEV-30370, MDEV-29904)
Two things are changed:
First, Spider initialisation is made fully synchronous, i.e. it no
longer happens in a background thread. Adapted from the original fix
by nayuta for MDEV-27233. This change itself would cause failure when
spider is initialised early, by plugin-load-add, due to dependency on
Aria and udf function creation, which are fixed in the second and
third parts below. Requires SQL Service, thus porting earlier versions
requires MDEV-27595
Second, if spider is initialised before udf_init(), create udf by
inserting into `mysql.func`, otherwise do it by `CREATE FUNCTION` as
usual. This change may be generalised in MDEV-31401.
Also factor out some clean-up queries from deinit_spider.inc for use
of spider init tests.
A minor caveat is that early spider initialisation will fail if the
server is bootstrapped for the first time, due to missing `mysql`
database which needs to be created by the bootstrap script.
Removing procedures that were created and dropped during init.
This also fixes a race condition where mtr test with
plugin-load-add=ha_spider.so causes post test check to fail as it
expects the procedures to still be there.
MDEV-27095 installing one spider plugin should not trigger others
There are several plugins in ha_spider: spider, spider_alloc_mem,
spider_wrapper_protocols, spider_rewrite etc.
INSTALL PLUGIN foo SONAME ha_spider causes all the other ones to be
installed by the init queries where foo is any of the plugins.
This introduces unnecessary complexiy. For example it reads
mysql.plugins to find all other plugins, causing the hack of moving
spider plugin init to a separate thread.
To install all spider related plugins, install soname ha_spider should
be used instead.
This also fixes spurious rows in mysql.plugin when installing say only
the spider plugin with `plugin-load-add=SPIDER=ha_spider.so`:
select * from mysql.plugin;
name dl
spider_alloc_mem ha_spider.so # should not be here
spider_wrapper_protocols ha_spider.so # should not be here
Adapted from part of the reverted commit
c160a115b8b6dcd54bb3daf1a751ee9c68b7ee47.
We introduce simple plugin dependency. A plugin init function may
return HA_ERR_RETRY_INIT. If this happens during server startup when
the server is trying to initialise all plugins, the failed plugins
will be retried, until no more plugins succeed in initialisation or
want to be retried.
This will fix spider init bugs which is caused in part by its
dependency on Aria for initialisation.
The reason we need a new return code, instead of treating every
failure as a request for retry, is that it may be impossible to clean
up after a failed plugin initialisation. Take InnoDB for example, it
has a global variable `buf_page_cleaner_is_active`, which may not
satisfy an assertion during a second initialisation try, probably
because InnoDB does not expect the initialisation to be called
twice.
MDEV-30003 Assertion failure upon 2nd execution of SP trying to set collation on non-existing database
The DBUG_ASSER in HA_CREATE_INFO::resolve_to_charset_collation_context()
didn't take into account that the second execution is possible not only
during a prepared EXECUTE, but also during a CALL.
MDEV-30681 SIGFPE / UBSAN runtime error: division by zero in String::needs_conversion on ALTER
The problem was earlier fixed by MDEV-30805. Adding an MTR test only.
b27167c...
by
Tuukka Pasanen <email address hidden>
Make sure that here is MariaDB client available
fe5957e...
by
Tuukka Pasanen <email address hidden>
MDEV-31118: Add Lintian overrides for false positives
MariaDB Compression pluging pacakages mariadb-plugin-provider-*
have only one shared object and those are not linked against
libc and it's intentional so supressing error
library-not-linked-against-libc
There is needed dependency for Systemd DH plugin which
makes error missing-build-dependency-for-dh-addon obsolette.
Reworked debian/control that makes most of
version-substvar-for-external-package error not correct
so remove those that are not available anymore and update
those that are still relevant.
NOTE TO MERGER: This is only up-to MariaDB 10.10.
14eff72...
by
Tuukka Pasanen <email address hidden>
MDEV-31118: Override lintian dh-addon for systemd
Lintian erros with
missing-build-dependency-for-dh-addon systemd (*)
One of these premises should be installed:
debhelper:any (>= 9.20160709~)
debhelper-compat:any
dh-sequence-systemd:any
dh-systemd:any
As there is package debhelper version 10 or higher required
for build. This is false positive Lintian error which should
be supressed..
NOTE TO MERGER: This is only up-to MariaDB 10.10.
3dd3308...
by
Tuukka Pasanen <email address hidden>
MDEV-31118: Rework Salsa-CI YAML work again
Salsa-CI file has got in malfunction state and
if fails with YAML error:
mariadb-10.3 with Buster backports upgrade job:
undefined need: build buster-backports
Also remove Salsa-CI MariaDB 10.3 double
upgrade target.
There is also several upgrades which makes
test green again.