On 28.10.25 13:33, Bertrand Drouvot wrote:
I do prefer to introduce XLogRecPtrIsValid(x) and switch to that. Then, do the
same kind of work on OidIsValid() and TransactionIdIsValid() and add an annual
check.
Idea is to get some code consistency while keeping macros which are valuable for
readability and centralize changes if any need to be done in the way we check
their validity.
If we wanted real type safety, we could turn XLogRecPtr back into a
struct, and then enforce the use of XLogRecPtrIsValid() and similar.
Otherwise, we should just acknowledge that it's an integer and use
integer code to deal with it. These *IsValid() and similar macros that
are there for "readability" but are not actually enforced other than by
some developers' willpower are just causing more work and inconsistency
in the long run.