Revision history for Perl extension DBIx::DataModel.

  MAJOR REVISION, see Doc/Delta_2.0.pod
  - new metaclass / reflection layer
  - use base ==> use parent
  - deprecated Autoload()
  - removed keepLasth, lasth
  - dropped support for positional args to select()

v1.29 25.07.2011
  - fixed limit/offset in Statement::JDBC (old bug never discovered!)

v1.28 10.06.2011
  - fixed tests when DBD::Mock < 1.39 ("skip" statement was wrong)
  - statement status is a dualvar (int, string)
  - $source->createStatement() is deprecated
  - new parameter for select() : -prepareAttrs 

v1.27 30.05.2011
  - fetch() : do not allow undefs in primary key
  - reuseRow() : hash key names are taken from $sth->{FetchHashKeyName};
  - bug fix: -resultAs => flat_arrayref does preserve column order
  - $schema->dbh(undef) erases the current $dbh

v1.26 31.10.2010
  - -postFetch renamed as -postBless
  - no longer import deprecated UNIVERSAL qw/isa/
  - fix tests broken by SQL::Abstract::Test 1.69 no longer case-insensitive

v1.25 03.06.2010
  - added the -returning option to insert()

v1.24 18.04.2010
  - implemented 'primKey' for views, and moved method to
  - added the -resultAs => "hashref" option to select()

v1.23 29.03.2010
  - back to use POSIX qw(INT_MAX); # because import () breaks on 5.8, 

v1.22 26.03.2010
  - use POSIX (); (because import() was buggy on Win32)
  - added property 'limitOffset' in sqlDialect

v1.21 01.03.2010
  - localize $@ in Schema::_State::DESTROY 
  - selectImplicitlyFor not applied when -resultAs => 'subquery'
  - updated doc : no longer necessary to use BEGIN blocks

v1.20 17.02.2010
  - more flexible parameterization for calling last_insert_id

v1.19 17.08.2009
  - insert(..) now accepts a list of arrayrefs (kind of 'populate' method)
  - fixes in the doc (thanks to Terrence Brannon for many suggestions)
  - announce discussion group @ googlegroups & public source @
v1.18 31.07.2009
  - added missing "use DBI" in Schema::Generator
  - added Schema methods 'table' and 'view'
  - more liberal in _createPackage, just check not clobbering @ISA

v1.17 10.06.2009
  - treat case when $schema->dbh is undef

v1.16 10.06.2009
  - doTransaction properly calls dbh() instead of direct access to classData
  - localizeState properly calls setter methods when restoring previous state

v1.15 02.06.2009
  - bug fix on reporting rollback exceptions

v1.14 20.04.2009
  - bug fix on adaptations for SQL::Abstract v1.51 (select(-where => [...]))

v1.13 08.04.2009
  - adaptations for SQL::Abstract v1.51 (syntax change for -and/-or)

v1.12 17.03.2009
  - stupid error in count of SKIP tests (MsAccess.t) when DBD::Mock is absent

  - dependency on SQL::Abstract v1.50, tests adapted
  - nested records in insert(): allow for empty arrayref

  - exceptions during doTransaction are returned as a blessed arrayref

  - fixed bug with ->fetch(@prim_key) when scalar(@prim_key) > 1

  - fixed bug with -pageIndex (missing code)

   - adapted tests for DBD::Mock 1.39

  - : replaced deprecated 
  - t/Storable.t : 
      - parent process in eval() to avoid child zombie if parent dies
      - if Perl < 5.8, fallback to IO::String
  - t/DBIx-DataModel.t : 
      - pre-test DBD::Mock on functionality rather than version number
  -, : dynamic subclasses created through
       @{$subclass."::ISA"} = @$aref;
    instead of 
       *{$subclass."::ISA"} = $aref;
    so that Perl5.10 method cache is properly invalidated.

  - fixed hanging test because of bug 37054 in DBD::Mock

  - removed non-portable v-string in
  - fixed test when Acme::Damn is not installed

