Re: Potential G2-item cycles under serializable isolation

Thomas Munro <thomas.munro@gmail.com>

From: Thomas Munro <thomas.munro@gmail.com>
To: Andres Freund <andres@anarazel.de>
Cc: Kyle Kingsbury <aphyr@jepsen.io>, Peter Geoghegan <pg@bowt.ie>, Kevin Grittner <kgrittn@gmail.com>, Jeff Davis <pgsql@j-davis.com>, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2020-06-13T04:49:02Z
Lists: pgsql-bugs

Attachments

On Fri, Jun 12, 2020 at 10:14 AM Thomas Munro <thomas.munro@gmail.com> wrote:
> Here's a new attempt at that.  Attached, but I'll also just include
> the new paragraph here because it's short:

Slightly improved version, bringing some wording into line with
existing documentation.  s/SQL Standard/SQL standard/, and explicitly
referring to "locking" implementations of RR and Ser (as we do already
a few paragraphs earlier, when discussing MVCC).  My intention is to
push this to all branches in a couple of days if there is no other
feedback.  I propose to treat it as a defect, because I agree that
it's weird and surprising that we don't mention SI, especially
considering the history of the standard levels.  I mean, I guess it's
basically implied by all the stuff that section says about MVCC vs
traditional locking systems, and it's a super well known fact in our
hacker community, but not using the standard term of art is a strange
omission.

In future release perhaps we could entertain ideas like accepting the
name SNAPSHOT ISOLATION, and writing some more use-friendly guidance,
and possibly even reference the Generalized Isolation Level
Definitions stuff.  I think it'd be a bad idea to stop accepting
REPEATABLE READ and inconvenience our users, though; IMHO it's
perfectly OK to stick with the current interpretation of the spec
while also acknowledging flaws and newer thinking through this new
paragraph.

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.