OSDN Git Service

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:28 +0000 (04:18 +0000)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 27 Jul 2010 04:18:28 +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 d054985..1a6bf5e 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 379d4bf..72e96d1 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.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;
index a617b46..d367d32 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();