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