Optimize SnapBuildPurgeOlderTxn: use in-place compaction instead of temporary array
Xuneng Zhou <xunengzhou@gmail.com>
From: Xuneng Zhou <xunengzhou@gmail.com>
To: pgsql-hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-10-18T07:49:40Z
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 →
-
Introduce logical decoding.
- b89e151054a0 9.4.0 cited
Attachments
- v1-0001-Optimize-SnapBuildPurgeOlderTxn-function.patch (application/octet-stream) patch v1-0001
Hi Hackers, The SnapBuildPurgeOlderTxn function previously used a suboptimal method to remove old XIDs from the committed.xip array. It allocated a temporary workspace array, copied the surviving elements into it, and then copied them back, incurring unnecessary memory allocation and multiple data copies. This patch refactors the logic to use a standard two-pointer, in-place compaction algorithm. The new approach filters the array in a single pass with no extra memory allocation, improving both CPU and memory efficiency. No behavioral changes are expected. This resolves a TODO comment expecting a more efficient algorithm. Best, Xuneng