Re: recursive function needs static variable

Поиск
Список
Период
Сортировка
От Joe Conway
Тема Re: recursive function needs static variable
Дата
Msg-id 3EF90A2B.4070606@joeconway.com
обсуждение исходный текст
Ответ на recursive function needs static variable  (Nabil Sayegh <postgresql@e-trolley.de>)
Ответы Re: recursive function needs static variable  (Nabil Sayegh <postgresql@e-trolley.de>)
Список pgsql-novice
Nabil Sayegh wrote:
> I just changed connectby() to order siblings and return an additional
> serial column.
>
> Everything is working fine so far, but I think there could be a problem
> due to the static definition of the serial variable.
>
> I need the variable to be static, because the function itself is
> recursive.
>
> What will happen if 2 processes concurrently use the function ? will
> they conflict ?

Each backend connection is a single threaded process, so there should be
no problem. But I don't think it needs to be static anyway (see below).

> I guess, that if I set the variable to 1 at each beginning of the
> function, it will conflict.
>
> If I do _not_ reset the serial at each function call, that would lead to
> an overflow sooner or later.

Add the counter variable to build_tuplestore_recursively()'s arguments.
Initialize it in connectby(), and increment it every time
BuildTupleFromCStrings() is called.

Joe


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

Предыдущее
От: Nabil Sayegh
Дата:
Сообщение: recursive function needs static variable
Следующее
От: Joe Conway
Дата:
Сообщение: Re: connectby() minor bug in errormessage