Re: BUG #17949: Adding an index introduces serialisation anomalies.
Dmitry Dolgov <9erthalion6@gmail.com>
From: Dmitry Dolgov <9erthalion6@gmail.com>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: artem.anisimov.255@gmail.com, pgsql-bugs@lists.postgresql.org, Teodor Sigaev <teodor@sigaev.ru>, Heikki Linnakangas <hlinnaka@iki.fi>
Date: 2023-06-23T14:05:42Z
Lists: pgsql-bugs
> On Thu, Jun 22, 2023 at 10:02:19PM +1200, Thomas Munro wrote: > On Wed, Jun 21, 2023 at 9:04 PM Dmitry Dolgov <9erthalion6@gmail.com> wrote: > > Now the reading transaction actually does PredicateLockPage on the > > metabuffer inside scanPendingInsert, but strangely enough it doesn't > > lock anything because the SerializationNeededForRead condition is false. > > I'm trying to verify if it's somehow a part of the issue, or something > > is broken on my side. > > Maybe you were confused by the presence of non-SSI transactions in the > repro (eg the transaction that sets up the index)? Yeah, sort of. Need to optimize the way how I consume the logs. > To answer my own earlier question, the conflict-in check for posting > trees is hidden in getFindLeafPage(..., true, ...). > > I spent some more time trying to grok this today. FTR it reproduces > faster without the extra tuple that repro I posted inserts after > TRUNCATE (the point of that was to find out whether it was an > empty-to-non-empty transition). I still don't know what's wrong but I > am beginning to suspect the "fast" code. It seems as though, under > high concurrency, we sometimes don't scan a recently inserted > (invisible to our snapshot, but needed for SSI checks) tuple, but I > don't yet know why. Yep, it's definitely something in the "fast" path. Testing the same, but with an index having (fastupdate=off) works just fine for me.
Commits
-
Fix race in SSI interaction with bitmap heap scan.
- 814f3c8e4868 11.21 landed
- 17b8887c29e5 12.16 landed
- 8976ac5c5c00 13.12 landed
- 3f7d3a77e18d 14.9 landed
- ab265e98500b 15.4 landed
- bcc93a389ce3 17.0 landed
- d03d9a2614fd 16.0 landed
-
Fix race in SSI interaction with gin fast path.
- 13f127800fed 11.21 landed
- 255a925d333b 12.16 landed
- fc15473840bc 13.12 landed
- fb663f38790e 14.9 landed
- d34aa0a2f4f3 15.4 landed
- 126552c85c1c 17.0 landed
- 12529028a4e5 16.0 landed
-
Fix race in SSI interaction with empty btrees.
- 0048c3b51549 11.21 landed
- fe88497b4d0b 12.16 landed
- 8f705d7b9d01 13.12 landed
- ae6d536ed0dc 14.9 landed
- 0f275b0ee8e4 15.4 landed
- f9b7fc651a99 17.0 landed
- 0cb1fb2c9bf8 16.0 landed
-
Re-think predicate locking on GIN indexes.
- 0bef1c0678d9 11.0 cited