pgsql: Fix failure to account for memory used by tuplestore_putvalues()

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Fix failure to account for memory used by tuplestore_putvalues()
Дата
Msg-id E1QWuTn-0001zV-J6@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix failure to account for memory used by tuplestore_putvalues().

This oversight could result in a tuplestore using much more than the
intended amount of memory.  It would only happen in a code path that loaded
a tuplestore via tuplestore_putvalues(), and many of those won't emit huge
amounts of data; but cases such as holdable cursors and plpgsql's RETURN
NEXT command could have the problem.  The fix ensures that the tuplestore
will switch to write-to-disk mode when it overruns work_mem.

The potential overrun was finite, because we would still count the space
used by the tuple pointer array, so the tuplestore code would eventually
flip into write-to-disk mode anyway.  When storing wide tuples we would
go far past the expected work_mem usage before that happened; but this
may account for the lack of prior reports.

Back-patch to 8.4, where tuplestore_putvalues was introduced.

Per bug #6061 from Yann Delorme.

Branch
------
REL9_0_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/669ac03af62328e4eb572dacb8ba319414ef1211

Modified Files
--------------
src/backend/utils/sort/tuplestore.c |    9 +++++----
1 files changed, 5 insertions(+), 4 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Fix oversights in pg_basebackup's -z (compression) option.
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Fix failure to account for memory used by tuplestore_putvalues()