Use XLogRecPtrIsValid() instead of negated XLogRecPtrIsInvalid

Started by vignesh C7 days ago9 messageshackers
Jump to latest
#1vignesh C
vignesh21@gmail.com

Hi,

This small cleanup patch updates src/bin/pg_waldump/archive_waldump.c
to use the recently introduced XLogRecPtrIsValid() helper instead of
negating XLogRecPtrIsInvalid(). The current code uses double-negative
checks such as:
Assert(!XLogRecPtrIsInvalid(privateInfo->startptr));
if (!XLogRecPtrIsInvalid(privateInfo->endptr))

This patch changes them to:
Assert(XLogRecPtrIsValid(privateInfo->startptr));
if (XLogRecPtrIsValid(privateInfo->endptr))

This improves readability without changing behavior. The attached
patch has the changes for the same.

Regards,
Vignesh

Attachments:

0001-Remove-double-negative-XLogRecPtr-checks.patchapplication/octet-stream; name=0001-Remove-double-negative-XLogRecPtr-checks.patchDownload+2-3
#2Fujii Masao
masao.fujii@gmail.com
In reply to: vignesh C (#1)
Re: Use XLogRecPtrIsValid() instead of negated XLogRecPtrIsInvalid

On Fri, Apr 10, 2026 at 3:11 PM vignesh C <vignesh21@gmail.com> wrote:

Hi,

This small cleanup patch updates src/bin/pg_waldump/archive_waldump.c
to use the recently introduced XLogRecPtrIsValid() helper instead of
negating XLogRecPtrIsInvalid(). The current code uses double-negative
checks such as:
Assert(!XLogRecPtrIsInvalid(privateInfo->startptr));
if (!XLogRecPtrIsInvalid(privateInfo->endptr))

This patch changes them to:
Assert(XLogRecPtrIsValid(privateInfo->startptr));
if (XLogRecPtrIsValid(privateInfo->endptr))

This improves readability without changing behavior. The attached
patch has the changes for the same.

Commit a2b02293bc6 switched various places to use XLogRecPtrIsValid(),
but it looks like later commits accidentally introduced uses of
XLogRecPtrIsInvalid() again. So +1 for this change.

Also, that commit replaced direct comparisons with InvalidXLogRecPtr with
XLogRecPtrIsValid(). I noticed two such comparisons [1]$ git grep -E "[=\!]= InvalidXLogRecPtr" src/backend/commands/repack_worker.c: Assert(ctx->reader->EndRecPtr != InvalidXLogRecPtr); src/backend/replication/walreceiver.c: applyPtr = (latestApplyPtr == InvalidXLogRecPtr) ?. Should these be
updated as well?

Regards,

[1]: $ git grep -E "[=\!]= InvalidXLogRecPtr" src/backend/commands/repack_worker.c: Assert(ctx->reader->EndRecPtr != InvalidXLogRecPtr); src/backend/replication/walreceiver.c: applyPtr = (latestApplyPtr == InvalidXLogRecPtr) ?
$ git grep -E "[=\!]= InvalidXLogRecPtr"
src/backend/commands/repack_worker.c: Assert(ctx->reader->EndRecPtr
!= InvalidXLogRecPtr);
src/backend/replication/walreceiver.c: applyPtr = (latestApplyPtr ==
InvalidXLogRecPtr) ?

--
Fujii Masao

#3vignesh C
vignesh21@gmail.com
In reply to: Fujii Masao (#2)
Re: Use XLogRecPtrIsValid() instead of negated XLogRecPtrIsInvalid

On Fri, 10 Apr 2026 at 20:16, Fujii Masao <masao.fujii@gmail.com> wrote:

On Fri, Apr 10, 2026 at 3:11 PM vignesh C <vignesh21@gmail.com> wrote:

Hi,

This small cleanup patch updates src/bin/pg_waldump/archive_waldump.c
to use the recently introduced XLogRecPtrIsValid() helper instead of
negating XLogRecPtrIsInvalid(). The current code uses double-negative
checks such as:
Assert(!XLogRecPtrIsInvalid(privateInfo->startptr));
if (!XLogRecPtrIsInvalid(privateInfo->endptr))

This patch changes them to:
Assert(XLogRecPtrIsValid(privateInfo->startptr));
if (XLogRecPtrIsValid(privateInfo->endptr))

This improves readability without changing behavior. The attached
patch has the changes for the same.

Commit a2b02293bc6 switched various places to use XLogRecPtrIsValid(),
but it looks like later commits accidentally introduced uses of
XLogRecPtrIsInvalid() again. So +1 for this change.

Also, that commit replaced direct comparisons with InvalidXLogRecPtr with
XLogRecPtrIsValid(). I noticed two such comparisons [1]. Should these be
updated as well?

I felt these also should be updated, the attached v2 version patch
includes the changes for the same.

Regards,
Vignesh

Attachments:

v2-0001-Use-XLogRecPtr-validity-helper-macros-consistentl.patchapplication/octet-stream; name=v2-0001-Use-XLogRecPtr-validity-helper-macros-consistentl.patchDownload+4-5
#4Fujii Masao
masao.fujii@gmail.com
In reply to: vignesh C (#3)
Re: Use XLogRecPtrIsValid() instead of negated XLogRecPtrIsInvalid

On Mon, Apr 13, 2026 at 4:10 PM vignesh C <vignesh21@gmail.com> wrote:

I felt these also should be updated, the attached v2 version patch
includes the changes for the same.

Thanks for updating the patch!

-       applyPtr = (latestApplyPtr == InvalidXLogRecPtr) ?
+       applyPtr = (XLogRecPtrIsInvalid(latestApplyPtr)) ?

XLogRecPtrIsValid() should be used here, instead?

Regards,

--
Fujii Masao

#5Xiaopeng Wang
wxp_728@163.com
In reply to: Fujii Masao (#4)
Re: Use XLogRecPtrIsValid() instead of negated XLogRecPtrIsInvalid

在 2026/4/16 12:11, Fujii Masao 写道:

On Mon, Apr 13, 2026 at 4:10 PM vignesh C <vignesh21@gmail.com> wrote:

I felt these also should be updated, the attached v2 version patch
includes the changes for the same.

Thanks for updating the patch!

-       applyPtr = (latestApplyPtr == InvalidXLogRecPtr) ?
+       applyPtr = (XLogRecPtrIsInvalid(latestApplyPtr)) ?

XLogRecPtrIsValid() should be used here, instead?

Regards,

Yeah, I was about to raise the same comment, and Fujii-san beat me. I believe it should be XLogRecPtrIsValid().

Otherwise, the patch looks good to me.

Regards,
Xiaopeng Wang

#6vignesh C
vignesh21@gmail.com
In reply to: Fujii Masao (#4)
Re: Use XLogRecPtrIsValid() instead of negated XLogRecPtrIsInvalid

On Thu, 16 Apr 2026 at 09:42, Fujii Masao <masao.fujii@gmail.com> wrote:

On Mon, Apr 13, 2026 at 4:10 PM vignesh C <vignesh21@gmail.com> wrote:

I felt these also should be updated, the attached v2 version patch
includes the changes for the same.

Thanks for updating the patch!

-       applyPtr = (latestApplyPtr == InvalidXLogRecPtr) ?
+       applyPtr = (XLogRecPtrIsInvalid(latestApplyPtr)) ?

XLogRecPtrIsValid() should be used here, instead?

Yes, that seems better, the attached v3 version patch has the changes
for the same.

Regards,
Vignesh

Attachments:

v3-0001-Use-XLogRecPtr-validity-helper-macros-consistentl.patchapplication/octet-stream; name=v3-0001-Use-XLogRecPtr-validity-helper-macros-consistentl.patchDownload+5-6
#7Amul Sul
sulamul@gmail.com
In reply to: vignesh C (#6)
Re: Use XLogRecPtrIsValid() instead of negated XLogRecPtrIsInvalid

On Thu, Apr 16, 2026 at 4:25 PM vignesh C <vignesh21@gmail.com> wrote:

On Thu, 16 Apr 2026 at 09:42, Fujii Masao <masao.fujii@gmail.com> wrote:

On Mon, Apr 13, 2026 at 4:10 PM vignesh C <vignesh21@gmail.com> wrote:

I felt these also should be updated, the attached v2 version patch
includes the changes for the same.

Thanks for updating the patch!

-       applyPtr = (latestApplyPtr == InvalidXLogRecPtr) ?
+       applyPtr = (XLogRecPtrIsInvalid(latestApplyPtr)) ?

XLogRecPtrIsValid() should be used here, instead?

The outer parentheses do not seem to be needed, as
XLogRecPtrIsInvalid() already includes them.

Other than that, the v3 patch looks good to me.

Regards,
Amul

#8Fujii Masao
masao.fujii@gmail.com
In reply to: Amul Sul (#7)
Re: Use XLogRecPtrIsValid() instead of negated XLogRecPtrIsInvalid

On Thu, Apr 16, 2026 at 9:31 PM Amul Sul <sulamul@gmail.com> wrote:

The outer parentheses do not seem to be needed, as
XLogRecPtrIsInvalid() already includes them.

Other than that, the v3 patch looks good to me.

I've updated the patch based on Amul's suggestion and pushed it. Thanks!

Regards,

--
Fujii Masao

#9vignesh C
vignesh21@gmail.com
In reply to: Fujii Masao (#8)
Re: Use XLogRecPtrIsValid() instead of negated XLogRecPtrIsInvalid

On Thu, 16 Apr 2026 at 19:36, Fujii Masao <masao.fujii@gmail.com> wrote:

On Thu, Apr 16, 2026 at 9:31 PM Amul Sul <sulamul@gmail.com> wrote:

The outer parentheses do not seem to be needed, as
XLogRecPtrIsInvalid() already includes them.

Other than that, the v3 patch looks good to me.

I've updated the patch based on Amul's suggestion and pushed it. Thanks!

Thanks for pushing the patch.

Regards,
Vignesh