Re: MemoryContextCreate change in PG 11 how should contexts be created

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Paul Ramsey <pramsey(at)cleverelephant(dot)ca>
Cc: Regina Obe <lr(at)pcorp(dot)us>, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: MemoryContextCreate change in PG 11 how should contexts be created
Date: 2017-12-19 14:54:05
Message-ID: 20171219145405.gw3svtoyt6jgym52@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Paul Ramsey wrote:

> Our use of MemoryContextCreate is solely in order to get use
> MemoryContextDelete as a callback so that, at the end of a statement,
> we can clean up externally allocated memory that we're holding in a
> cache.

You should not use MemoryContextCreate at all -- it's somewhat of an
internal API, as you could guess by looking at the weird arguments that
you're forced into passing.

Instead, the interface you're supposed to use is AllocSetContextCreate.
Just make sure you attach your new context to one which has the right
lifetime for your usage -- in your case ISTM the parent should be
PortalContext, which makes it go away when the current portal (query) is
gone.

See src/backend/utils/mmgr/README for more. This applies to all
releases, old and new, though recently the API of these memory context
creation functions has been refined somewhat.

--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2017-12-19 15:00:54 Re: MemoryContextCreate change in PG 11 how should contexts be created
Previous Message David Steele 2017-12-19 14:50:22 Re: Basebackups reported as idle