pgsql: Fix memory leaks in record_out() and record_send().
От | Tom Lane |
---|---|
Тема | pgsql: Fix memory leaks in record_out() and record_send(). |
Дата | |
Msg-id | E1TYMRA-0007Vv-7Z@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Fix memory leaks in record_out() and record_send(). record_out() leaks memory: it fails to free the strings returned by the per-column output functions, and also is careless about detoasted values. This results in a query-lifespan memory leakage when returning composite values to the client, because printtup() runs the output functions in the query-lifespan memory context. Fix it to handle these issues the same way printtup() does. Also fix a similar leakage in record_send(). (At some point we might want to try to run output functions in shorter-lived memory contexts, so that we don't need a zero-leakage policy for them. But that would be a significantly more invasive patch, which doesn't seem like material for back-patching.) In passing, use appendStringInfoCharMacro instead of appendStringInfoChar in the innermost data-copying loop of record_out, to try to shave a few cycles from this function's runtime. Per trouble report from Carlos Henrique Reimer. Back-patch to all supported versions. Branch ------ REL9_1_STABLE Details ------- http://git.postgresql.org/pg/commitdiff/68a8ea6046a0583171a34269688a2bcd8d2f8f08 Modified Files -------------- src/backend/utils/adt/rowtypes.c | 52 +++++++++++++++++++++++++++++-------- 1 files changed, 40 insertions(+), 12 deletions(-)
В списке pgsql-committers по дате отправления: