I've attached a patch which implements Bob Jenkin's hash function for
authorBruce Momjian
Wed, 6 Mar 2002 20:49:46 +0000 (20:49 +0000)
committerBruce Momjian
Wed, 6 Mar 2002 20:49:46 +0000 (20:49 +0000)
commit7ab746731812fb4574f04a7402eaa40d15e29720
tree11883b3a5a44cf0401c3647599a3d1502c711623
parent5b5cef9abd92e6e17f78cbf2838ac898f3427255
I've attached a patch which implements Bob Jenkin's hash function for
PostgreSQL. This hash function replaces the one used by hash indexes and
the catalog cache. Hash joins use a different, relatively poor-quality
hash function, but I'll fix that later.

As suggested by Tom Lane, this patch also changes the size of the fixed
hash table used by the catalog cache to be a power-of-2 (instead of a
prime: I chose 256 instead of 257). This allows the catcache to lookup
hash buckets using a simple bitmask. This should improve the performance
of the catalog cache slightly, since the previous method (modulo a
prime) was slow.

In my tests, this improves the performance of hash indexes by between 4%
and 8%; the performance when using btree indexes or seqscans is
basically unchanged.

Neil Conway 
src/backend/access/hash/hash.c
src/backend/access/hash/hashfunc.c
src/backend/access/hash/hashinsert.c
src/backend/access/hash/hashovfl.c
src/backend/access/hash/hashpage.c
src/backend/access/hash/hashutil.c
src/backend/executor/nodeHash.c
src/backend/utils/cache/catcache.c
src/include/access/hash.h
src/include/utils/catcache.h