Ensure $_SHARED is declared in the main:: namespace, per bugs #5570 and #5571.

Author: Alex Hunsaker
This commit is contained in:
Alvaro Herrera 2010-07-27 04:18:28 +00:00
parent 314ef0ec36
commit 7badf1b25d
3 changed files with 32 additions and 2 deletions

View File

@ -36,3 +36,22 @@ select getme('on_init');
42
(1 row)
-- verify that we can use $_SHARED in strict mode
create or replace function perl_shared() returns int as $$
use strict;
my $val = $_SHARED{'stuff'};
$_SHARED{'stuff'} = '1';
return $val;
$$ language plperl;
select perl_shared();
perl_shared
-------------
(1 row)
select perl_shared();
perl_shared
-------------
1
(1 row)

View File

@ -1,7 +1,8 @@
# $PostgreSQL: pgsql/src/pl/plperl/plc_perlboot.pl,v 1.6 2010/05/13 16:39:43 adunstan Exp $
# $PostgreSQL: pgsql/src/pl/plperl/plc_perlboot.pl,v 1.7 2010/07/27 04:18:28 alvherre Exp $
use 5.008001;
use vars qw(%_SHARED);
PostgreSQL::InServer::Util::bootstrap();
@ -9,7 +10,6 @@ package PostgreSQL::InServer;
use strict;
use warnings;
use vars qw(%_SHARED);
sub plperl_warn {
(my $msg = shift) =~ s/\(eval \d+\) //g;

View File

@ -29,3 +29,14 @@ select setme('ourkey','ourval');
select getme('ourkey');
select getme('on_init');
-- verify that we can use $_SHARED in strict mode
create or replace function perl_shared() returns int as $$
use strict;
my $val = $_SHARED{'stuff'};
$_SHARED{'stuff'} = '1';
return $val;
$$ language plperl;
select perl_shared();
select perl_shared();