pgsql: Tidy up and refactor plperl.c.

Started by Nonameabout 16 years ago5 messages
#1Noname
adunstan@postgresql.org

Log Message:
-----------
Tidy up and refactor plperl.c.

- Changed MULTIPLICITY check from runtime to compiletime.
No loads the large Config module.
- Changed plperl_init_interp() to return new interp
and not alter the global interp_state
- Moved plperl_safe_init() call into check_interp().
- Removed plperl_safe_init_done state variable
as interp_state now covers that role.
- Changed plperl_create_sub() to take a plperl_proc_desc argument.
- Simplified return value handling in plperl_create_sub.
- Changed perl.com link in the docs to perl.org and tweaked
wording to clarify that require, not use, is what's blocked.
- Moved perl code in large multi-line C string literal macros
out to plc_*.pl files.
- Added a test2macro.pl utility to convert the plc_*.pl files to
macros in a perlchunks.h file which is #included
- Simplifed plperl_safe_init() slightly
- Optimized pg_verifymbstr calls to avoid unneeded strlen()s.

Patch from Tim Bunce, with minor editing from me.

Modified Files:
--------------
pgsql/doc/src/sgml:
plperl.sgml (r2.71 -> r2.72)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/plperl.sgml?r1=2.71&r2=2.72)
pgsql/src/pl/plperl:
GNUmakefile (r1.37 -> r1.38)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/pl/plperl/GNUmakefile?r1=1.37&r2=1.38)
plperl.c (r1.158 -> r1.159)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/pl/plperl/plperl.c?r1=1.158&r2=1.159)
pgsql/src/pl/plperl/sql:
plperl.sql (r1.14 -> r1.15)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/pl/plperl/sql/plperl.sql?r1=1.14&r2=1.15)

Added Files:
-----------
pgsql/src/pl/plperl:
plc_perlboot.pl (r1.1)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/pl/plperl/plc_perlboot.pl?rev=1.1&content-type=text/x-cvsweb-markup)
plc_safe_bad.pl (r1.1)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/pl/plperl/plc_safe_bad.pl?rev=1.1&content-type=text/x-cvsweb-markup)
plc_safe_ok.pl (r1.1)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/pl/plperl/plc_safe_ok.pl?rev=1.1&content-type=text/x-cvsweb-markup)
text2macro.pl (r1.1)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/pl/plperl/text2macro.pl?rev=1.1&content-type=text/x-cvsweb-markup)

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Noname (#1)
Re: [COMMITTERS] pgsql: Tidy up and refactor plperl.c.

adunstan@postgresql.org (Andrew Dunstan) writes:

- Changed MULTIPLICITY check from runtime to compiletime.
No loads the large Config module.

[ squint... ] I thought we'd decided that wasn't a good idea?
What happens if the libperl we load at runtime doesn't match what
we saw in the headers?

regards, tom lane

#3Robert Haas
robertmhaas@gmail.com
In reply to: Tom Lane (#2)
Re: [COMMITTERS] pgsql: Tidy up and refactor plperl.c.

On Fri, Jan 8, 2010 at 10:25 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

adunstan@postgresql.org (Andrew Dunstan) writes:

- Changed MULTIPLICITY check from runtime to compiletime.
    No loads the large Config module.

[ squint... ]  I thought we'd decided that wasn't a good idea?
What happens if the libperl we load at runtime doesn't match what
we saw in the headers?

See:

http://archives.postgresql.org/pgsql-hackers/2009-11/msg01941.php

...Robert

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robert Haas (#3)
Re: [COMMITTERS] pgsql: Tidy up and refactor plperl.c.

Robert Haas <robertmhaas@gmail.com> writes:

On Fri, Jan 8, 2010 at 10:25 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

[ squint... ] �I thought we'd decided that wasn't a good idea?

http://archives.postgresql.org/pgsql-hackers/2009-11/msg01941.php

OK, I'd forgotten that ...

regards, tom lane

#5Andrew Dunstan
andrew@dunslane.net
In reply to: Noname (#1)
Re: [COMMITTERS] pgsql: Tidy up and refactor plperl.c.

This has broken MSVC builds - I am working on it.

cheers

andrew