* 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