X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=DBSchema%2FColumn.pm;h=b13d5c0033ffc3b779cd28bc615d1d377a08d8bc;hb=b8a52445f2a1bdae86e16d4a3e9aa9d2b709c333;hp=431e69ce2c909a3d06121dee67d8c317e7dc5b71;hpb=8e56765908b23bf73e958733ead20b1d8b53a9ef;p=DBIx-DBSchema.git diff --git a/DBSchema/Column.pm b/DBSchema/Column.pm index 431e69c..b13d5c0 100644 --- a/DBSchema/Column.pm +++ b/DBSchema/Column.pm @@ -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+)?$/