X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FAutoCast.pm;h=3391cfbfd90afdd7609c87247aab30f181bbe30c;hb=d3944540917a76cd054d1bf4ed98f2571c077b2d;hp=e405d02c9599b08db98c3e95610c792860672c2b;hpb=d047d650648a9566e84ca994cf699eebaf0cd156;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/Storage/DBI/AutoCast.pm b/lib/DBIx/Class/Storage/DBI/AutoCast.pm index e405d02..3391cfb 100644 --- a/lib/DBIx/Class/Storage/DBI/AutoCast.pm +++ b/lib/DBIx/Class/Storage/DBI/AutoCast.pm @@ -18,16 +18,16 @@ DBIx::Class::Storage::DBI::AutoCast =head1 DESCRIPTION -Some combinations of RDBMS and DBD drivers (e.g. FreeTDS and Sybase) -statements with values bound to columns or conditions that are not strings -will throw implicit type conversion errors. +In some combinations of RDBMS and DBD drivers (e.g. FreeTDS and Sybase) +statements with values bound to columns or conditions that are not strings will +throw implicit type conversion errors. As long as a column L is -defined, and it resolves to a L C<$dbi_type> via C<_dbi_data_type()> -as defined in your Storage driver, the placeholder for this column will -be converted to: +defined, and it resolves to a base RDBMS native type via L as +defined in your Storage driver, the placeholder for this column will be +converted to: - CAST(? as $dbi_type) + CAST(? as $mapped_type) =cut @@ -46,11 +46,11 @@ sub _prep_for_execute { foreach my $bound (@$bind) { my $col = $bound->[0]; - my $dbi_type = $self->_dbi_data_type($col_info->{$col}{data_type}); + my $type = $self->_native_data_type($col_info->{$col}{data_type}); - foreach my $data (@{$bound}[1..$#$bound]) { # <--- this will multiply the amount of ?'s no...? + foreach my $data (@{$bound}[1..$#$bound]) { $new_sql .= shift(@sql_part) . - ($dbi_type ? "CAST(? AS $dbi_type)" : '?'); + ($type ? "CAST(? AS $type)" : '?'); } } $new_sql .= join '', @sql_part;