2012/03/07 - 0.2005 - refresh and retest
License:
Now under the Artistic License instead of GPL.
Changes:
The $OOPS::transfailrx regular expression for matching
database errors that should be retried is now built
dynamically based on which backends are used.
Tests:
Removed BEGIN {} blocks from all tests.
Swtiched from Data::Compare to Test::Deep.
Postgreql:
Fixed issue with PG_BYTEA not being defined.
With version 9.1 the text of some error messages is
changed from version 8.3
With version 9.1, 'virtual' is now a keyword so
the column virtual must now be written `virtual`.
With version 9.1, even less auto-conversion happens
so 0 != '0'.
Postgres is no longer tested against the original schmma
version.
SQLite:
Error messages for SQLite version 2 have changed a bit.
Bugfix: missing lock_object() method added.
Documentation:
Section on alternatives removed as it's obsolete.
Bug bounty removed.
2008/03/05 - 0.2004 - mysql improvement
Mysql:
Mysql version 5.0.45 does not have the SERIALIZABLE
locking problem. 5.0.22 does. "FOR UPDATE" is no
longer added to queries when mysql version 5.0.45 or
above is detected.
The mysql slow deadlock detection problem turned out to be
a bug in the test suite.
2007/05/11 - 0.2003 - major release: garbage collection, bugfixes, mysql
New features:
* Garbage collection. It's a separate module and
must be explicitly invoked. It allows you to clean up
persistent data that leaks. OOPS::GC
* Reference integrety checker. OOPS::Fsck.
* new iterator function: walk_hash()
* new helper class: OOPS::TxHash
Mysql:
It turns out that mysql SERIALIZABLE locking does
not currently work. To get OOPS to function properly,
it is necessary to add "FOR UPDATE" to every SELECT.
This essentially single-threads access to the database
becauase every OOPS instance reads a common row.
See: http://bugs.mysql.com/?id=28029
Bugfixes:
Calling virtual_object on something and then
deleting the something and the calling commit()
bombed.
lock() didn't make it to the public interface -- oops!
Multiple changes to the reference counts of unloaded
objects would corrupt the unloaded objects.
virtual_object() requests were not always saved.
readonly mode didn't work on mysql.
$ENV{OOPS_SYNC} was ignored.
There is now a workaround for SQLite 1.x's file descriptor
leak.
Cleanup:
TestCommon.pm is no longer installed.
New tests:
Garbage collection.
Reference counting
Old versions still work
New iterator.
2006/09/27 - 0.1008 - new feature: lock()
New methods:
lock() places a write-lock on a object or scalar.
Other changes:
Added new test suites (tran6a.t, tran6b.t, tran6c.t, tran6d.t)
2006/09/22 - 0.1007 - minor features, fixes, repass the full regression suite
New methods
clear_cache() removes the read-cache for virtual hashes.
New constructor arguments:
readonly Disable commit() and use a less stringent
transaction isolation level.
less_caching Don't do read caching for virtual hashes.
Re-supported:
DBD::SQLite It turns out that the problem with
DBD::SQLite 1.x is that it leaks file
descriptors. As long as you don't create
too many OOPS instances, it's safe to use.
(Though because of the filedescriptor leak
issue it can't pass the whole regression
test suite)
Changes:
SCALAR now returns the exact count of items for tied
hashes.
Bugfixes:
Calling virtual_object() on a not-yet-persistent object
saved the object in it's state as of the call to
virtual_object() rather than when commit() was called.
Removed some warnings generated by the debugging code.
2006/09/19 0.1006 - minor tweaks
Added the readonly option.
Updated the address for the GPL reference.
2006/09/06 0.1005 - minor tweaks
Removed some extraneous debugging printouts
Allow 'username' and 'pass' as aliases for 'user' and 'password' when
connecting to databases.
2006/07/04 0.1004 - focus on: bugfixes, PostgreSQL schema change, SQLite2 vs SQLite 3
Change the license to GPL.
This release tested on:
perl 5.8.7, PostgreSQL 8.1.4, Ubuntu 6.06LTS (Dapper Drake)
perl 5.8.7, DBD::SQLite2 0.33 (sqlite 2.8.15), Ubuntu 6.06LTS (Dapper Drake)
perl 5.8.7, mysql 4.1.15, Ubuntu 6.06LTS (Dapper Drake)
Not supported (did not pass tests):
perl 5.8.7, DBD::SQLite 1.12 (sqlite 3.2.7), Ubuntu 6.06LTS (Dapper Drake)
New features:
none
Bugfixes:
References to hash keys where the key is a large string now work
(except when using mysql).
Change one column definition in the PostgreSQL schema. This
fixes a PostgreSQL compatability bug and this change is required
whem moving from PostgreSQL 7.* to PostgreSQL 8.*. Reported
by Jon Schindler. http://rt.cpan.org/Ticket/Display.html?id=19723
Bugfix: schema upgrades from 1001 to 1003 weren't always recorded
correctly.
Don't fail tests if Test::MultiFork isn't installed.
SQLite 3 wouldn't auto-initialize.
SQLite 3 gives different error messages and that caused errors
rather than raising a deadlock exception.
Old versions of Data::Compare will recursse infinately. Don't
even try! Unfortunantly Debian (and Ubuntu) include very old
versions of Data::Compare.
Other changes:
Ran ispell on OOPS.pod and made other edits.
Added new tests (misc2.t, big.t, upgrade1003.t, failures.t)
Added a new test harness: supercross7()
Added support for DBD::SQLite2, auto-detect SQLite version.
Dropped ab-loopspeed.t in favor of Time::HiRes.
2004/05/19 0.1003 - focus on: new features
Added hooks to upgrade the schema when the schema is changed and
to use an older version of OOPS if auto_upgrade isn't set and the
schema can't be upgraded.
Added auto_initialize.
Removed some of the redundent regression tests.
Fixed a bug in the tran1.t and tran1a.t test scripts.
2004/05/16 0.1002 - focus on: Pg bugfix and SQLite addtion
Added support for SQLite.
Discovered that DBD::Pg doesn't handle ascii null without
using bind_param(). Now bind_param() is used.
Added more regression tests: null.t, bigblob.t
Modified slowtest.t so we can skip to a specific test.
Removed the requirement that a username be specified for DBI.
The problem I had with SET TRANSACTION ISOLATION LEVEL in mysql
turns out to be my mistake: it sets the level for the _next_
transaction, not the current one. The LOCK IN SHARE MODE hack
has been removed.
Added load_object() to the OOPS::FrontEnd to match the documentation
on hand-written queries. Also added dbh() to OOPS::FrontEnd to support
hand-written queries.
Added a quick check for schema version compatability.
Minor changes to the license.
2004/05/10 0.1001 - focus on: reliability
Initial revision