Re: hash_search and out of memory
Hitoshi Harada <umi.tanuki@gmail.com>
From: Hitoshi Harada <umi.tanuki@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2012-10-19T03:31:21Z
Lists: pgsql-hackers
Attachments
- hashoom.patch (application/octet-stream) patch
On Thu, Oct 18, 2012 at 8:35 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > I wrote: >> Hitoshi Harada <umi.tanuki@gmail.com> writes: >>> If OOM happens during expand_table() in hash_search_with_hash_value() >>> for RelationCacheInsert, > > the palloc-based allocator does throw > errors. I think that when that was designed, we were thinking that > palloc-based hash tables would be thrown away anyway after an error, > but of course that's not true for long-lived tables such as the relcache > hash table. > > I'm not terribly comfortable with trying to use a PG_TRY block to catch > an OOM error - there are too many ways that could break, and this code > path is by definition not very testable. I think moving up the > expand_table action is probably the best bet. Will you submit a patch? Here it is. I factored out the bucket finding code to re-calculate it after expansion. Thanks, -- Hitoshi Harada