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-0007Vz-9M@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 ------ REL8_4_STABLE Details ------- http://git.postgresql.org/pg/commitdiff/e405151b25f11dbd8bc716824ccc908ef21217da Modified Files -------------- src/backend/utils/adt/rowtypes.c | 52 +++++++++++++++++++++++++++++-------- 1 files changed, 40 insertions(+), 12 deletions(-)
В списке pgsql-committers по дате отправления: