0.723 (05.07.2006) - John Siracusa * Fixed a bug that caused Rose::DB::Object::Cached objects to stay in the cache after being delete()d. * Added clone() and clone_and_reset() Helper methods. * The tutorial now recommends "use base ..." over direct modification of @ISA in order to work better with circular relationships. * Generated Perl code now uses "use base ..." for the same reason. * Simplified object destruction, delegating all database object clean-up to Rose::DB. 0.722 (04.27.2006) - John Siracusa * Really remove Clone::PP this time... 0.721 (04.27.2006) - John Siracusa * Improved and documented metadata inheritance behavior. 0.72 (04.19.2006) - John Siracusa * Many reference-count bugs fixed, including several that could cause database handles to leak. * Fixed a bug that could cause "empty" sub-objects to be created when processing certain with_objects parameters. * Improved the accessor/mutator methods for these column types: set, array, and boolean. * Changed the BigInt and BigSerial column classes to use normal Perl scalars instead of Math::BigInt objects when perl has been compiled to use native 64-bit integers. (Suggested by Jesse Brown) * Added the inject_results Manager parameter to bypass the standard object creation mechanism in cases where it's the dominant factor in overall performance. 0.71 (04.14.2006) - John Siracusa * Correctly clear the "in the database" state flag when a speculative load fails because the object was not found. (Reported indirectly by Svilen Ivanov) * Changed how multi-table queries are formulated for SQLite in order to make the new DBD::SQLite version (1.12) happy. * Fixed errors in the epoch column documentation. * Fixed some internal method-maker bugs. 0.701 (04.05.2006) - John Siracusa * Removed stray "._*" files from module distribution. 0.70 (04.04.2006) - John Siracusa * Added support for the interval data type. * Added support for big integer and serial columns via Math::BigInt. * Added explicit support for columns that store a number of seconds since the Unix epoch (both integer and fractional). * Silenced warning when querying datetime columns with undef values. * Fixed a bug in the loader that prevented auto-generated base class names from being correctly nested under class_prefix. * Fixed a bug that caused duplicate WHERE clauses when a relationship name was the same as the foreign table name. 0.691 (03.16.2006) - John Siracusa * Fixed a bug that prevented the Manager from correctly handling many-to-one relationships in some situations. (Reported by Michael Lackhoff) 0.69 (03.12.2006) - John Siracusa * Added Rose::DB::Object::MixIn and Rose::DB::Object::Helpers. * Made insert() and update() part of Rose::DB::Object's public API. * Fixed typos in some auto-initialization error messages. * Improved checks for MySQL transaction support in the test suite. 0.681 (02.16.2006) - John Siracusa * Removed debugging trigger accidentally left in the 0.68 release. 0.68 (02.16.2006) - John Siracusa * Added support for literal query values using scalar references. * Added translation of undef to the inline keyword NULL in multi-value query operations. (Reported by Teodor Zlatanov) * Added the default_load_speculative() metadata attribute. (Suggested by Teodor Zlatanov) * Added a referential_integrity() attribute to foreign keys and ?-to-one relationships. (Suggested by Teodor Zlatanov) * Corrected some errors in the documentation and added more details on the auto-initialization of relationships. 0.67 (02.07.2006) - John Siracusa * Added the ability to directly set attributes in map records when saving the parent object. (Suggested by Bruno Czekay) * Slightly rearranged and added to the tutorial. 0.66 (02.02.2006) - John Siracusa * Disabled implicit primary table sort clause in the Manager when only fetching rows from a single table. * Allow multiple pre_init_hook()s in the loader and metadata object. * Improved auto-initialization of many-to-many relationships. * Added with_relationships, with_foreign_keys, with_unique_keys, db, and db_class parameters to make_classes() and the loader object. * Renamed some obscure convention manager methods and altered the default behavior of the is_map_class() method slightly. 0.65 (01.27.2006) - John Siracusa * More MySQL 5 bitfield fixes. (Reported by Svilen Ivanov) Important note: if you are using MySQL 5.0.3 or later and you have one or more BIT columns in a given table, you MUST call meta->allow_inline_column_values(1) when setting up the Rose::DB::Object-derived class that fronts the table. * Added missing "use ..." statements to the code generated by perl_class_definition(). * Fixed a bug that prevented certain kinds of self-referential relationships from being initialized properly. (Reported by Bruno Czekay) 0.64 (01.19.2006) - John Siracusa * Worked around yet more SQLite ORDER BY bugs. * Improved the column trigger implementation. * Added support for MySQL 5's brain-dead new BIT column type. Classes must allow_inline_column_values(1) to use it due to the inability of DBD::mysql to bind BIT values correctly without explicit calls to DBI's bind_param() method. * Use alternate strategies for extracting foreign key information from MySQL 5 because the old way no longer works reliably. 0.63 (01.15.2006) - John Siracusa * Made the with_map_records Manager argument work in the manager_args list for relationships. * Added the generate_manager_class_name() method to the loader. * Added the auto_manager_class_name() method to convention manager, and made the loader delegate to it. 0.62 (01.06.2006) - John Siracusa * Fixed a make_modules() bug that caused incorrect init_db() methods to be created in some cases. (Reported by Sean Davis) 0.61 (01.05.2006) - John Siracusa * Added "select" parameter to the Manager which accetps an explicit list of columns to be selected. * It's now possible to filter based on columns that are not selected as part of a Manager query. * Extra parameters can now be passed to the method created by make_manager_method_from_sql() * Fixed several bitfield column accessor method bugs. (Reported by Svilen Ivanov) * The loader's make_modules() method now correctly creates *.pm files for auto-generated base classes. (Reported by Sean Davis) 0.601 (01.01.2006) - John Siracusa * Fixed some incorrect deep join tests. * Reduced the number of Postgres database connections used in the test suite in order to avoid hitting Postgres's default connection limit. * Fixed the DBI benchmark tests broken by the last release. * Uncommented some sections of the benchmark script that were accidentally left commented-out in the last release. 0.60 (12.31.2005) - John Siracusa * Added arbitrary-depth auto-joins to the Manager using a "dot-chained" syntax (e.g., vendor.regions.code) * Added make_modules() method to the loader. * Added pre_init_hook() method to metadata objects and the loader. * Added overflow attribute to control the behavior when a scalar, character, or varchar column value is too long. Possible values are "fatal" (the default), "truncate", and "warn". * Serial columns are now detected correctly even when DBI returns a column type of integer or bigint. (Reported by Cees Hek) * Added support for bigserial columns. * Enum columns now have their list of valid values printed correctly by the perl_hash_definition() method. (Reported by Juan Camacho) * Fixed a bug that caused the loader to trip over mixed-case unique keys in MySQL databases. (Reported by Juan Camacho) * Force MDY dates in Postgres in the test suite, just in case the user has European dates configured. (Reported by Cees Hek) * Fixed numerous Postgres 7.x bugs. (Reported by Cees Hek) * Modified the benchmark suite to further confine each module to its own private set of database rows in order to eliminate the influence of run order during the tests. * Worked around SQLite ORDER BY bugs in order to make the test suite function correctly. 0.59 (12.19.2005) - John Siracusa * Added in_array, any_in_array, and all_in_array query operators for filtering on Postgres array columns. * Fixed a bug that caused certain method overrides to fail when using a custom metadata class with the auto-initialize feature. (Reported by Svilen Ivanov) 0.58 (12.16.2005) - John Siracusa * Added auto-detection of multiple sequence-based primary key columns and primary keys with one or more non-sequence- based columns. * Added support for schema and catalog overrides. * Added tests for db migration with forced and default schemas, multiple sequence-based primary key columns, and primary keys with one or more non-sequence-based columns, migrating to and from databases with and without sequence support. (Whew!) * Added a summary of the default conventions to the Rose::DB::Object::ConventionManager documentation. 0.57 (12.04.2005) - John Siracusa * Fixed broken custom convention manager support in the loader. 0.56 (12.03.2005) - John Siracusa * Updated required Rose::DB version. The 0.55 release was incorrect. 0.55 (12.03.2005) - John Siracusa * Added get_objects_from_sql() and make_manager_method_from_sql() Manager methods. * Made the use of prepare_cached() optional everywhere. It's on by default in Rose::DB::Object, but off by default in Manager. Class data determines the defaults. * Added enum column type. 0.54 (11.30.2005) - John Siracusa * Added SQLite support. * Improved auto-detection of primary key sequence names. * Made primary key sequence names configurable. * Added the "with_map_records" Manager parameter used to fetch map records when auto-joining through a "many to many" relationship. * Fixed a bug in the MySQL foreign key auto-init system. (Reported by Bernhard Graf) * Fixed a bug in the column type class customization system that caused it to fail when combined with auto-initialization. (Reported by Bernhard Graf) * DBI 1.40 or later is now required. 0.53 (11.22.2005) - John Siracusa * Improved handling of table and column names that use reserved words. 0.52 (11.21.2005) - John Siracusa * Fixed bugs in loader when using a DSN instead of a db. 0.51 (11.20.2005) - John Siracusa * Added auto-initialization of relationships. * Added loader. 0.50 (11.17.2005) - John Siracusa * Added optional lazy-loading of column values. * Long-overdue version number bump. 0.081 (11.15.2005) - John Siracusa * Tutorial added. 0.080 (11.14.2005) - John Siracusa * Added column triggers for get, set, load, save, inflate, and deflate. * Added support for new argument types to relationship methods. * Added a named, configurable map for convention manager classes. * Added perl_manager_class() and make_manager_class() meta methods. * Many bug fixes to datetime column methods, cross-database migration, and the auto-init system. 0.079 (10.25.2005) - John Siracusa * Fixed bugs that caused auto-inited many-to-many relationships to be inadequately fleshed-out under some circumstances. 0.078 (10.24.2005) - John Siracusa * Added page and per_page manager parameters for the truly lazy. * Fixed a bug caused by a conflict between the convention manager and the legacy foreign key name generator. 0.077 (10.20.2005) - John Siracusa * Added convention manager. * Added "distinct" and "fetch_only" manager parameters. * Added support for foreign key and relationship names as column prefixes in manager query parameters and sort_by arguments. * Changed manager and query builder to default unprefixed ambiguous columns to belong to the primary table ("t1"). * Fixed a bug that caused make_methods() to fail for "... to one" relationships that have no corresponding foreign key. * Fixed a bug in QueryBuilder that prevented the ability to check for null columns. * Added the ability to query columns that are not SELECTed. 0.076 (10.05.2005) - John Siracusa * Fixed a bug that caused incorrect counts in get_objects_count() when using the require_object parameter with "... to many" relationships. * Added bulk update and delete methods to Manager. * Added cascaded delete, plus a plea in the documentation for users to do this in the database instead. * Added "many to one" relationship and made it the new default relationship type for foreign keys. * Added *_now and *_on_save method types for foreign keys and "... to one" relationships. * Made get_set_on_save and delete_on_save the default auto method types for foreign keys and "... to one" relationships. * load() now returns the object itself on success, which allows for the convenient $obj = MyObject->new(id => 123)->load; * save() now returns the object itself on success, which allows for the convenient $obj = MyObject->new(id => 123)->save; 0.075 (09.19.2005) - John Siracusa * Added support for "many to many" relationships to Manager's "with_objects" and "require_objects" parameters. * Corrected a bug that could cause missing sub-objects when using the Manager's "with_objects" and "require_objects" parameters. * Added warning for doing multiple LEFT OUTER JOINs that could cause a geometric explosion of redundant rows. * Added the "multi_many_ok" parameter to Manager to suppress the warning described above. * Forced inner joins when fetching foreign keys that have key columns that are all NOT NULL. * Added a few more sanity checks to class setup which, in turn, helped me to find and fix a few bugs in the test suite. 0.074 (09.15.2005) - John Siracusa * Repurposed the "with_objects" Manager parameter to do explicit LEFT OUTER JOINs instead of implicit inner joins. * Added "require_objects" Manager parameter to fill the old role of the "with_objects" parameter. * Documented new restrictions associated with the more sensible "with_objects" and "require_objects" parameters. * Added *_sql comparison operators to QueryBuilder, allowing inline SQL. (Requested by Uwe Voelker.) * Removed restriction on aliasing primary key columns. * Fixed bug in Manager that caused fetched objects to be inserted instead of updated on save(). (Reported by Uwe Voelker.) * Corrected a misspelled method name in Rose::DB::Object::Cached. (Reported by David Glass) * Updated benchmark suite to include "one to many" search tests. 0.073 (09.09.2005) - John Siracusa * Added deferred method creation for relationships and foreign keys in order to make "many to many" relationship setup more developer-friendly. * Renamed default auto-method type for foreign keys and relationships from "get" to "get_set", since technically these foreign objects can be set. They just don't go into the database at that point. I'll probably use a different term for that process (e.g., "add") * Some POD and test fixes. 0.0721 (09.08.2005) - John Siracusa * Fixed incorrect method names in Numeric column type. * Added tests to prevent the above error in the future. 0.072 (08.31.2005) - John Siracusa * Added "get" and "set" interfaces to all default column method makers. * More POD fixes. 0.071 (08.30.2005) - John Siracusa * POD fixes. 0.07 (08.30.2005) - John Siracusa * Added rudimentary "many to many" relationship support. * Restructured method-making system to support extensible method types for each kind of thing that makes methods. * Added "get" and "set" interfaces to the scalar method maker. 0.0692 (08.20.2005) - John Siracusa * POD fixes. 0.069 (08.20.2005) - John Siracusa * Whoops, fixed manifest to repair a botched 0.068 release. 0.068 (08.19.2005) - John Siracusa * Enabled multiple joins with the same table in the manager, provided that each occurrence of multi-joined table has the same Rose::DB::Object class fronting it. * Added support for the "alias" parameter to hash-style column definitions. * Added "relationship" objects. * Fixed a bug that caused nearly everything to fail if a column_name_to_method_name_mapper was used. * Moved some class methods out of the object methods section of the documentation, where they shouldn't have been in the first place. 0.0671 (08.15.2005) - John Siracusa * Fixed more MySQL case sensitivity bugs. (Thanks Uwe!) * Changed objects_by_key query_args parameter to be an array ref instead of a hash ref to match the manager change from long ago. * Updated makemethods.t to use MySQL if Postgres is not available. 0.067 (08.14.2005) - John Siracusa * Fixed more MySQL bugs related to foreign keys, timestamps, and boolean support in MySQL 4.0.x. 0.066 (08.12.2005) - John Siracusa * Fixed MySQL case-sensitivity bug. * Added case-sensitivity tests for Postgres and MySQL. * Added accessor, delete, and search with limit and offset benchmarks. 0.0651 (08.11.2005) - John Siracusa * Moved benchmarks into test directory in an attempt to get search.cpan.org to ignore them. 0.065 (08.11.2005) - John Siracusa * Improved the efficiency of manager classes. * Added benchmark suite. * More POD fixes. 0.064 (08.09.2005) - John Siracusa * Duh, forgot the table name and initialize() call in perl_class_definition(). 0.063 (08.09.2005) - John Siracusa * Added foreign key auto-initialization for Informix. 0.062 (08.08.2005) - John Siracusa * Changed default error mode to "fatal" for manager class too. 0.061 (08.07.2005) - John Siracusa * Added foreign key auto-initialization for MySQL. 0.06 (08.05.2005) - John Siracusa * Added auto-initialization (finally). * Plumped-up unique and primary keys into objects. * Changed default error mode to "fatal" * Made substantial additions to the documentation. 0.052 (07.22.2005) - John Siracusa * Added make_manager_methods() to Rose::DB::Object::Manager. * Corrected Rose::DB::Object::Manager POD. 0.052 (07.22.2005) - John Siracusa * Added make_manager_methods() to Rose::DB::Object::Manager. * Corrected Rose::DB::Object::Manager POD. 0.051 (06.22.2005) - John Siracusa * Added abstracted offset parameter to object manager. 0.05 (06.16.2005) - John Siracusa * Moved object cache management further into the metadata object. * Enabled auto-generated primary key values for Rose::DB::Object objects used with the PostgreSQL database. 0.043 (06.16.2005) - John Siracusa * Added time-based expiration to Rose::DB::Object::Cached. * Added catalog attribute to metadata objects. 0.042 (05.04.2005) - John Siracusa * Added not_null attribute to column metadata objects. * Removed use of prepare_cached() because it can't be used across transactions in Informix. Duh. 0.041 (04.22.2005) - John Siracusa * Corrected typo in DatetimeYearToSecond column class. (Still need to add tests for those column types...) * Added skip_first parameter to get_object_iterator(). * Added fix to avoid trying to format or truncate undefined dates in datetime columns. 0.04 (04.01.2005) - John Siracusa * Refactored column value parsing. No, really. 0.031 (03.27.2005) - John Siracusa * Corrected typos and errors in the documentation. 0.03 (03.27.2005) - John Siracusa * Added error_mode methods. 0.023 (03.25.2005) - John Siracusa * Added prepare_*_options (undocumented for now). 0.022 (03.18.2005) - John Siracusa * Fixed POD error that was throwing off search.cpan.org. 0.021 (03.17.2005) - John Siracusa * Added documentation for the "pretty" parameter to build_select() * Added support for column value inlining in build_select() 0.02 (03.17.2005) - John Siracusa * Added support for nested boolean logic in queries. 0.013 (03.11.2005) - John Siracusa * Fixed bug in Rose::DB::Object::Std::Metadata that caused the number of primary key columns to appear to be zero. 0.012 (03.10.2005) - John Siracusa * Add tests for aliased unique key fix and primary key aliasing. Documented constraints on column aliasing. Fixed version numbers in this file. Deleted version 0.011. 0.011 (03.09.2005) - John Siracusa * Well that was quick. Fixed copy and paste error that caused a failure to load using an aliased unique key column. Deleted version 0.10. 0.01 (03.09.2005) - John Siracusa * Initial release.