summaryrefslogtreecommitdiff
path: root/include/hash.h
diff options
context:
space:
mode:
authorMikael Ronstrom <mikael@mysql.com>2009-11-20 19:27:54 +0100
committerMikael Ronstrom <mikael@mysql.com>2009-11-20 19:27:54 +0100
commitdd31eaa550aaf251b0e21b184203355239f4afb9 (patch)
tree5e7cec0a4e8dad188de6389d0713332048adaed0 /include/hash.h
parent5aeeaaf507ac87f6ff56806fe8a356cea7d4a48f (diff)
parent58494ba0dfb4fad76deb712383f71c684bb97091 (diff)
downloadmariadb-git-dd31eaa550aaf251b0e21b184203355239f4afb9.tar.gz
WL#5137, Remove hash calculation from LOCK_open in open_table
Diffstat (limited to 'include/hash.h')
-rw-r--r--include/hash.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/hash.h b/include/hash.h
index d870e17c341..515c764214d 100644
--- a/include/hash.h
+++ b/include/hash.h
@@ -30,6 +30,7 @@ extern "C" {
/* flags for hash_init */
#define HASH_UNIQUE 1 /* hash_insert fails on duplicate key */
+typedef uint my_hash_value_type;
typedef uchar *(*my_hash_get_key)(const uchar *,size_t*,my_bool);
typedef void (*my_hash_free_key)(void *);
@@ -60,8 +61,18 @@ void my_hash_free(HASH *tree);
void my_hash_reset(HASH *hash);
uchar *my_hash_element(HASH *hash, ulong idx);
uchar *my_hash_search(const HASH *info, const uchar *key, size_t length);
+uchar *my_hash_search_using_hash_value(const HASH *info,
+ my_hash_value_type hash_value,
+ const uchar *key, size_t length);
+my_hash_value_type my_calc_hash(const HASH *info,
+ const uchar *key, size_t length);
uchar *my_hash_first(const HASH *info, const uchar *key, size_t length,
HASH_SEARCH_STATE *state);
+uchar *my_hash_first_from_hash_value(const HASH *info,
+ my_hash_value_type hash_value,
+ const uchar *key,
+ size_t length,
+ HASH_SEARCH_STATE *state);
uchar *my_hash_next(const HASH *info, const uchar *key, size_t length,
HASH_SEARCH_STATE *state);
my_bool my_hash_insert(HASH *info, const uchar *data);