Re: [HACKERS] plpython trigger code is wrong (Re: Potential bug -- script that drops postgres server) - Mailing list pgsql-general

From Bradley McLean
Subject Re: [HACKERS] plpython trigger code is wrong (Re: Potential bug -- script that drops postgres server)
Date
Msg-id 20030215024539.GA1541@nia.bradm.net
Whole thread Raw
In response to plpython trigger code is wrong (Re: Potential bug -- script that drops postgres server)  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-general
* Tom Lane (tgl@sss.pgh.pa.us) [030214 19:35]:
> Lance Thomas <LThomas@DevIS.com> writes:
> > Below is something that may be of interest -- a short, 7-statement script
> > that seems to drop my postgres server.
>
> It appears that the plpython trigger implementation assumes that any
> given procedure will be used as a trigger for only one relation.  The
> reason it crashes is it's trying to use the rowtype info of the relation
> it was first compiled for with the other relation.
>
> Probably the easiest fix is to include the relation OID as part of the
> Python name of a trigger procedure, so that a separate copy is compiled
> for each relation the procedure is used with.

Interesting idea.  I had been taking the approach of applying the cache
to just the python compilation, and not the rowtype info.  This has a
substantial performance penalty, which I'd been addressing by eliminating
some unneeded parameter processing that doesn't apply in the trigger
case, and considering a separate cache for each rowtype.

> Any plpython users want to step forward and fix this?  I have other
> things on my plate ...

I'm looking at the bug right now.  Patch in a day or so.

-Brad


pgsql-general by date:

Previous
From: Alan Gutierrez
Date:
Subject: Perform Action on Transaction Begin
Next
From: "Shridhar Daithankar"
Date:
Subject: Re: Hi,