From 91f1fe90c7d42641201bd2c474bd86d703b5e830 Mon Sep 17 00:00:00 2001 From: Tomas Vondra Date: Tue, 8 Apr 2025 11:52:02 +0200 Subject: [PATCH] pg_buffercache: Change page_num type to bigint The page_num was defined as integer, which should be sufficient for the near future (with 4K pages it's 8TB). But it's virtually free to return bigint, and get a wider range. This was agreed on the thread, but I forgot to tweak this in ba2a3c2302f1. While at it, make the data types in CREATE VIEW a bit more consistent. Discussion: https://postgr.es/m/CAKZiRmxh6KWo0aqRqvmcoaX2jUxZYb4kGp3N%3Dq1w%2BDiH-696Xw%40mail.gmail.co --- contrib/pg_buffercache/pg_buffercache--1.5--1.6.sql | 2 +- contrib/pg_buffercache/pg_buffercache_pages.c | 6 +++--- doc/src/sgml/pgbuffercache.sgml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/contrib/pg_buffercache/pg_buffercache--1.5--1.6.sql b/contrib/pg_buffercache/pg_buffercache--1.5--1.6.sql index 85a23c65164..458f054a691 100644 --- a/contrib/pg_buffercache/pg_buffercache--1.5--1.6.sql +++ b/contrib/pg_buffercache/pg_buffercache--1.5--1.6.sql @@ -12,7 +12,7 @@ LANGUAGE C PARALLEL SAFE; -- Create a view for convenient access. CREATE VIEW pg_buffercache_numa AS SELECT P.* FROM pg_buffercache_numa_pages() AS P - (bufferid integer, os_page_num int4, numa_node int4); + (bufferid integer, os_page_num bigint, numa_node integer); -- Don't want these to be available to public. REVOKE ALL ON FUNCTION pg_buffercache_numa_pages() FROM PUBLIC; diff --git a/contrib/pg_buffercache/pg_buffercache_pages.c b/contrib/pg_buffercache/pg_buffercache_pages.c index 54c83601418..c9ceba604b1 100644 --- a/contrib/pg_buffercache/pg_buffercache_pages.c +++ b/contrib/pg_buffercache/pg_buffercache_pages.c @@ -72,7 +72,7 @@ typedef struct typedef struct { uint32 bufferid; - int32 page_num; + int64 page_num; int32 numa_node; } BufferCacheNumaRec; @@ -414,7 +414,7 @@ pg_buffercache_numa_pages(PG_FUNCTION_ARGS) TupleDescInitEntry(tupledesc, (AttrNumber) 1, "bufferid", INT4OID, -1, 0); TupleDescInitEntry(tupledesc, (AttrNumber) 2, "os_page_num", - INT4OID, -1, 0); + INT8OID, -1, 0); TupleDescInitEntry(tupledesc, (AttrNumber) 3, "numa_node", INT4OID, -1, 0); @@ -522,7 +522,7 @@ pg_buffercache_numa_pages(PG_FUNCTION_ARGS) values[0] = Int32GetDatum(fctx->record[i].bufferid); nulls[0] = false; - values[1] = Int32GetDatum(fctx->record[i].page_num); + values[1] = Int64GetDatum(fctx->record[i].page_num); nulls[1] = false; values[2] = Int32GetDatum(fctx->record[i].numa_node); diff --git a/doc/src/sgml/pgbuffercache.sgml b/doc/src/sgml/pgbuffercache.sgml index ef5732942f7..537d6014942 100644 --- a/doc/src/sgml/pgbuffercache.sgml +++ b/doc/src/sgml/pgbuffercache.sgml @@ -267,7 +267,7 @@ - os_page_num int + os_page_num bigint number of OS memory page for this buffer