| -- 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) |
| SELECT * FROM foo(); -- used to cause backend crash (after switching to plperlu) |
| |
| -- 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'); |
| create or replace function foo(text) returns text language plperlu as 'shift'; |
| select foo('hey'); |
| create or replace function foo(text) returns text language plperl as 'shift'; |
| select foo('hey'); |
| |
| -- plperlu first |
| create or replace function bar(text) returns text language plperlu as 'shift'; |
| select bar('hey'); |
| create or replace function bar(text) returns text language plperl as 'shift'; |
| select bar('hey'); |
| create or replace function bar(text) returns text language plperlu as 'shift'; |
| select bar('hey'); |
| |
| -- |
| -- 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; |
| $$; |
| |
| -- make sure our overloaded require op gets restored/set correctly |
| select use_plperlu(); |
| |
| CREATE OR REPLACE FUNCTION use_plperl() RETURNS void LANGUAGE plperl |
| AS $$ |
| use Errno; |
| $$; |