Re: Consistently use the XLogRecPtrIsInvalid() macro

Bertrand Drouvot <bertranddrouvot.pg@gmail.com>

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

Attachments

Hi,

On Fri, Nov 07, 2025 at 05:18:41PM +0000, Dagfinn Ilmari Mannsåker wrote:
> Peter Eisentraut <peter@eisentraut.org> writes:
> 
> > On 07.11.25 16:03, Bertrand Drouvot wrote:
> >
> >> +#define pg_attribute_deprecated(msg) [[deprecated(msg)]]
> >> +#elif defined(__GNUC__) || defined(__clang__)
> >
> > The __clang__ part is not needed, because clang defines __GNUC__ also.
> 
> Or, to avoid having to know this, how about __has_attribute(deprecated)?
> 

Thanks for looking at it! I did some research and found that some older GCC
versions did support the deprecated attribute (for example GCC 4.5 added support
to the extra message, see [1]) but not __has_attribute (introduced in GCC 5, see
[2]). So for example here, we'd have a 4.5-4.9 gap. 

Then to be on the safe side of things I think it's better to not use
__has_attribute() for the deprecated attribute.

I added a comment in the attached though.

[1]: https://gcc.gnu.org/gcc-4.5/changes.html
[2]: https://gcc.gnu.org/gcc-5/changes.html

Regards,

-- 
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com