Re: RFC: Logging plan of the running query
Kyotaro Horiguchi <horikyota.ntt@gmail.com>
From: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
To: masao.fujii@oss.nttdata.com
Cc: torikoshia@oss.nttdata.com, pgsql-hackers@lists.postgresql.org
Date: 2022-02-02T07:49:57Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
ecpg: Catch zero-length Unicode identifiers correctly
- a18b6d2dc288 15.0 cited
-
Improve warning message in pg_signal_backend()
- 7fa945b857cc 15.0 cited
-
Add assert to ensure that page locks don't participate in deadlock cycle.
- 72e78d831ab5 13.0 cited
Attachments
- (unnamed) (text/plain)
At Tue, 1 Feb 2022 23:11:03 +0900, Fujii Masao <masao.fujii@oss.nttdata.com> wrote in > >> One thing that really bothers me about commit e2c79e14 is that > >> LockPage() is called, not LockBuffer(). GIN had no LockPage() calls > >> before that commit, and is now the only code in the entire system that > >> calls LockPage()/ConditionalLockPage() (the hash am no longer uses > >> page heavyweight locks following recent work there). > > I agree to the discussion. Can't we use other mechanism here to get > > rid of the Lockpage()? > > I have no good idea for that yet, but I agree it's better to get rid > of page level lock. It's my turn? The page lock is used to hold-off simultaneous cleanups on the same index. ShareUpdateExclusive lock on the index relation works that way. In that path it seems like we are always holding a RowExclusive lock, so it seems to me we can use ShareUpdateExclusive for our purpose. There might be a false blocking case when another backend is holding a conflicting lock on the index. They are, Share, ShareRowExclusive, Exclusive and AccessExclusive. The last three cases don't seem worth discussion. I'm not sure about Share and Share Row cases. AFAICS Share lock is taken on an index in ATExecReplicaIdentity, and there no use of ShareRowExclusive lock on an index. It's no use discussing about explicit locking. So aren't we able to use ShareUpdateExclusive lock for that? In the attached patch, ginInsertCleanup has an extra check for such stronger locks not being held. At least "make check" doesn't cause the extra assertion to fire. regards. -- Kyotaro Horiguchi NTT Open Source Software Center