The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for DBIx-NinjaORM

v2.5.0  2013-05-22
        * Added 'like' and 'not_like' operators to retrieve_list()
          Thanks Brian Voorhes!

v2.4.4  2013-03-30
        * Replaced Test::NoWarnings with Test::FailWarnings.
        * Added new release tests.
        * Moved release tests to xt/, updated Build.PL.

v2.4.3  2013-03-21
        * (GitHub #7) Fixed warnings in Perl 5.16.
        * (GitHub #8) Fixed manifest.
        * (GitHub #9) Fixed prerequisite.

v2.4.2  2013-03-18
        * Moved request tracker from RT to GitHub.
        * Changed links from Search CPAN to MetaCPAN.

v2.4.1  2013-02-24
        * (RT #83513) Fixed incorrect croak() in verbose mode.
        * (RT #83514) Don't delete cache if no cache key can be determined.
        * Modified validate_data() to check for existence, not just defineness
          of keys, as undefined keys would still impact insert/update.

v2.4.0  2013-02-19
        * Fixed detecting invalid filtering criteria [].

v2.3.2  2013-01-27
        * Fixed propagation of DBI failures in update().
        * Added tests to cover DBI failures for insert(), update(), and
          remove().
        * Added 'allow_subclassing' option for retrieve_list().
        * Added new tests for pagination in retrieve_list_nocache().
        * Cleaned up tests and code.

v2.3.1  2013-01-05
        * Fixed call to selectall_arrayref() in retrieve_list_nocache() and
          added error handling (thanks Jacob Rose).
        * Added tests to cover locking with joins in retrieve_list_nocache().
        * Fixed list of locked IDs in retrieve_list_nocache().
        * retrieve_list_nocache() now ignores lock=1 for SQLite.

v2.3.0  2012-12-04
        * Refactored to use Log::Any instead of carp/confess.

v2.2.1  2012-12-04
        * Split limit and offset, for PostgreSQL.

v2.2.0  2012-12-04
        * Modified assert_dbh() to allow coderefs that return a DBI::db object
          in either default_dbh from static_class_information() or from its
          first parameter.
        * Added tests for the pagination feature of retrieve_list().
        * Added tests for assert_dbh().
        * Cleaned up warning that should only show up in verbose mode.

v2.1.3  2012-12-03
        * Fixed pagination in retrieve_list().

v2.1.2  2012-11-30
        * Added tests for remove() and commit().
        * If custom clauses are present, filters are not required anymore.
        * Checked filters argument in new() to detect issues early.
        * Sorted filters in parse_filtering_criteria() to make output easily
          testable.

v2.1.1  2012-11-26
        * Ignored Devel::Cover output files.
        * Added Perl 5.10 as a requirement.

v2.1.0  2012-11-22
        * Refactored retrieve_list() and new() to use a hashref as first
          argument, like insert() and update().
        * Reorganized methods alphabetically.

v2.0.0  2012-11-19
        * Generalized code, added more tests and documentation.
        * First public release.

v1.9.1  2012-10-24
        * Added 'not_null' operator.

v1.9.0  2012-10-18
        * Updated to use two separate cache times, one for the translation from
          arguments to IDs (list cache) and one for the objects (object cache).

v1.8.4  2012-10-02
        * Added get_object_cache_keys().

v1.8.3  2012-10-01
        * Added "set" parameter to update() to allow specifying complex set
          clauses.

v1.8.2  2012-09-07
        * Added option to trace cache operations.

v1.8.1  2012-09-06
        * Adjusted the order of when we invalidate the object cache in update().
        * Forced the cache keys and values to be lower case, to account for
          case-insensitive collations.

v1.8.0  2012-08-30
        * Implemented cache of the translation from arguments to IDs in
          retrieve_list().

v1.7.7  2012-05-22
        * Modified parse_filtering_criteria() to return whether filtering fields
          were detected in the arguments passed to retrieve_list(),
          independently of whether filtering clauses are generated or not.
        * Tweaked retrieve_list() to warn about missing filtering fields only
          when none was passed to retrieve_list(), and ignore the case when all
          of them are undef or empty arrays.

v1.7.6  2012-05-08
        * Improved get() to prevent retrieving private properties and to error
          on non-existent properties only when the object comes from
          retrieve_list() which is guaranteed to populate the object correctly.

v1.7.5  2012-03-20
        * Fixed trying to invalidate the cached object for keys with undefined
          values.

v1.7.4  2012-03-20
        * Added unitary operator 'null'.

v1.7.3  2012-02-24
        * Added get().

v1.7.2  2011-08-08
        * Added operator 'between' for retrieve_list(), reengineered the return
          values of build_filtering_clause() to allow for more than one bind
          variable to be returned.

v1.7.1  2011-06-10
        * Added more trace information for cache operations.
        * Modified update() to invalidate cached versions of objects.
        * Added meta information 'cache_key_field' to allow specifying a
          different cache key field than the primary key.
        * Added get_object_cache_key(), to allow subclassing to create complex
          cache keys.

v1.7.0  2011-06-07
        * Refactored filtering operators to use (?:=|not|<=|>=|<|>).
        * Added code to detect parameters that cannot be handled by
          retrieve_list(). This helps the calling code to detect typos, missing
          filtering fields in the static class declaration or obsolete argument
          names.
        * Set up a list of reserved arguments for retrieve_list().
        * Fixed retrieve_list( id => [ 1, 2 ] ) that was converting to
          WHERE id = 1 AND id = 2 instead of WHERE id IN ( 1, 2 ).

v1.6.1  2011-05-17
        * Added last insert ID value to the object upon successful insert.

v1.6.0  2011-03-29
        * Refactored reload().

v1.5.4  2011-03-04
        * Added 'show_queries' argument to retrieve_list().

v1.5.3  2011-01-31
        * Added dump().

v1.5.2  2011-01-27
        * Added function to flatten an object based on a list of fields.

v1.5.1  2011-01-24
        * Changed retrieve_list() to return pagination info in addition to the
          results only when pagination was requested to begin with.
        * Added option to set "pagination => 1"  in retrieve_list(), as a
          shortcut to get all the defaults.

v1.5.0  2011-01-10
        * Implemented delete().

v1.4.1  2011-01-06
        * Simplified 'order_by', removed option to pass a data structure in
          favor of raw SQL.
        * Fixed retrieve_list() to handle the case when the query has joins but
          we need to lock the rows.

v1.4.0  2010-12-21
        * Split validation from setting properties.
        * Added concept of read-only fields.
        * Added cached_static_class_info(), which is ~6x faster than
          static_class_info().

v1.3.0  2010-12-16
        * Added 'unique_fields' to the meta object information and created a
          method to access it.
        * Simplified caching of objects.
        * Expanded parse_filtering_criteria() to allow filtering on the opposite
          of a criteria.
        * Implemented pagination for retrieve_list().
        * Refactored how cache keys are generated.
        * Added invalidate_cached_object() to remove all the cached versions of
          a given object.
        * Added 'lock' and 'allow_all' arguments to retrieve_list().
        * Added option to specify pre-generated primary keys in insert().
        * Added warnings to prevent hash/hashref confusion in the first argument
          of insert() and update()
        * Fixed insert() to work with tables that don't have a primary key.
        * Added unique fields to the list of available filtering criteria in
          retrieve_list().
        * Improved 'order_by' parsing and defaults in retrieve_list(), allowed
          raw SQL in 'order_by'.
        * Modified update() to accept restrictions on the where clause.

v1.2.0  2010-02-10
        * Changed insert() to allow calling it directly on a class, if no
          object is needed afterwards.
        * Added static_class_info() and accessors for its configurable options.
        * Added object-level cache.
        * Added 'force' argument to set(), to optionally disable validation.

v1.1.0  2010-12-08
        * Added insert(), update(), and new().
        * Fixed set() to remove primary key fields and fields starting with an
          underscore.
        * Added id().
        * Refactored retrieve_list() to allow subclassing.
        * Added table prefix for the fields not specifing one explicitely when
          creating filtering criteria.

v1.0.2  2010-10-28
        * Added reload().

v1.0.1  2010-02-01
        * Added clone().

v1.0.0  2009-12-17
        * First version.