Re: pl/python do not delete function arguments
Jan Urbański <wulczer@wulczer.org>
From: Jan Urbański <wulczer@wulczer.org>
To: Hitoshi Harada <umi.tanuki@gmail.com>
Cc: Postgres - Hackers <pgsql-hackers@postgresql.org>
Date: 2011-02-09T09:02:33Z
Lists: pgsql-hackers
Attachments
- plpython-dont-delete-arguments.patch (text/x-patch) patch
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. Jan