PL/Python: Fix crash in functions returning SETOF and using SPI
authorPeter Eisentraut <peter_e@gmx.net>
Wed, 2 May 2012 17:59:51 +0000 (20:59 +0300)
committerPeter Eisentraut <peter_e@gmx.net>
Wed, 2 May 2012 17:59:51 +0000 (20:59 +0300)
commit52aa334fcd5a9d230be7e8fb964d94c6c4e63dc7
tree1bf7fe4cd01a6d127c6271c5d81b4e5199bf6107
parente9605a039b60350003daf8a5b3c0c10993994b60
PL/Python: Fix crash in functions returning SETOF and using SPI

Allocate PLyResultObject.tupdesc in TopMemoryContext, because its
lifetime is the lifetime of the Python object and it shouldn't be
freed by some other memory context, such as one controlled by SPI.  We
trust that the Python object will clean up its own memory.

Before, this would crash the included regression test case by trying
to use memory that was already freed.

reported by Asif Naeem, analysis by Tom Lane
src/pl/plpython/expected/plpython_setof.out
src/pl/plpython/plpy_spi.c
src/pl/plpython/sql/plpython_setof.sql