BUG #6511: calling spi_exec_query from non-main package, results in: couldn't fetch $_TD
| От | marko@kobaz.net |
|---|---|
| Тема | BUG #6511: calling spi_exec_query from non-main package, results in: couldn't fetch $_TD |
| Дата | |
| Msg-id | E1S3uUe-0005ER-RD@wrigleys.postgresql.org обсуждение |
| Ответы |
Re: BUG #6511: calling spi_exec_query from non-main package,
results in: couldn't fetch $_TD
|
| Список | pgsql-bugs |
The following bug has been logged on the website:
Bug reference: 6511
Logged by: Mark Murawski
Email address: marko@kobaz.net
PostgreSQL version: 9.1.3
Operating system: Linux - Debian Squeeze postgres 9.1 from backports
Description:=20=20=20=20=20=20=20=20
create table mytable ( id integer );
--
CREATE OR REPLACE FUNCTION mytrigger() RETURNS trigger AS $BODY$
return undef
$BODY$ LANGUAGE plperlu VOLATILE COST 100;
--
CREATE TRIGGER "insert" BEFORE INSERT ON mytable FOR EACH ROW EXECUTE
PROCEDURE mytrigger();
--
CREATE OR REPLACE FUNCTION myfunc() RETURNS text AS $BODY$
package foo;
sub foo {
main::spi_exec_query(q{INSERT INTO mytable VALUES (1) RETURNING id});
};
package main;
foo::foo();
return;
$BODY$ LANGUAGE plperlu VOLATILE COST 100;
--
pbx=3D# select * from myfunc();
ERROR: couldn't fetch $_TD at line 4.
CONTEXT: PL/Perl function "myfunc"
-- this works:
CREATE OR REPLACE FUNCTION myfunc() RETURNS text AS $BODY$
package foo;
sub foo {
package main;
spi_exec_query(q{INSERT INTO mytable VALUES (1) RETURNING id});
};
package main;
foo::foo();
return;
$BODY$ LANGUAGE plperlu VOLATILE COST 100;
select * from myfunc();
myfunc
--------
(1 row)
drop table mytable;
drop function mytrigger();
drop function myfunc();
В списке pgsql-bugs по дате отправления: