Re: recursive function needs static variable - Mailing list pgsql-novice

From Joe Conway
Subject Re: recursive function needs static variable
Date
Msg-id 3EF90A2B.4070606@joeconway.com
Whole thread Raw
In response to recursive function needs static variable  (Nabil Sayegh <postgresql@e-trolley.de>)
Responses Re: recursive function needs static variable  (Nabil Sayegh <postgresql@e-trolley.de>)
List 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 by date:

Previous
From: Nabil Sayegh
Date:
Subject: recursive function needs static variable
Next
From: Joe Conway
Date:
Subject: Re: connectby() minor bug in errormessage