X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI.pm;h=e07181029523848a00cef7a0259590e9b7c0631b;hb=5ef3e508fa20d477b62406146cdca0ae658c10dd;hp=f643441b8da83c4acf0753c1fd7124b0ef2ba57a;hpb=4834d8acd30585a6a08c001e5d3684d4eddefe8f;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI.pm b/lib/DBIx/Class/Storage/DBI.pm index f643441..e071810 100644 --- a/lib/DBIx/Class/Storage/DBI.pm +++ b/lib/DBIx/Class/Storage/DBI.pm @@ -167,7 +167,8 @@ use base qw/DBIx::Class/; __PACKAGE__->load_components(qw/AccessorGroup/); __PACKAGE__->mk_group_accessors('simple' => - qw/connect_info _dbh _sql_maker debug debugfh cursor on_connect_do transaction_depth/); + qw/connect_info _dbh _sql_maker _connection_pid debug debugfh cursor + on_connect_do transaction_depth/); sub new { my $new = bless({}, ref $_[0] || $_[0]); @@ -256,6 +257,8 @@ sub ensure_connected { sub dbh { my ($self) = @_; + $self->_dbh(undef) + if $self->_connection_pid && $self->_connection_pid != $$; $self->ensure_connected; return $self->_dbh; } @@ -277,11 +280,22 @@ sub _populate_dbh { foreach my $sql_statement (@{$self->on_connect_do || []}) { $self->_dbh->do($sql_statement); } + + $self->_connection_pid($$); } sub _connect { my ($self, @info) = @_; - return DBI->connect(@info); + + if ($INC{'Apache/DBI.pm'} && $ENV{MOD_PERL}) { + my $old_connect_via = $DBI::connect_via; + $DBI::connect_via = 'connect'; + my $dbh = DBI->connect(@info); + $DBI::connect_via = $old_connect_via; + return $dbh; + } + + DBI->connect(@info); } =head2 txn_begin