Re: pl/python do not delete function arguments
От | Peter Eisentraut |
---|---|
Тема | Re: pl/python do not delete function arguments |
Дата | |
Msg-id | 1297714002.23931.5.camel@vanquo.pezone.net обсуждение исходный текст |
Ответ на | Re: pl/python do not delete function arguments (Jan Urbański <wulczer@wulczer.org>) |
Ответы |
Re: pl/python do not delete function arguments
|
Список | pgsql-hackers |
On ons, 2011-02-09 at 10:02 +0100, Jan Urbański wrote: > On 09/02/11 04:52, Hitoshi Harada wrote: > > 2010/12/31 Jan Urbański <wulczer@wulczer.org>: > >> (continuing the flurry of patches) > >> > >> Here's a patch that stops PL/Python from removing the function's > >> arguments from its globals dict after calling it. It's > >> an incremental patch on top of the plpython-refactor patch sent in > >> http://archives.postgresql.org/message-id/4D135170.3080705@wulczer.org. > >> > >> Git branch for this patch: > >> https://github.com/wulczer/postgres/tree/dont-remove-arguments > >> > >> Apart from being useless, as the whole dict is unreffed and thus freed > >> in PLy_procedure_delete, removing args actively breaks things for > >> recursive invocation of the same function. The recursive callee after > >> returning will remove the args from globals, and subsequent access to > >> the arguments in the caller will cause a NameError (see new regression > >> test in patch). > > > > I've reviewed this. The patch is old enough to be rejected by patch > > command, but I manged to apply it by hand. > > It compiles clean. Added tests pass. > > I created fibonacci function similar to recursion_test in the patch > > and confirmed the recursion raises error on 9.0 but not on 9.1. > > Doc is not with the patch since this change is to remove unnecessary > > optimization internally. > > > > "Ready for Committer" > > Thanks, > > patch merged with HEAD attached. Curiously, without the patch the recursion_test(4) call fails but recursion_test(5) passes. Anyone know why? Btw., I get a KeyError, not a NameError as you say above.
В списке pgsql-hackers по дате отправления: