32 o <<
"<HashIntermediatePage>";
33 o << std::endl <<
" <vaddr>" <<
assorted::Hex(reinterpret_cast<uintptr_t>(&v), 16) <<
"</vaddr>";
34 o << std::endl <<
" " << v.
header();
35 o << std::endl <<
" <level>" <<
static_cast<int>(v.
get_level()) <<
"</level>";
44 o << std::endl <<
" <Pointer index=\"" <<
static_cast<int>(i)
45 <<
"\" bin_begin=\"" << (total_begin + i * interval)
46 <<
"\">" << pointer <<
"</Pointer>";
48 o <<
"</HashIntermediatePage>";
53 o <<
"<HashDataPage>";
54 o << std::endl <<
" <vaddr>" <<
assorted::Hex(reinterpret_cast<uintptr_t>(&v), 16) <<
"</vaddr>";
55 o << std::endl << v.
header();
58 o << std::endl <<
" <record_count>" << records <<
"</record_count>";
59 o << std::endl <<
" <next_page>" << v.
next_page() <<
"</next_page>";
60 o << std::endl <<
" <records>";
63 o << std::endl <<
" <record index=\"" << i
67 <<
"\" offset=\"" << slot->
offset_
82 o << std::endl <<
" </records>";
83 o << std::endl <<
" <BloomFilter>" << v.bloom_filter_ <<
"</BloomFilter>";
84 o <<
"</HashDataPage>";
100 correct_filter.
clear();
109 HashBin bin = hash >> bin_shifts;
119 for (uint16_t i = 0; i <
sizeof(correct_filter.
values_); ++i) {
uint8_t get_bin_shifts() const
Represents a pointer to another page (usually a child page).
bool is_both_null() const
const HashBinRange & get_bin_range() const
xct::RwLockableXctId tid_
TID of the record.
Root package of FOEDUS (Fast Optimistic Engine for Data Unification Services).
uint16_t payload_length_
Byte length of the payload.
void assert_entries_impl() const
defined in hash_page_debug.cpp.
uint16_t get_aligned_key_length() const
uint16_t key_length_
Byte length of key of the record.
HashValue hash_
Full hash of the key of the record.
const Slot * get_slot_address(DataPageSlotIndex record) const __attribute__((always_inline))
same as &get_slot(), but this is more explicit and easier to understand/maintain
Independent utility methods/classes for hashination, or hash functions.
void clear()
usually zero-cleared as part of a data page, but in case of specifically clearing this ...
HashValue hashinate(const void *key, uint16_t key_length)
Calculates hash value for general input.
std::ostream & operator<<(std::ostream &o, const HashCombo &v)
Fix-sized slot for each record, which is placed at the end of data region.
HashBin begin_
Inclusive beginning of the range.
uint16_t DataPageSlotIndex
Equivalent to std::hex in case the stream doesn't support it.
uint16_t physical_record_length_
Byte count this record occupies.
uint8_t values_[kHashDataPageBloomFilterBytes]
Represents an intermediate page in Hashtable Storage.
static BloomFilterFingerprint extract_fingerprint(HashValue fullhash)
char * record_from_offset(uint16_t offset)
uint64_t HashBin
Represents a bin of a hash value.
void add(const BloomFilterFingerprint &fingerprint) __attribute__((always_inline))
Adds the fingerprint to this bloom filter.
Represents an individual data page in Hashtable Storage.
const DualPagePointer & next_page() const __attribute__((always_inline))
A fingerprint for bloom filter in each HashDataPage.
Convenient way of writing hex integers to stream.
To quickly check whether a HashDataPage might contain a specific hash value, we maintain a non-counti...
const uint16_t kHashDataPageHeaderSize
Byte size of header in data page of hash storage.
uint8_t get_level() const
const uint8_t kHashIntermediatePageFanout
Number of pointers in an intermediate page of hash storage.
const uint64_t kHashMaxBins[]
kHashTotalBins[n] gives the maximum number of hash bins n-level hash can hold.
uint16_t get_record_count() const __attribute__((always_inline))
#define ASSERT_ND(x)
A warning-free wrapper macro of assert() that has no performance effect in release mode even when 'x'...
Definitions of IDs in this package and a few related constant values.
DualPagePointer & get_pointer(uint16_t index)
const uint16_t kPageSize
A constant defining the page size (in bytes) of both snapshot pages and volatile pages.
uint16_t offset_
Byte offset in data_ where this record starts.
uint64_t HashValue
Represents a full 64-bit hash value calculated from a key.