App-Sqitch
view release on metacpan or search on metacpan
lib/App/Sqitch/Engine/exasol.pm view on Meta::CPAN
package App::Sqitch::Engine::exasol;
use 5.010;
use Moo;
use utf8;
use Path::Class;
use DBI;
use Try::Tiny;
use App::Sqitch::X qw(hurl);
use Locale::TextDomain qw(App-Sqitch);
use App::Sqitch::Types qw(DBH Dir ArrayRef);
use App::Sqitch::Plan::Change;
use List::Util qw(first);
use namespace::autoclean;
extends 'App::Sqitch::Engine';
our $VERSION = 'v1.6.1'; # VERSION
sub _dt($) {
require App::Sqitch::DateTime;
return App::Sqitch::DateTime->new(split /:/ => shift);
}
sub key { 'exasol' }
sub name { 'Exasol' }
sub driver { 'DBD::ODBC 1.59' }
sub default_client { 'exaplus' }
BEGIN {
# Disable SQLPATH so that we don't read scripts from unexpected places.
$ENV{SQLPATH} = '';
}
sub destination {
my $self = shift;
# Just use the target name if it doesn't look like a URI or if the URI
# includes the database name.
return $self->target->name if $self->target->name !~ /:/
|| $self->target->uri->dbname;
# Use the URI sans password.
my $uri = $self->target->uri->clone;
$uri->password(undef) if $uri->password;
return $uri->as_string;
}
# No username or password defaults.
sub _def_user { }
sub _def_pass { }
has _exaplus => (
is => 'ro',
isa => ArrayRef,
lazy => 1,
default => sub {
my $self = shift;
my $uri = $self->uri;
my @ret = ( $self->client );
# Collect the cquery params and convert keys to uppercase.
require URI::QueryParam;
my $qry = $uri->query_form_hash;
for my $key (keys %{ $qry }) {
my $ukey = uc $key;
next if $key eq $ukey;
# Move value to uppercase key.
my $val = delete $qry->{$key};
if (!exists $qry->{$ukey}) {
# Store under uppercase key.
$qry->{$ukey} = $val;
} else {
( run in 0.831 second using v1.01-cache-2.11-cpan-99c4e6809bf )