App-Sqitch
view release on metacpan or search on metacpan
die "MySQL >= 50100 required; this is $dbh->{mariadb_serverversion}\n"
unless $dbh->{mariadb_serverversion} >= 50100;
}
$dbh->do("CREATE DATABASE $db");
$uri->dbname($db);
undef;
} catch {
$_
};
DBIEngineTest->run(
class => $CLASS,
target_params => [ registry => $reg1, uri => $uri ],
alt_target_params => [ registry => $reg2, uri => $uri ],
skip_unless => sub {
my $self = shift;
die $err if $err;
# Make sure we have mysql and can connect to the database.
my $version = $self->sqitch->capture( $self->client, '--version' );
say "# Detected CLI $version";
say '# Connected to MySQL ' . $self->_capture('--execute' => 'SELECT version()');
1;
},
engine_err_regex => qr/^You have an error /,
init_error => __x(
'Sqitch database {database} already initialized',
database => $reg2,
),
add_second_format => q{date_add(%s, interval 1 second)},
test_dbh => sub {
my $dbh = shift;
# Check the session configuration.
for my $spec (
[character_set_client => qr/^utf8/],
[character_set_server => qr/^utf8/],
($dbh->{mariadb_serverversion} < 50500 ? () : ([default_storage_engine => qr/^InnoDB$/])),
[time_zone => qr/^\+00:00$/],
[group_concat_max_len => qr/^32768$/],
) {
like $dbh->selectcol_arrayref('SELECT @@SESSION.' . $spec->[0])->[0],
$spec->[1], "Setting $spec->[0] should match $spec->[1]";
}
# Special-case sql_mode.
my $sql_mode = $dbh->selectcol_arrayref('SELECT @@SESSION.sql_mode')->[0];
for my $mode (qw(
ansi
strict_trans_tables
no_auto_value_on_zero
no_zero_date
no_zero_in_date
only_full_group_by
error_for_division_by_zero
)) {
like $sql_mode, qr/\b\Q$mode\E\b/i, "sql_mode should include $mode";
}
},
lock_sql => sub {
my $lock_name = shift->_lock_name; return {
is_locked => "SELECT is_used_lock('$lock_name')",
try_lock => "SELECT get_lock('$lock_name', 0)",
wait_time => 1, # get_lock() does not support sub-second precision, apparently.
async_free => 1,
free_lock => 'SELECT ' . ($dbh ? do {
# MySQL 5.5-5.6 and Maria 10.0-10.4 prefer release_lock(), while
# 5.7+ and 10.5+ prefer release_all_locks().
$dbh->selectrow_arrayref('SELECT version()')->[0] =~ /^(?:5\.[56]|10\.[0-4])/
? "release_lock('$lock_name')"
: 'release_all_locks()'
} : ''),
} },
);
done_testing;
( run in 1.624 second using v1.01-cache-2.11-cpan-63c85eba8c4 )