postgresql/src/pl/plpython
Tom Lane 29dfffae0a Repair memory leaks in plpython.
PLy_spi_execute_plan (PLyPlan.execute) and PLy_cursor_plan
(plpy.cursor) use PLy_output_convert to convert Python values
into Datums that can be passed to the query-to-execute.  But they
failed to pay much attention to its warning that it can leave "cruft
generated along the way" behind.  Repeated use of these methods can
result in a substantial memory leak for the duration of the calling
plpython function.

To fix, make a temporary memory context to invoke PLy_output_convert
in.  This also lets us get rid of the rather fragile code that was
here for retail pfree's of the converted Datums.  Indeed, we don't
need the PLyPlanObject.values field anymore at all, though I left it
in place in the back branches in the name of ABI stability.

Mat Arye and Tom Lane, per report from Mat Arye.  Back-patch to all
supported branches.

Discussion: https://postgr.es/m/CADsUR0DvVgnZYWwnmKRK65MZg7YLUSTDLV61qdnrwtrAJgU6xw@mail.gmail.com
2025-01-11 11:45:56 -05:00
..
expected Simplify some SPI tests of PL/Python 2024-11-25 09:43:16 +09:00
po Update copyright for 2025 2025-01-01 11:21:55 -05:00
sql Simplify some SPI tests of PL/Python 2024-11-25 09:43:16 +09:00
.gitignore plpython: Remove regression test infrastructure for Python 2. 2022-03-07 18:20:51 -08:00
generate-spiexceptions.pl Update copyright for 2025 2025-01-01 11:21:55 -05:00
Makefile Hide warnings from Python headers when using gcc-compatible compiler. 2023-12-26 16:16:37 -05:00
meson.build Update copyright for 2025 2025-01-01 11:21:55 -05:00
nls.mk Make formatting in nls.mk files more consistent 2024-05-14 09:21:17 +02:00
plpy_cursorobject.c Repair memory leaks in plpython. 2025-01-11 11:45:56 -05:00
plpy_cursorobject.h Make PL/Python handle domain-type conversions correctly. 2017-11-16 16:23:04 -05:00
plpy_elog.c Fix assertion failure with PL/Python exceptions 2023-09-19 08:31:06 +09:00
plpy_elog.h Mark all symbols exported from extension libraries PGDLLEXPORT. 2022-07-17 18:50:14 -07:00
plpy_exec.c Remove useless casts to (void *) 2024-11-28 08:27:20 +01:00
plpy_exec.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
plpy_main.c Don't bother checking the result of SPI_connect[_ext] anymore. 2024-09-09 12:18:34 -04:00
plpy_main.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
plpy_planobject.c Repair memory leaks in plpython. 2025-01-11 11:45:56 -05:00
plpy_planobject.h Repair memory leaks in plpython. 2025-01-11 11:45:56 -05:00
plpy_plpymodule.c Remove unused #include's from contrib, pl, test .c files 2024-10-28 08:02:17 +01:00
plpy_plpymodule.h plpython: add missing plpython.h include to plpy_plpymodule.h 2022-03-08 09:47:34 -08:00
plpy_procedure.c Remove unused #include's from contrib, pl, test .c files 2024-10-28 08:02:17 +01:00
plpy_procedure.h Don't corrupt plpython's "TD" dictionary in a recursive trigger call. 2024-05-07 18:15:00 -04:00
plpy_resultobject.c Harmonize some more function parameter names. 2023-04-13 10:15:20 -07:00
plpy_resultobject.h Fix assorted header files that failed to compile standalone. 2019-05-31 11:45:33 -04:00
plpy_spi.c Repair memory leaks in plpython. 2025-01-11 11:45:56 -05:00
plpy_spi.h Fix SPI's handling of errors during transaction commit. 2022-02-28 12:45:36 -05:00
plpy_subxactobject.c Clear some style deviations. 2020-05-21 08:31:16 -07:00
plpy_subxactobject.h Make the order of the header file includes consistent. 2019-11-25 08:08:57 +05:30
plpy_typeio.c Tighten array dimensionality checks in Python -> SQL array conversion. 2023-05-04 11:00:33 -04:00
plpy_typeio.h Mark all symbols exported from extension libraries PGDLLEXPORT. 2022-07-17 18:50:14 -07:00
plpy_util.c Remove unused #include's from contrib, pl, test .c files 2024-10-28 08:02:17 +01:00
plpy_util.h Mark all symbols exported from extension libraries PGDLLEXPORT. 2022-07-17 18:50:14 -07:00
plpython.h Update copyright for 2025 2025-01-01 11:21:55 -05:00
plpython3u--1.0.sql Invent "trusted" extensions, and remove the pg_pltemplate catalog. 2020-01-29 18:42:43 -05:00
plpython3u.control Create extension infrastructure for the core procedural languages. 2011-03-04 21:51:14 -05:00
plpython_system.h Update copyright for 2025 2025-01-01 11:21:55 -05:00