Robert Haas <robertmh...@gmail.com> writes: > On Tue, Dec 19, 2017 at 8:44 AM, Craig Ringer <cr...@2ndquadrant.com> wrote: >> I didn't want to mess with the MemoryContextMethods and expose a >> printf-wrapper style typedef in memnodes.h, so I went with a hook global.
> That looks pretty grotty to me. I think if you want to elog/ereport > this, you need to pass another argument to MemoryContextStats() or add > another memory context method. This is pretty much a textbook example > of the wrong way to use a global variable, IMHO. Yeah. But please don't mess with MemoryContextStats per se --- I dunno about you guys but "call MemoryContextStats(TopMemoryContext)" is kinda wired into my gdb reflexes. I think what'd make sense is a new function "MemoryContextStatsTo(context, function_pointer)". It's okay to redefine the APIs of the per-context-type functions these would call, though, because nobody calls those functions directly. regards, tom lane