From: | Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com> |
---|---|
To: | Fabio Furia Silva <ff-(at)uol(dot)com(dot)br> |
Cc: | <pgsql-hackers(at)postgresql(dot)org>, <pgsql-general(at)postgresql(dot)org>, <pgsql-interfaces(at)postgresql(dot)org> |
Subject: | Re: Persistent variables between cross-calls in C functions |
Date: | 2003-03-25 17:51:54 |
Message-ID: | 20030325094939.W41500-100000@megazone23.bigpanda.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general pgsql-hackers pgsql-interfaces |
On Tue, 25 Mar 2003, Fabio Furia Silva wrote:
> For example, the following function doesn't work as expected:
>
> /********************************/
> #include "postgres.h"
> #include "fmgr.h"
>
> PG_FUNCTION_INFO_V1(next_value);
>
> Datum next_value(PG_FUNCTION_ARGS)
> {
> static int n;
> PG_RETURN_INT32(n);
> n++;
> }
>
> /********************************/
> create function next_value()
> returns integer as
> 'next.so' language C;
>
> /********************************/
> Calling
>
> select next_value();
>
> will always return 0,
> even if I declare 'n' as a global variable outside the C function.
Which seems right since the n++ is never executed (being after the return
statement). Does it do what you want if you increment first?
From | Date | Subject | |
---|---|---|---|
Next Message | scott.marlowe | 2003-03-25 17:52:17 | Re: '' <> NULL |
Previous Message | Bodanapu, Sravan | 2003-03-25 17:11:41 | Issue with Rowid's during Oracle to Postgres convertion: |
From | Date | Subject | |
---|---|---|---|
Next Message | Oleg Bartunov | 2003-03-25 17:55:35 | Re: New structers for optimazing R-tree |
Previous Message | Josh Berkus | 2003-03-25 17:28:09 | Re: to_char(interval) --- done? |
From | Date | Subject | |
---|---|---|---|
Next Message | Rudy Lippan | 2003-03-26 04:29:07 | Re: Prepare and prepare ? |
Previous Message | Fabio Furia Silva | 2003-03-25 16:12:00 | Persistent variables between cross-calls in C functions |