Thanks you Andres for your time! this context is free with AllocSetReset rather than AllocSetDelete, that makes my breakpoint doesn't catch it.
On Wed, Feb 27, 2019 at 2:15 PM Andres Freund <and...@anarazel.de> wrote: > On 2019-02-27 14:08:47 +0800, Andy Fan wrote: > > Hi : > > I run a query like "select * from t" and set the break like this: > > > > break exec_simple_query > > break MemoryContextDelete > > commands > > p context->name > > c > > end > > > > I can see most of the MemoryContext is relased, but never MessageContext, > > when will it be released? > > It's released above exec_simple_query, as it actually contains the data > that lead us to call exec_simple_query(). See the main for loop in > PostgresMain(): > > /* > * Release storage left over from prior query cycle, and > create a new > * query input buffer in the cleared MessageContext. > */ > MemoryContextSwitchTo(MessageContext); > MemoryContextResetAndDeleteChildren(MessageContext); > > Greetings, > > Andres Freund >