summaryrefslogtreecommitdiff
path: root/sql/sql_hset.h
diff options
context:
space:
mode:
authorSergey Vojtovich <svoj@mariadb.org>2019-06-20 18:02:40 +0400
committerSergey Vojtovich <svoj@mariadb.org>2019-09-24 15:49:35 +0400
commitf5c3ad1913f60b02a283c5ba3ff53f6259b3f1a3 (patch)
treef3e1a86359eeb93c0d4bab1cad78fe09dded5b7e /sql/sql_hset.h
parentad77e3ac0930a68e61378790a232f1056f0a8e7c (diff)
downloadmariadb-git-f5c3ad1913f60b02a283c5ba3ff53f6259b3f1a3.tar.gz
MDEV-16470 - Session user variables tracker
Based on contribution by Dapeng Huang.
Diffstat (limited to 'sql/sql_hset.h')
-rw-r--r--sql/sql_hset.h18
1 files changed, 11 insertions, 7 deletions
diff --git a/sql/sql_hset.h b/sql/sql_hset.h
index 7834349a2f7..aaecef9f0d4 100644
--- a/sql/sql_hset.h
+++ b/sql/sql_hset.h
@@ -38,6 +38,13 @@ public:
m_hash.get_key= (my_hash_get_key)K;
m_hash.charset= cs;
}
+ Hash_set(CHARSET_INFO *charset, ulong default_array_elements,
+ size_t key_offset, size_t key_length, my_hash_get_key get_key,
+ void (*free_element)(void*), uint flags)
+ {
+ my_hash_init(&m_hash, charset, default_array_elements, key_offset,
+ key_length, get_key, free_element, flags);
+ }
/**
Destroy the hash by freeing the buckets table. Does
not call destructors for the elements.
@@ -58,13 +65,8 @@ public:
bool insert(T *value)
{
my_hash_init_opt(&m_hash, m_hash.charset, START_SIZE, 0, 0,
- m_hash.get_key, 0, MYF(0));
- size_t key_len;
- uchar *v= reinterpret_cast<uchar *>(value);
- const uchar *key= m_hash.get_key(v, &key_len, FALSE);
- if (find(key, key_len) == NULL)
- return my_hash_insert(&m_hash, v);
- return FALSE;
+ m_hash.get_key, 0, HASH_UNIQUE);
+ return my_hash_insert(&m_hash, reinterpret_cast<const uchar*>(value));
}
bool remove(T *value)
{
@@ -78,6 +80,8 @@ public:
bool is_empty() const { return m_hash.records == 0; }
/** Returns the number of unique elements. */
size_t size() const { return static_cast<size_t>(m_hash.records); }
+ /** Erases all elements from the container */
+ void clear() { my_hash_reset(&m_hash); }
const T* at(size_t i) const
{
return reinterpret_cast<T*>(my_hash_element(const_cast<HASH*>(&m_hash), i));