Search Postgresql Archives

Re: Recreate C functions?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



OK, my fault, in the docs:

"After it is used for the first time, a dynamically loaded object file is retained in memory. Future calls in the same session to the function(s) in that file will only incur the small overhead of a symbol table lookup. If you need to force a reload of an object file, for example after recompiling it, begin a fresh session."

So this works for testing:
psql -U fts -c "select plpgsql_test('abc');"

On 14/12/2010, at 7:52 PM, Pavel Stehule wrote:

Hello

it's maybe offtopic - you use a deprecated API

better to use V1 interface.

Regards

Pavel Stehule

2010/12/14 Elliot Chance <elliotchance@xxxxxxxxx>:
Hi,

I seem to be having trouble recreating C functions, the source:

=== test.c ====
#include <postgres.h>
#include <fmgr.h>

PG_MODULE_MAGIC;

int32 plpgsql_test(text* s) {
   return 100;
}
=== end ===

Then compile:
$ cc -fpic -c -I/usr/include/pgsql/server test.c
$ ld -shared -o funcs.so test.o

Then create the function:
CREATE FUNCTION plpgsql_test(text) RETURNS integer
    AS '/storage/Scripts/plpgsql/funcs', 'plpgsql_test'
    LANGUAGE C STRICT IMMUTABLE;

So far it works:
select plpgsql_test('abc');
100

The problem is if I change test.c like:
return 200;

Then recompile, drop and create the function it still returns 100? However if I compile it as funcs2.so it will then create the function with the correct 200 result ... what am I doing wrong?

Thanks,
Elliot


--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux