Permalink
Commits on Oct 5, 2009
  1. Add MSSQL driver.

    theory committed Oct 5, 2009
  2. Added mod_perl support

    theory committed Oct 5, 2009
    * Connections are not cached during mod_perl startup.
    * Added `clear_cache()` for everyone else.
    * Added comment to possibly disable pid checking under mod_perl in the future.
Commits on Oct 3, 2009
  1. Typo

    theory committed Oct 3, 2009
  2. A few more credits.

    theory committed Oct 3, 2009
  3. Restored a test to ensure that connections are singletons.

    theory committed Oct 3, 2009
    Also updated the spelling tests.
  4. Changed `Driver->new` to a factory constructor

    theory committed Oct 3, 2009
    * It now loads the proper subclass for the named driver.
    * DBIx::Connection no longer finds the proper subclass itself.
    * It will alo now returns singletons for each driver, rather than for each
      class. This is so that the die message in the savepoint methods will be more
      accurate.
    * Documented the driver base class and updated the authors.
  5. Use the `_driver` accessor.

    theory committed Oct 3, 2009
Commits on Oct 2, 2009
  1. Move txn stuff to drivers and eval second txn call

    theory committed Oct 2, 2009
    Moved the calls to `begin_work`, `commit`, and `rollback` to the drivers, as
    ribasushi tells me that there are some problems with those implemented by
    DBD::Sybase, and there are currently workarounds in a branch of DBIx::Class.
    DBIx::Connection now calls only one DBI method directly, `disconnect`. All
    others are handled by the driver classes.
    
    Also realized that the second call to the sub in `txn_do` should be
    rolled-back in the event of a failure, so made that change, too, and added
    tests for it.
Commits on Sep 29, 2009
  1. Added Oracle driver.

    theory committed Sep 29, 2009
  2. Updated documentation

    theory committed Sep 29, 2009
    * Covered transaction management more, including note about borrowing from
      DBIx::Class.
    * Gave examples of nested execution, though it's pretty worthless unless
      you're using `svp_do`.
    * Added `use mro 'c3' to the Pg driver.
    * Added the mysql driver.
    * Added tests to ensure that `txn_do` leaves a transaction alone if it's
      already started.
  3. Renamed `svp_live.t` to `svp_do_live.t`

    theory committed Sep 29, 2009
    Still might remove the savepoint methods and just leave them in the drivers.
  4. Added `svp_do` tests

    theory committed Sep 29, 2009
    * Fixed a bug in `svp_do()` where arguments were not properly retained when
      dispatching to `txn_do`.
    * Deleted some cruft.
  5. Simplified savepoint name management

    theory committed Sep 29, 2009
    * Eliminated the array of savepoints in favor of a simple depth flag that is
      incremented and decremented as appropriate.
    * Changed `_set_driver` to `_driver` and modified it to return the driver if
      it's already set. Might make it public at some point.
    * Removed savepoint name management from the savepoint methods. Now `svp_do`
      manages names itself, which was the whole purpose of the name management.
      It uses a depth flag to create nice nested savepoint names.
    * Commented out the docuemntation for the savepoint methods. They are a lot
      simpler now and really do something that should be handled by the DBI
      itself. I sent an email to the dbi dev list suggesting such. Meanwhile, I
      might decide to keep the methods in the driver clases but not the connection
      class.
    * Removed the execution bit from tests scripts that had it set.
  6. Wrote tests for `svp_do` and made it work.

    theory committed Sep 29, 2009
    * Changed the private savepoint methods to public methods. This is because
      there is no such interface in the DBI, and it's handy. I might make them
      private again, though, still thinking about it.
    * Ported the live savepoint tests from DBIC. They work great with PostgreSQL.
    * Restored the name argument to the savepoint methods. This is required by
      making them public. Again, still might take that out; I wouldn't bother if
      the DBI provided a standardized interface.
    * Added tests for all drivers to make sure they all load, inherit from Driver,
      and implement all required methods.
  7. Added svp_do(); tests to be written.

    theory committed Sep 29, 2009
    * Now savepoint names in the connection object.
    * Chagned `_txn_depth` counter to `_in_txn` flag. Might dump and just use
      `AutoCommit`.
    * Removed private txn methods in favor of calling `begin_work`, `commit`, and
      `rollback` directly on the database handle again. I realied that those
      private methods were mostly for managing auto_savepoints in DBIC, and are
      not needed with the addition of `svp_do`.
Commits on Sep 28, 2009
  1. Added support for nesting in txn_do()

    theory committed Sep 28, 2009
    * Changed name from `txn` to `txn_do`.
    * Changed `txn_do()` to just execute the code ref if already inside a transaction.
    * Moved transaction management to private methods, `_txn_begin()`,
      _txn_commit()`, and `_txn_rollback()`, as in DBIx::Class. It's easier to
      track transaction depth that way, and will make it possible to add savepoint
      support in a bit.
  2. Added support for nested calls to `do()`.

    theory committed Sep 28, 2009
    * Moved `ping` to the drivers.
    * `do` now just executes the code refe and returns if it has been called from another `do` code ref or a `txn` code ref.
    * Started adding the savepoint methods to the drivers. More to come.
  3. More documentation.

    theory committed Sep 28, 2009
  4. Documentation proof-read.

    theory committed Sep 28, 2009
  5. Added documentation.

    theory committed Sep 28, 2009
  6. Added tests for do() and made it work

    theory committed Sep 28, 2009
    * Added `use strict;\nuse warnings;`.
    * Moved PID and TID checking to new method, `_verify_pid`.
    * Added `_dbh()` to return a database handle only after checking the PID and
      the TID, but without a ping.
    * Moved context detection code for `do` to a separate subroutine, so that it
      can be handled identically every time a `do` code ref is called. This is
      something that DBIx::Class does not do.
  7. Rewrote to actually do the caching

    theory committed Sep 28, 2009
    Might integrate with the caching that DBI does at some point, but this is good fo rnow.
Commits on Sep 27, 2009