From: | Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at> |
---|---|
To: | Christoph Moench-Tegeder <cmt(at)burggraben(dot)net>, Matthias Apitz <guru(at)unixarea(dot)de> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-general(at)lists(dot)postgresql(dot)org |
Subject: | Re: existing row not found by SELECT ... WHERE CTID = ? |
Date: | 2022-05-25 13:22:39 |
Message-ID: | a4128a144406c3cd730fbc442d71ba5afe31af4f.camel@cybertec.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Wed, 2022-05-25 at 14:27 +0200, Christoph Moench-Tegeder wrote:
> ## Matthias Apitz (guru(at)unixarea(dot)de):
>
> > We will solve the problem now with setting the session after connect to
> >
> > SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL REPEATABLE READ;
> >
> > (with an appropriate ESQL/C call). Any comments?
>
> Maybe the real question is whether it is wise to use an implementation
> artifact (ctid) to identify rows?
> The textbook approach could be row locks (SELECT ... FOR SHARE/UPDATE and
> variants) to prevent concurrent changes or optimistic locking (and a
> primary key in any case) - but maybe you already investigated those options?
Right.
REPEATABLE READ won't help you there. True, you will see a stable snapshot
of the database inside a single transaction, but if a concurrent session has
modified the row, you will get a serialization error.
So that is not a solution.
Yours,
Laurenz Albe
From | Date | Subject | |
---|---|---|---|
Next Message | David G. Johnston | 2022-05-25 13:32:23 | Re: cast to domain with default collation issue. |
Previous Message | 2022-05-25 12:55:36 | Extension pg_trgm, permissions and pg_dump order |