diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2015-06-21 10:37:24 -0400 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2015-07-03 14:08:11 -0400 |
commit | 4a1944ec6caf41f1008e86296fa8712ba8b59317 (patch) | |
tree | 338bbd43160a8f89a07a95f9993146203402d94c /src | |
parent | 9d6352aaae1bf43f06253dcc931534a5254a937a (diff) | |
download | postgresql-4a1944ec6caf41f1008e86296fa8712ba8b59317.tar.gz postgresql-4a1944ec6caf41f1008e86296fa8712ba8b59317.zip |
PL/Perl: Add alternative expected file for Perl 5.22
Diffstat (limited to 'src')
-rw-r--r-- | src/pl/plperl/expected/plperl_elog_1.out | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/src/pl/plperl/expected/plperl_elog_1.out b/src/pl/plperl/expected/plperl_elog_1.out new file mode 100644 index 00000000000..0932fde2668 --- /dev/null +++ b/src/pl/plperl/expected/plperl_elog_1.out @@ -0,0 +1,106 @@ +-- test warnings and errors from plperl +create or replace function perl_elog(text) returns void language plperl as $$ + + my $msg = shift; + elog(NOTICE,$msg); + +$$; +select perl_elog('explicit elog'); +NOTICE: explicit elog +CONTEXT: PL/Perl function "perl_elog" + perl_elog +----------- + +(1 row) + +create or replace function perl_warn(text) returns void language plperl as $$ + + my $msg = shift; + warn($msg); + +$$; +select perl_warn('implicit elog via warn'); +WARNING: implicit elog via warn at line 4. +CONTEXT: PL/Perl function "perl_warn" + perl_warn +----------- + +(1 row) + +-- test strict mode on/off +SET plperl.use_strict = true; +create or replace function uses_global() returns text language plperl as $$ + + $global = 1; + $other_global = 2; + return 'uses_global worked'; + +$$; +ERROR: Global symbol "$global" requires explicit package name (did you forget to declare "my $global"?) at line 3. +Global symbol "$other_global" requires explicit package name (did you forget to declare "my $other_global"?) at line 4. +CONTEXT: compilation of PL/Perl function "uses_global" +select uses_global(); +ERROR: function uses_global() does not exist +LINE 1: select uses_global(); + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +SET plperl.use_strict = false; +create or replace function uses_global() returns text language plperl as $$ + + $global = 1; + $other_global=2; + return 'uses_global worked'; + +$$; +select uses_global(); + uses_global +-------------------- + uses_global worked +(1 row) + +-- make sure we don't choke on readonly values +do language plperl $$ elog(NOTICE, ${^TAINT}); $$; +NOTICE: 0 +CONTEXT: PL/Perl anonymous code block +-- test recovery after "die" +create or replace function just_die() returns void language plperl AS $$ +die "just die"; +$$; +select just_die(); +ERROR: just die at line 2. +CONTEXT: PL/Perl function "just_die" +create or replace function die_caller() returns int language plpgsql as $$ +BEGIN + BEGIN + PERFORM just_die(); + EXCEPTION WHEN OTHERS THEN + RAISE NOTICE 'caught die'; + END; + RETURN 1; +END; +$$; +select die_caller(); +NOTICE: caught die + die_caller +------------ + 1 +(1 row) + +create or replace function indirect_die_caller() returns int language plperl as $$ +my $prepared = spi_prepare('SELECT die_caller() AS fx'); +my $a = spi_exec_prepared($prepared)->{rows}->[0]->{fx}; +my $b = spi_exec_prepared($prepared)->{rows}->[0]->{fx}; +return $a + $b; +$$; +select indirect_die_caller(); +NOTICE: caught die +CONTEXT: SQL statement "SELECT die_caller() AS fx" +PL/Perl function "indirect_die_caller" +NOTICE: caught die +CONTEXT: SQL statement "SELECT die_caller() AS fx" +PL/Perl function "indirect_die_caller" + indirect_die_caller +--------------------- + 2 +(1 row) + |