Revision history for Perl extension DBIx::Connector. 0.42 2010-12-17T18:35:54 - If a catch block died, the exception was not being propagated. That is, if a catch block threw an exception, DBIx::Connector ate it, and any calling code would not be able to catch it. This was a pretty serious bug; upgrading is strongly recommended for anyone using catch blocks. - When `run()`, `txn()`, or `svp()` was called recursively from within a second fixup execution, it was not respecting the fact that it was recursive and could try to start a transaction again. This happened *only* when a fixup run found that the database was disconnected and successfully re-connected, so it's a pretty rare condition. 0.41 2010-12-08T21:02:32 - `connect()` no longer returns a disconnected database handle. Thanks to John Siracusa for the spot (Bug #6). - Added `disconnect_on_destroy()`, which can be used to disable disconnecting the database handle when the connector object is destroyed. Suggested by John Siracusa. 0.40 2010-09-17T18:44:01 - The code refs passed to `run()`, `txn()`, and `svp()` now know their contexts, so that `wantarray` can be used to decide what to return. Patch from Yaroslav Korshak. - Set `AutoInactiveDestroy` on connect with DBI 1.614 and higher, unless it is explicitly set in the attributes. This makes things even safer in a forking environment, preventing a parent process from getting disconnected when a child exits without using the connection. The reports from Peter Rabbitson and Aran Deltac and subsequent discussion with Tim Bunce led to the addition of this attribute in DBI 1.614, which is now the recommended version of DBI. - `DESTROY()` no longer pings the database or rolls back transactions. It now simply calls `disconnect`. This avoids warnings during global destruction, and doesn't seem necessary anyway, as the DBI does these things during global destruction (and always has). Thanks to Matt Trout for the heads-up. - `DESTROY()` now clears `CachedKids`, following the precedent of DBIx::Class. May not be needed for recent-ish drivers, but seems harmless and it's nice to avoid warnings were possible. Reported by Matt Trout. - The `connected()` method no longer `local`ly sets `RaiseError`. It instead leaves that to the drivers (currenly only Driver::Oracle). - The exception classes `DBIx::Connector::TxnRollbackError` and `DBIx::Connector::SvpRollbackError` now use `our @ISA =` instead of `use base` to inherit from `DBIx::Connector::RollbackError. This is to avoid failures from mod_perl restarts. Suggested by Matt Trout. - Require Test::Pod 1.41 for POD tests so that `L` is considered valid. 0.35 2010-06-04T00:32:02 - Added a scoping block around the execution of the blocks passed to `run()`, `txn()`, and `svp()`. This prevents an app from exiting when a user returns from the block via the `next` or `last` keyword, which in turn prevented transaction management code from running. Thanks to Aran Deltac for the suggestion. - Added exception object for rollback failures. This is to keep rollback failures from completely swallowing up the underlying transaction failures. 0.34 2010-05-03T03:15:40 - Added `mode()` attribute to control the default mode used by `run()`, `txn()`, and `svp()`. - Deprecated `with()`. Its use triggers a warning and it will be removed in a future version. Use `mode()` instead. 0.33 2010-03-31T22:56:07 - A few useful documentation improvements, thanks to Quinn Weaver. - Added `in_txn()`, which returns true when the connection is in a transaction and false when it's not. 0.32 2010-02-22T20:15:50 - Switched to using `FETCH()` and `STORE()` to get and set DBI attributes where possible. The primary reason is to avoid death during global destruction, when the DBI's `tie`d interface can sometimes be pulled out from under us. Switched to the OO interface througout to be consistent. 0.31 2009-11-09T01:54:52 - Added missing version numbers to DBIx::Connector::Driver::SQLite and the proxy class used by `with()`. - Fixed orphaned references to DBIx::Connection to properly be DBIx::Connector. - Removed methods deprecated in 0.20: `do()`, `txn_do()`, `svp_do()`, and `clear_cache()`. - Some refactoring and code cleanup. - Some doc typos corrected by Robert Buels. - Fixed test failure on Win32. 0.30 2009-10-29T21:31:02 - Compatibility change: Additional arguments to `run()`, `txn()`, and `svp()` are no longer passed on to the execution of the block, since they are immediately available to the closure, anyway. This simplifies things for integrated exception handling (next item). - Added integrated exception-handling support to `run()`, `txn()`, and `svp()`. Thanks to Mark Lawrence for the suggestion. - Removed the undocumented `savepoint()`, `release()`, and `rollback_to()` methods from DBIx::Connector, since those methods are in the drivers, and so were redundant. - Fixed the `author` section of `META.yml`. - `svp()` no longer throws an exception whe used with an RDBMS that doesn't support savepoints. In such situations, savepoints are treated as a no-op, and thus the transactional behavior of `svp()` becomes the same as `txn()`. - Moved up the discussion of calling `svp()` outside of a transaction in the documentation. 0.20 2009-10-20T22:33:00 - Compatibility changes: + Added `run()`, `txn()`, and `svp()` as replacements for `do()`, `txn_do()`, and `svp_do()`. The latter will issue a warning when called, and be removed in two releases. + Eliminated caching and mod_perl special-casing. - Fixed the GitHub links for realz. - Updated minimum required Test::More to 0.88 so that testing classes with `isa_ok()` will work as expected. Thanks to mlawren for the spot. - Fixed bug passing arguments on retry in `txn()`. Thanks to [Mark Lawrence](http://github.com/mlawren) for the pull request. - Fixed a bug in `txn()` where it would fail to notify other blocks that it was running the block when the user started a transaction. - Changed `dbh()` so that it does not call `ping()` when it is called from within a code reference passed to a `run*()` method. - Made the docs with regard to the re-execution of a code reference passed to `run()` and friends in fixup mode more accurate, thanks to Tim Bunce. - Fetching a cached database handle now always checks its `Active` attribute as well as different process and thread IDs. The only thing not always done is `ping`ing the database. - Added `with()`. 0.12 2009-10-06T16:29:16 - Fixed the GitHub links, which were still using the old name. - Removed `use feature` and `use utf8` from `t/pod-coverage.t` -- those were pastos from another project. - Removed `use DBD::SQLite` from DBix::Connector::Driver::SQLite. It will already have been loaded by the time that code loads. 0.11 2009-10-05T22:05:29 - Filled in the important details in the README. - Changed name from DBIx::Connection to DBIx::Connector, as there is already a module called DBIx::Connection on the CPAN. 0.10 2009-10-05T21:16:03 - Initial version, with code borrowed from DBIx::Class, Apache::DBI, Catalyst::Model::DBI, and various other locales.