Re: Maintaining state across function calls

Поиск
Список
Период
Сортировка
От Craig Ringer
Тема Re: Maintaining state across function calls
Дата
Msg-id 50AA341E.8090909@2ndQuadrant.com
обсуждение исходный текст
Ответ на Maintaining state across function calls  (matt@byrney.com)
Ответы Re: Maintaining state across function calls  (matt@byrney.com)
Список pgsql-general
On 11/19/2012 08:41 PM, matt@byrney.com wrote:
> I want to process all the records in a table through a C-language (well,
> C++) function (i.e. one function call per row of the table) in such a way
> that the function hangs onto its internal state across calls.  Something
> like
>
> SELECT my_function(a, b, c) FROM my_table ORDER BY d;
>
> The value returned in the last row of the table would be the result I'm
> looking for.  (This could be neatened up by using a custom aggregate and
> putting my calculation in the sfunc but that's a minor detail).
[snip]
> Alternatively, use this in a custom aggregate and make the ffunc do the
> garbage collection, which should prevents leakage altogether.
You don't generally need to do this cleanup yourself. Use appropriate
palloc memory contexts and it'll be done for you when the memory context
is destroyed.

I would want to implement this as an aggregate using the standard
aggregate / window function machinery. Have a look at how the existing
aggregates like string_agg are implemented in the Pg source code.

--
 Craig Ringer                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services



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

Предыдущее
От: Yvon Thoraval
Дата:
Сообщение: Re: remote connection refused
Следующее
От: matt@byrney.com
Дата:
Сообщение: Re: Maintaining state across function calls