pgsql: Allow repalloc() to give back space when a large chunk is downsi

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Allow repalloc() to give back space when a large chunk is downsi
Дата
Msg-id E1iG5LN-0006Lk-KE@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Allow repalloc() to give back space when a large chunk is downsized.

Up to now, if you resized a large (>8K) palloc chunk down to a smaller
size, aset.c made no attempt to return any space to the malloc pool.
That's unpleasant if a really large allocation is resized to a
significantly smaller size.  I think no such cases existed when this
code was designed, and I'm not sure whether they're common even yet,
but an upcoming fix to encoding conversion will certainly create such
cases.  Therefore, fix AllocSetRealloc so that it gives realloc()
a chance to do something with the block.  This doesn't noticeably
increase complexity, we mostly just have to change the order in which
the cases are considered.

Back-patch to all supported branches.

Discussion: https://postgr.es/m/20190816181418.GA898@alvherre.pgsql
Discussion: https://postgr.es/m/3614.1569359690@sss.pgh.pa.us

Branch
------
REL_10_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/9ad1b572d8b7539d9c94abf66dbe0f70d002c9e3

Modified Files
--------------
src/backend/utils/mmgr/aset.c | 140 +++++++++++++++++++++++-------------------
1 file changed, 76 insertions(+), 64 deletions(-)


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

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: pgsql: Implement jsonpath .datetime() method
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Avoid unnecessary out-of-memory errors during encoding conversio