diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2014-07-03 16:10:50 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2014-07-03 16:10:50 -0400 |
commit | 8b6010b8350a1756cd85595705971df81b5ffc07 (patch) | |
tree | eda51b5b21c1030a24f0be7bb3a11b770aba5c7a /src/pl/plpython/plpy_exec.c | |
parent | f545d233ebce6971b6f9847680e48b679e707d22 (diff) | |
download | postgresql-8b6010b8350a1756cd85595705971df81b5ffc07.tar.gz postgresql-8b6010b8350a1756cd85595705971df81b5ffc07.zip |
Improve support for composite types in PL/Python.
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
Diffstat (limited to 'src/pl/plpython/plpy_exec.c')
-rw-r--r-- | src/pl/plpython/plpy_exec.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/pl/plpython/plpy_exec.c b/src/pl/plpython/plpy_exec.c index b6eb6f1f951..3724e67a073 100644 --- a/src/pl/plpython/plpy_exec.c +++ b/src/pl/plpython/plpy_exec.c @@ -194,6 +194,8 @@ PLy_exec_function(FunctionCallInfo fcinfo, PLyProcedure *proc) rv = PLyObject_ToCompositeDatum(&proc->result, desc, plrv); fcinfo->isnull = (rv == (Datum) NULL); + + ReleaseTupleDesc(desc); } else { |