v1.03 23.09.2008 CPAN release

  - added method Schema->statementClass
  - bug fixes in Statement::_resolve_source and Statement::JDBC::execute
  - added -resultAs => 'flat_array' | 'subquery'
  - better error message when missing foreign keys in a $object->join(...)

  MAJOR REVISION, see Doc/Delta_1.0.pod
  - added fetch_cached() method
  - fixed bug in select(..., -orderBy =>...)
  - better error message if missing foreign key 
  - corrected _addSelectCriteria algorithm for merging several %where structs
  - new statement object
  - new method rowCount
  - AbstractTable renamed as Source
  - schema name is automatically prepended in table and views

  - totally removed deprecated methods selectSth, applyColumnHandlers, 
  - -resultAs => 'statement' now means 'DBIx::DataModel::Statement' 
    (formerly was a synonym for 'sth'

  - fix bug in (loading Cursor class)

  - documentation: splitting into several parts and general reworking
  - Schema() : added an option to supply a customized SQL::Abstract instance
  - Cursor : forbids ->next(..) and ->all() on "fast cursors"
  - "ViewFromRoles", "selectFromRoles" renamed as "join", "selectJoined"
  - new method Schema->localizeState()

  - added fast iterators, using DBI's bind_columns() and fetch() methods
  - bug fix : fetch("") was returning the whole table!
  - scrollable cursor for JDBC

v0.39 08.02.2008
  - "longColumn|alias" syntax for -columns no longer modifies original data

  - bug fix Schema::FROM_THAW

  - ->select(-fetch => $key)
  - doTransaction : all commits at the end
  - support for Storable::freeze/thaw

  - Schema::doTransaction(): support for localizing the dbh

v0.35 12.11.2007
  - Schema::doTransaction(): support for nested transactions
  - insert() : if component subtrees, the composite gets the prim. keys

v0.34 30.10.2007
  - minor change in Schema::doTransaction because rollback() problem in JDBC
v0.33 19.10.2007
  - minor fix in, don't delete a hash key from an each() loop
  - Schema() : added options tableParent and viewParent
  - select() : added option -resultAs => 'firstrow'

v0.32 21.08.2007
  - minor adaptation for perl 5.9 (because strict 'refs' is stricter!)

v0.31 30.05.2007
  - additional parameter in handlers called by autoUpdateColumns

v0.30 29.03.2007
  - fixed bug in Schema::dbh

v0.29 14.03.2007
  - AutoUpdateColumns was not called on insert -- fixed
  - added AutoInsertColumns()
  - added "longColumn|alias" syntax for -columns

v0.28 12.12.2006 CPAN release
  - fixed bug in _rawInsert (was unblessing $self in case of exceptions)

v0.27 14.11.2006
  - added Table::componentRoles()
  - primKey returns column names (class method) or values (instance method)
  - restructured insert(), added _singleInsert and _rawInsert

v0.26 12.11.2006
  - default values for column names in Associations
  - primKey returns list or scalar depending on wantarray
  - added optional arguments to Schema->dbh() 
  - fixed arguments to last_insert_id
  - consistency checks on Compositions

v0.25 09.11.2006
  - more liberal parsing of multiplicities

v0.24 08.11.2006
  - insert() returns list or scalar depending on wantarray

v0.23 07.11.2006
  - added Composition() and cascaded insert/delete
  - added support for prefixes +/- for -orderBy

v0.22 14.09.2006
  - added option -postSQL to select()
  - option to support old-style Makefile.PL
  - ViewFromRoles creates views in $schema::View namespace

v0.21 CPAN release 06.09.2006
  - check args for ViewFromRoles
  - check -resultAs value
  - fixed SKIP numbers in tests (when DBD::Mock is not installed)
  - fixed requires and recommends in

v0.20 CPAN release 27.05.2006
v0.18, v0.19 - internal releases, major rewrite:
  - reshuffled the inheritance tree
  - restructured the documentation
  - selectFromRoles() accepts roles from any table in the stack
  - added many-to-many Associations
  - added MethodFromRole()
  - added -distinct, -groupBy and -having clauses
  - insert() returns DBI->last_insert_id()

  - Minor fixes in documentation
  - SqlDialect() is deprecated (replaced by arg in Schema() method)

v0.16 CPAN release 26.01.2006
  - Associations now install an "insert_into_..." method
  - ViewFromRoles can take explicit join kinds (_INNER_|_LEFT_)
  - Schema->dbh(..) checks that RaiseError is true
  - term 'arity' replaced by 'multiplicity' in doc and code
  - Association() checks that multiplicities are not many to many
  - fixed internal hyperlinks in POD documentation

v0.15 internal release
  - added Schema methods 'classes' and 'views'
  - debug method now also prints the bind values

v0.14 CPAN release 28.11.2005
  - added clause "-for (readonly | update)" to select() and
    added method "selectImplicitlyFor"
  - doTransaction starts with $dbh->begin_work
  - role methods reuse cached results from "expand"
  - added method Autoload(1|0)

v0.13 internal release
  - Added doTransaction
  - Added Schema->lasth;

  - Added the named arguments API to select()
  - new methods preselectWhere() and selectFromRoles()
  - new internal functions _parseSelectArgs() and _addSelectCriteria
  - rewrote implentation of Association role methods using these new functions
  - new method SqlDialect	
v0.11 internal release
  - Updated the doc, explaining about writing role methods by hand
  - Added a check in fetch() that we are in a Table class
  - Changed implementation of ViewFromRoles, using INNER JOIN

v0.10 16.09.2005 First CPAN release,