libfoedus-core
FOEDUS Core Library
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
masstree_id.hpp File Reference

Definitions of IDs in this package and a few related constant values. More...

Detailed Description

Definitions of IDs in this package and a few related constant values.

Definition in file masstree_id.hpp.

#include <stdint.h>
#include <cstring>
#include <limits>
#include "foedus/compiler.hpp"
#include "foedus/assorted/endianness.hpp"
#include "foedus/storage/storage_id.hpp"
Include dependency graph for masstree_id.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 foedus
 Root package of FOEDUS (Fast Optimistic Engine for Data Unification Services).
 
 foedus::storage
 Storage Manager, which implements a couple of key/value stores.
 
 foedus::storage::masstree
 Masstree Storage, 64-bit B-tries with internal B-trees.
 

Typedefs

typedef uint8_t foedus::storage::masstree::Layer
 Represents the depth of a B-trie layer. More...
 
typedef uint8_t foedus::storage::masstree::InLayerLevel
 Represents the depth of a B-tree node in a B-trie layer. More...
 
typedef uint16_t foedus::storage::masstree::KeyLength
 Represents a byte-length of a key in this package. More...
 
typedef uint16_t foedus::storage::masstree::PayloadLength
 Represents a byte-length of a payload in this package. More...
 
typedef uint16_t foedus::storage::masstree::DataOffset
 Byte-offset in a page. More...
 
typedef uint16_t foedus::storage::masstree::SlotIndex
 Index of a record in a (border) page. More...
 
typedef uint64_t foedus::storage::masstree::KeySlice
 Each key slice is an 8-byte integer. More...
 

Functions

template<typename T >
KeySlice foedus::storage::masstree::normalize_primitive (T value)
 Order-preserving normalization for primitive key types. More...
 
template<typename T >
foedus::storage::masstree::denormalize_primitive (KeySlice value)
 Opposite of normalize_primitive(). More...
 
KeySlice foedus::storage::masstree::normalize_be_bytes_full_aligned (const void *be_bytes)
 Convert an aligned big-endian byte array of at least 8-bytes-length to KeySlice. More...
 
KeySlice foedus::storage::masstree::normalize_be_bytes_full (const void *be_bytes)
 Convert a big-endian byte array of at least 8-bytes-length to KeySlice. More...
 
KeySlice foedus::storage::masstree::normalize_be_bytes_fragment (const void *be_bytes, uint32_t length)
 Convert a big-endian byte array of given length to KeySlice. More...
 
KeySlice foedus::storage::masstree::slice_key (const void *be_bytes, KeyLength slice_length)
 Extract a part of a big-endian byte array of given length as KeySlice. More...
 
KeySlice foedus::storage::masstree::slice_layer (const void *be_bytes, KeyLength key_length, Layer current_layer)
 Extract a part of a big-endian byte array of given length as KeySlice. More...
 
uint16_t foedus::storage::masstree::count_common_slices (const void *left, const void *right, uint16_t max_slices)
 Returns the number of 8-byte slices that the two strings share as prefix. More...
 
bool foedus::storage::masstree::is_key_aligned_and_zero_padded (const char *key, KeyLength key_length)
 Returns if the given key is 8-bytes aligned and also zero-padded to 8-bytes for easier slicing (which most of our code does). More...
 

Variables

const Layer foedus::storage::masstree::kMaxLayer = 63U
 Maximum value for Layer. More...
 
const InLayerLevel foedus::storage::masstree::kMaxSaneInLayerLevel = 15U
 If InLayerLevel exceeds this value, there must be something wrong. More...
 
const KeyLength foedus::storage::masstree::kMaxKeyLength = 1024U
 Max length of a key. More...
 
const KeyLength foedus::storage::masstree::kInitiallyNextLayer = 0xFFFFU
 A special key length value that denotes the record in a border page was initially a next-layer pointer, thus the record has no suffix region. More...
 
const PayloadLength foedus::storage::masstree::kMaxPayloadLength = 1024U
 Max length of a payload. More...
 
const uint64_t foedus::storage::masstree::kSliceLen = sizeof(KeySlice)
 Shorthand for sizeof(KeySlice). More...
 
const KeySlice foedus::storage::masstree::kInfimumSlice = 0
 
const KeySlice foedus::storage::masstree::kSupremumSlice = 0xFFFFFFFFFFFFFFFFULL
 
const uint32_t foedus::storage::masstree::kCommonPageHeaderSize = 80U
 Size of the base page class (MasstreePage), which is the common header for intermediate and border pages placed at the beginning. More...
 
const uint32_t foedus::storage::masstree::kBorderPageAdditionalHeaderSize = 8U
 Misc header attributes specific to MasstreeBorderPage placed after the common header. More...
 
const uint32_t foedus::storage::masstree::kBorderPageSlotSize = 32U
 Byte size of one slot in MasstreeBorderPage excluding slice information. More...
 
const SlotIndex foedus::storage::masstree::kBorderPageMaxSlots
 Maximum number of slots in one MasstreeBorderPage. More...
 
const uint32_t foedus::storage::masstree::kBorderPageDataPartSize
 Byte size of the record data part (data_) in MasstreeBorderPage. More...
 
const DataOffset foedus::storage::masstree::kBorderPageDataPartOffset
 Offset of data_ member in MasstreeBorderPage. More...