Revision history for SPOPSx-Ginsu. 0.58 Wed, Jun 2, 2004 - updated to sync with SPOPS-0.87 - removed _execute_multiple_record_query() since tables names bug was fixed in SPOPS-0.86 0.57 Fri, Apr 23, 2004 (first CPAN release) - renamed to SPOPSx::Ginsu - updated to sync with SPOPS-0.83 - began using Log::Log4perl - overrode _execute_multiple_record_query() temporarily due to 'lc' table names bug in SPOPS::DBI - overrode _get_definitive_fields, now used by clone() - removed DEBUG field from $p everywhere - removed create_unless_exists() method ========== renamed from ESPOPS to SPOPSx-Ginsu ========== 0.56 Thu, Apr 15, 2004 - fetch_group_by_fields() and fetch_group_by_ids() now return an empty arrayref if an empty arrayref is passed in for the values. 0.55 Mon, Dec 15, 2003 - updated to sync with SPOPS-0.80 - refactored things to move table def and DBI connection parameters out of the main ESPOPS classes to allow multiple packages to use ESPOPS without interfering with each other. - updated to sync with SPOPS-0.78 0.54 Thu, May 22, 2003 - Added fetch_count() and modified fetch_group() so that they work for classes that do not have their own table. The 'class' field of each fetched row is check to make sure that it "isa" object of the calling class, otherwise it is excluded. - Added check which dies if auto-fetching a field fails. - Modified new() to set uninitialized fields to undef. This is to fix a a problem in which the clone method would not set fields that did not exist in the original object, even if a value for the field was passed to the clone() method. E.g. For an object with fields: field1, field2 after executing the following ... $a = MyObject->new({ field1 => 'Hello' }); $b = $a->clone({ field2 => 'World' }); ... 'field2' would not exist in $a or even in $b. 0.53 Tue, Mar 25, 2003 - Requires SPOPS-0.74 (new interface for db_discover_types) - Added code to clean up partial saves when an insert fails in some table. - Changed CREATE TABLE to CREATE TABLE IF NOT EXISTS in $TABLE_DEF. 0.52 Wed, Sep 11, 2002 - Updated to sync with SPOPS-0.68. Minor changes to fetch() and fetch_group(). Removed docs for refetch() and field_update() since they are now in SPOPS::DBI. 0.51 Mon, Aug 12, 2002 - Updated to sync with SPOPS-0.64. Minor changes to fetch() and save(). Removed refetch() and field_update() since they are now in SPOPS::DBI. 0.50 Sat, Aug 3, 2002 - Revamped the way objects are saved. Previously, the pre_save_action() method took care of getting things into the parent tables by creating parent objects and saving them (causing untold grief in implementing other pre_save_actions). The pre_save_action() method has been removed and a save() method has now been added. This method was copied directly from SPOPS::DBI::save() in SPOPS-0.61 and some small modifications made so that the object is successively blessed into each of the classes it inherits from (starting with ESPOPS::Object and ending with the class itself), and the appropriate _save_insert() or _save_update() is called. This eliminates the creation of parent objects via new and it eliminates the multiple calls to pre/post_save_action during a given object save. *** NOTE: THIS MAY CAUSE INCOMPATIBILITIES *** (e.g. the pre/post_save_action methods in Boat.pm in the tests had to be changed) - Replaced fetch() with one modified from the SPOPS::DBI::fetch() in SPOPS-0.61. - Replaced fetch_group() with one modified from SPOPS::DBI::fetch_group() in SPOPS-0.61. Unlike previous versions of ESPOPS::Object::fetch_group(), this version only does individual fetches for rows in the result of the initial db_select for which the 'class' field does not match the class used to call fetch_group(). So fetching many objects of the same class should be much faster if the correct class is used to call fetch_group. Fetching objects of different classes using a fetch_group called by a common base class will be done exactly as before. - Added e_has_a, and pre/post_fetch/save/remove_actions which handle forward direction auto fetching/saving/removing. - Added pm_fetch() method to do polymorphic fetch. Functionally identical to calling fetch_group with a where clause which is just an id clause. - Modified isa_classes() to return classes in order of proximity to current class in the inheritance tree. The calling class is always the first element and ESPOPS::Object is always the last element in the list. Modfied the order of tables in join created by fetch/fetch_group(). - Added fetch_group_by_field() and fetch_group_by_ids() methods. - Added refetch() and field_update() methods. Currently do NOT work for inherited fields. - Added create_unless_exists() method, implemented by Raj. 0.42 Fri, Apr 29, 2002 - Modified ESPOPS::DBI's create_table() and drop_table() to do nothing if $CONF and $TABLE_DEF are not defined. This allows a class to inherit from an ESPOPS class without adding a table. The Vehicle class is now an example of this. - Turned off PrintError in DBI->connect in ESPOPS::DBI.pm - Added RaiseError and AutoCommit to DBI->connect in ESPOPS::DBI.pm - Modified global_datasource_handle() to make it try 10 times to connect before giving up. - Removed SQL_BIGINT from list in _is_numeric_type() so it won't break with DBI-1.21 - Added test for cloning with false value in t/08_clone.t 0.4 Thu, Oct 18, 2001 - Updated to work with SPOPS-0.51. Changed global_db_handle() to global_datasource_handle() in ESPOPS::DBI. Changed to 'use SPOPS 0.51' in ESPOPS::DBI. - Added timestamp field to the Object table. - Added a 08_clone.t to test clone(). 0.3 Thu, Aug 30, 2001 - Updated to work with SPOPS-0.50. Updated _config_processed method for checking whether config was processed. Switched to SPOPS::ClassFactory for the actual config processing. - Modified fetch_group to accept $p->{from} so it can be used with joins. - Modified as_string to handle undefined fields gracefully. - Added 'use SPOPS 0.50' to ESPOPS::DBI.pm. 0.2 Fri, Jul 20, 2001 - Updated to work with SPOPS-0.41 (where save returns object not id). 0.1 Tue, Jul 17, 2001 - First release, tested with SPOPS-0.40.