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

Chad Granum <exodist@cpan.org>

AUTHORS

Chad Granum <exodist@cpan.org>

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/