Re: use `proc->pgxactoff` as the value of `index` in `ProcArrayRemove()`
Andrew Dunstan <andrew@dunslane.net>
From: Andrew Dunstan <andrew@dunslane.net>
To: Tom Lane <tgl@sss.pgh.pa.us>, Andres Freund <andres@anarazel.de>
Cc: 盏一 <w@hidva.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2021-05-06T20:16:05Z
Lists: pgsql-hackers
On 5/6/21 3:27 PM, Tom Lane wrote: > Andres Freund <andres@anarazel.de> writes: >> On 2021-05-07 00:30:13 +0800, 盏一 wrote: >>> Since we have introduced `pgxactoff` in [941697c3c1ae5d6ee153065adb96e1e63ee11224](https://github.com/postgres/postgres/commit/941697c3c1ae5d6ee153065adb96e1e63ee11224), and `pgxactoff` is always the index of `proc->pgprocno` in `procArray->pgprocnos`. So it seems that we could directly use `proc->pgxactoff` as the value of `index` in `ProcArrayRemove()`? My thought is to replace >> Sounds like a plan! Do you want to write a patch? >> If you do, I think it might be worthwhile to add an only-with-assertions >> loop checking that there's no other entry with the same pgprocno in the >> dense arrays. > Hmm, I can definitely see keeping a check that the selected entry > has the right PID and/or pgprocno, but making it search for duplicates > seems a bit over the top. The existing code isn't guarding against > that, and I don't really see a reason why there's a meaningful risk > of it. > >> Given that the code is new in 14, I wonder if we should cram this >> simplification in before beta? > +1, seems like a pretty clear missed opportunity in 941697c3c. > > open item then? cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com
Commits
-
Improve and cleanup ProcArrayAdd(), ProcArrayRemove().
- d8e950d3ae7b 14.0 landed
-
snapshot scalability: Introduce dense array of in-progress xids.
- 941697c3c1ae 14.0 cited