Improve support for composite types in PL/Python

Enterprise / PostgreSQL - Tom Lane [sss.pgh.pa.us] - 3 July 2014 15:10 UTC

Allow PL/Python functions to return arrays of composite types. Also, fix the restriction that plpy.prepare/plpy.execute couldn't handle query parameters or result columns of composite types.

In passing, adopt a saner arrangement for where to release the tupledesc reference counts acquired via lookup_rowtype_tupdesc. The callers of PLyObject_ToCompositeDatum were doing the lookups, but then the releases happened somewhere down inside subroutines of PLyObject_ToCompositeDatum, which is bizarre and bug-prone. Instead release in the same function that acquires the refcount.

Ed Behn and Ronan Dunklau, reviewed by Abhijit Menon-Sen

8b6010b Improve support for composite types in PL/Python.
doc/src/sgml/plpython.sgml | 7 -----
src/pl/plpython/expected/plpython_composite.out | 12 +++++---
src/pl/plpython/expected/plpython_spi.out | 15 ++++++++++
src/pl/plpython/expected/plpython_types.out | 13 ++++-----
src/pl/plpython/expected/plpython_types_3.out | 13 ++++-----
src/pl/plpython/plpy_exec.c | 2 ++
src/pl/plpython/plpy_spi.c | 7 +----
src/pl/plpython/plpy_typeio.c | 35 ++++++++++++-----------
src/pl/plpython/sql/plpython_composite.sql | 2 +-
src/pl/plpython/sql/plpython_spi.sql | 12 ++++++++
src/pl/plpython/sql/plpython_types.sql | 2 +-
11 files changed, 70 insertions(+), 50 deletions(-)

Upstream: git.postgresql.org


  • Share