0001-Move-bitmap_hash-and-bitmap_match-to-bitmapset.c.patch
application/octet-stream
Filename: 0001-Move-bitmap_hash-and-bitmap_match-to-bitmapset.c.patch
Type: application/octet-stream
Part: 0
Patch
Format: format-patch
Series: patch 0001
Subject: Move bitmap_hash and bitmap_match to bitmapset.c.
| File | + | − |
|---|---|---|
| src/backend/nodes/bitmapset.c | 23 | 0 |
| src/backend/utils/hash/hashfn.c | 0 | 24 |
| src/include/nodes/bitmapset.h | 2 | 0 |
| src/include/utils/hsearch.h | 0 | 2 |
From bc970297d1894b95bcd79283762800e7bfc8e9f8 Mon Sep 17 00:00:00 2001
From: Robert Haas <rhaas@postgresql.org>
Date: Fri, 7 Feb 2020 11:25:46 -0500
Subject: [PATCH 1/4] Move bitmap_hash and bitmap_match to bitmapset.c.
The closely-related function bms_hash_value is already defined in that
file, and this change means that hashfn.c no longer needs to depend on
nodes/bitmapset.h.
---
src/backend/nodes/bitmapset.c | 23 +++++++++++++++++++++++
src/backend/utils/hash/hashfn.c | 24 ------------------------
src/include/nodes/bitmapset.h | 2 ++
src/include/utils/hsearch.h | 2 --
4 files changed, 25 insertions(+), 26 deletions(-)
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 */
--
2.17.2 (Apple Git-113)