pg_resetwal prints new OldestXID in wrong circumstances
Heikki Linnakangas <hlinnaka@iki.fi>
From: Heikki Linnakangas <hlinnaka@iki.fi>
To: "pgsql-bugs@lists.postgresql.org" <pgsql-bugs@lists.postgresql.org>
Date: 2025-11-19T09:52:31Z
Lists: pgsql-bugs
Attachments
When the --oldest-transaction-id option is used, pg_resetwal doesn't print the new value like it does for other similar options. For example, if you use --next-oid and --oldest-transaction-id, only the new NextOID value is printed: > $ pg_resetwal --dry-run -D data --next-oid 10 --oldest-transaction-id 100 > Current pg_control values: > > ... > > Values to be changed: > > First log segment after reset: 000000010000000000000005 > NextOID: 10 Printing the new OldestXID value is incorrectly tied to whether the --next-transaction-id option is given, so this prints it, even though OldestXID is not being modified: > $ pg_resetwal --dry-run -D data --next-oid 10 --next-transaction-id 100 > Current pg_control values: > > ... > > > Values to be changed: > > First log segment after reset: 000000010000000000000005 > NextOID: 10 > NextXID: 100 > OldestXID: 744 > OldestXID's DB: 1 This seems to have been an oversight when the --oldest-transaction-id option was added (commit 74cf7d46a91d). Before that, OldestXID was reset when the --next-transaction-id option was given. Fix attached. Barring objections, I will commit and backpatch this. - Heikki