Re: Stateful C-language function with state managed by third-party library
От | Tom Lane |
---|---|
Тема | Re: Stateful C-language function with state managed by third-party library |
Дата | |
Msg-id | 16590.1426002863@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Stateful C-language function with state managed by third-party library (Denys Rtveliashvili <rtvd@icloud.com>) |
Ответы |
Re: Stateful C-language function with state managed by third-party
library
|
Список | pgsql-hackers |
Denys Rtveliashvili <rtvd@icloud.com> writes: > My function neeeds to call a third-party library which would create a state and then that state should be kept for theduration of the current query. The library can deallocate that state in a correct way. > I understand that fn_extra is normally used for this and usually the state is created in a memory context which is deallocatedat the end of the query. So normally it is not an issue. However, I cannot make that library use PostgreSQL utilitiesfor memory management. > I am afraid that for long-running sessions it may cause serious memory leaks if they do not deallocate state correctlyand in a timely manner. > Is there a mechanism for adding a finalizer hook which would be called and passed that pointer after the query is complete?Or perhaps there is another mechanism? I looked in the documentation and in the source but I do not see it mentioned. In HEAD, you could use a memory context reset callback for this purpose. I don't believe there's any fully satisfactory solution in the released branches; the closest you could get is an ExprContext callback, which has the fatal-for-this-purpose defect that it's only called on successful query completion, not if an error occurs. regards, tom lane
В списке pgsql-hackers по дате отправления: