PostgreSQL Source Code: src/bin/pg_rewind/datapagemap.c Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
14
17
19{
22};
23
24
25
26
27
28
29
30
31void
33{
34 int offset;
35 int bitno;
36
37 offset = blkno / 8;
38 bitno = blkno % 8;
39
40
42 {
44 int newsize;
45
46
47
48
49
50
51
52 newsize = offset + 1;
53 newsize += 10;
54
56
57
58 memset(&map->bitmap[oldsize], 0, newsize - oldsize);
59
61 }
62
63
64 map->bitmap[offset] |= (1 << bitno);
65}
66
67
68
69
70
71
72
73
76{
78
80 iter->map = map;
82
83 return iter;
84}
85
86bool
88{
90
91 for (;;)
92 {
94 int nextoff = blk / 8;
95 int bitno = blk % 8;
96
98 break;
99
101
102 if (map->bitmap[nextoff] & (1 << bitno))
103 {
104 *blkno = blk;
105 return true;
106 }
107 }
108
109
110 return false;
111}
112
113
114
115
116void
118{
121
125
127}
bool datapagemap_next(datapagemap_iterator_t *iter, BlockNumber *blkno)
void datapagemap_print(datapagemap_t *map)
datapagemap_iterator_t * datapagemap_iterate(datapagemap_t *map)
void datapagemap_add(datapagemap_t *map, BlockNumber blkno)
void * pg_malloc(size_t size)
void * pg_realloc(void *ptr, size_t size)
#define pg_log_debug(...)