mirror of
https://github.com/postgres/postgres.git
synced 2025-06-05 23:56:58 +03:00
Make levels 1-based in pg_log_backend_memory_contexts()
Both pg_get_process_memory_contexts() and pg_backend_memory_contexts have 1-based levels, whereas pg_log_backend_memory_contexts() was using 0-based levels. Align these. This results in slightly saner behavior from MemoryContextStatsDetail() in regards to the max_level. Previously it would stop at 1 level before the maximum requested level rather than at that level. Reported-by: Atsushi Torikoshi <torikoshia@oss.nttdata.com> Author: Atsushi Torikoshi <torikoshia@oss.nttdata.com> Author: David Rowley <drowleyml@gmail.com Reviewed-by: Melih Mutlu <m.melihmutlu@gmail.com> Reviewed-by: Rahila Syed <rahilasyed90@gmail.com> Discussion: https://postgr.es/m/395ea5d4fe190480efa95bf533485c70@oss.nttdata.com
This commit is contained in:
parent
fc5e966f73
commit
d9e03864b6
@ -873,7 +873,7 @@ MemoryContextStatsDetail(MemoryContext context,
|
|||||||
print_location = PRINT_STATS_TO_LOGS;
|
print_location = PRINT_STATS_TO_LOGS;
|
||||||
|
|
||||||
/* num_contexts report number of contexts aggregated in the output */
|
/* num_contexts report number of contexts aggregated in the output */
|
||||||
MemoryContextStatsInternal(context, 0, max_level, max_children,
|
MemoryContextStatsInternal(context, 1, max_level, max_children,
|
||||||
&grand_totals, print_location, &num_contexts);
|
&grand_totals, print_location, &num_contexts);
|
||||||
|
|
||||||
if (print_to_stderr)
|
if (print_to_stderr)
|
||||||
@ -968,7 +968,7 @@ MemoryContextStatsInternal(MemoryContext context, int level,
|
|||||||
*/
|
*/
|
||||||
child = context->firstchild;
|
child = context->firstchild;
|
||||||
ichild = 0;
|
ichild = 0;
|
||||||
if (level < max_level && !stack_is_too_deep())
|
if (level <= max_level && !stack_is_too_deep())
|
||||||
{
|
{
|
||||||
for (; child != NULL && ichild < max_children;
|
for (; child != NULL && ichild < max_children;
|
||||||
child = child->nextchild, ichild++)
|
child = child->nextchild, ichild++)
|
||||||
@ -1003,7 +1003,7 @@ MemoryContextStatsInternal(MemoryContext context, int level,
|
|||||||
|
|
||||||
if (print_location == PRINT_STATS_TO_STDERR)
|
if (print_location == PRINT_STATS_TO_STDERR)
|
||||||
{
|
{
|
||||||
for (int i = 0; i <= level; i++)
|
for (int i = 0; i < level; i++)
|
||||||
fprintf(stderr, " ");
|
fprintf(stderr, " ");
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"%d more child contexts containing %zu total in %zu blocks; %zu free (%zu chunks); %zu used\n",
|
"%d more child contexts containing %zu total in %zu blocks; %zu free (%zu chunks); %zu used\n",
|
||||||
@ -1104,7 +1104,7 @@ MemoryContextStatsPrint(MemoryContext context, void *passthru,
|
|||||||
|
|
||||||
if (print_to_stderr)
|
if (print_to_stderr)
|
||||||
{
|
{
|
||||||
for (i = 0; i < level; i++)
|
for (i = 1; i < level; i++)
|
||||||
fprintf(stderr, " ");
|
fprintf(stderr, " ");
|
||||||
fprintf(stderr, "%s: %s%s\n", name, stats_string, truncated_ident);
|
fprintf(stderr, "%s: %s%s\n", name, stats_string, truncated_ident);
|
||||||
}
|
}
|
||||||
@ -1585,12 +1585,11 @@ ProcessGetMemoryContextInterrupt(void)
|
|||||||
{
|
{
|
||||||
MemoryContextCounters grand_totals;
|
MemoryContextCounters grand_totals;
|
||||||
int num_contexts = 0;
|
int num_contexts = 0;
|
||||||
int level = 0;
|
|
||||||
|
|
||||||
path = NIL;
|
path = NIL;
|
||||||
memset(&grand_totals, 0, sizeof(grand_totals));
|
memset(&grand_totals, 0, sizeof(grand_totals));
|
||||||
|
|
||||||
MemoryContextStatsInternal(c, level, 100, 100, &grand_totals,
|
MemoryContextStatsInternal(c, 1, 100, 100, &grand_totals,
|
||||||
PRINT_STATS_NONE, &num_contexts);
|
PRINT_STATS_NONE, &num_contexts);
|
||||||
|
|
||||||
path = compute_context_path(c, context_id_lookup);
|
path = compute_context_path(c, context_id_lookup);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user