Revision history for Perl extension DBIx::Connector.

0.56  2016-03-16T17:07:05Z
      - Added Firebird support, thanks to Stefan Suciu.
      - Fixed SQLite savepoint support to properly detect SQlite versions 3.9
        and higher.
      - Restored MySQL savepoint testing when the DBICTEST_* environment
        variables are set.

0.55  2016-02-05T18:59:24Z
      - Added versions to the RollbackError exception classes to make PAUSE

0.54  2016-02-05T18:52:44Z
      - Removeed the Pod tests from the distribution.
      - Fixed the example code for handling `rollback_error` exceptions in the
        documentation to properly wrap the transaction in an exception
        handler. Patch from Perlover (issue #32).
      - Improved handling of connection failures when RaiseError (or
        HandleError) is not set. Thanks to Andreas Huber for the report and
      - Document that `$_` is set locally, not globally, in the methods that
        set it. Suggested by William Lindley.
      - The disconnect method no longer longer remove entries from the DBI
        handle's CachedKids attribute. That behavior appears to be a
        workaround for a database we don't (yet) support.
      - Fixed a test failure where the test system has the `$DBI_DSN` or
        `$DBI_DRIVER` environment variable set. Thanks to Erik Rijkers for the
      - Added recommendation to use DBD::Pg 3.5.0 or later to the Pg driver.
        Earlier versions had an incorrect implementation of the `ping()`
        method (Issue #41).

0.53  2013-03-20T06:04:34Z
      - Fixed some documentation typos, thanks to Mike O'Regan (Issue #22).
      - Fixed issue where an connection failure caused an unhelpful error
        (Issue #26).

0.52  2012-05-29T18:32:42Z
      - The DBI params are now encapsulated in a code reference, rather than
        stored as the passed array, so that the password is less likely to be
        displayed in a dump. Idea borrowed from Rose::DB. Patch from Brad
      - Eliminated warning about the non-portability of a v-string on older
        Perls. Thanks to Mark Lawrence for the report (Issue #17).
      - Removed a couple of leftover examples of the `catch` feature removed
        in v0.50. Thanks to Randy Stauner for the patch!
      - Eliminated more "Use of qw(...) as parentheses" syntax errors in tests
        when running on Perl 5.17.
      - Add mention of DBI Callbacks parameter to the docs, as folks often ask
        for this functionality, not realizing that the DBI already provides
        it. Randy Stauner.

0.51  2012-02-18T00:14:48Z
      - Fixed internal exception handling on Perls less than 5.14, where some
        exceptions woult not be propagated to the caller.

0.50  2012-02-14T18:25:07Z
      - The `catch` functionality has been completely removed. Any `catch`
        block passed to `run()`, `txn()`, or `svp()` will be ignored. Errors
        will trigger fatal exceptions.
      - Removed the `with` method, which was deprecated in 0.34. Use `mode()`
      - Fixed bad method call attempted when an `svp()` block failed. Thanks
        to Ricardo SIGNES for the regression test and the fix.
      - Fixed creation of the SQLite driver savepoint methods so that they
        exist and work even if the driver is loaded before DBD::SQLite. Thanks
        to Ricardo SIGNES for the regression test and the fix.

0.47  2011-09-26T17:12:07Z
      - Use of the deprecated `catch` functionality now warns on every call,
        rather than just the first call from a given caller.

0.46  2011-07-17T00:47:49
      - Eliminated "Use of qw(...) as parentheses is deprecated" warning in
        test when running on Perl 5.14.
      - Properly `local`ing `$$` in the `t/base.t` test so that it doesn't die
        on Perl 5.15. Thanks to Andreas J. Koenig for the report and diagnosis
        and to Nicholas Clark for the fix.
      - Duplicate paragraphs removed from `` thanks to Ask Bjørn
      - The `catch` functionality is deprecated. It will warn once for each
        caller to keep log verbosity down. In the next release, it will warn
        for every call. The release after that, it will be removed altogether.

0.45  2011-05-10T21:44:08
      - Fixed crash when `in_txn()` was called before an actual connection
        was established.
      - Strongly recommend setting `AutoCommit` to true in the documentation.
        Setting `AutoCommit` to false defeats the scoping behavior of `txn()`
        and therefore should not be used.
      - Nested exception handling now works properly in nested calls to
        `run()` in fixup mode and in nested calls to `txn()` in all modes.
        Thanks to Mark Lawrence for the report (RT #66974).

0.44  2011-03-20T01:04:59
      - Fixed bug with the MySQL driver introduced by the auto-reconnection
        fix in 0.43. Sorry for the lame mistake. [Lee Aylward]

0.43  2011-03-17T20:03:16
      - DBIx::Connector now sets the DBI `RaiseError` parameter to true in
        `new()` if neither it nor `HandleError` has been specified. This is to
        increase the likelihood that exception handling will be properly
        triggered in `run()`, `txn()`, and `svp()`. Documentation has also
        been added to emphasize the importance of setting `RaiseError` or
        `HandleError` appropriately.
      - Documented that `AutoInactiveDestroy` is set to true in `new()` if it
        is not specified. It's important tht this attribute be true in forking
      - After connecting to the database, the MySQL driver,
        DBIx::Connector::Driver::mysql, now always sets the
        `mysql_auto_reconnect` attribute to false. This is to prevent MySQL's
        auto-reconnection feature from interfering with DBIx::Connector's
        auto-reconnection functionality in `fixup` mode. Thanks to Karen
        Etheridge and Peter Rabbitson for the report.
      - Removed mention of the use of the `catch` function from Try::Tiny,
        since it is no longer compatible to use passing the exception-handling
        function. Just using `catch =>` instead, which is cleaner-looking
        anyway (RT #65196).

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
      - 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 (Issue #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<text|url>` 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

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

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
      - 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]( 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.