pgsql: Fix declaration of $_TD in "strict" trigger functions
От | Alvaro Herrera |
---|---|
Тема | pgsql: Fix declaration of $_TD in "strict" trigger functions |
Дата | |
Msg-id | E1QMuXS-0003ka-Mq@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Fix declaration of $_TD in "strict" trigger functions This was broken in commit ef19dc6d39dd2490ff61489da55d95d6941140bf by the Bunce/Hunsaker/Dunstan team, which moved the declaration from plperl_create_sub to plperl_call_perl_trigger_func. This doesn't actually work because the validator code would not find the variable declared; and even if you manage to get past the validator, it still doesn't work because get_sv("_TD", GV_ADD) doesn't have the expected effect. The only reason this got beyond testing is that it only fails in strict mode. We need to declare it as a global just like %_SHARED; it is simpler than trying to actually do what the patch initially intended, and is said to have the same performance benefit. As a more serious issue, fix $_TD not being properly local()ized, meaning nested trigger functions would clobber $_TD. Alex Hunsaker, per test report from Greg Mullane Branch ------ master Details ------- http://git.postgresql.org/pg/commitdiff/6b449d9051651d3accfdce73e21cfd5e3d0e09a3 Modified Files -------------- src/pl/plperl/expected/plperl_trigger.out | 29 +++++++++++++++++++++++++++++ src/pl/plperl/plc_perlboot.pl | 2 +- src/pl/plperl/plperl.c | 7 +++++-- src/pl/plperl/sql/plperl_trigger.sql | 24 ++++++++++++++++++++++++ 4 files changed, 59 insertions(+), 3 deletions(-)
В списке pgsql-committers по дате отправления: