Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8cee4be

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

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
#defineSIMPLEHASH_H
289294

290295
#ifdefFRONTEND
291-
#definesh_error(...) pg_log_error(__VA_ARGS__)
296+
#definesh_error(...) \
297+
do { pg_log_fatal(__VA_ARGS__); exit(1); } while(0)
292298
#definesh_log(...) pg_log_info(__VA_ARGS__)
293299
#else
294300
#definesh_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)

[8]ページ先頭

©2009-2025 Movatter.jp