Spracherkennung für: .out vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
-- 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"