Re: pl/python do not delete function arguments

From: Peter Eisentraut <peter_e(at)gmx(dot)net>
To: Jan Urbański <wulczer(at)wulczer(dot)org>
Cc: Hitoshi Harada <umi(dot)tanuki(at)gmail(dot)com>, Postgres - Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: pl/python do not delete function arguments
Date: 2011-02-14 20:06:42
Message-ID: 1297714002.23931.5.camel@vanquo.pezone.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)wulczer(dot)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.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2011-02-14 20:08:23 Re: why two dashes in extension load files
Previous Message Dimitri Fontaine 2011-02-14 19:56:33 Re: CommitFest 2011-01 as of 2011-02-04