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
>

Reply via email to