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(...)