DBIx::Class::Storage::DBI::AutoCast
/;
use mro 'c3';
-use Carp::Clan qw/^DBIx::Class/;
+use DBIx::Class::Carp;
use Scalar::Util 'blessed';
use List::Util 'first';
use Sub::Name();
__PACKAGE__->sql_limit_dialect ('RowCountOrGenericSubQ');
__PACKAGE__->sql_quote_char ([qw/[ ]/]);
+__PACKAGE__->datetime_parser_type('DateTime::Format::Sybase');
__PACKAGE__->mk_group_accessors('simple' =>
qw/_identity _blob_log_on_update _writer_storage _is_extra_storage
sub _prep_for_execute {
my $self = shift;
- my ($op, $extra_bind, $ident, $args) = @_;
+ my ($op, $ident, $args) = @_;
my ($sql, $bind) = $self->next::method (@_);
my $table = blessed $ident ? $ident->from : $ident;
my $bind_info = $self->_resolve_column_info(
- $ident, [map $_->[0], @{$bind}]
+ $ident, [map { $_->[0]{dbic_colname} || () } @{$bind}]
);
my $bound_identity_col =
first { $bind_info->{$_}{is_auto_increment} }
my $self = shift;
my ($op) = @_;
- my ($rv, $sth, @bind) = $self->dbh_do($self->can('_dbh_execute'), @_);
+ my ($rv, $sth, @bind) = $self->next::method(@_);
if ($op eq 'insert') {
$self->_identity($sth->fetchrow_array);
}
);
- my @bind = do {
- my $idx = 0;
- map [ $_, $idx++ ], @source_columns;
- };
+ my @bind = map { [ $source_columns[$_] => $_ ] } (0 .. $#source_columns);
$self->_execute_array(
$source, $sth, \@bind, \@source_columns, \@new_data, sub {
=cut
-{
- my $old_dbd_warned = 0;
+sub connect_call_datetime_setup {
+ my $self = shift;
+ my $dbh = $self->_get_dbh;
- sub connect_call_datetime_setup {
- my $self = shift;
- my $dbh = $self->_get_dbh;
-
- if ($dbh->can('syb_date_fmt')) {
- # amazingly, this works with FreeTDS
- $dbh->syb_date_fmt('ISO_strict');
- } elsif (not $old_dbd_warned) {
- carp "Your DBD::Sybase is too old to support ".
- "DBIx::Class::InflateColumn::DateTime, please upgrade!";
- $old_dbd_warned = 1;
- }
+ if ($dbh->can('syb_date_fmt')) {
+ # amazingly, this works with FreeTDS
+ $dbh->syb_date_fmt('ISO_strict');
+ }
+ else {
+ carp_once
+ 'Your DBD::Sybase is too old to support '
+ .'DBIx::Class::InflateColumn::DateTime, please upgrade!';
$dbh->do('SET DATEFORMAT mdy');
-
1;
}
}
-sub datetime_parser_type { "DateTime::Format::Sybase" }
# ->begin_work and such have no effect with FreeTDS but we run them anyway to
# let the DBD keep any state it needs to.