On 25.10.2011 12:51, Paul Stapersma wrote:
> PostgreSQL version: 8.3.3
That is a pretty old version. At least you should use the latest version
in the 8.3 series, which is currently 8.3.16. I'm not sure if there's
been any isolation-related bug fixes since 8.3.3, but I don't see any
reason not to test using the latest minor version.
Even better, use the latest and greated version, 9.1.1. 9.1 is a very
interesting release for the stuff you're doing, because it is the first
version to implement the Serializable level correctly, which is
different from the Snapshot Isolation we had previously. It uses a
technique called Serializable Snapshot Isolation.
> For a project at my University, we compared PostgreSQL with MySQL's InnoDB.
> In this research, we found several cases in which anomalies where detected
> in Isolation levels that guaranteed not to have these anomalies.
>
> In short summary:
> - we detected non-repeatable reads in the repeatable read isolation level
> - we detected non-repeatable reads in the serializable isolation level
> - we detected phantoms in the serializable isolation level
> - we detected lost updates in the repeatable read isolation level
> - we detected lost updates in the serializable isolation level
>
> Furthermore, we detected differences between Read Committed and Read
> Uncommitted and differences between Serializable and Repeatable Read which
> is in contrast to the documentation.
That is all pretty hard to believe, to be honest. I'd suggest that you
check you testing methodology. If you can provide a short self-contained
test script to demonstrate one of those unexpected anomalies, me or
someone else on the mailing list can take a closer look.
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com