PostgreSQL Source Code  git master
nbtdesc.c File Reference
#include "postgres.h"
#include "access/nbtxlog.h"
Include dependency graph for nbtdesc.c:

Go to the source code of this file.

Functions

void btree_desc (StringInfo buf, XLogReaderState *record)
 
const char * btree_identify (uint8 info)
 

Function Documentation

◆ btree_desc()

void btree_desc ( StringInfo  buf,
XLogReaderState record 
)

Definition at line 20 of file nbtdesc.c.

References appendStringInfo(), xl_btree_unlink_page::btpo_xact, RelFileNode::dbNode, xl_btree_split::firstright, xl_btree_metadata::last_cleanup_num_heap_tuples, xl_btree_vacuum::lastBlockVacuumed, xl_btree_delete::latestRemovedXid, xl_btree_reuse_page::latestRemovedXid, xl_btree_mark_page_halfdead::leafblk, xl_btree_unlink_page::leafleftsib, xl_btree_unlink_page::leafrightsib, xl_btree_mark_page_halfdead::leftblk, xl_btree_unlink_page::leftsib, xl_btree_split::level, xl_btree_newroot::level, xl_btree_split::newitemoff, xl_btree_delete::nitems, xl_btree_reuse_page::node, xl_btree_insert::offnum, xl_btree_metadata::oldest_btpo_xact, RelFileNode::relNode, xl_btree_mark_page_halfdead::rightblk, xl_btree_unlink_page::rightsib, RelFileNode::spcNode, xl_btree_mark_page_halfdead::topparent, xl_btree_unlink_page::topparent, XLOG_BTREE_DELETE, XLOG_BTREE_INSERT_LEAF, XLOG_BTREE_INSERT_META, XLOG_BTREE_INSERT_UPPER, XLOG_BTREE_MARK_PAGE_HALFDEAD, XLOG_BTREE_META_CLEANUP, XLOG_BTREE_NEWROOT, XLOG_BTREE_REUSE_PAGE, XLOG_BTREE_SPLIT_L, XLOG_BTREE_SPLIT_R, XLOG_BTREE_UNLINK_PAGE, XLOG_BTREE_UNLINK_PAGE_META, XLOG_BTREE_VACUUM, XLogRecGetBlockData(), XLogRecGetData, XLogRecGetInfo, and XLR_INFO_MASK.

