Hi, hackers
If I understand correctly, we only need to check the specific bit
to determine whether a hash element needs relocation:
diff --git a/src/backend/utils/hash/dynahash.c
b/src/backend/utils/hash/dynahash.c
index 1ad155d446e..32fbae71995 100644
--- a/src/backend/utils/hash/dynahash.c
+++ b/src/backend/utils/hash/dynahash.c
@@ -1626,7 +1626,7 @@ expand_table(HTAB *hashp)
currElement =
nextElement)
{
nextElement =
currElement->link;
- if ((long)
calc_bucket(hctl, currElement->hashvalue) == old_bucket)
+ if
(!(currElement->hashvalue & (hctl->low_mask + 1)))
{
*oldlink = currElement;
oldlink = &currElement->link;
--
Regards,
ChangAo Chen
v1-0001-Small-optimization-with-expanding-dynamic-hash-ta.patch
Description: Binary data
