| From: | Peter Eisentraut <peter(at)eisentraut(dot)org> |
|---|---|
| To: | Bertrand Drouvot <bertranddrouvot(dot)pg(at)gmail(dot)com>, Heikki Linnakangas <hlinnaka(at)iki(dot)fi> |
| Cc: | Quan Zongliang <quanzongliang(at)yeah(dot)net>, pgsql-hackers(at)lists(dot)postgresql(dot)org |
| Subject: | Re: Consistently use the XLogRecPtrIsInvalid() macro |
| Date: | 2025-10-29 16:50:13 |
| Message-ID: | f95fb1eb-ba58-469c-acc1-24ffb5a1e0f9@eisentraut.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
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.
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Joel Jacobson | 2025-10-29 17:13:16 | Re: LISTEN/NOTIFY bug: VACUUM sets frozenxid past a xid in async queue |
| Previous Message | Tom Lane | 2025-10-29 16:48:23 | Re: LISTEN/NOTIFY bug: VACUUM sets frozenxid past a xid in async queue |