From: | Thomas Munro <thomas(dot)munro(at)gmail(dot)com> |
---|---|
To: | github(at)henricook(dot)com, PostgreSQL mailing lists <pgsql-bugs(at)lists(dot)postgresql(dot)org> |
Subject: | Re: BUG #15875: Unexpected serializable isolation error when INSERTing into a table |
Date: | 2019-06-26 10:33:48 |
Message-ID: | CA+hUKGJMMUK5WsH=kGWZ+wbYj+a9KvFPW=eucpc+RPCYJx946g@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
On Wed, Jun 26, 2019 at 10:05 PM PG Bug reporting form
<noreply(at)postgresql(dot)org> wrote:
> -- Transaction 1:
> ```
> BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> SELECT id FROM foo WHERE id = 44;
For me, this acquires an SIReadLock on the page because it's an index
only scan. Then ...
> -- Transaction 2:
> ```
> BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> SELECT id FROM foo WHERE id = 33;
... this does the same, on the same page, so the transactions form a
cycle when they write. You can see the page locks in the pg_locks
view. In other words, you can get bogus serialisation failures when
you access nearby keys. It seems like we could probably fix this in a
future release by switching to tuple locks (or rather TID locks) for
index only scans, as briefly discussed a while ago but not yet
followed up:
--
Thomas Munro
https://enterprisedb.com
From | Date | Subject | |
---|---|---|---|
Next Message | Henri Cook | 2019-06-26 10:50:10 | Re: BUG #15875: Unexpected serializable isolation error when INSERTing into a table |
Previous Message | PG Bug reporting form | 2019-06-26 10:04:35 | BUG #15875: Unexpected serializable isolation error when INSERTing into a table |