Revision history for Class-AutoDB 1.29_02 2013-11-02 Fixed FAIL logic in autodb.000.reqs.t introduced in 1.29_01 1.29_01 2013-11-01 Working on FAILs seen by David Cantrell. Current theory: he runs multiple test instances in parallel, ans since tests all use same database, they are trampling on each other. Solution is to create unique database for each test run. 1.28 2013-10-28 Fixed problems with manifest introduced in 1.27. Added dependency for Test::CheckManifest Unable to reproduce FAILs seen by David Cantrell. Changes to tests - streamlined manifest test - made the socket test more cautious when connecting to a private MySQL instance. Tries to connect as user, then as root, then gives up - some tests were connecting to MySQL using undef as the user instead of $ENV{USER}. These are usually equivalent but may not be if the DBI_USER environment variable is set 1.27 2013-10-05 Bug fixes - connect was using the wrong property name when setting 'socket' in dsn. was using 'sock'; should be 'mysql_socket' Updated depdendencies Changes to tests - regression test for socket bug - updated 002.pod to strip development sub-version number - imported 003.manifest from Babel - fixed boilerplate & pod tests - added 000.reqs test to check existence of MySQL database, adapted from Babel - removed Developer tests from distro. Haven't been tested in a while! 1.26 2012-11-29 Changes to tests - fixed the change made in 1.25. $^V, the variable containing Perl's version, works differently in different versions. in perls > 5.10 it returns a regular string, while in earlier versions it returns a v-string. naturally, the code to handle these cases is different... 1.25 2012-11-28 Changes to tests - tests of DOES method now check for Perl version >= 5.10.1, since that is when DOES was added to UNIVERSAL. thanks to the CPAN smoke testers for finding this problem! 1.24 2012-10-28 Added test for version number in POD Removed redundant 'dist_version_from' param from Build.PL Bug fixes - when invoking a UNIVERSAL method (isa, can, DOES, VERSION) on Oid or OidDelelted, the method was not redispatched to the real class 1.23 2012-08-02 Changed code and tests to correct deprecated use of qw(...) as parentheses Changes to Build.PL - added Module::Build to configure_requires - added dist_version_from 1.22 2011-01-07 Bug fixes - when 'using' a class at runtime, schema changes were not happening; the common failure case was a class loaded at runtime that defines a collection Changes to Build.PL - added explicit test for DBD::mysql based on code in Data::Babel's Build.PL and removed from prereqs. it doesn't work to put in prereqs because if not present, install tries to install 'DBD' which does not exist Changes to tests - declare.030.pct_autodb.t was not setting 'create' flag in call to 'new'. longstanding bug that remained undetected because previous tests left the database in a state that didn't bother it 1.21 2011-01-05 Bug fixes; - when deleting objects whose classes were not yet 'used', the deletes were not being applied to the objects' collections; this was because the class-to-collection information was set in the registry 1.20 2010-09-20 New features - 'del' method to delete objects - queries ('get', 'find', 'count') with no arguments retrieve/count all objects. makes it possible to retrieve objects without defining collections - raw SQL can be used in queries ('get', 'find', 'count') Bug fixes - drop views everywhere that we drop tables, so views will not get in way when we create tables. (arises because DROP TABLE only drops tables, not views) Many small cleanups in code and tests 1.19_02 2010-09-17 Bug fixes - added 'numify' to overloads in Oid and OidDeleted. arises because Perls >= 5.10 use stringify to autogenerate numify (Thanks to CPAN testers for finding this!) - found a few more places where I drop tables and now have to also drop views Changes to tests - added code to emit MySQL version in 000.code_exists test - check MySQL version in 150.dropview test and skip if version too old to support views - added tests for overloaded numify 1.11 2010-03-08 Changes to build and test process only. Changes to Build.PL: - added DBD, DBI::mysql, plus some others to configure_requires. thanks to CPAN testers for finding this problem Changes in tests: - more screwing around with MySQL's max_allowed_packet variable. this limits the size of the biggest object that can be stored. I have come to learn that setting this variable has no effect, even though the MySQL documentation claims that it is a session variable. recent versions of the docs correct this misconception... 1.10 2010-03-01 Brings CPAN version up-to-date with version used internally at ISB New features: - 'put' method added to AutoDB (in Class::AutoDB::Database) to store specific objects. this is a step towards cleaning up namespace of user-objects - 'oid' method added to AutoDB. this is a step towards cleaning up namespace of user-objects - %AUTODB=0 works - %AUTODB with HASH form of keys: type defaults to string, as it does with all other forms - 'port' and 'timeout' added to connection parameters Cleanup: - connection management (connect, reconnect, etc) made consistent - 'renew' made consistent with 'new' Bug fixes: - in perl 5.10, '==' comparison in AutoDB::put was forcing stringify when applied to Oids. fixed by moving '==' after check for Oid. - 'exists' (in Class::AutoDB::Database) now checks for empty _AutoDB table; this may address common problem where AutoDB appears to exists, but registry does not exist - fixed ambiguity of ‘get’ (AutoClass::get was masking AutoDB::get) by changing order of base classes; this is short term workaround -- really need to clean up AutoClass namespace! - 'store' (in Class::AutoDB::Serialize) was using wrong regex when processing transients: /$key/ insead of /^$key$/. This caused keys to be ignored if they matched any substring of a transient. Scary this wasn't caught earlier!! - 'count' was throwing exception when count was 0. Scary this wasn't caught earlier!! - 'put' was storing undef in base table when value of key was 0. Does not impact the actual objects returned by 'get' (since objects stored in _AutoDB), but breaks queries selecting on 0. Scary this wasn't caught earlier!! - queries on lists with duplicate values were returning duplicate objects - queries with multiple terms addressing the same list key were ignoring all but one of the terms - queries with multiple terms addressing the same scalar key now detected as illegal - objects with incorrectly typed search keys now behave predictably - queries with undef values now do 'IS NULL' - keys declared with abbreviated types were not always being seen as equivalent (eg, 'int' vs. 'integer' - programmatic definition of collections now works Changes to Build process - added Tie::ToObject to prereqs - changes to Build.PL for better handling of MySQL dependency. not sure either of these are necessary or even help... - added DBD::mysql to prereqs - put DBI->connect inside eval to catch error when DBD::mysql not installed - removed Dumper.o from distro tarball Bug fixes in tests: - changed 'note' to 'diag' in several tests to get more information from testers - fixed simple coding error in autodb.122.bad_freeze.t ('dbh' to '$dbh') - return aggregate in t::Build::run_tap_harness (overrides method from Module::Build) as new versions of Module::Build require this - in autodb.010.putget.t, now invoke perl via full (secure) path rather than just 'perl' - in graph.020 tests, skip tests unless max_allowed_packet big enough (long term solution added to release 1.20 plan) - in bad_freeze tests, skip tests unless max_allowed_packet big enough (long term solution added to release 1.20 plan) 0.1 06-01-04 - in Oid, added code to 'use' classes when object is fetched if not already 'used'. caution: this only works if people follow the Perl convention of placing module Foo in file Foo.pm. Else, there's no easy way to translate a classname into a string that can be 'used' - in Oid, added overload for stringification and a few related op. stringify fetches object, so serialized objects will work as expected when used as hash key - in Object, added overload declaration for objects after they've been fetched. don't know why this is needed, but it didn't work without it - in Serialize, made -transients work - changed syntax of %AUTODB declaration to allow multiple collections to be specified with different keys. backwards compatible. affects code in Collection, Oid, Registration, Registry, RegistryVersion 0.092 05-10-25 data source might be wrong (evil and silent bug) - added SQL limit capability to AutoDB, users can now pass a _limit_ => n, where n=max number of rows to fetch, in find args 0.091 05-06-08 - Added option to turn off automatic indexing The following defects have been addressed (see also bug tracker at www.sf.net project: isbiology): 1216645 added "pass" synonym per feature request 0.09 2004/20/10 - optimized patch courtesy of Jenda of perl monks - find now handles multiple collections in query 0.08 Wed Sep 1 14:09:29 PDT 2004 The following defects have been addressed (see also bug tracker at www.sf.net project: isbiology): 1016244 no persistence on (enclosed) test 1016246 reformat of list sorage 1019348 not all objects stored 1016242 create flag not working for registry 1016238 _registry_is_saved error 1017046 not all objects stored 0.07 Tue Aug 17 10:52:27 PDT 2004 - require 5.8.2 added for perl version, manifest rebuilt to include patch files 0.06 Mon Aug 16 14:24:43 PDT 2004 - major refactor of persistence handling. store() method added to store objects explicitly (implicit storage still occurs when an object is destroyed. Implicitly destroyed objects will not overwrite explicitly destroyed ones). Mosts tests have been re-written and new ones have been added to test this storage handling. 0.05 17 May 2004 - refactor of reconstitution code 0.04 Mon Feb 23 11:15:53 PST 2004 - refactored tests so that tests that need a DB connection skip if DB connection is not negotiated 0.03 Thu Feb 19 09:46:40 PST 2004 - refactored: database connection is now made at runtime 0.02 Tues Jan 06 17:01:12 PST 2004 - some code cleanup, documentation changes 0.01 Mon Dec 22 17:28:49 PST 2003 - original version.