Skip to content

Commit 974aedc

Browse files
committed
Fix frontend version of sh_error() in simplehash.h.
The code does not expect sh_error() to return, but the patch that made this header usable in frontend didn't get that memo. While here, plaster unlikely() on the tests that decide whether to invoke sh_error(), and add our standard copyright notice. Noted by Andres Freund. Back-patch to v13 where this frontend support came in. Discussion: https://postgr.es/m/0D54435C-1199-4361-9D74-2FBDCF8EA164@anarazel.de
1 parent 2acc84c commit 974aedc

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

src/include/lib/simplehash.h

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,11 @@
8686
* presence is relevant to determine whether a lookup needs to continue
8787
* looking or is done - buckets following a deleted element are shifted
8888
* backwards, unless they're empty or already at their optimal position.
89+
*
90+
* Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
91+
* Portions Copyright (c) 1994, Regents of the University of California
92+
*
93+
* src/include/lib/simplehash.h
8994
*/
9095

9196
#include "port/pg_bitutils.h"
@@ -288,7 +293,8 @@ SH_SCOPE void SH_STAT(SH_TYPE * tb);
288293
#define SIMPLEHASH_H
289294

290295
#ifdef FRONTEND
291-
#define sh_error(...) pg_log_error(__VA_ARGS__)
296+
#define sh_error(...) \
297+
do { pg_log_fatal(__VA_ARGS__); exit(1); } while(0)
292298
#define sh_log(...) pg_log_info(__VA_ARGS__)
293299
#else
294300
#define sh_error(...) elog(ERROR, __VA_ARGS__)
@@ -317,7 +323,7 @@ SH_COMPUTE_PARAMETERS(SH_TYPE * tb, uint64 newsize)
317323
* Verify that allocation of ->data is possible on this platform, without
318324
* overflowing Size.
319325
*/
320-
if ((((uint64) sizeof(SH_ELEMENT_TYPE)) * size) >= SIZE_MAX / 2)
326+
if (unlikely((((uint64) sizeof(SH_ELEMENT_TYPE)) * size) >= SIZE_MAX / 2))
321327
sh_error("hash table too large");
322328

323329
/* now set size */
@@ -602,10 +608,8 @@ SH_INSERT_HASH_INTERNAL(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash, bool *found)
602608
*/
603609
if (unlikely(tb->members >= tb->grow_threshold))
604610
{
605-
if (tb->size == SH_MAX_SIZE)
606-
{
611+
if (unlikely(tb->size == SH_MAX_SIZE))
607612
sh_error("hash table size exceeded");
608-
}
609613

610614
/*
611615
* When optimizing, it can be very useful to print these out.

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy