]> granicus.if.org Git - postgresql/commitdiff
Ensure $_SHARED is declared in the main:: namespace, per bugs #5570 and #5571.
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 27 Jul 2010 04:18:31 +0000 (04:18 +0000)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 27 Jul 2010 04:18:31 +0000 (04:18 +0000)
Author: Alex Hunsaker

src/pl/plperl/expected/plperl_shared.out
src/pl/plperl/plc_perlboot.pl
src/pl/plperl/sql/plperl_shared.sql

index d054985cb84cd9e29553008eaf1d4acf61ad51a8..1a6bf5ee4d42eba0492cfca5c7dee8ad6af321b8 100644 (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)
+
index 379d4bfa5b7038114593eaefb1ab848f666f4791..1f8fddd4b3f6b9ecc1889e3d12b7d478a15d3760 100644 (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.6.2.1 2010/07/27 04:18:31 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;
index a617b46a7afeef3278d76a76ac8c316cb72be136..d367d32ff08266f9b0f1f558e704e785fd3420ec 100644 (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();