I wrote:


The attached tiny patch (not intended for application yet) provides a space for plperl functions to create and share session persistent data, which I should think would increase the utility of plperl. Essentially it creates a hash called %session_globals which it then injects into the safe container where plperl functions live.



...and the patch is attached here
Index: src/pl/plperl/plperl.c
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/pl/plperl/plperl.c,v
retrieving revision 1.42
diff -c -w -r1.42 plperl.c
*** src/pl/plperl/plperl.c      6 Jan 2004 23:55:19 -0000       1.42
--- src/pl/plperl/plperl.c      8 Feb 2004 17:18:18 -0000
***************
*** 207,215 ****
                 * no commas between the next 5 please. They are supposed to be
                 * one string
                 */
!               "require Safe; SPI::bootstrap();"
                "sub ::mksafefunc { my $x = new Safe; 
$x->permit_only(':default');$x->permit(':base_math');"
!               "$x->share(qw[&elog &DEBUG &LOG &INFO &NOTICE &WARNING &ERROR]);"
                " return $x->reval(qq[sub { $_[0] }]); }"
                "sub ::mkunsafefunc {return eval(qq[ sub { $_[0] } ]); }"
        };
--- 207,215 ----
                 * no commas between the next 5 please. They are supposed to be
                 * one string
                 */
!               "require Safe; SPI::bootstrap(); use vars qw(%session_globals);"
                "sub ::mksafefunc { my $x = new Safe; 
$x->permit_only(':default');$x->permit(':base_math');"
!               "$x->share(qw[&elog &DEBUG &LOG &INFO &NOTICE &WARNING &ERROR 
%session_globals]);"
                " return $x->reval(qq[sub { $_[0] }]); }"
                "sub ::mkunsafefunc {return eval(qq[ sub { $_[0] } ]); }"
        };
---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

               http://archives.postgresql.org

Reply via email to