postgresql/src/pl/plperl
Tom Lane 48165ec226 Latest round of fmgr updates. All functions with bool,char, or int2
inputs have been converted to newstyle.  This should go a long way towards
fixing our portability problems with platforms where char and short
parameters are passed differently from int-width parameters.  Still
more to do for the Alpha port however.
2000-06-05 07:29:25 +00:00
..
eloglvl.c Ye-old pgindent run. Same 4-space tabs. 2000-04-12 17:17:23 +00:00
eloglvl.h Ye-old pgindent run. Same 4-space tabs. 2000-04-12 17:17:23 +00:00
Makefile.PL Generated header files parse.h and fmgroids.h are now copied into 2000-05-29 05:45:56 +00:00
plperl.c Latest round of fmgr updates. All functions with bool,char, or int2 2000-06-05 07:29:25 +00:00
README Well, I finally solved the linking problem 2000-01-20 05:08:58 +00:00
SPI.xs Attached is a uuencoded tarball that contains 2000-01-29 01:58:50 +00:00

>perl Makefile.pl
>make

copy the resulting library somewhere that
the postgresql backend can see it. assume
that path is /usr/local/pgsql/modules/plperl.so

CREATE FUNCTION plperl_call_handler() RETURNS opaque
AS '/usr/local/pgsql/modules/plperl.so' LANGUAGE 'C';

CREATE TRUSTED PROCEDURAL LANGUAGE 'plperl'
HANDLER plperl_call_handler
LANCOMPILER 'PL/Perl';

-- here is simple example
CREATE FUNCTION addints(int4, int4) RETURNS int4 AS '
return $_[0] + $_[1]
' LANGUAGE 'plperl';

SELECT addints(3,4);

-- of course, you can pass tuples;
CREATE TABLE twoints ( a integer, b integer);
CREATE FUNCTION addtwoints(twoints) RETURNS integer AS '
$tup = shift;
return $tup->{"a"} + $tup->{"b"};
' LANGUAGE 'plperl';

SELECT addtwoints(twoints) from twoints;

-- here is one that will fail. Creating the function
-- will work, but using it will fail.
CREATE FUNCTION badfunc() RETURNS int4 AS '
open(TEMP, ">/tmp/badfile");
print TEMP "Gotcha!\n";
return 1;
' LANGUAGE 'plperl';

SELECT badfunc();