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

Started by Nonameover 21 years ago4 messages
#1Noname
joe@svr1.postgresql.org

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)

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Noname (#1)
Re: pgsql-server: plperl update from Andrew Dunstan, deriving (I believe)

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

#3Andrew Dunstan
andrew@dunslane.net
In reply to: Tom Lane (#2)
Re: [COMMITTERS] pgsql-server: plperl update from Andrew Dunstan,

[redirected to -hackers]

Tom Lane wrote:

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...

[snip]

-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.

Is there a more portable way of doing this, via configure maybe?

cheers

andrew

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Andrew Dunstan (#3)
Re: [COMMITTERS] pgsql-server: plperl update from Andrew Dunstan, deriving (I believe)

Andrew Dunstan <andrew@dunslane.net> writes:

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

Is there a more portable way of doing this, via configure maybe?

It doesn't look to me like we handle rpath switch syntax via configure,
but by setting variables in the port-specific makefiles. Maybe you
could extend that scheme so that the switch name is available separately
from $(libdir).

The HPUX case is slightly peculiar because we essentially force rpath to
be used always; enable_rpath is disregarded and we stick what would be
the rpath switches directly into LDFLAGS. It might be cleaner if it
did this by setting enable_rpath true in the port makefile, instead of
bypassing the rpath variable mechanism altogether.

regards, tom lane