Re: When is the MessageContext released? - Mailing list pgsql-hackers

From Andy Fan
Subject Re: When is the MessageContext released?
Date
Msg-id CAKU4AWqsCRp-uZK4AJ8u+QfCjNk9LJ9KUExAhBW7t1XPga_1Lw@mail.gmail.com
Whole thread Raw
In response to Re: When is the MessageContext released?  (Andres Freund <andres@anarazel.de>)
List pgsql-hackers
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 <andres@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

pgsql-hackers by date:

Previous
From: Fabien COELHO
Date:
Subject: Re: get_controlfile() can leak fds in the backend
Next
From: Andy Fan
Date:
Subject: some hints to understand the plsql cursor.