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

Commit2e01d05

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 parent4760060 commit2e01d05

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
@@ -55,6 +55,11 @@
5555
* presence is relevant to determine whether a lookup needs to continue
5656
* looking or is done - buckets following a deleted element are shifted
5757
* backwards, unless they're empty or already at their optimal position.
58+
*
59+
* Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
60+
* Portions Copyright (c) 1994, Regents of the University of California
61+
*
62+
* src/include/lib/simplehash.h
5863
*/
5964

6065
#include"port/pg_bitutils.h"
@@ -218,7 +223,8 @@ SH_SCOPE void SH_STAT(SH_TYPE * tb);
218223
#defineSIMPLEHASH_H
219224

220225
#ifdefFRONTEND
221-
#definesh_error(...) pg_log_error(__VA_ARGS__)
226+
#definesh_error(...) \
227+
do { pg_log_fatal(__VA_ARGS__); exit(1); } while(0)
222228
#definesh_log(...) pg_log_info(__VA_ARGS__)
223229
#else
224230
#definesh_error(...) elog(ERROR, __VA_ARGS__)
@@ -247,7 +253,7 @@ SH_COMPUTE_PARAMETERS(SH_TYPE * tb, uint64 newsize)
247253
* Verify that allocation of ->data is possible on this platform, without
248254
* overflowing Size.
249255
*/
250-
if ((((uint64)sizeof(SH_ELEMENT_TYPE))*size) >=SIZE_MAX /2)
256+
if (unlikely((((uint64)sizeof(SH_ELEMENT_TYPE))*size) >=SIZE_MAX /2))
251257
sh_error("hash table too large");
252258

253259
/* now set size */
@@ -532,10 +538,8 @@ SH_INSERT_HASH_INTERNAL(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash, bool *found)
532538
*/
533539
if (unlikely(tb->members >=tb->grow_threshold))
534540
{
535-
if (tb->size==SH_MAX_SIZE)
536-
{
541+
if (unlikely(tb->size==SH_MAX_SIZE))
537542
sh_error("hash table size exceeded");
538-
}
539543

540544
/*
541545
* When optimizing, it can be very useful to print these out.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp