Thread: pgsql-server: plperl update from Andrew Dunstan, deriving (I believe)

pgsql-server: plperl update from Andrew Dunstan, deriving (I believe)

From
joe@svr1.postgresql.org (Joe Conway)
Date:
Log Message:
-----------
plperl update from Andrew Dunstan, deriving (I believe) from Command Prompt's
plperlNG. Review and minor cleanup/improvements by Joe Conway.

Summary of new functionality:
- Shared data space and namespace. There is a new global variable %_SHARED
  that functions can use to store and save data between invocations of a
  function, or between different functions. Also, all trusted plperl function
  now share a common Safe container (this is an optimization, also), which
  they can use for storing non-lexical variables, functions, etc.
- Triggers are now supported
- Records can now be returned (as a hash reference)
- Sets of records can now be returned (as a reference to an array of hash
  references).
- New function spi_exec_query() provided for performing db functions or
  getting data from db.
- Optimization for counting hash keys (Abhijit Menon-Sen)
- Allow return of 'record' and 'setof record'

Modified Files:
--------------
    pgsql-server/src/pl/plperl:
        GNUmakefile (r1.12 -> r1.13)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/pl/plperl/GNUmakefile.diff?r1=1.12&r2=1.13)
        SPI.xs (r1.5 -> r1.6)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/pl/plperl/SPI.xs.diff?r1=1.5&r2=1.6)
        plperl.c (r1.44 -> r1.45)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/pl/plperl/plperl.c.diff?r1=1.44&r2=1.45)

Added Files:
-----------
    pgsql-server/src/pl/plperl:
        spi_internal.c (r1.1)

(http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/pl/plperl/spi_internal.c?rev=1.1&content-type=text/x-cvsweb-markup)
        spi_internal.h (r1.1)

(http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/pl/plperl/spi_internal.h?rev=1.1&content-type=text/x-cvsweb-markup)

Removed Files:
-------------
    pgsql-server/src/pl/plperl:
        eloglvl.c
        (http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/pl/plperl/eloglvl.c)
        eloglvl.h
        (http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/pl/plperl/eloglvl.h)

joe@svr1.postgresql.org (Joe Conway) writes:
> plperl update from Andrew Dunstan, deriving (I believe) from Command Prompt's
> plperlNG. Review and minor cleanup/improvements by Joe Conway.

I've reverted the part of this patch that attempted to make plperl use
rpath, because it doesn't actually work...

make[3]: Entering directory `/home/postgres/pgsql/src/pl/plperl'
gcc -O1 -fno-strict-aliasing -g -fpic -I. -I/opt/perl5.8.0/lib/5.8.0/PA-RISC2.0/CORE -I../../../src/include
-D_XOPEN_SOURCE_EXTENDED  -c -o plperl.o plperl.c 
gcc -O1 -fno-strict-aliasing -g -fpic -I. -I/opt/perl5.8.0/lib/5.8.0/PA-RISC2.0/CORE -I../../../src/include
-D_XOPEN_SOURCE_EXTENDED  -c -o spi_internal.o spi_internal.c 
/opt/perl5.8.0/bin/perl /opt/perl5.8.0/lib/5.8.0/ExtUtils/xsubpp -typemap /opt/perl5.8.0/lib/5.8.0/ExtUtils/typemap
SPI.xs>SPI.c 
gcc -O1 -fno-strict-aliasing -g -fpic -I. -I/opt/perl5.8.0/lib/5.8.0/PA-RISC2.0/CORE -I../../../src/include
-D_XOPEN_SOURCE_EXTENDED  -c -o SPI.o SPI.c 
ar crs libplperl.a `lorder plperl.o spi_internal.o SPI.o | tsort`
ranlib libplperl.a
/usr/ccs/bin/ld +h libplperl.sl.0 -b +b /home/postgres/testversion/lib plperl.o spi_internal.o SPI.o
-L../../../src/port-L/usr/local/lib /opt/perl5.8.0/lib/5.8.0/PA-RISC2.0/auto/DynaLoader/DynaLoader.a
-L/opt/perl5.8.0/lib/5.8.0/PA-RISC2.0/CORE-lperl -lnsl_s -lmalloc -ldld -lm -lc -lndir -lcrypt -lsec
-Wl,-rpath,/opt/perl5.8.0/lib/5.8.0/PA-RISC2.0/CORE`gcc -print-libgcc-file-name`  -o libplperl.sl.0 
/usr/ccs/bin/ld: Unrecognized argument: -Wl,-rpath,/opt/perl5.8.0/lib/5.8.0/PA-RISC2.0/CORE
/usr/ccs/bin/ld: Usage:  /usr/ccs/bin/ld flags... files...
make[3]: *** [libplperl.sl.0] Error 1
make[3]: Target `all' not remade because of errors.
make[3]: Leaving directory `/home/postgres/pgsql/src/pl/plperl'

-Wl is a gcc-ism, I believe; it certainly won't work in a direct call to
ld.  Looking at the port makefiles, HPUX is not the only platform that
will barf on this.

            regards, tom lane