Serializable description seems misleading?

Started by PG Bug reporting formover 6 years ago2 messagesdocs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/12/transaction-iso.html
Description:

Let's say I have two transactions running in Serializable isolation:
T1: Reads a row
T2: Reads the same row
T1: Updates the row
T1: Commits
T2: Commits

You will not get an error on the second commit. These appear to fit the
description of concurrent transactions, and running one before the other
would give different results in the reading of the row by T2, depending on
which transaction was executed first. So how does this square with the docs
that state "it monitors for conditions which could make execution of a
concurrent set of serializable transactions behave in a manner inconsistent
with all possible serial (one at a time) executions".

This seems quite misleading, but I understand there may just be an aspect of
this that I am not understanding.

#2Thomas Munro
thomas.munro@gmail.com
In reply to: PG Bug reporting form (#1)
Re: Serializable description seems misleading?

On Wed, Dec 11, 2019 at 11:27 AM PG Doc comments form
<noreply@postgresql.org> wrote:

Page: https://www.postgresql.org/docs/12/transaction-iso.html
Description:

Let's say I have two transactions running in Serializable isolation:
T1: Reads a row
T2: Reads the same row
T1: Updates the row
T1: Commits
T2: Commits

You will not get an error on the second commit. These appear to fit the
description of concurrent transactions, and running one before the other
would give different results in the reading of the row by T2, depending on
which transaction was executed first. So how does this square with the docs
that state "it monitors for conditions which could make execution of a
concurrent set of serializable transactions behave in a manner inconsistent
with all possible serial (one at a time) executions".

It only has to be consistent with *one* serial ordering of the
transactions to be allowed, not all serial orderings. In this case,
the observed values and effects are consistent with T2 running before
T1.

This seems quite misleading, but I understand there may just be an aspect of
this that I am not understanding.

Do you think that wording could be improved?