diff options
Diffstat (limited to 'src/pl/plperl/expected/plperl_plperlu.out')
-rw-r--r-- | src/pl/plperl/expected/plperl_plperlu.out | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/src/pl/plperl/expected/plperl_plperlu.out b/src/pl/plperl/expected/plperl_plperlu.out new file mode 100644 index 0000000..2be955f --- /dev/null +++ b/src/pl/plperl/expected/plperl_plperlu.out @@ -0,0 +1,91 @@ +-- test plperl/plperlu interaction +-- the language and call ordering of this test sequence is useful +CREATE OR REPLACE FUNCTION bar() RETURNS integer AS $$ + #die 'BANG!'; # causes server process to exit(2) + # alternative - causes server process to exit(255) + spi_exec_query("invalid sql statement"); +$$ language plperl; -- compile plperl code +CREATE OR REPLACE FUNCTION foo() RETURNS integer AS $$ + spi_exec_query("SELECT * FROM bar()"); + return 1; +$$ LANGUAGE plperlu; -- compile plperlu code +SELECT * FROM bar(); -- throws exception normally (running plperl) +ERROR: syntax error at or near "invalid" at line 4. +CONTEXT: PL/Perl function "bar" +SELECT * FROM foo(); -- used to cause backend crash (after switching to plperlu) +ERROR: syntax error at or near "invalid" at line 4. at line 2. +CONTEXT: PL/Perl function "foo" +-- test redefinition of specific SP switching languages +-- http://archives.postgresql.org/pgsql-bugs/2010-01/msg00116.php +-- plperl first +create or replace function foo(text) returns text language plperl as 'shift'; +select foo('hey'); + foo +----- + hey +(1 row) + +create or replace function foo(text) returns text language plperlu as 'shift'; +select foo('hey'); + foo +----- + hey +(1 row) + +create or replace function foo(text) returns text language plperl as 'shift'; +select foo('hey'); + foo +----- + hey +(1 row) + +-- plperlu first +create or replace function bar(text) returns text language plperlu as 'shift'; +select bar('hey'); + bar +----- + hey +(1 row) + +create or replace function bar(text) returns text language plperl as 'shift'; +select bar('hey'); + bar +----- + hey +(1 row) + +create or replace function bar(text) returns text language plperlu as 'shift'; +select bar('hey'); + bar +----- + hey +(1 row) + +-- +-- Make sure we can't use/require things in plperl +-- +CREATE OR REPLACE FUNCTION use_plperlu() RETURNS void LANGUAGE plperlu +AS $$ +use Errno; +$$; +CREATE OR REPLACE FUNCTION use_plperl() RETURNS void LANGUAGE plperl +AS $$ +use Errno; +$$; +ERROR: Unable to load Errno.pm into plperl at line 2. +BEGIN failed--compilation aborted at line 2. +CONTEXT: compilation of PL/Perl function "use_plperl" +-- make sure our overloaded require op gets restored/set correctly +select use_plperlu(); + use_plperlu +------------- + +(1 row) + +CREATE OR REPLACE FUNCTION use_plperl() RETURNS void LANGUAGE plperl +AS $$ +use Errno; +$$; +ERROR: Unable to load Errno.pm into plperl at line 2. +BEGIN failed--compilation aborted at line 2. +CONTEXT: compilation of PL/Perl function "use_plperl" |