Обсуждение: persistent variables between cross-calls in C functions
Dear all: I could not find any way to store a value in a C function between calls. For example, the following function doesn't work as expected: #include "postgres.h"#include "fmgr.h" PG_FUNCTION_INFO_V1(next_value); Datumnext_value(PG_FUNCTION_ARGS){ static int n; PG_RETURN_INT32(n); n++;} select next_value(); will always return 0; even if I declare n as a global variable outside the fucntion. Thanks a lot. Fabio Furia Silva --- UOL, o melhor da Internet http://www.uol.com.br/
"ff" <ff-@uol.com.br> writes: > I could not find any way to store a value in a C function > between calls. A static variable such as you illustrated should work fine --- at least for successive calls within a single session. It will not provide communications across sessions. For that you'd need to use a file or grab some shared memory (this is doable but bear in mind that it's a very finite resource). regards, tom lane
> "ff" <ff-@uol.com.br> writes: > > I could not find any way to store a value in a C function > > between calls. > > A static variable such as you illustrated should work fine - -- at least > for successive calls within a single session. It will not p rovide > communications across sessions. For that you'd need to use a file or > grab some shared memory (this is doable but bear in mind tha t it's a > very finite resource). > > regards, tom lane > > Thanks, Tom! But it isn't working. Even inside the same session (I do not want to provide communications across sessions). Is there any macro provided in any c header file that I should use? I am using postgresql version 7.3.2, on AIX 4.3 (and all patches). Thanks again. --- UOL, o melhor da Internet http://www.uol.com.br/