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