Re: Align memory context level numbering in pg_log_backend_memory_contexts()
torikoshia <torikoshia@oss.nttdata.com>
From: torikoshia <torikoshia@oss.nttdata.com>
To: Daniel Gustafsson <daniel@yesql.se>, dgrowleyml@gmail.com
Cc: PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2025-04-16T14:19:59Z
Lists: pgsql-hackers
On 2025-04-16 06:18, Daniel Gustafsson wrote:
>> On 15 Apr 2025, at 23:03, David Rowley <dgrowleyml@gmail.com> wrote:
>
>> My vote is to make the levels 1-based in all locations where we output
>> the context information.
>
> I agree with this, pg_get_process_memory_contexts() also use 1-based
> levels
> fwiw.
+1.
I believe there's no particular issue with starting the level from 1 in
pg_log_backend_memory_contexts().
Regarding the implementation:
In the initial patch attached, I naïvely incremented the level just
before emitting the log line.
However, it might be cleaner to simply initialize the level variable to
1 from the start. This could help avoid unnecessary confusion when
debugging that part of the code.
Similarly, I noticed that in pg_get_process_memory_contexts(), the level
is initialized to 0 in ProcessGetMemoryContextInterrupt(void):
int level = 0;
..
MemoryContextStatsInternal(c, level, 100, 100, &grand_totals, ..
If we want to be consistent, perhaps it would make sense to start from 1
there as well.
BTW level variable has existed since before pg_backend_memory_contexts
was introduced — it was originally used for functions that help inspect
memory contexts via the debugger. Because of that, I think changing this
would affect not only these functions codes but some older ones.
--
Atsushi Torikoshi
Seconded from NTT DATA GROUP CORPORATION to SRA OSS K.K.
Commits
-
doc: Fix memory context level in pg_log_backend_memory_contexts() example.
- 706cbed35103 18.0 landed
-
Make levels 1-based in pg_log_backend_memory_contexts()
- d9e03864b6b4 18.0 landed
-
Add path column to pg_backend_memory_contexts view
- 32d3ed8165f8 18.0 cited