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-07T16:05:11Z
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 07.11.25 16:03, Bertrand Drouvot wrote:
> +/*
> + * Mark a declaration as deprecated with a custom message. The compiler will
> + * emit a warning when the deprecated entity is used.
> + */
> +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L || \
> +defined(__cplusplus) && __cplusplus >= 201402L

This could use some parentheses to disambiguate the && and ||.

Also the second line could be indented (or just put it on one line).

> +#define pg_attribute_deprecated(msg) [[deprecated(msg)]]
> +#elif defined(__GNUC__) || defined(__clang__)

The __clang__ part is not needed, because clang defines __GNUC__ also.

> +#define pg_attribute_deprecated(msg) __attribute__((deprecated(msg)))
> +#elif defined(_MSC_VER)
> +#define pg_attribute_deprecated(msg) __declspec(deprecated(msg))
> +#else
> +#define pg_attribute_deprecated(msg)
> +#endif