postgresql/src/pl/plperl
Tom Lane ac6637485b Transmit -I switches selected by configure (particularly those from
--with-includes) to makefiles for pltcl and plperl, so that these
switches will be used even though we do not want other top-level
CFLAGS.  Ain't it fun trying to support multiple-compiler platforms?
2000-05-23 02:12:46 +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 Transmit -I switches selected by configure (particularly those from 2000-05-23 02:12:46 +00:00
plperl.c Security fix for plperl. 2000-04-18 15:04:02 +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();