Re: pgstattuple: Use streaming read API in pgstatindex functions
Xuneng Zhou <xunengzhou@gmail.com>
From: Xuneng Zhou <xunengzhou@gmail.com>
To: Shinya Kato <shinya11.kato@gmail.com>
Cc: pgsql-hackers <pgsql-hackers@lists.postgresql.org>, Nazir Bilal Yavuz <byavuz81@gmail.com>,
Thomas Munro <thomas.munro@gmail.com>, wenhui qiu <qiuwenhuifx@gmail.com>
Date: 2025-10-16T09:39:20Z
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 →
-
Refactor logical worker synchronization code into a separate file.
- 41c674d2e31e 19 (unreleased) cited
Attachments
- v5-0001-Use-streaming-read-API-in-pgstatindex-functions.patch (application/octet-stream) patch v5-0001
- benchmark_summary.png (image/png)
Hi Kato-san, Thanks for looking into this. On Thu, Oct 16, 2025 at 4:21 PM Shinya Kato <shinya11.kato@gmail.com> wrote: > > Hi, > > On Wed, Oct 15, 2025 at 10:25 AM Xuneng Zhou <xunengzhou@gmail.com> wrote: >> >> Hi, >> >> Here’s the updated summary report(cold cache, fragmented index), now including results for the streaming I/O + io_uring configuration. >> > > Thank you for the additional tests. I can see the image on Gmail, but I cannot on pgsql-hackers archive [0], so it might be a good idea to attach it and not to paste it on the body. Please see the attachment. > > > I saw the patch and have a few minor comments. > > + p.current_blocknum = 1; > > To improve readability, how about using the following, which is consistent with nbtree.c [1]? > p.current_blocknum = BTREE_METAPAGE + 1; > > Similarly, for hash index: > p.current_blocknum = HASH_METAPAGE + 1; This is more readable. I made the replacements. > > + /* Unlock and release buffer */ > UnlockReleaseBuffer(buf); > > I think this comment is redundant since the function name UnlockReleaseBuffer is self-explanatory. I suggest omitting it from pgstathashindex and removing the existing one from pgstatindex_impl. UnlockReleaseBuffer seems clearer and simpler than the original > LockBuffer(buffer, BUFFER_LOCK_UNLOCK); > ReleaseBuffer(buffer); So the comment might be less meaningful for UnlockReleaseBuffer. I removed it as you suggested. Best, Xuneng