PostgreSQL Source Code git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
hashdesc.c
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * hashdesc.c
4 * rmgr descriptor routines for access/hash/hash.c
5 *
6 * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
7 * Portions Copyright (c) 1994, Regents of the University of California
8 *
9 *
10 * IDENTIFICATION
11 * src/backend/access/rmgrdesc/hashdesc.c
12 *
13 *-------------------------------------------------------------------------
14 */
15#include "postgres.h"
16
17#include "access/hash_xlog.h"
18
19void
21{
22 char *rec = XLogRecGetData(record);
23 uint8 info = XLogRecGetInfo(record) & ~XLR_INFO_MASK;
24
25 switch (info)
26 {
28 {
30
31 appendStringInfo(buf, "num_tuples %g, fillfactor %d",
32 xlrec->num_tuples, xlrec->ffactor);
33 break;
34 }
36 {
38
39 appendStringInfo(buf, "bmsize %d", xlrec->bmsize);
40 break;
41 }
43 {
44 xl_hash_insert *xlrec = (xl_hash_insert *) rec;
45
46 appendStringInfo(buf, "off %u", xlrec->offnum);
47 break;
48 }
50 {
52
53 appendStringInfo(buf, "bmsize %d, bmpage_found %c",
54 xlrec->bmsize, (xlrec->bmpage_found) ? 'T' : 'F');
55 break;
56 }
58 {
60
61 appendStringInfo(buf, "new_bucket %u, meta_page_masks_updated %c, issplitpoint_changed %c",
62 xlrec->new_bucket,
63 (xlrec->flags & XLH_SPLIT_META_UPDATE_MASKS) ? 'T' : 'F',
64 (xlrec->flags & XLH_SPLIT_META_UPDATE_SPLITPOINT) ? 'T' : 'F');
65 break;
66 }
68 {
70
71 appendStringInfo(buf, "old_bucket_flag %u, new_bucket_flag %u",
72 xlrec->old_bucket_flag, xlrec->new_bucket_flag);
73 break;
74 }
76 {
78
79 appendStringInfo(buf, "ntups %d, is_primary %c",
80 xlrec->ntups,
81 xlrec->is_prim_bucket_same_wrt ? 'T' : 'F');
82 break;
83 }
85 {
87
88 appendStringInfo(buf, "prevblkno %u, nextblkno %u, ntups %d, is_primary %c",
89 xlrec->prevblkno,
90 xlrec->nextblkno,
91 xlrec->ntups,
92 xlrec->is_prim_bucket_same_wrt ? 'T' : 'F');
93 break;
94 }
96 {
97 xl_hash_delete *xlrec = (xl_hash_delete *) rec;
98
99 appendStringInfo(buf, "clear_dead_marking %c, is_primary %c",
100 xlrec->clear_dead_marking ? 'T' : 'F',
101 xlrec->is_primary_bucket_page ? 'T' : 'F');
102 break;
103 }
105 {
107
108 appendStringInfo(buf, "ntuples %g",
109 xlrec->ntuples);
110 break;
111 }
113 {
115
116 appendStringInfo(buf, "ntuples %d, snapshotConflictHorizon %u, isCatalogRel %c",
117 xlrec->ntuples,
119 xlrec->isCatalogRel ? 'T' : 'F');
120 break;
121 }
122 }
123}
124
125const char *
127{
128 const char *id = NULL;
129
130 switch (info & ~XLR_INFO_MASK)
131 {
133 id = "INIT_META_PAGE";
134 break;
136 id = "INIT_BITMAP_PAGE";
137 break;
138 case XLOG_HASH_INSERT:
139 id = "INSERT";
140 break;
142 id = "ADD_OVFL_PAGE";
143 break;
145 id = "SPLIT_ALLOCATE_PAGE";
146 break;
148 id = "SPLIT_PAGE";
149 break;
151 id = "SPLIT_COMPLETE";
152 break;
154 id = "MOVE_PAGE_CONTENTS";
155 break;
157 id = "SQUEEZE_PAGE";
158 break;
159 case XLOG_HASH_DELETE:
160 id = "DELETE";
161 break;
163 id = "SPLIT_CLEANUP";
164 break;
166 id = "UPDATE_META_PAGE";
167 break;
169 id = "VACUUM_ONE_PAGE";
170 }
171
172 return id;
173}
uint8_t uint8
Definition: c.h:483
#define XLOG_HASH_INIT_BITMAP_PAGE
Definition: hash_xlog.h:28
#define XLOG_HASH_SQUEEZE_PAGE
Definition: hash_xlog.h:35
#define XLOG_HASH_SPLIT_CLEANUP
Definition: hash_xlog.h:37
#define XLOG_HASH_ADD_OVFL_PAGE
Definition: hash_xlog.h:30
#define XLOG_HASH_UPDATE_META_PAGE
Definition: hash_xlog.h:38
#define XLOG_HASH_INSERT
Definition: hash_xlog.h:29
#define XLOG_HASH_SPLIT_ALLOCATE_PAGE
Definition: hash_xlog.h:31
#define XLOG_HASH_SPLIT_PAGE
Definition: hash_xlog.h:32
#define XLOG_HASH_INIT_META_PAGE
Definition: hash_xlog.h:27
#define XLOG_HASH_DELETE
Definition: hash_xlog.h:36
#define XLOG_HASH_SPLIT_COMPLETE
Definition: hash_xlog.h:33
#define XLH_SPLIT_META_UPDATE_SPLITPOINT
Definition: hash_xlog.h:46
#define XLOG_HASH_MOVE_PAGE_CONTENTS
Definition: hash_xlog.h:34
#define XLOG_HASH_VACUUM_ONE_PAGE
Definition: hash_xlog.h:40
#define XLH_SPLIT_META_UPDATE_MASKS
Definition: hash_xlog.h:45
const char * hash_identify(uint8 info)
Definition: hashdesc.c:126
void hash_desc(StringInfo buf, XLogReaderState *record)
Definition: hashdesc.c:20
static char * buf
Definition: pg_test_fsync.c:72
void appendStringInfo(StringInfo str, const char *fmt,...)
Definition: stringinfo.c:94
bool clear_dead_marking
Definition: hash_xlog.h:180
bool is_primary_bucket_page
Definition: hash_xlog.h:182
OffsetNumber offnum
Definition: hash_xlog.h:58
BlockNumber prevblkno
Definition: hash_xlog.h:155
bool is_prim_bucket_same_wrt
Definition: hash_xlog.h:158
BlockNumber nextblkno
Definition: hash_xlog.h:156
TransactionId snapshotConflictHorizon
Definition: hash_xlog.h:247
#define XLogRecGetInfo(decoder)
Definition: xlogreader.h:410
#define XLogRecGetData(decoder)
Definition: xlogreader.h:415
#define XLR_INFO_MASK
Definition: xlogrecord.h:62