NAME
DBIx::QuickDB::Driver::MariaDB - MariaDB MySQL driver for DBIx::QuickDB.
DESCRIPTION
MariaDB MySQL driver for DBIx::QuickDB.
SYNOPSIS
See DBIx::QuickDB.
MYSQL SPECIFIC OPTIONS
- dbd_driver => $DRIVER
-
Should be either DBD::mysql or DBD::MariaDB. If not specified then DBD::MariaDB is preferred with a fallback to DBD::MySQL.
KNOWN BROKEN SERVER VERSIONS
The following MariaDB releases are refused by viable() (so driver selection skips them and get_db/build_db will not silently use them):
10.11.16 (fixed in 10.11.17)
11.4.10 (fixed in 11.4.11)
11.8.6 (fixed in 11.8.7)
12.2.2 (never fixed; 12.2.2 is the final 12.2 release)
12.3.1 (fixed in 12.3.2)
On these releases any information_schema.table_constraints or information_schema.referential_constraints query whose scan reaches information_schema's own tables (for example a scan without an effective WHERE table_schema = DATABASE() filter, or a join whose plan defeats that filter's pushdown) locks an ACL mutex that is never initialized when the server runs with --skip-grant-tables - which DBIx::QuickDB always uses. The query thread then blocks forever: it burns no CPU, KILL QUERY and KILL CONNECTION cannot terminate it, and a graceful server shutdown waits on it forever (the QuickDB watcher's SIGKILL escalation still reclaims the server at teardown). The client is stuck in a C-level read inside libmariadb, so Perl-level alarm() or %SIG handlers in the calling process never fire; only SIGKILL (or killing the server) frees it.
This is upstream bug MDEV-38811 (introduced by MDEV-38209). If you accept the risk - for example your code never queries those two information_schema tables - you can set the QDB_MARIADB_IGNORE_BROKEN environment variable to use such a server anyway.
ENVIRONMENT VARIABLES
QDB_MARIADB_IGNORE_BROKEN
Set to a true value to let viable() accept MariaDB releases listed under "KNOWN BROKEN SERVER VERSIONS" anyway.
QDB_MYSQL_SSL_FIPS
Set to 1 to enable, 0 to disable or enter any string accepted by the ssl_fips_mode mysqld config option. If this environment variable is not defined then the ssl_fips_mode option will not be included in the generated config file at all by default.
This is mainly used to allow this dists test suite to pass on systems where FIPS is required and enforced.
SOURCE
The source code repository for DBIx-QuickDB can be found at https://github.com/exodist/DBIx-QuickDB/.
MAINTAINERS
AUTHORS
COPYRIGHT
Copyright 2020 Chad Granum <exodist7@gmail.com>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See http://dev.perl.org/licenses/