blob: b7f96072c4ff3f40741694d4b83ea60edef08758 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
/*
* include/util/types.h
*
* Copyright (C) 2023 Douglas B. Rumbaugh <drumbaugh@psu.edu>
*
* All rights reserved. Published under the Modified BSD License.
*
* A centralized header file for various data types used throughout the
* code base. There are a few very specific types, such as header formats,
* that are defined within the header files that make direct use of them,
* but all generally usable, simple types are defined here.
*
*/
#pragma once
#include <cstdlib>
#include <cstdint>
#include <cstddef>
#include <string>
namespace de {
using std::byte;
/* Represents a page offset within a specific file (physical or virtual) */
typedef uint32_t PageNum;
/*
* Byte offset within a page. Also used for lengths of records, etc.,
* within the codebase. size_t isn't necessary, as the maximum offset
* is only parm::PAGE_SIZE
*/
typedef uint16_t PageOffset;
/* A unique identifier for a frame within a buffer or cache */
typedef int32_t FrameId;
/*
* A unique timestamp for use in MVCC concurrency control. Currently stored in
* record headers, but not used by anything.
*/
typedef uint32_t Timestamp;
const Timestamp TIMESTAMP_MIN = 0;
const Timestamp TIMESTAMP_MAX = UINT32_MAX;
/*
* Invalid values for various IDs. Used throughout the code base to indicate
* uninitialized values and error conditions.
*/
const PageNum INVALID_PNUM = 0;
const FrameId INVALID_FRID = -1;
/*
* An ID for a given shard within the index. The level_idx is the index
* in the memory_levels and disk_levels vectors corresponding to the
* shard, and the shard_idx is the index with the level (always 0 in the
* case of leveling). Note that the two vectors of levels are treated
* as a contiguous index space.
*/
struct ShardID {
ssize_t level_idx;
ssize_t shard_idx;
friend bool operator==(const ShardID &shid1, const ShardID &shid2) {
return shid1.level_idx == shid2.level_idx && shid1.shard_idx == shid2.shard_idx;
}
};
/* A placeholder for an invalid shard--also used to indicate the mutable buffer */
const ShardID INVALID_SHID = {-1, -1};
}
|