pgsql: Prevent growth of simplehash tables when they're "too empty".

From: Andres Freund <andres(at)anarazel(dot)de>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Prevent growth of simplehash tables when they're "too empty".
Date: 2018-01-29 19:25:57
Message-ID: E1egF41-0004rH-DA@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Prevent growth of simplehash tables when they're "too empty".

In cases where simplehash tables where filled with either a lot of
conflicting hash-values, or values that hash to consecutive
values (i.e. build "chains") the growth heuristics in
d4c62a6b623d6eef88218158e9fa3cf974c6c7e5 could trigger rather
explosively.

To fix that, address some of the reasons (see previous commit) of why
the growth heuristics where needed, and only allow growth when the
table isn't too empty. While that means there's a few cases of bad
input that can be slower, that seems a lot better than running very
quickly out of memory.

Author: Tomas Vondra and Andres Freund, with additional input by
Thomas Munro, Tom Lane Todd A. Cook
Reported-By: Todd A. Cook, Tomas Vondra, Thomas Munro
Discussion: https://postgr.es/m/20171127185700.1470.20362@wrigleys.postgresql.org
Backpatch: 10, where simplehash was introduced

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/ab9f2c429d8fbd3580cd2ae5f2054ba6956b1f60

Modified Files
--------------
src/include/lib/simplehash.h | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Andres Freund 2018-01-29 19:26:00 pgsql: Backport: Add inline murmurhash32(uint32) function.
Previous Message Peter Eisentraut 2018-01-29 19:24:25 pgsql: psql documentation fixes