Serializable description seems misleading?
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.
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: CommitsYou 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?