Re: Potential G2-item cycles under serializable isolation

Thomas Munro <thomas.munro@gmail.com>

From: Thomas Munro <thomas.munro@gmail.com>
To: Peter Geoghegan <pg@bowt.ie>
Cc: Kyle Kingsbury <aphyr@jepsen.io>, Andres Freund <andres@anarazel.de>, Kevin Grittner <kgrittn@gmail.com>, Jeff Davis <pgsql@j-davis.com>, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2020-06-15T21:39:11Z
Lists: pgsql-bugs
On Tue, Jun 16, 2020 at 5:16 AM Peter Geoghegan <pg@bowt.ie> wrote:
> At first glance it seemed to me that MySQL's repeatable read must be
> more or less the same as Postgres' repeatable read; there is only one
> snapshot in each case. But it's very different in reality, since
> updates and deletes don't use the transaction snapshot. Worst of all,
> you can update rows that were not visible to the transaction snapshot,
> thus rendering them visible (see the "Note" box in the documentation
> for an example of this). InnoDB won't throw a serialization error at
> any isolation level.

Ugh, obviously I only read the first two paragraphs of that page,
which sound an *awful* lot like a description of SI (admittedly
without naming it).  My excuse is that I arrived on that page by
following a link from
https://en.wikipedia.org/wiki/Snapshot_isolation.  Wikipedia is wrong.
Thanks for clarifying.



Commits

  1. Doc: Add references for SI and SSI.

  2. Improve comments for [Heap]CheckForSerializableConflictOut().

  3. Avoid update conflict out serialization anomalies.

  4. Implement genuine serializable isolation level.