Re: BUG #6511: calling spi_exec_query from non-main package, results in: couldn't fetch $_TD
От | Alex Hunsaker |
---|---|
Тема | Re: BUG #6511: calling spi_exec_query from non-main package, results in: couldn't fetch $_TD |
Дата | |
Msg-id | CAFaPBrQRwr7OevWjeFwU2+E34Vt+wfy1_GmhNm4=Yw0_dPLL_w@mail.gmail.com обсуждение исходный текст |
Ответ на | BUG #6511: calling spi_exec_query from non-main package, results in: couldn't fetch $_TD (marko@kobaz.net) |
Ответы |
Re: BUG #6511: calling spi_exec_query from non-main
package, results in: couldn't fetch $_TD
Re: BUG #6511: calling spi_exec_query from non-main package, results in: couldn't fetch $_TD |
Список | pgsql-bugs |
On Sat, Mar 3, 2012 at 12:19, <marko@kobaz.net> wrote: > 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: > > 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=# select * from myfunc(); > ERROR: couldn't fetch $_TD at line 4. > CONTEXT: PL/Perl function "myfunc" [ Calling a plperl trigger function from a plperl function ] Yeah, there were some optimization done for 9.1 to try and make calls a bit faster. The problem is we are fetching "_TD" not "main::_TD", which means we try to find and use $_TD from whatever the current package is. This should only happen from a nested plperl to plperl trigger where the outer call was in a different package, otherwise the package is always main. The attached fixes it for me, It would be great if you could confirm that. Thanks for the report!
Вложения
В списке pgsql-bugs по дате отправления: