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 →
  1. Replace literal 0 with InvalidXLogRecPtr for XLogRecPtr assignments

  2. Replace pointer comparisons and assignments to literal zero with NULL

  3. Use XLogRecPtrIsValid() in various places

  4. Introduce XLogRecPtrIsValid()

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