Re: Consistently use the XLogRecPtrIsInvalid() macro

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>, Álvaro Herrera <alvherre@kurilemu.de>
Cc: Michael Paquier <michael@paquier.xyz>, Heikki Linnakangas <hlinnaka@iki.fi>, Quan Zongliang <quanzongliang@yeah.net>, pgsql-hackers@lists.postgresql.org
Date: 2025-11-18T15:54:32Z
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()

On 18.11.25 10:06, Bertrand Drouvot wrote:
> Hi,
> 
> On Fri, Nov 07, 2025 at 03:03:03PM +0000, Bertrand Drouvot wrote:
>> I'm currently working on the RegProcedureIsValid() and OidIsValid() cases,
>> will share once done.
> 
> here they are, I'm not creating a new thread for those as this is the same
> kind of ideas (but for other types) but can create a dedicated one if you prefer.

I don't like this change.

RegProcedureIsValid() doesn't add any value over OidIsValid, and we 
don't have any RegXXXIsValid() for any of the other regxxx types.  So if 
we were to do anything about this, I would just remove it.

For OidIsValid etc., I don't think this improves the notation.  It is 
well understood that InvalidOid is 0.  I mean, some people like writing 
if (!foo) and some like writing if (foo == NULL), but we're not going to 
legislate one over the other.  But we're certainly not going to 
introduce, uh, if (PointerIsValid(foo)), and in fact we just removed 
that!  What you're proposing here seem quite analogous but in the 
opposite direction.