aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/pl/plperl/expected/plperl_shared.out19
-rw-r--r--src/pl/plperl/plc_perlboot.pl4
-rw-r--r--src/pl/plperl/sql/plperl_shared.sql11
3 files changed, 32 insertions, 2 deletions
diff --git a/src/pl/plperl/expected/plperl_shared.out b/src/pl/plperl/expected/plperl_shared.out
index d054985cb84..1a6bf5ee4d4 100644
--- a/src/pl/plperl/expected/plperl_shared.out
+++ b/src/pl/plperl/expected/plperl_shared.out
@@ -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)
+
diff --git a/src/pl/plperl/plc_perlboot.pl b/src/pl/plperl/plc_perlboot.pl
index 379d4bfa5b7..72e96d1a796 100644
--- a/src/pl/plperl/plc_perlboot.pl
+++ b/src/pl/plperl/plc_perlboot.pl
@@ -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;
diff --git a/src/pl/plperl/sql/plperl_shared.sql b/src/pl/plperl/sql/plperl_shared.sql
index a617b46a7af..d367d32ff08 100644
--- a/src/pl/plperl/sql/plperl_shared.sql
+++ b/src/pl/plperl/sql/plperl_shared.sql
@@ -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();