No longer explicitly disconnect on ::Storage DESTROY
Peter Rabbitson [Tue, 14 Sep 2010 22:15:46 +0000 (00:15 +0200)]
Changes
lib/DBIx/Class/Storage/DBI.pm
t/storage/error.t

diff --git a/Changes b/Changes
index 2195bab..aa53c2e 100644 (file)
--- a/Changes
+++ b/Changes
@@ -41,6 +41,8 @@ Revision history for DBIx::Class
           perl versions
         - Non-blessed reference exceptions are now correctly preserved
           when thrown from udner DBIC (e.g. from txn_do)
+        - No longer disconnecting database handles supplied to connect
+          via a coderef
 
     * Misc
         - Refactored capability handling in Storage::DBI, allows for
index 3848387..2cc0219 100644 (file)
@@ -187,17 +187,8 @@ sub new {
 sub DESTROY {
   my $self = shift;
 
-  # destroy just the object if not native to this process/thread
-  $self->_preserve_foreign_dbh;
-
-  # some databases need this to stop spewing warnings
-  if (my $dbh = $self->_dbh) {
-    try {
-      %{ $dbh->{CachedKids} } = ();
-      $dbh->disconnect;
-    };
-  }
-
+  # some databases spew warnings on implicit disconnect
+  local $SIG{__WARN__} = sub {};
   $self->_dbh(undef);
 }
 
index 66b901a..68bbb5a 100644 (file)
@@ -36,12 +36,7 @@ throws_ok (
 # destruction of everything except the $dbh should use the proper
 # exception fallback:
 
-# FIXME
-# These explicit disconnections on loss of $storage don't seem
-# right... disable it here for the test anyway
 {
-  local $dbh->{Callbacks}{disconnect} = sub { 1 };
-
   undef ($schema);
   throws_ok (
     sub {