Re: [GENERAL] Freeing memory in native extension in case of error

Поиск
Список
Период
Сортировка
От Gabriel Furstenheim Milerud
Тема Re: [GENERAL] Freeing memory in native extension in case of error
Дата
Msg-id CAJN3DWq=dxbYhLGCajTQU-UDPF0qp8NoBobE2DSm2PB9ur0oqA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: [GENERAL] Freeing memory in native extension in case of error  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
Great, thanks

On 15 June 2017 at 22:07, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Gabriel Furstenheim Milerud <furstenheim@gmail.com> writes:
>> I've written an extension in C to sum jsonb. For that I use the
>> jsonbiterator defined in
>> https://github.com/postgres/postgres/blob/master/src/backend/utils/adt/jsonb_util.c#L743
>
>> In the comments of JsonbIteratorNext it states: 'Callers in such a
>> scenario, that are particularly sensitive to leaking memory in a
>> long-lived context may walk the ancestral tree from the final iterator
>> we left them with to its oldest ancestor, pfree()ing as they go'
>
>> In the extension that I've written, I sometimes stop in the middle of
>> an iteration, but only to raise an error (if the json contains a not
>> numeric value), with 'ereport(ERROR, ...'
>
>> Do I have to free the memory in that case?
>
> I wouldn't bother, assuming that it's all in the short-lived query
> context (the one that's current when your function is called).
> Error cleanup will flush that context automatically.
>
> Really, for memory in that context, it's unlikely to matter even
> if you are sloppy and leak memory on normal non-error return.
> That context will get reset after each row processed by the
> query anyway.  It's only if you're trying to cache data across
> rows, or in even longer-lived ways, that you really need to be
> careful.
>
>                         regards, tom lane


В списке pgsql-general по дате отправления:

Предыдущее
От: Adrian Klaver
Дата:
Сообщение: Re: [GENERAL] Connection options
Следующее
От: Igor Korot
Дата:
Сообщение: Re: [GENERAL] Connection options