Re: Package support for Postgres - Mailing list pgsql-hackers

From Peter Eisentraut
Subject Re: Package support for Postgres
Date
Msg-id Pine.LNX.4.30.0110172329010.628-100000@peter.localdomain
Whole thread Raw
In response to Re: Package support for Postgres  (Bill Studenmund <wrstuden@netbsd.org>)
Responses Re: Package support for Postgres
List pgsql-hackers
Bill Studenmund writes:

> Could you please give me an example of how to do this, say for plperl or
> plpython? Just showing how two functions made with CREATE FUNCTION can use
> global variables will be fine. This example will help me understand how
> they work.

For PL/Tcl you use regular Tcl global variables:

create function produce(text) returns text as '   global foo; set foo $1;
' language pltcl;

create function consume() returns text as '   global foo; return $foo;
' language pltcl;

There is also a mechanism for one procedure to save private data across
calls.

For PL/Python you use a global dictionary:

create function produce(text) returns text as '   GD["key"] = args[0]
' language plpython;

create function consume() returns text as '   return GD["key"]
' language plpython;

There is also a dictionary for private data.

For PL/Perl I'm not sure if something has been implemented.  In C you can
use shared memory, and for PL/sh you would use temp files of course.  ;-)

-- 
Peter Eisentraut   peter_e@gmx.net   http://funkturm.homeip.net/~peter



pgsql-hackers by date:

Previous
From: Thomas Lockhart
Date:
Subject: date/time improvements for 7.2
Next
From: Peter Eisentraut
Date:
Subject: Create or replace function doesn't work so well