App-Sqitch
view release on metacpan or search on metacpan
lib/App/Sqitch/Engine/firebird.pm view on Meta::CPAN
$uri = $uri->clone;
$uri->password(undef);
}
return $uri->as_string;
}
sub _def_user { $ENV{ISC_USER} }
sub _def_pass { $ENV{ISC_PASSWORD} }
sub _dsn {
my $uri = shift->registry_uri;
return $uri->dbi_dsn . ';ib_dialect=3;ib_charset=UTF8';
}
has dbh => (
is => 'rw',
isa => DBH,
lazy => 1,
clearer => '_clear_dbh',
default => sub {
my $self = shift;
$self->use_driver;
lib/App/Sqitch/Engine/firebird.pm view on Meta::CPAN
[ password => $self->password ],
) {
push @ret, "-$spec->[0]" => $spec->[1] if $spec->[1];
}
push @ret => (
'-quiet',
'-bail',
'-sqldialect' => '3',
'-pagelength' => '16384',
'-charset' => 'UTF8',
$self->connection_string($uri),
);
return \@ret;
},
);
sub isql { @{ shift->_isql } }
has tz_offset => (
t/firebird.t view on Meta::CPAN
sqitch => $sqitch,
uri => URI->new('db:firebird:foo.fdb'),
);
isa_ok my $fb = $CLASS->new(sqitch => $sqitch, target => $target), $CLASS;
is $fb->key, 'firebird', 'Key should be "firebird"';
is $fb->name, 'Firebird', 'Name should be "Firebird"';
is $fb->username, $ENV{ISC_USER}, 'Should have username from environment';
is $fb->password, $ENV{ISC_PASSWORD}, 'Should have password from environment';
is $fb->_limit_default, '18446744073709551615', 'Should have _limit_default';
is $fb->_dsn, 'dbi:Firebird:dbname=sqitch.fdb;ib_dialect=3;ib_charset=UTF8',
'Should append "ib_dialect=3;ib_charset=UTF8" to the DSN';
my $have_fb_client;
if ($have_fb_driver && (my $client = try { $fb->client })) {
$have_fb_client = 1;
like $client, qr/isql|fbsql|isql-fb/,
'client should default to isql | fbsql | isql-fb';
}
is $fb->uri->dbname, file('foo.fdb'), 'dbname should be filled in';
is $fb->registry_uri->dbname, 'sqitch.fdb',
'registry dbname should be "sqitch.fdb"';
is $fb->registry_destination, $fb->registry_uri->as_string,
'registry_destination should be the same as registry URI';
my @std_opts = (
'-quiet',
'-bail',
'-sqldialect' => '3',
'-pagelength' => '16384',
'-charset' => 'UTF8',
);
my $dbname = $fb->connection_string($fb->uri);
is_deeply([$fb->isql], [$fb->client, @std_opts, $dbname],
'isql command should be std opts-only') if $have_fb_client;
isa_ok $fb = $CLASS->new(sqitch => $sqitch, target => $target), $CLASS;
ok $fb->set_variables(foo => 'baz', whu => 'hi there', yo => 'stellar'),
'Set some variables';
t/firebird.t view on Meta::CPAN
message => 'Failed to connect to Firebird',
previous_exception => $_,
),
};
END {
return if $ENV{CI}; # No need to clean up in CI environment.
foreach my $dbname (@cleanup) {
next unless -e $dbname;
$uri->dbname($dbname);
my $dsn = $uri->dbi_dsn . q{;ib_dialect=3;ib_charset=UTF8};
my $dbh = DBI->connect($dsn, $uri->user, $uri->password, {
FetchHashKeyName => 'NAME_lc',
AutoCommit => 1,
RaiseError => 0,
PrintError => 0,
}) or die $DBI::errstr;
# Disconnect any other database handles.
$dbh->{Driver}->visit_child_handles(sub {
my $h = shift;
( run in 0.441 second using v1.01-cache-2.11-cpan-fd5d4e115d8 )