X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI.pm;h=db51e0198024fae19c39dbebd177ec870e958788;hb=e34bae3a2a4b92ca2e825f29bdde33d972ed8dd0;hp=1d1e57b012b80cc6f13ae6c51a1316c24bd0d429;hpb=dace98195a6ec580bfa0acf1f673ccbbbf8f6ce3;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/Storage/DBI.pm b/lib/DBIx/Class/Storage/DBI.pm index 1d1e57b..db51e01 100644 --- a/lib/DBIx/Class/Storage/DBI.pm +++ b/lib/DBIx/Class/Storage/DBI.pm @@ -15,8 +15,8 @@ use Scalar::Util(); use List::Util(); __PACKAGE__->mk_group_accessors('simple' => - qw/_connect_info _dbi_connect_info _dbh _sql_maker _sql_maker_opts - _conn_pid _conn_tid transaction_depth _dbh_autocommit savepoints/ + qw/_connect_info _dbi_connect_info _dbh _sql_maker _sql_maker_opts _conn_pid + _conn_tid transaction_depth _dbh_autocommit _driver_determined savepoints/ ); # the values for these accessors are picked out (and deleted) from @@ -763,7 +763,7 @@ sub _populate_dbh { sub _determine_driver { my ($self) = @_; - if (ref $self eq 'DBIx::Class::Storage::DBI') { + if (not $self->_driver_determined) { my $driver; if ($self->_dbh) { # we are connected @@ -780,6 +780,8 @@ sub _determine_driver { bless $self, $storage_class; $self->_rebless(); } + + $self->_driver_determined(1); } } @@ -1142,12 +1144,16 @@ sub _execute { sub insert { my ($self, $source, $to_insert) = @_; + if (not $self->_driver_determined) { + $self->_determine_driver; + goto $self->can('insert'); + } + my $ident = $source->from; my $bind_attributes = $self->source_bind_attributes($source); my $updated_cols = {}; - $self->ensure_connected; foreach my $col ( $source->columns ) { if ( !defined $to_insert->{$col} ) { my $col_info = $source->column_info($col);