21 {
22  char *rec = XLogRecGetData(record);
23  uint8 info = XLogRecGetInfo(record) & ~XLR_INFO_MASK;
24 
25  switch (info)
26  {
30  {
31  xl_btree_insert *xlrec = (xl_btree_insert *) rec;
32 
33  appendStringInfo(buf, "off %u", xlrec->offnum);
34  break;
35  }
36  case XLOG_BTREE_SPLIT_L:
37  case XLOG_BTREE_SPLIT_R:
38  {
39  xl_btree_split *xlrec = (xl_btree_split *) rec;
40 
41  appendStringInfo(buf, "level %u, firstright %d, newitemoff %d",
42  xlrec->level, xlrec->firstright, xlrec->newitemoff);
43  break;
44  }
45  case XLOG_BTREE_VACUUM:
46  {
47  xl_btree_vacuum *xlrec = (xl_btree_vacuum *) rec;
48 
49  appendStringInfo(buf, "lastBlockVacuumed %u",
50  xlrec->lastBlockVacuumed);
51  break;
52  }
53  case XLOG_BTREE_DELETE:
54  {
55  xl_btree_delete *xlrec = (xl_btree_delete *) rec;
56 
57  appendStringInfo(buf, "%d items, latest removed xid %u",
58  xlrec->nitems, xlrec->latestRemovedXid);
59  break;
60  }
62  {
64 
65  appendStringInfo(buf, "topparent %u; leaf %u; left %u; right %u",
66  xlrec->topparent, xlrec->leafblk, xlrec->leftblk, xlrec->rightblk);
67  break;
68  }
71  {
73 
74  appendStringInfo(buf, "left %u; right %u; btpo_xact %u; ",
75  xlrec->leftsib, xlrec->rightsib,
76  xlrec->btpo_xact);
77  appendStringInfo(buf, "leafleft %u; leafright %u; topparent %u",
78  xlrec->leafleftsib, xlrec->leafrightsib,
79  xlrec->topparent);
80  break;
81  }
82  case XLOG_BTREE_NEWROOT:
83  {
84  xl_btree_newroot *xlrec = (xl_btree_newroot *) rec;
85 
86  appendStringInfo(buf, "lev %u", xlrec->level);
87  break;
88  }
90  {
92 
93  appendStringInfo(buf, "rel %u/%u/%u; latestRemovedXid %u",
94  xlrec->node.spcNode, xlrec->node.dbNode,
95  xlrec->node.relNode, xlrec->latestRemovedXid);
96  break;
97  }
99  {
100  xl_btree_metadata *xlrec;
101 
102  xlrec = (xl_btree_metadata *) XLogRecGetBlockData(record, 0,
103  NULL);
104  appendStringInfo(buf, "oldest_btpo_xact %u; last_cleanup_num_heap_tuples: %f",
105  xlrec->oldest_btpo_xact,
107  break;
108  }
109  }
110 }
BlockNumber lastBlockVacuumed
Definition: nbtxlog.h:173
TransactionId latestRemovedXid
Definition: nbtxlog.h:128
unsigned char uint8
Definition: c.h:356
#define XLOG_BTREE_INSERT_META
Definition: nbtxlog.h:28
RelFileNode node
Definition: nbtxlog.h:141
uint32 level
Definition: nbtxlog.h:247
#define XLOG_BTREE_NEWROOT
Definition: nbtxlog.h:35
#define XLogRecGetData(decoder)
Definition: xlogreader.h:246
void appendStringInfo(StringInfo str, const char *fmt,...)
Definition: stringinfo.c:78
float8 last_cleanup_num_heap_tuples
Definition: nbtxlog.h:55
#define XLOG_BTREE_INSERT_LEAF
Definition: nbtxlog.h:26
OffsetNumber newitemoff
Definition: nbtxlog.h:114
TransactionId oldest_btpo_xact
Definition: nbtxlog.h:54
#define XLOG_BTREE_VACUUM
Definition: nbtxlog.h:37
#define XLOG_BTREE_UNLINK_PAGE
Definition: nbtxlog.h:33
#define XLogRecGetInfo(decoder)
Definition: xlogreader.h:242
#define XLOG_BTREE_DELETE
Definition: nbtxlog.h:32
char * XLogRecGetBlockData(XLogReaderState *record, uint8 block_id, Size *len)
Definition: xlogreader.c:1391
#define XLOG_BTREE_REUSE_PAGE
Definition: nbtxlog.h:39
uint32 level
Definition: nbtxlog.h:112
#define XLOG_BTREE_MARK_PAGE_HALFDEAD
Definition: nbtxlog.h:36
OffsetNumber offnum
Definition: nbtxlog.h:70
#define XLOG_BTREE_SPLIT_R
Definition: nbtxlog.h:30
#define XLR_INFO_MASK
Definition: xlogrecord.h:62
OffsetNumber firstright
Definition: nbtxlog.h:113
#define XLOG_BTREE_INSERT_UPPER
Definition: nbtxlog.h:27
#define XLOG_BTREE_SPLIT_L
Definition: nbtxlog.h:29
#define XLOG_BTREE_UNLINK_PAGE_META
Definition: nbtxlog.h:34
TransactionId latestRemovedXid
Definition: nbtxlog.h:143
#define XLOG_BTREE_META_CLEANUP
Definition: nbtxlog.h:41

◆ btree_identify()

const char* btree_identify ( uint8  info)

Definition at line 113 of file nbtdesc.c.

References XLOG_BTREE_DELETE, XLOG_BTREE_INSERT_LEAF, XLOG_BTREE_INSERT_META, XLOG_BTREE_INSERT_UPPER, XLOG_BTREE_MARK_PAGE_HALFDEAD, XLOG_BTREE_META_CLEANUP, XLOG_BTREE_NEWROOT, XLOG_BTREE_REUSE_PAGE, XLOG_BTREE_SPLIT_L, XLOG_BTREE_SPLIT_R, XLOG_BTREE_UNLINK_PAGE, XLOG_BTREE_UNLINK_PAGE_META, XLOG_BTREE_VACUUM, and XLR_INFO_MASK.

114 {
115  const char *id = NULL;
116 
117  switch (info & ~XLR_INFO_MASK)
118  {
120  id = "INSERT_LEAF";
121  break;
123  id = "INSERT_UPPER";
124  break;
126  id = "INSERT_META";
127  break;
128  case XLOG_BTREE_SPLIT_L:
129  id = "SPLIT_L";
130  break;
131  case XLOG_BTREE_SPLIT_R:
132  id = "SPLIT_R";
133  break;
134  case XLOG_BTREE_VACUUM:
135  id = "VACUUM";
136  break;
137  case XLOG_BTREE_DELETE:
138  id = "DELETE";
139  break;
141  id = "MARK_PAGE_HALFDEAD";
142  break;
144  id = "UNLINK_PAGE";
145  break;
147  id = "UNLINK_PAGE_META";
148  break;
149  case XLOG_BTREE_NEWROOT:
150  id = "NEWROOT";
151  break;
153  id = "REUSE_PAGE";
154  break;
156  id = "META_CLEANUP";
157  break;
158  }
159 
160  return id;
161 }
#define XLOG_BTREE_INSERT_META
Definition: nbtxlog.h:28
#define XLOG_BTREE_NEWROOT
Definition: nbtxlog.h:35
#define XLOG_BTREE_INSERT_LEAF
Definition: nbtxlog.h:26
#define XLOG_BTREE_VACUUM
Definition: nbtxlog.h:37
#define XLOG_BTREE_UNLINK_PAGE
Definition: nbtxlog.h:33
#define XLOG_BTREE_DELETE
Definition: nbtxlog.h:32
#define XLOG_BTREE_REUSE_PAGE
Definition: nbtxlog.h:39
#define XLOG_BTREE_MARK_PAGE_HALFDEAD
Definition: nbtxlog.h:36
#define XLOG_BTREE_SPLIT_R
Definition: nbtxlog.h:30
#define XLR_INFO_MASK
Definition: xlogrecord.h:62
#define XLOG_BTREE_INSERT_UPPER
Definition: nbtxlog.h:27
#define XLOG_BTREE_SPLIT_L
Definition: nbtxlog.h:29
#define XLOG_BTREE_UNLINK_PAGE_META
Definition: nbtxlog.h:34
#define XLOG_BTREE_META_CLEANUP
Definition: nbtxlog.h:41