App-Sqitch
view release on metacpan or search on metacpan
$h->disconnect if $h->{Type} eq 'db' && $h->{Active} && $h ne $dbh;
});
# Drop the database or schema.
if ($dbh->{Active}) {
if ($ENV{SQITCH_TEST_PG_URI}) {
$dbh->do('SET client_min_messages = warning');
$dbh->do("DROP SCHEMA $_ CASCADE") for $reg1, $reg2;
} else {
$dbh->do("DROP DATABASE $db");
}
}
}
my $err = try {
$pg->_capture('--version');
$pg->use_driver;
$dbh = DBI->connect($uri->dbi_dsn, $uri->user, $uri->password, {
PrintError => 0,
RaiseError => 0,
AutoCommit => 1,
HandleError => $pg->error_handler,
pg_lc_messages => 'C',
});
unless ($ENV{SQITCH_TEST_PG_URI}) {
$dbh->do("CREATE DATABASE $db");
$uri->dbname($db);
}
undef;
} catch {
$_
};
DBIEngineTest->run(
class => $CLASS,
version_query => 'SELECT version()',
target_params => [ uri => $uri, registry => $reg1 ],
alt_target_params => [ uri => $uri, registry => $reg2 ],
skip_unless => sub {
my $self = shift;
die $err if $err;
# Make sure we have psql and can connect to the database.
my $version = $self->sqitch->capture( $self->client, '--version' );
say "# Detected $version";
$self->_capture('--command' => 'SELECT version()');
},
engine_err_regex => qr/^ERROR: /,
init_error => __x(
'Sqitch schema "{schema}" already exists',
schema => $reg2,
),
test_dbh => sub {
my $dbh = shift;
# Make sure the sqitch schema is the first in the search path.
is $dbh->selectcol_arrayref('SELECT current_schema')->[0],
$reg2, 'The Sqitch schema should be the current schema';
},
lock_sql => sub {
my $engine = shift;
return {
is_locked => q{SELECT 1 FROM pg_locks WHERE locktype = 'advisory' AND objid = 75474063 AND objsubid = 1},
try_lock => 'SELECT pg_try_advisory_lock(75474063)',
free_lock => 'SELECT pg_advisory_unlock_all()',
} if $engine->_provider ne 'yugabyte';
return undef;
},
);
done_testing;
( run in 0.422 second using v1.01-cache-2.11-cpan-63c85eba8c4 )