aboutsummaryrefslogtreecommitdiff
path: root/src/pl/plpython/plpy_exec.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2014-07-03 16:10:50 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2014-07-03 16:10:50 -0400
commit8b6010b8350a1756cd85595705971df81b5ffc07 (patch)
treeeda51b5b21c1030a24f0be7bb3a11b770aba5c7a /src/pl/plpython/plpy_exec.c
parentf545d233ebce6971b6f9847680e48b679e707d22 (diff)
downloadpostgresql-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.c2
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
{