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