1 #ifndef __SM_BUFFER_POOL_HASHTABLE_HPP 2 #define __SM_BUFFER_POOL_HASHTABLE_HPP 8 #include "junction/junction/ConcurrentMap_Leapfrog.h" 17 static_cast<size_t>(
std::pow(2,
std::ceil(
std::
log2(block_count)))))) {};
40 return &(indexPair->first);
49 return &(indexPair->first);
58 return &(indexPair->second);
67 return &(indexPair->second);
74 bool inserted =
false;
78 delete (mutator.exchangeValue(idx_pair));
85 bool inserted =
false;
89 delete (mutator.exchangeValue(indexPair));
99 typedef typename turf::util::BestFit<PageID>::Unsigned
Hash;
106 return turf::util::avalanche(
Hash(key));
110 return (
PageID)turf::util::deavalanche(hash);
114 std::unique_ptr<junction::ConcurrentMap_Leapfrog<PageID, atomic_bf_idx_pair*, HashtableKeyTraits>>
_hashtable;
118 #endif // __SM_BUFFER_POOL_HASHTABLE_HPP atomic_bf_idx * lookupParent(PageID &&pid) const
Definition: buffer_pool_hashtable.hpp:64
Hashtable(bf_idx block_count)
Definition: buffer_pool_hashtable.hpp:14
Definition: buffer_pool.hpp:34
atomic_bf_idx_pair * lookupPair(const PageID &pid) const
Definition: buffer_pool_hashtable.hpp:29
static const Hash NullHash
Definition: buffer_pool_hashtable.hpp:103
bool tryInsert(const PageID &pid, atomic_bf_idx_pair *idx_pair)
Definition: buffer_pool_hashtable.hpp:73
std::pair< std::atomic< bf_idx >, std::atomic< bf_idx > > atomic_bf_idx_pair
Definition: basics.h:63
uint32_t bf_idx
Definition: basics.h:56
atomic_bf_idx * lookupParent(const PageID &pid) const
Definition: buffer_pool_hashtable.hpp:55
void erase(PageID &&pid)
Definition: buffer_pool_hashtable.hpp:25
atomic_bf_idx_pair * lookupPair(PageID &&pid) const
Definition: buffer_pool_hashtable.hpp:33
uint32_t PageID
Definition: basics.h:45
Definition: buffer_pool_hashtable.hpp:12
PageID Key
Definition: buffer_pool_hashtable.hpp:97
static const Key NullKey
Definition: buffer_pool_hashtable.hpp:101
turf::util::BestFit< PageID >::Unsigned Hash
Definition: buffer_pool_hashtable.hpp:99
Definition: buffer_pool_hashtable.hpp:96
bool tryInsert(PageID &&pid, atomic_bf_idx_pair *indexPair)
Definition: buffer_pool_hashtable.hpp:84
std::unique_ptr< junction::ConcurrentMap_Leapfrog< PageID, atomic_bf_idx_pair *, HashtableKeyTraits > > _hashtable
Definition: buffer_pool_hashtable.hpp:114
atomic_bf_idx * lookup(const PageID &pid) const
Definition: buffer_pool_hashtable.hpp:37
~Hashtable()
Definition: buffer_pool_hashtable.hpp:19
std::atomic< uint32_t > atomic_bf_idx
Definition: basics.h:58
void erase(const PageID &pid)
Definition: buffer_pool_hashtable.hpp:21
static Hash hash(PageID key)
Definition: buffer_pool_hashtable.hpp:105
atomic_bf_idx * lookup(PageID &&pid) const
Definition: buffer_pool_hashtable.hpp:46
static Key dehash(Hash hash)
Definition: buffer_pool_hashtable.hpp:109