Patch from Slavin Rezic <srezic@cpan.org> to prevent quoting around numeric defaults...
[DBIx-DBSchema.git] / DBSchema / Column.pm
index 431e69c..b13d5c0 100644 (file)
@@ -5,7 +5,7 @@ use vars qw($VERSION);
 use Carp;
 use DBIx::DBSchema::_util qw(_load_driver _dbh);
 
-$VERSION = '0.11';
+$VERSION = '0.12';
 
 =head1 NAME
 
@@ -248,13 +248,14 @@ sub line {
   my($self, $dbh) = ( shift, _dbh(@_) );
 
   my $driver = $dbh ? _load_driver($dbh) : '';
+  my $driver_class = "DBIx::DBSchema::DBD::${driver}";
 
   ##
   # type mapping
   ## 
 
   my %typemap;
-  %typemap = eval "\%DBIx::DBSchema::DBD::${driver}::typemap" if $driver;
+  %typemap = eval "\%${driver_class}::typemap" if $driver;
   my $type = defined( $typemap{uc($self->type)} )
     ? $typemap{uc($self->type)}
     : $self->type;
@@ -265,7 +266,13 @@ sub line {
 
   my $default;
   my $orig_default = $self->default;
-  if ( defined($self->default) && !ref($self->default) && $self->default ne ''
+  if ( $driver_class->can("_column_value_needs_quoting") ) {
+    if ($driver_class->_column_value_needs_quoting($self)) {
+      $default = $dbh->quote($self->default);
+    } else {
+      $default = ref($self->default) ? ${$self->default} : $self->default;
+    }
+  } elsif ( defined($self->default) && !ref($self->default) && $self->default ne ''
        && ref($dbh)
        # false laziness: nicked from FS::Record::_quote
        && ( $self->default !~ /^\-?\d+(\.\d+)?$/