qw/_connect_info _dbh _sql_maker _conn_pid _conn_tid debug debugobj
cursor on_connect_do transaction_depth/);
+=head1 NAME
+
+DBIx::Class::Storage::DBI - DBI storage handler
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+This class represents the connection to the database
+
+=head1 METHODS
+
=head2 new
=cut
croak($msg);
}
-=head1 NAME
-
-DBIx::Class::Storage::DBI - DBI storage handler
-
-=head1 SYNOPSIS
-
-=head1 DESCRIPTION
-
-This class represents the connection to the database
-
-=head1 METHODS
-
-=cut
-
=head2 connect_info
The arguments of C<connect_info> are always a single array reference.
=head2 on_connect_do
-Executes the sql statements given as a listref on every db connect.
+ $schema->storage->on_connect_do(['PRAGMA synchronous = OFF']);
+
+Call this after C<< $schema->connect >> to have the sql statements
+given executed on every db connect.
This option can also be set via L</connect_info>.
my ($self, $info_arg) = @_;
if($info_arg) {
+ my %sql_maker_opts;
my $info = [ @$info_arg ]; # copy because we can alter it
my $last_info = $info->[-1];
if(ref $last_info eq 'HASH') {
for my $sql_maker_opt (qw/limit_dialect quote_char name_sep/) {
if(my $opt_val = $last_info->{$sql_maker_opt}) {
$used = 1;
- $self->sql_maker->$sql_maker_opt($opt_val);
+ $sql_maker_opts{$sql_maker_opt} = $opt_val;
}
}
}
$self->_connect_info($info);
+ $self->sql_maker->$_($sql_maker_opts{$_}) for(keys %sql_maker_opts);
}
$self->_connect_info;
sub deployment_statements {
my ($self, $schema, $type, $version, $dir, $sqltargs) = @_;
+ # Need to be connected to get the correct sqlt_type
+ $self->ensure_connected() unless $type;
$type ||= $self->sqlt_type;
$version ||= $schema->VERSION || '1.x';
$dir ||= './';
# next if($_ =~ /^DROP/m);
next if($_ =~ /^BEGIN TRANSACTION/m);
next if($_ =~ /^COMMIT/m);
- $self->debugobj->query_begin($_) if $self->debug;
+ $self->debugobj->query_start($_) if $self->debug;
$self->dbh->do($_) or warn "SQL was:\n $_";
$self->debugobj->query_end($_) if $self->debug;
}