Part one of the sybase work by Caelum (mostly reviewed)
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / AutoCast.pm
index 9eb5245..d854c16 100644 (file)
@@ -23,12 +23,16 @@ statements with values bound to columns or conditions that are not strings will
 throw implicit type conversion errors.
 
 As long as a column L<data_type|DBIx::Class::ResultSource/add_columns> is
-defined, and it resolves to a base RDBMS native type via L</_map_data_type> as
+defined, and it resolves to a base RDBMS native type via L</_native_data_type> as
 defined in your Storage driver, the placeholder for this column will be
 converted to:
 
   CAST(? as $mapped_type)
 
+This option can also be enabled in L<DBIx::Class::Storage::DBI/connect_info> as:
+
+  on_connect_call => ['set_auto_cast']
+
 =cut
 
 sub _prep_for_execute {
@@ -46,7 +50,7 @@ sub _prep_for_execute {
 
     foreach my $bound (@$bind) {
       my $col = $bound->[0];
-      my $type = $self->_map_data_type($col_info->{$col}{data_type});
+      my $type = $self->_native_data_type($col_info->{$col}{data_type});
 
       foreach my $data (@{$bound}[1..$#$bound]) {
         $new_sql .= shift(@sql_part) .
@@ -60,8 +64,28 @@ sub _prep_for_execute {
   return ($sql, $bind);
 }
 
+=head2 connect_call_set_auto_cast
+
+Executes:
+
+  $schema->storage->auto_cast(1);
+
+on connection.
+
+Used as:
+
+    on_connect_call => ['set_auto_cast']
+
+in L<DBIx::Class::Storage::DBI/connect_info>.
+
+=cut
+
+sub connect_call_set_auto_cast {
+  my $self = shift;
+  $self->auto_cast(1);
+}
 
-=head1 AUTHORS
+=head1 AUTHOR
 
 See L<DBIx::Class/CONTRIBUTORS>