Revision history for Perl extension DBIx::DataModel.
v3.11 28.04.2024
- Carp::Clan replaced by Carp::Object
- new Schema attribute: 'frame_filter' (to be transmitted to Devel::StackTrace)
- new Schema attribute: 'auto_show_error_statement'
- $dbh->{ShowErrorStatement} is automatically turned on by default
- more precise multiplicity rules for Compositions
- the composite multiplicity must be 1..1 (previously 0..1 was incorrectly allowed)
- the component multiplicity must not be 1..1 (previously 0..1 was incorrectly forbidden)
v3.10 11.03.2024
- bug fix : schema attribute setters must accept undef (for erasing the attribute)
- added tests for the debug() method
- internal refactoring : find_result_class() is now done in the metaschema, not in Statement class
v3.09 27.01.2024
- installing $dbh->{HandleError} so that error messages are reported from the caller's perspective
- new feature: select(..., -result_as => [subquery => 'aliased_column'])
v3.08 13.01.2024
- new Statement arg : -sql_abstract (can also be written -with) for supporting Common Table Expressions
- refactoring of method Statement::refine()
v3.07 26.12.2023
- -where_on : support for table aliases and association names
v3.06 22.11.2023
- support for SQL dialect 'Oracle12c'
- new arguments 'sql_abstract_class' and 'sql_abstract_args' to define_schema()
v3.05 26.07.2023
- new method $statement->nb_fetched_rows & fix buggy $statement->page_boundaries
v3.04 05.11.2022
- fix $metatable->components (was populated on both paths, which is obviously wrong)
v3.03 23.07.2022
- forgot to update Build.PL to depend on SQL::Abstract::More v1.39
v3.02 22.07.2022
- upgrade dependency on SQL::Abstract::More v1.37
- fix circular dependency in Meta::Utils
- fix documentation of Meta::Utils (API as functions instead of methods)
v3.01 02.02.2021
- upgrade dependency on SQL::Abstract::More v1.37
- internals: common infrastructure for abstract methods
- fix a very old bug : make class method primary_key() work in multi-schema mode.
- cleanup references to old method primKey() instead of primary_key()
- replace Acme::Damn by Data::Structure::Util
- documentation and tests for the set operators -union, -intersect, etc.
- -result_as => 'hashref' or 'categorize' can take a subroutine argument
- kwalitee improvements (Filippo Biondi++)
v3.0 23.02.2018
- bump to next major version
- complete revision of documentation
v2.47_06-08 06.02.2018
- after_commit callbacks are executed outside of the transaction
- new schema parameter 'resultAs_classes'
- suppress ConnectedSource -- now handled directly within source classes
- new parameter 'join_with_USING', both at statement and at schema level
- simplification and cleanup of all v2 tests
v2.47_05 08.01.2018
- extending -result_as through subclasses in DBIDM::Schema::ResultAs namespace
- new result kinds : xlsx, tsv, file_tabular, count, table, etc.
- methods db_schema() and with_db_schema to prefix tables by DB schema name
- new method $schema->do_after_commit()
- new statement methods : dbh(), finish(), headers()
- better factorization of operations for update()
- better validation of arguments (no longer allow_extra)
- use Carp::Clan
- drop dependency on Scalar::Does
- Meta::Utils exports subroutines instead of OO methods
- suppress ConnectedSource -- methods are handled directly in Source classes
- main test suite ported to v2 syntax
- fix RT#113092 "can't locally disable a schema-general auto_update spec"
- upgraded dependency on SQL::Abstract::More, v1.32
- new statement option -join_with_USING
- avoid defined-or to be compatible with Perl 5.8
- simplification and cleanup of all v2 tests
v2.46 02.06.2015
- let SQL::Abstract quote identifiers in ON conditions (Sergiy Zuban++)
- fix some edge cases for $statement->row_count() (Sergiy Zuban++)
- RT#102908, schema generator accepts databases without any foreign key assoc
- RT#104856, allow dots in DBMS function names (like Oracle DBMS_LOB.SUBSTR)
v2.45 08.01.2015
- fix incorrect handling of column aliases in nested subqueries
v2.44 19.12.2014
- RT100996, allow literal SQL in inserts
- RT099205, transactions & changing dbh
v2.43 21.04.2014
- drop statement methods ->goto_page(), ->shift_page(), ->next_page()
- new recipe in Cookbook : how to quote table and column names (RT#93529)
- check reftypes through Scalar::Does
- call ->finish() on sth (Sergiy Zuban++)
v2.42 04.01.2014 : adding support for Plack::App::AutoCRUD
- case-insensitivity for method $schema->db_table($db_name)
- Schema::Generator::fromDBI takes new arguments $catalog, $schema, $type
v2.41 22.07.2013
- fix bug in define_class() when DBIDM was artificially pre-populated
- added method $schema->db_table($db_name)
- don't generate duplicate associations with same names between same tables
- better API for Generator.pm
- Statement::Oracle, correct handling of -page_size / -page_index
v2.40 24.06.2013
- fix multiple inheritance bug in joins with the same table twice
v2.39 17.06.2013
- fix https://rt.cpan.org/Ticket/Display.html?id=86219 (-where_on side effect)
v2.38 25.05.2013
- fixed test in v2_generator.t when Lingua::Inflect::EN is not installed
v2.37 21.05.2013
- removed workaround for DBD::Oracle bug (fixed in v1.62)
v2.36 18.04.2013
- adapt for SQLAM 1.15 : bind values with types must be of shape
[{dbd_attrs => \%datatype}, $orig_value] (like in DBIx::Class)
v2.35 14.04.2013
- reintroduced tmp workaround for DBD::Oracle bug (will only be fixed in v1.61)
- adapt for SQLAM 1.14
v2.34 08.04.2013
- new arg for select() : "-where_on" (still experimental)
- Schema::Generator automatically infers compositions from ON DELETE CASCADE
- support for for values of shape [$orig_value, \%datatype] that will be
passed to the 3-args form of DBI::bind_param()
- remove workaround for https://rt.cpan.org/Ticket/Display.html?id=84170
(was fixed in DBD::Oracle 1.60)
v2.33 24.03.2013
- removed old workaround for DBD::Oracle bug
https://rt.cpan.org/Ticket/Display.html?id=76410
- require minimal version 1.45 for DBD::Oracle (which fixed #76410)
- tmp workaround for new DBD::Oracle bug
https://rt.cpan.org/Ticket/Display.html?id=84170
v2.32 19.02.2013
- do the right thing when SQL::Abstract(array_datatypes => 1)
- new feature: $schema->autolimit_firstrow(1);
v2.31 08.02.2013
- Support for DBIx::RetryOverDisconnects in transactions
- Schema::Generator uses Lingua::EN::Inflect::Phrase; test implemented
using DBD::SQLite v1.38_01
v2.30 31.08.2012
- changed check if should return pKey from "exists" to "defined"
in _singleInsert
v2.29 18.08.2012
- fix insert() when primary key is over several columns
- removed deprecated call to defined(@array)
- declare POD =encoding so that Pod::Simple is happy
v2.28 03.06.2012
- fix ->row_count() on UNION/INTERSECT
v2.27 29.05.2012
- new dependency on Try::Tiny for better evals
- support for set operators for compound queries (UNION/INTERSECT/etc)
v2.26 05.05.2012
- automatic composition of handlers when multiple under the same name
- added TO_JSON method so that the JSON module can happily encode
DBIDM data rows
v2.25 21.04.2012
- skip Oracle tests when DBD::Oracle is not installed
v2.24 20.04.2012
- fixed a bug with Oracle cursors
v2.23 19.03.2012
- added support for INSERT .. RETURNING .. INTO .. (used by Oracle)
v2.22 08.03.2012
- fixed bug in ->update() with nested refs, bug introduced in v2.20
v2.21 29.02.2012
- fixed bug in $meta_source->tables(), ->associations(), etc.
v2.20 14.02.2012
- fixed bug on update() in multi-schema mode
- bulk updates now apply the 'to_DB' handler
todo upd Reference
- REMOVED AUTOMATIC COMPATIBILITY v1; now needs arg Compatibility => 1.0
v2.10 26.01.2012
- fixed bug on delete() method, introduced in v2.09
v2.09 21.01.2012
- error message when wrong call to $schema->Table(..)
- error message when wrong call to ->do_transaction(sub {...})
- update() accepts refs to refs or scalars for verbatim SQL
v2.08 18.12.2011
- forgot to declare use POSIX qw/LONG_MAX/ -- buggy on Perl 5.8
v2.07 16.12.2011
- using new SQLA::More API for insert/update/delete
- new class Statement::Oracle, support for scrollable cursors
v2.06 07.12.2011
- new method Path::opposite()
v2.05 14.11.2011
- bug fix in strict V2 mode : Table.pm was still using old V1 syntax "componentRoles"
v2.04 14.11.2011
- bug fix in strict V2 mode : Path.pm was still using old V1 syntax
v2.03 11.11.2011
- forgot to use Meta::Utils in Statement.pm.
v2.02 12.10.2011
- namespace::autoclean conflicts with autoload. Replaced by namespace::clean
v2.01 07.10.2011
- missing AutoExpand in v1 compatibility mode
- suppress 1 warning in string comparison
v2.0 12.09.2011
CPAN publish
v1.99_06 21.08.2011
- refactoring : new class ConnectedSource, not to confuse with Statements
v1.99_05 14.08.2011
v1.99_04 13.08.2011
- fixed broken test on perl 5.8/5.10 (MRO::Compat loaded too late)
- yet more doc (Design.pod)
v1.99_03 06.08.2011
- Reference.pod finished. Still work to do on other pods.
v1.99_02 02.08.2011
- many updates in doc (not totally finished yet)
v1.99_01 31.07.2011
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 Source.pm
- 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,
see http://rt.cpan.org/Public/Bug/Display.html?id=55989
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 @ svn.ali.as
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
v1.11
- dependency on SQL::Abstract v1.50, tests adapted
- nested records in insert(): allow for empty arrayref
v1.10
- exceptions during doTransaction are returned as a blessed arrayref
v1.09
- fixed bug with ->fetch(@prim_key) when scalar(@prim_key) > 1
v1.08
- fixed bug with -pageIndex (missing code)
v1.07
- adapted tests for DBD::Mock 1.39
v1.06
- Schema.pm : replaced deprecated
if(defined(%{$pck.".."}))
by
if(%{$pck.".."})
- 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
- Schema.pm, View.pm : dynamic subclasses created through
@{$subclass."::ISA"} = @$aref;
instead of
*{$subclass."::ISA"} = $aref;
so that Perl5.10 method cache is properly invalidated.
v1.05
- fixed hanging test because of bug 37054 in DBD::Mock
v1.04
- removed non-portable v-string in View.pm
- fixed test when Acme::Damn is not installed
v1.03 23.09.2008 CPAN release
v1.01
- 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(...)
v1.0
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
INCOMPATIBLE CHANGES
- totally removed deprecated methods selectSth, applyColumnHandlers,
SqlDialect
- -resultAs => 'statement' now means 'DBIx::DataModel::Statement'
(formerly was a synonym for 'sth'
v0.42
- fix bug in Schema.pm (loading Cursor class)
v0.41
- 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()
v0.40
- 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
v0.38
- bug fix Schema::FROM_THAW
v0.37
- ->select(-fetch => $key)
- doTransaction : all commits at the end
- support for Storable::freeze/thaw
v0.36
- 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 Table.pm, 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()
- Build.pl 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 Build.pl
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()
v0.17
- 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;
v0.12
- 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,