pgsql: Fix hash_search to avoid corruption of the hash table on out-of-

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Fix hash_search to avoid corruption of the hash table on out-of-
Дата
Msg-id E1TPIC3-0001fo-CL@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix hash_search to avoid corruption of the hash table on out-of-memory.

An out-of-memory error during expand_table() on a palloc-based hash table
would leave a partially-initialized entry in the table.  This would not be
harmful for transient hash tables, since they'd get thrown away anyway at
transaction abort.  But for long-lived hash tables, such as the relcache
hash, this would effectively corrupt the table, leading to crash or other
misbehavior later.

To fix, rearrange the order of operations so that table enlargement is
attempted before we insert a new entry, rather than after adding it
to the hash table.

Problem discovered by Hitoshi Harada, though this is a bit different
from his proposed patch.

Branch
------
REL8_3_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/613a9ed76f3a07b18195a33391ca2afa68811368

Modified Files
--------------
src/backend/utils/hash/dynahash.c |   41 ++++++++++++++++++++++--------------
1 files changed, 25 insertions(+), 16 deletions(-)


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Fix hash_search to avoid corruption of the hash table on out-of-
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Fix hash_search to avoid corruption of the hash table on out-of-