Align memory context level numbering in pg_log_backend_memory_contexts()

torikoshia <torikoshia@oss.nttdata.com>

From: torikoshia <torikoshia@oss.nttdata.com>
To: pgsql-hackers@postgresql.org
Date: 2025-04-15T13:23:34Z
Lists: pgsql-hackers

Attachments

Hi,

With commit 32d3ed81, pg_backend_memory_contexts view will start 
numbering memory context levels from 1 instead of 0 in PostgreSQL 18.

For example:

   =# select name, level from pg_backend_memory_contexts;
                name           | level
   ----------------------------+-------
    TopMemoryContext           |     1
    Record information cache   |     2
    Btree proof lookup cache   |     2


However, pg_log_backend_memory_contexts() still starts its output from 
level 0:

   =# select pg_log_backend_memory_contexts(pg_backend_pid());

   LOG:  level: 0; TopMemoryContext: ...
   LOG:  level: 1; Record information cache: ...
   LOG:  level: 1; Btree proof lookup cache: ...

I understand that these view and function are intended primarily for 
one-off diagnostics and not for direct cross-comparison. So this 
discrepancy isn’t critical.
However, for the sake of consistency and to avoid potential confusion, 
would it make sense to also start the levels from 1 in 
pg_log_backend_memory_contexts() starting in v18?


-- 
Regards,

--
Atsushi Torikoshi
Seconded from NTT DATA GROUP CORPORATION to SRA OSS K.K.

Commits

  1. doc: Fix memory context level in pg_log_backend_memory_contexts() example.

  2. Make levels 1-based in pg_log_backend_memory_contexts()

  3. Add path column to pg_backend_memory_contexts view