pg.ddx.io pgsql-hackers@postgresql.org mailing list archive
help / color / mirror / Atom feed From: Ian Jackson <ian.jackson@eu.citrix.com>
To: Kevin Grittner <kgrittn@gmail.com>
Cc: Robert Haas <robertmhaas@gmail.com>
Cc: Alvaro Herrera <alvherre@2ndquadrant.com>
Cc: Thomas Munro <thomas.munro@enterprisedb.com>
Cc: xen-devel@lists.xenproject.org
Cc: pgsql-hackers@postgresql.org <pgsql-hackers@postgresql.org>
Subject: Re: [OSSTEST PATCH 0/1] PostgreSQL db: Retry on constraint violation [and 2 more messages] [and 1 more messages]
Date: Wed, 14 Dec 2016 17:12:51 +0000
Message-ID: <22609.32147.935746.463570@mariner.uk.xensource.com> (raw )
In-Reply-To: <CACjxUsNRtRSiEcuz5mCsYzNH+62=ZH5j-j=a-iRm6ri-mnMETQ@mail.gmail.com >
References: <1481307991-16971-1-git-send-email-ian.jackson@eu.citrix.com >
<CACjxUsMsHxZ_SrWw7bdCT1Kn8E9mtA1TvhAEbTt-L9AWKKZLCg@mail.gmail.com >
<22606.47105.549023.301281@mariner.uk.xensource.com >
<CACjxUsM3SbYPwPi8K5YJ+w016-GV2RT3mDFHqKAz8Ris+x2vCw@mail.gmail.com >
<CACjxUsMSyhmUStWshxMeAGN7r2YHp1cTSMVPSwDCeVJD-aR6ag@mail.gmail.com >
<CACjxUsNKtNVhX6EoxY9FjS7N1aJ=inopGT0EqV_yKF6oup0p_g@mail.gmail.com >
<CAEepm=3Su08X4tTCUMjpxWAbDWbRhKrdw-hQqSmuhTuzYrytew@mail.gmail.com >
<22607.56276.807567.924144@mariner.uk.xensource.com >
<CACjxUsO+ztVVwxLQ9gdAapn3bqz+1x7m-D8-T8d1Z2aNs0qVfQ@mail.gmail.com >
<22608.6345.97849.783099@mariner.uk.xensource.com >
<CACjxUsNaAdSDKc_p4S52L3p6r6_7F1Nb+viKaCLFVCY=tYdCTg@mail.gmail.com >
<22608.14118.291149.821376@mariner.uk.xensource.com >
<CA+TgmoZ4MH1tSLGZy7gQFpVh3udsucxqvqc0rF8zHqX8aXmRwQ@mail.gmail.com >
<CACjxUsNum7KFyAoe0THB2_qGUMsW9AhwRZ8zANnj_Q8spD8=SA@mail.gmail.com >
<20161214140539.hotxjeoshju2m7zw@alvherre.pgsql >
<CA+TgmoZO+N=ATeWD1fZ4rKngPSOu+EQrTGt_7vtVFMAWVogLOA@mail.gmail.com >
<CA+TgmoaZ2CHBVMWRUd=-M6n9iX_4xezNSxHTHGRRmsABVGi4Aw@mail.gmail.com >
<22609.29020.794032.389420@mariner.uk.xensource.com >
<CACjxUsNRtRSiEcuz5mCsYzNH+62=ZH5j-j=a-iRm6ri-mnMETQ@mail.gmail.com >
List-Unsubscribe: <mailto:majordomo@postgresql.org?body=unsub%20pgsql-hackers>
Kevin Grittner writes ("Re: [HACKERS] [OSSTEST PATCH 0/1] PostgreSQL db: Retry on constraint violation [and 2 more messages] [and 1 more messages]"):
> On Wed, Dec 14, 2016 at 10:20 AM, Ian Jackson <ian.jackson@eu.citrix.com> wrote:
>
> > Let me try to summarise my understanding of what the developers think
> > they can and intend to promise, about SERIALIZABLE transactions:
> >
> > There is a consistent serialisation of all transactions which
> > successfully commit; or which do not attempt to make any changes.
> >
> > A "consistent serialisation" means that there is an order in which
> > the same transactions might have been executed giving exactly the
> > answers. This includes, if applicable, the same errors. (The
> > database is free to generate synchronisation failure errors 40P01 and
> > 40001 whenever it chooses.)
>
> I would alter that slightly to:
>
> There is a consistent serialization of all serializable
> transactions which successfully commit.
Here `serializable' means SERIALIZABLE ?
> > A transaction which attempts to make any changes, and which does not
> > commit (whether because the application never asks for COMMIT, or
> > because of reported synchronisation failure) might see internally
> > inconsistent data, or an internally-consistent view which is not
> > compatible with any serialisation of other transactions. An
> > application which needs a coherent view should not rely on any of the
> > information from such a transaction.
>
> Even a read-only transaction can see a state that is not consistent
> with business rules (as enforced in the software) given that some
> particular later state is reached.
>
> For examples, please see this Wiki page. You might be particularly
> interested in the examples in the "Read Only Transactions" section:
>
> https://wiki.postgresql.org/wiki/SSI
Thanks. I read that part of the wiki page. But in that example, we
are told that T1 will be aborted, not T3.
Can it happen that a transaction which does not make any update
attempts, will see "impossible" data, and that this is only detected
at COMMIT ? Does that apply even to READ ONLY transactions ?
> > Serialisation failures in subtransactions might cause the parent
> > transaction to experience a serialisation failure too.
>
> There is currently at least one bug
Right. I was trying to capture the intent, modulo bugs.
> Once a serialization failure occurs the transaction is flagged as
> "doomed" and will not, under any circumstances be allowed to
> commit. If you find any exception to that, please report it as a
> bug.
Right. I think this prevents any exception-catching arrangements from
suppressing the serialisation failure. Since AIUI it is not possible
to run the outer COMMIT from within an exception trapping context.
If it /is/ possible to run that outer COMMIT in a way which swallows
the exception then this is not a practical problem but the wording
ought to be changed to refer to the success of the COMMIT statement.
Ian.
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
view thread (35+ messages) latest in thread
Message-ID: <22609.32147.935746.463570@mariner.uk.xensource.com>
Permalink: ../22609.32147.935746.463570@mariner.uk.xensource.com/
Also on: postgresql.org/message-id/22609.32147.935746.463570@mariner.uk.xensource.com
copy link · copy postgr.es
reply Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: ian.jackson@eu.citrix.com, kgrittn@gmail.com, robertmhaas@gmail.com, alvherre@2ndquadrant.com, thomas.munro@enterprisedb.com, xen-devel@lists.xenproject.org
Subject: Re: [OSSTEST PATCH 0/1] PostgreSQL db: Retry on constraint violation [and 2 more messages] [and 1 more messages]
In-Reply-To: <22609.32147.935746.463570@mariner.uk.xensource.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox