Re: simplehash: preserve consistency in case of OOM

From: Andres Freund <andres(at)anarazel(dot)de>
To: Jeff Davis <pgsql(at)j-davis(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: simplehash: preserve consistency in case of OOM
Date: 2023-11-17 20:13:34
Message-ID: 20231117201334.eyb542qr5yk4gilq@awork3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

On 2023-11-17 10:42:54 -0800, Jeff Davis wrote:
> Right now, if allocation fails while growing a hashtable, it's left in
> an inconsistent state and can't be used again.

I'm not against allowing this - but I am curious, in which use cases is this
useful?

> @@ -446,10 +459,11 @@ SH_CREATE(MemoryContext ctx, uint32 nelements, void *private_data)
> /* increase nelements by fillfactor, want to store nelements elements */
> size = Min((double) SH_MAX_SIZE, ((double) nelements) / SH_FILLFACTOR);
>
> - SH_COMPUTE_PARAMETERS(tb, size);
> + size = SH_COMPUTE_SIZE(size);
>
> - tb->data = (SH_ELEMENT_TYPE *) SH_ALLOCATE(tb, sizeof(SH_ELEMENT_TYPE) * tb->size);
> + tb->data = (SH_ELEMENT_TYPE *) SH_ALLOCATE(tb, sizeof(SH_ELEMENT_TYPE) * size);
>
> + SH_UPDATE_PARAMETERS(tb, size);
> return tb;
> }

Maybe add a comment explaining why it's important to update parameters after
allocating?

Greetings,

Andres Freund

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2023-11-17 20:18:57 Re: should check collations when creating partitioned index
Previous Message Jeff Davis 2023-11-17 20:02:33 Re: should check collations when creating partitioned index