Age Owner Branch data TLA Line data Source code
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 : :
19 : : void
3433 heikki.linnakangas@i 20 :GBC 54 : hash_desc(StringInfo buf, XLogReaderState *record)
21 : : {
2588 rhaas@postgresql.org 22 : 54 : char *rec = XLogRecGetData(record);
23 : 54 : uint8 info = XLogRecGetInfo(record) & ~XLR_INFO_MASK;
24 : :
25 [ + + + - : 54 : switch (info)
- - - - +
+ - - ]
26 : : {
27 : 12 : case XLOG_HASH_INIT_META_PAGE:
28 : : {
29 : 12 : xl_hash_init_meta_page *xlrec = (xl_hash_init_meta_page *) rec;
30 : :
31 : 12 : appendStringInfo(buf, "num_tuples %g, fillfactor %d",
32 : 12 : xlrec->num_tuples, xlrec->ffactor);
33 : 12 : break;
34 : : }
35 : 12 : case XLOG_HASH_INIT_BITMAP_PAGE:
36 : : {
37 : 12 : xl_hash_init_bitmap_page *xlrec = (xl_hash_init_bitmap_page *) rec;
38 : :
39 : 12 : appendStringInfo(buf, "bmsize %d", xlrec->bmsize);
40 : 12 : break;
41 : : }
42 : 18 : case XLOG_HASH_INSERT:
43 : : {
44 : 18 : xl_hash_insert *xlrec = (xl_hash_insert *) rec;
45 : :
46 : 18 : appendStringInfo(buf, "off %u", xlrec->offnum);
47 : 18 : break;
48 : : }
2588 rhaas@postgresql.org 49 :UBC 0 : case XLOG_HASH_ADD_OVFL_PAGE:
50 : : {
51 : 0 : xl_hash_add_ovfl_page *xlrec = (xl_hash_add_ovfl_page *) rec;
52 : :
53 : 0 : appendStringInfo(buf, "bmsize %d, bmpage_found %c",
2489 tgl@sss.pgh.pa.us 54 [ # # ]: 0 : xlrec->bmsize, (xlrec->bmpage_found) ? 'T' : 'F');
2588 rhaas@postgresql.org 55 : 0 : break;
56 : : }
57 : 0 : case XLOG_HASH_SPLIT_ALLOCATE_PAGE:
58 : : {
59 : 0 : xl_hash_split_allocate_page *xlrec = (xl_hash_split_allocate_page *) rec;
60 : :
61 : 0 : appendStringInfo(buf, "new_bucket %u, meta_page_masks_updated %c, issplitpoint_changed %c",
62 : : xlrec->new_bucket,
2489 tgl@sss.pgh.pa.us 63 [ # # ]: 0 : (xlrec->flags & XLH_SPLIT_META_UPDATE_MASKS) ? 'T' : 'F',
2588 rhaas@postgresql.org 64 [ # # ]: 0 : (xlrec->flags & XLH_SPLIT_META_UPDATE_SPLITPOINT) ? 'T' : 'F');
65 : 0 : break;
66 : : }
67 : 0 : case XLOG_HASH_SPLIT_COMPLETE:
68 : : {
69 : 0 : xl_hash_split_complete *xlrec = (xl_hash_split_complete *) rec;
70 : :
71 : 0 : appendStringInfo(buf, "old_bucket_flag %u, new_bucket_flag %u",
2489 tgl@sss.pgh.pa.us 72 : 0 : xlrec->old_bucket_flag, xlrec->new_bucket_flag);
2588 rhaas@postgresql.org 73 : 0 : break;
74 : : }
75 : 0 : case XLOG_HASH_MOVE_PAGE_CONTENTS:
76 : : {
77 : 0 : xl_hash_move_page_contents *xlrec = (xl_hash_move_page_contents *) rec;
78 : :
79 : 0 : appendStringInfo(buf, "ntups %d, is_primary %c",
80 : 0 : xlrec->ntups,
81 [ # # ]: 0 : xlrec->is_prim_bucket_same_wrt ? 'T' : 'F');
82 : 0 : break;
83 : : }
84 : 0 : case XLOG_HASH_SQUEEZE_PAGE:
85 : : {
86 : 0 : xl_hash_squeeze_page *xlrec = (xl_hash_squeeze_page *) rec;
87 : :
88 : 0 : appendStringInfo(buf, "prevblkno %u, nextblkno %u, ntups %d, is_primary %c",
89 : : xlrec->prevblkno,
90 : : xlrec->nextblkno,
91 : 0 : xlrec->ntups,
92 [ # # ]: 0 : xlrec->is_prim_bucket_same_wrt ? 'T' : 'F');
93 : 0 : break;
94 : : }
2588 rhaas@postgresql.org 95 :GBC 6 : case XLOG_HASH_DELETE:
96 : : {
97 : 6 : xl_hash_delete *xlrec = (xl_hash_delete *) rec;
98 : :
2582 rhaas@postgresql.org 99 :UBC 0 : appendStringInfo(buf, "clear_dead_marking %c, is_primary %c",
2582 rhaas@postgresql.org 100 [ - + ]:GBC 6 : xlrec->clear_dead_marking ? 'T' : 'F',
2588 101 [ + - ]: 6 : xlrec->is_primary_bucket_page ? 'T' : 'F');
102 : 6 : break;
103 : : }
104 : 6 : case XLOG_HASH_UPDATE_META_PAGE:
105 : : {
106 : 6 : xl_hash_update_meta_page *xlrec = (xl_hash_update_meta_page *) rec;
107 : :
2582 108 : 6 : appendStringInfo(buf, "ntuples %g",
109 : : xlrec->ntuples);
110 : 6 : break;
111 : : }
2582 rhaas@postgresql.org 112 :UBC 0 : case XLOG_HASH_VACUUM_ONE_PAGE:
113 : : {
114 : 0 : xl_hash_vacuum_one_page *xlrec = (xl_hash_vacuum_one_page *) rec;
115 : :
115 msawada@postgresql.o 116 :UNC 0 : appendStringInfo(buf, "ntuples %d, snapshotConflictHorizon %u, isCatalogRel %c",
1846 andres@anarazel.de 117 :UBC 0 : xlrec->ntuples,
118 : : xlrec->snapshotConflictHorizon,
115 msawada@postgresql.o 119 [ # # ]:UNC 0 : xlrec->isCatalogRel ? 'T' : 'F');
2588 rhaas@postgresql.org 120 :UBC 0 : break;
121 : : }
122 : : }
4155 alvherre@alvh.no-ip. 123 :GBC 54 : }
124 : :
125 : : const char *
3495 andres@anarazel.de 126 : 59 : hash_identify(uint8 info)
127 : : {
2588 rhaas@postgresql.org 128 : 59 : const char *id = NULL;
129 : :
130 [ + + + - : 59 : switch (info & ~XLR_INFO_MASK)
- - - - -
+ - + -
- ]
131 : : {
132 : 13 : case XLOG_HASH_INIT_META_PAGE:
133 : 13 : id = "INIT_META_PAGE";
134 : 13 : break;
135 : 13 : case XLOG_HASH_INIT_BITMAP_PAGE:
136 : 13 : id = "INIT_BITMAP_PAGE";
137 : 13 : break;
138 : 19 : case XLOG_HASH_INSERT:
139 : 19 : id = "INSERT";
140 : 19 : break;
2588 rhaas@postgresql.org 141 :UBC 0 : case XLOG_HASH_ADD_OVFL_PAGE:
142 : 0 : id = "ADD_OVFL_PAGE";
143 : 0 : break;
144 : 0 : case XLOG_HASH_SPLIT_ALLOCATE_PAGE:
145 : 0 : id = "SPLIT_ALLOCATE_PAGE";
146 : 0 : break;
147 : 0 : case XLOG_HASH_SPLIT_PAGE:
148 : 0 : id = "SPLIT_PAGE";
149 : 0 : break;
150 : 0 : case XLOG_HASH_SPLIT_COMPLETE:
151 : 0 : id = "SPLIT_COMPLETE";
152 : 0 : break;
153 : 0 : case XLOG_HASH_MOVE_PAGE_CONTENTS:
154 : 0 : id = "MOVE_PAGE_CONTENTS";
155 : 0 : break;
156 : 0 : case XLOG_HASH_SQUEEZE_PAGE:
157 : 0 : id = "SQUEEZE_PAGE";
158 : 0 : break;
2588 rhaas@postgresql.org 159 :GBC 7 : case XLOG_HASH_DELETE:
160 : 7 : id = "DELETE";
161 : 7 : break;
2588 rhaas@postgresql.org 162 :UBC 0 : case XLOG_HASH_SPLIT_CLEANUP:
163 : 0 : id = "SPLIT_CLEANUP";
164 : 0 : break;
2588 rhaas@postgresql.org 165 :GBC 7 : case XLOG_HASH_UPDATE_META_PAGE:
166 : 7 : id = "UPDATE_META_PAGE";
167 : 7 : break;
2587 rhaas@postgresql.org 168 :UBC 0 : case XLOG_HASH_VACUUM_ONE_PAGE:
169 : 0 : id = "VACUUM_ONE_PAGE";
170 : : }
171 : :
2588 rhaas@postgresql.org 172 :GBC 59 : return id;
173 : : }
|