Subject: Re: Use correct macro for accessing offset numbers.

From: Roman Khapov <[email-masked]>
Date: Sun, 11 Jan 2026 16:41:19 +0500

> On 11 Jan 2026, at 16:21, Kirill Reshke <[email-masked]> wrote:
> 
> Hi hackers!
> 
> PFA trivial patch that uses UInt16GetDatum for OffsetNumber rather
> than Int16GetDatum

Hi!

LGTM, should we check another places of offset number conversations to Datum
as part of this thread?

--
Best regards,
Roman Khapov

---

From: Kirill Reshke <[email-masked]>
Date: Sun, 11 Jan 2026 16:58:39 +0500

On Sun, 11 Jan 2026 at 16:41, Roman Khapov <[email-masked]> wrote:
>
> should we check another places of offset number conversations to Datum
> as part of this thread?

Maybe, I have stopped some more cases, in v2-0001

-- 
Best regards,
Kirill Reshke

---

From: Michael Paquier <[email-masked]>
Date: Mon, 12 Jan 2026 08:23:18 +0900

> Maybe, I have stopped some more cases, in v2-0001

Right.  It's true that we could be more consistent for all these based
on their base type, some of them, particularly in the GIN code now,
caring about using the correct macro.  It may be a good occasion to
double-check the whole tree for similar holes based on unsigned types.
--
Michael

---

From: "zengman" <[email-masked]>
Date: Mon, 12 Jan 2026 14:53:24 +0800

Hi,

I’ve also seen such cases in the kernel code, and I’m wondering if this should be added to the patch here?
```
postgres@zxm-VMware-Virtual-Platform:~/code/postgres$ git diff
diff --git a/src/backend/utils/adt/lockfuncs.c b/src/backend/utils/adt/lockfuncs.c
index bcbc226125c..9dadd6da672 100644
--- a/src/backend/utils/adt/lockfuncs.c
+++ b/src/backend/utils/adt/lockfuncs.c
@@ -329,7 +329,7 @@ pg_lock_status(PG_FUNCTION_ARGS)
                                values[1] = ObjectIdGetDatum(instance->locktag.locktag_field1);
                                values[8] = ObjectIdGetDatum(instance->locktag.locktag_field2);
                                values[6] = ObjectIdGetDatum(instance->locktag.locktag_field3);
-                               values[9] = Int16GetDatum(instance->locktag.locktag_field4);
+                               values[9] = UInt16GetDatum(instance->locktag.locktag_field4);
                                nulls[2] = true;
                                nulls[3] = true;
                                nulls[4] = true;
@@ -343,7 +343,7 @@ pg_lock_status(PG_FUNCTION_ARGS)
                                values[1] = ObjectIdGetDatum(instance->locktag.locktag_field1);
                                values[7] = ObjectIdGetDatum(instance->locktag.locktag_field2);
                                values[8] = ObjectIdGetDatum(instance->locktag.locktag_field3);
-                               values[9] = Int16GetDatum(instance->locktag.locktag_field4);
+                               values[9] = UInt16GetDatum(instance->locktag.locktag_field4);
                                nulls[2] = true;
                                nulls[3] = true;
                                nulls[4] = true;
```

--
Regards,
Man Zeng
www.openhalo.org