Re: BUG #6511: calling spi_exec_query from non-main package, results in: couldn't fetch $_TD
От | Bruce Momjian |
---|---|
Тема | Re: BUG #6511: calling spi_exec_query from non-main package, results in: couldn't fetch $_TD |
Дата | |
Msg-id | 20120315221351.GB20113@momjian.us обсуждение исходный текст |
Ответ на | Re: BUG #6511: calling spi_exec_query from non-main package, results in: couldn't fetch $_TD (Alex Hunsaker <badalex@gmail.com>) |
Ответы |
Re: BUG #6511: calling spi_exec_query from non-main package,
results in: couldn't fetch $_TD
|
Список | pgsql-bugs |
On Tue, Mar 06, 2012 at 09:08:25PM -0700, Alex Hunsaker wrote: > [ 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! So, should this be applied? --------------------------------------------------------------------------- > *** a/src/pl/plperl/plperl.c > --- b/src/pl/plperl/plperl.c > *************** > *** 2062,2068 **** plperl_call_perl_trigger_func(plperl_proc_desc *desc, FunctionCallInfo fcinfo, > ENTER; > SAVETMPS; > > ! TDsv = get_sv("_TD", 0); > if (!TDsv) > elog(ERROR, "couldn't fetch $_TD"); > > --- 2062,2068 ---- > ENTER; > SAVETMPS; > > ! TDsv = get_sv("main::_TD", 0); > if (!TDsv) > elog(ERROR, "couldn't fetch $_TD"); > > > -- > Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-bugs -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + It's impossible for everything to be true. +
В списке pgsql-bugs по дате отправления: