v25-0006-fix-remaining-outstanding-issues-from-Sunday.patch
application/octet-stream
Filename: v25-0006-fix-remaining-outstanding-issues-from-Sunday.patch
Type: application/octet-stream
Part: 4
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v25-0006
Subject: fix remaining outstanding issues from Sunday
| File | + | − |
|---|---|---|
| contrib/pg_buffercache/pg_buffercache--1.5--1.6.sql | 1 | 1 |
| contrib/pg_buffercache/pg_buffercache_pages.c | 5 | 4 |
| doc/src/sgml/pgbuffercache.sgml | 2 | 2 |
| src/backend/storage/ipc/shmem.c | 8 | 2 |
From 4ecdd9133eb33ec7d993cf8808502bd88f8e9417 Mon Sep 17 00:00:00 2001
From: Jakub Wartak <jakub.wartak@enterprisedb.com>
Date: Mon, 7 Apr 2025 10:06:38 +0200
Subject: [PATCH v25 6/6] fix remaining outstanding issues from Sunday
---
contrib/pg_buffercache/pg_buffercache--1.5--1.6.sql | 2 +-
contrib/pg_buffercache/pg_buffercache_pages.c | 9 +++++----
doc/src/sgml/pgbuffercache.sgml | 4 ++--
src/backend/storage/ipc/shmem.c | 10 ++++++++--
4 files changed, 16 insertions(+), 9 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 e3b145a1687..998289790b7 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, page_num int4, node_id int4);
+ (bufferid integer, ospageid int4, nodeid int4);
-- 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 df94cc6ef7d..fe2ffadcb3a 100644
--- a/contrib/pg_buffercache/pg_buffercache_pages.c
+++ b/contrib/pg_buffercache/pg_buffercache_pages.c
@@ -385,9 +385,9 @@ pg_buffercache_numa_pages(PG_FUNCTION_ARGS)
tupledesc = CreateTemplateTupleDesc(expected_tupledesc->natts);
TupleDescInitEntry(tupledesc, (AttrNumber) 1, "bufferid",
INT4OID, -1, 0);
- TupleDescInitEntry(tupledesc, (AttrNumber) 2, "page_num",
+ TupleDescInitEntry(tupledesc, (AttrNumber) 2, "ospageid",
INT4OID, -1, 0);
- TupleDescInitEntry(tupledesc, (AttrNumber) 3, "node_id",
+ TupleDescInitEntry(tupledesc, (AttrNumber) 3, "nodeid",
INT4OID, -1, 0);
fctx->tupdesc = BlessTupleDesc(tupledesc);
@@ -430,7 +430,7 @@ pg_buffercache_numa_pages(PG_FUNCTION_ARGS)
* to one big big move_pages(2) inquiry system call. Basically we ask
* for all memory pages for NBuffers.
*/
- startptr = (char *) BufferGetBlock(1);
+ startptr = (char *) TYPEALIGN_DOWN(os_page_size, (char *) BufferGetBlock(1));
idx = 0;
for (i = 0; i < NBuffers; i++)
{
@@ -474,7 +474,8 @@ pg_buffercache_numa_pages(PG_FUNCTION_ARGS)
/* Only need to touch memory once per backend process lifetime */
if (firstNumaTouch)
- pg_numa_touch_mem_if_required(touch, os_page_ptrs[idx]);
+ pg_numa_touch_mem_if_required(touch,
+ buffptr + (os_page_size * j));
++idx;
}
diff --git a/doc/src/sgml/pgbuffercache.sgml b/doc/src/sgml/pgbuffercache.sgml
index b01f8e71357..b39c9849362 100644
--- a/doc/src/sgml/pgbuffercache.sgml
+++ b/doc/src/sgml/pgbuffercache.sgml
@@ -244,7 +244,7 @@
<row>
<entry role="catalog_table_entry"><para role="column_definition">
- <structfield>page_num</structfield> <type>int</type>
+ <structfield>ospageid</structfield> <type>int</type>
</para>
<para>
number of OS memory page for this buffer
@@ -253,7 +253,7 @@
<row>
<entry role="catalog_table_entry"><para role="column_definition">
- <structfield>node_id</structfield> <type>int</type>
+ <structfield>nodeid</structfield> <type>int</type>
</para>
<para>
ID of <acronym>NUMA</acronym> node
diff --git a/src/backend/storage/ipc/shmem.c b/src/backend/storage/ipc/shmem.c
index 4a9a9606f2e..69eb5bb738d 100644
--- a/src/backend/storage/ipc/shmem.c
+++ b/src/backend/storage/ipc/shmem.c
@@ -572,7 +572,13 @@ pg_get_shmem_allocations(PG_FUNCTION_ARGS)
return (Datum) 0;
}
-/* SQL SRF showing NUMA memory nodes for allocated shared memory */
+/*
+ * SQL SRF showing NUMA memory nodes for allocated shared memory
+ *
+ * Contrary to above one - pg_get_shmem_allocations() - in this function
+ * we don't output information aobut shared anonymous allocations and
+ * unused memory.
+ */
Datum
pg_get_shmem_allocations_numa(PG_FUNCTION_ARGS)
{
@@ -694,7 +700,7 @@ pg_get_shmem_allocations_numa(PG_FUNCTION_ARGS)
if (s < 0 || s > max_nodes)
{
elog(ERROR, "invalid NUMA node id outside of allowed range "
- "[0, " UINT64_FORMAT "]: %d", max_nodes, s);
+ "[0, " UINT64_FORMAT "]: %d", max_nodes, s);
}
nodes[s]++;
--
2.39.5