Re: Consistently use the XLogRecPtrIsInvalid() macro
Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
From: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
To: Álvaro Herrera <alvherre@kurilemu.de>
Cc: Peter Eisentraut <peter@eisentraut.org>, Michael Paquier <michael@paquier.xyz>, Heikki Linnakangas <hlinnaka@iki.fi>, Quan Zongliang <quanzongliang@yeah.net>, pgsql-hackers@lists.postgresql.org
Date: 2025-11-07T06:17:27Z
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 →
-
Replace literal 0 with InvalidXLogRecPtr for XLogRecPtr assignments
- ec3174407164 19 (unreleased) landed
-
Replace pointer comparisons and assignments to literal zero with NULL
- ec782f56b0c3 19 (unreleased) landed
-
Use XLogRecPtrIsValid() in various places
- a2b02293bc65 19 (unreleased) landed
-
Introduce XLogRecPtrIsValid()
- d2965f627fe3 14.20 landed
- c0031d461324 18.1 landed
- 723cc84db50a 16.11 landed
- 49b45999f3b2 15.15 landed
- 33727aff18d0 17.7 landed
- 20bafb097288 13.23 landed
- 06edbed47862 19 (unreleased) landed
Hi, On Thu, Nov 06, 2025 at 08:48:11PM +0100, Álvaro Herrera wrote: > On 2025-Nov-06, Bertrand Drouvot wrote: > > > I see, I would have introduced XLogRecPtrIsInvalid() on the back branches only > > if there is a need to (a bugfix that would make use of it). But yeah, I agree > > that would add extra "unnecessary" work, so done as you suggested in the > > attached. I checked that 0001 apply on the [14-18]_STABLE branches successfully. > > Okay, thanks, I have applied that one to all stable branches, except I > didn't add the judgemental comment about XLogRecPtrIsInvalid(). > > I also pushed 0002+0004+0005 together as one commit, so now we have > XLogRecPtrIsValid() everywhere. Thanks! > I did a couple of minor transformations, where the new code would end > doing "!XLogRecPtrIsValid(x) ? A : B" it seems clearer to remove the > negation and invert the other two arguments in the ternary. We also had > this assertion, > > - Assert(XLogRecPtrIsInvalid(state->istartpoint) == (state->istarttli == 0)); > > which was being transformed to have a negation. I chose to negate the > other side of the equality instead, that is, > > + Assert(XLogRecPtrIsValid(state->istartpoint) == (state->istarttli != 0)); > > which also seems clearer. Agree, will modify the .cocci scripts that way. > Now only 0003 remains ... I would change the complaining version to 21 > there, because why not? Now that XLogRecPtrIsValid() is available in back branches, I agree that we can be less conservative and not wait until v24. v21 looks like good timing to me. Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com