diff --git a/dbms/src/Common/HashTable/StringHashTable.h b/dbms/src/Common/HashTable/StringHashTable.h index e8df4ec0fa3e7ed4a5dfdc323a72b522c3094054..7ea17acb316c3900c4c12c8afafa2b97f94fa870 100644 --- a/dbms/src/Common/HashTable/StringHashTable.h +++ b/dbms/src/Common/HashTable/StringHashTable.h @@ -330,10 +330,13 @@ public: struct FindCallable { - template - LookupResult ALWAYS_INLINE operator()(Map & map, KeyHolder && key_holder, size_t hash) + // find() doesn't need any key memory management, so we don't work with + // any key holders here, only with normal keys. The key type is still + // different for every subtable, this is why it is a template parameter. + template + LookupResult ALWAYS_INLINE operator()(Submap & map, const SubmapKey & key, size_t hash) { - return lookupResultGetMapped(map.find(keyHolderGetKey(key_holder), hash)); + return lookupResultGetMapped(map.find(key, hash)); } };