diff --git a/src/backend/nodes/bitmapset.c b/src/backend/nodes/bitmapset.c index 648cc1a7eb..f711e6c699 100644 --- a/src/backend/nodes/bitmapset.c +++ b/src/backend/nodes/bitmapset.c @@ -1167,3 +1167,26 @@ bms_hash_value(const Bitmapset *a) return DatumGetUInt32(hash_any((const unsigned char *) a->words, (lastword + 1) * sizeof(bitmapword))); } + +/* + * bitmap_hash - hash function for keys that are (pointers to) Bitmapsets + * + * Note: don't forget to specify bitmap_match as the match function! + */ +uint32 +bitmap_hash(const void *key, Size keysize) +{ + Assert(keysize == sizeof(Bitmapset *)); + return bms_hash_value(*((const Bitmapset *const *) key)); +} + +/* + * bitmap_match - match function to use with bitmap_hash + */ +int +bitmap_match(const void *key1, const void *key2, Size keysize) +{ + Assert(keysize == sizeof(Bitmapset *)); + return !bms_equal(*((const Bitmapset *const *) key1), + *((const Bitmapset *const *) key2)); +} diff --git a/src/backend/utils/hash/hashfn.c b/src/backend/utils/hash/hashfn.c index dc3cbac7ef..fa46c59d25 100644 --- a/src/backend/utils/hash/hashfn.c +++ b/src/backend/utils/hash/hashfn.c @@ -23,7 +23,6 @@ #include "postgres.h" #include "fmgr.h" -#include "nodes/bitmapset.h" #include "utils/hashutils.h" #include "utils/hsearch.h" @@ -695,26 +694,3 @@ uint32_hash(const void *key, Size keysize) Assert(keysize == sizeof(uint32)); return DatumGetUInt32(hash_uint32(*((const uint32 *) key))); } - -/* - * bitmap_hash: hash function for keys that are (pointers to) Bitmapsets - * - * Note: don't forget to specify bitmap_match as the match function! - */ -uint32 -bitmap_hash(const void *key, Size keysize) -{ - Assert(keysize == sizeof(Bitmapset *)); - return bms_hash_value(*((const Bitmapset *const *) key)); -} - -/* - * bitmap_match: match function to use with bitmap_hash - */ -int -bitmap_match(const void *key1, const void *key2, Size keysize) -{ - Assert(keysize == sizeof(Bitmapset *)); - return !bms_equal(*((const Bitmapset *const *) key1), - *((const Bitmapset *const *) key2)); -} diff --git a/src/include/nodes/bitmapset.h b/src/include/nodes/bitmapset.h index b7b18a0b68..d113c271ee 100644 --- a/src/include/nodes/bitmapset.h +++ b/src/include/nodes/bitmapset.h @@ -116,5 +116,7 @@ extern int bms_prev_member(const Bitmapset *a, int prevbit); /* support for hashtables using Bitmapsets as keys: */ extern uint32 bms_hash_value(const Bitmapset *a); +extern uint32 bitmap_hash(const void *key, Size keysize); +extern int bitmap_match(const void *key1, const void *key2, Size keysize); #endif /* BITMAPSET_H */ diff --git a/src/include/utils/hsearch.h b/src/include/utils/hsearch.h index b0077b7827..934c4a399e 100644 --- a/src/include/utils/hsearch.h +++ b/src/include/utils/hsearch.h @@ -152,8 +152,6 @@ extern void AtEOSubXact_HashTables(bool isCommit, int nestDepth); extern uint32 string_hash(const void *key, Size keysize); extern uint32 tag_hash(const void *key, Size keysize); extern uint32 uint32_hash(const void *key, Size keysize); -extern uint32 bitmap_hash(const void *key, Size keysize); -extern int bitmap_match(const void *key1, const void *key2, Size keysize); #define oid_hash uint32_hash /* Remove me eventually */