PostgreSQL Source Code git master
Loading...
Searching...
No Matches
bufmask.h File Reference
#include "storage/block.h"
#include "storage/bufmgr.h"
Include dependency graph for bufmask.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define MASK_MARKER   0
 

Functions

void mask_page_lsn_and_checksum (Page page)
 
void mask_page_hint_bits (Page page)
 
void mask_unused_space (Page page)
 
void mask_lp_flags (Page page)
 
void mask_page_content (Page page)
 

Macro Definition Documentation

◆ MASK_MARKER

#define MASK_MARKER   0

Definition at line 24 of file bufmask.h.

Function Documentation

◆ mask_lp_flags()

void mask_lp_flags ( Page  page)
extern

Definition at line 94 of file bufmask.c.

95{
96 OffsetNumber offnum,
97 maxoff;
98
99 maxoff = PageGetMaxOffsetNumber(page);
100 for (offnum = FirstOffsetNumber;
101 offnum <= maxoff;
102 offnum = OffsetNumberNext(offnum))
103 {
104 ItemId itemId = PageGetItemId(page, offnum);
105
106 if (ItemIdIsUsed(itemId))
107 itemId->lp_flags = LP_UNUSED;
108 }
109}
static ItemId PageGetItemId(Page page, OffsetNumber offsetNumber)
Definition bufpage.h:269
static OffsetNumber PageGetMaxOffsetNumber(const PageData *page)
Definition bufpage.h:397
#define LP_UNUSED
Definition itemid.h:38
#define ItemIdIsUsed(itemId)
Definition itemid.h:92
#define OffsetNumberNext(offsetNumber)
Definition off.h:52
uint16 OffsetNumber
Definition off.h:24
#define FirstOffsetNumber
Definition off.h:27
static int fb(int x)

References fb(), FirstOffsetNumber, ItemIdIsUsed, LP_UNUSED, OffsetNumberNext, PageGetItemId(), and PageGetMaxOffsetNumber().

Referenced by btree_mask(), gist_mask(), and hash_mask().

◆ mask_page_content()

void mask_page_content ( Page  page)
extern

Definition at line 118 of file bufmask.c.

119{
120 /* Mask Page Content */
123
124 /* Mask pd_lower and pd_upper */
125 memset(&((PageHeader) page)->pd_lower, MASK_MARKER,
126 sizeof(uint16));
127 memset(&((PageHeader) page)->pd_upper, MASK_MARKER,
128 sizeof(uint16));
129}
#define MASK_MARKER
Definition bufmask.h:24
#define SizeOfPageHeaderData
Definition bufpage.h:242
uint16_t uint16
Definition c.h:617

References fb(), MASK_MARKER, and SizeOfPageHeaderData.

Referenced by gin_mask(), and hash_mask().

◆ mask_page_hint_bits()

void mask_page_hint_bits ( Page  page)
extern

Definition at line 46 of file bufmask.c.

47{
48 PageHeader phdr = (PageHeader) page;
49
50 /* Ignore prune_xid (it's like a hint-bit) */
52
53 /* Ignore PD_PAGE_FULL and PD_HAS_FREE_LINES flags, they are just hints. */
54 PageClearFull(page);
56
57 /*
58 * PD_ALL_VISIBLE is masked during WAL consistency checking. XXX: It is
59 * worth investigating if we could stop doing this.
60 */
62}
PageHeaderData * PageHeader
Definition bufpage.h:199
static void PageClearAllVisible(Page page)
Definition bufpage.h:465
static void PageClearFull(Page page)
Definition bufpage.h:449
static void PageClearHasFreeLinePointers(Page page)
Definition bufpage.h:433
TransactionId pd_prune_xid
Definition bufpage.h:195

References MASK_MARKER, PageClearAllVisible(), PageClearFull(), PageClearHasFreeLinePointers(), and PageHeaderData::pd_prune_xid.

Referenced by brin_mask(), btree_mask(), gin_mask(), gist_mask(), hash_mask(), heap_mask(), and spg_mask().

◆ mask_page_lsn_and_checksum()

void mask_page_lsn_and_checksum ( Page  page)
extern

Definition at line 31 of file bufmask.c.

32{
33 PageHeader phdr = (PageHeader) page;
34
37}
static void PageXLogRecPtrSet(volatile PageXLogRecPtr *ptr, XLogRecPtr lsn)
Definition bufpage.h:131
uint64_t uint64
Definition c.h:619
PageXLogRecPtr pd_lsn
Definition bufpage.h:187
uint16 pd_checksum
Definition bufpage.h:189

References MASK_MARKER, PageXLogRecPtrSet(), PageHeaderData::pd_checksum, and PageHeaderData::pd_lsn.

Referenced by brin_mask(), btree_mask(), generic_mask(), gin_mask(), gist_mask(), hash_mask(), heap_mask(), seq_mask(), and spg_mask().

◆ mask_unused_space()

void mask_unused_space ( Page  page)
extern

Definition at line 70 of file bufmask.c.

71{
72 int pd_lower = ((PageHeader) page)->pd_lower;
73 int pd_upper = ((PageHeader) page)->pd_upper;
74 int pd_special = ((PageHeader) page)->pd_special;
75
76 /* Sanity check */
77 if (pd_lower > pd_upper || pd_special < pd_upper ||
79 {
80 elog(ERROR, "invalid page pd_lower %u pd_upper %u pd_special %u",
81 pd_lower, pd_upper, pd_special);
82 }
83
84 memset(page + pd_lower, MASK_MARKER, pd_upper - pd_lower);
85}
#define ERROR
Definition elog.h:39
#define elog(elevel,...)
Definition elog.h:226

References elog, ERROR, fb(), and MASK_MARKER.

Referenced by brin_mask(), btree_mask(), generic_mask(), gin_mask(), gist_mask(), hash_mask(), heap_mask(), seq_mask(), and spg_mask().