pg_buffercache: Fix incorrect result cast for relforknumber
authorMichael Paquier <michael@paquier.xyz>
Tue, 18 Nov 2025 06:46:43 +0000 (15:46 +0900)
committerMichael Paquier <michael@paquier.xyz>
Tue, 18 Nov 2025 06:46:43 +0000 (15:46 +0900)
pg_buffercache_pages.relforknumber is defined as an int2, but its value
was stored with ObjectIdGetDatum() rather than Int16GetDatum() in the
result record.

Author: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Discussion: https://postgr.es/m/CAExHW5s2_qwSdhKpVnUzjRMf0cf1PvmhUHQDLaFM3QzKbP1OyQ@mail.gmail.com

contrib/pg_buffercache/pg_buffercache_pages.c

index ab790533ff632ce4cab3fb88beaa2a72e49f576b..c29b784dfa1accc7fcda7c004623d87dd9d4b849 100644 (file)
@@ -263,7 +263,7 @@ pg_buffercache_pages(PG_FUNCTION_ARGS)
            nulls[2] = false;
            values[3] = ObjectIdGetDatum(fctx->record[i].reldatabase);
            nulls[3] = false;
-           values[4] = ObjectIdGetDatum(fctx->record[i].forknum);
+           values[4] = Int16GetDatum(fctx->record[i].forknum);
            nulls[4] = false;
            values[5] = Int64GetDatum((int64) fctx->record[i].blocknum);
            nulls[5] = false;