Age Owner Branch data TLA Line data Source code
1 : : /*-------------------------------------------------------------------------
2 : : *
3 : : * brindesc.c
4 : : * rmgr descriptor routines for BRIN indexes
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/brindesc.c
12 : : *
13 : : *-------------------------------------------------------------------------
14 : : */
15 : : #include "postgres.h"
16 : :
17 : : #include "access/brin_xlog.h"
18 : :
19 : : void
3433 heikki.linnakangas@i 20 :CBC 63252 : brin_desc(StringInfo buf, XLogReaderState *record)
21 : : {
3446 alvherre@alvh.no-ip. 22 : 63252 : char *rec = XLogRecGetData(record);
3433 heikki.linnakangas@i 23 : 63252 : uint8 info = XLogRecGetInfo(record) & ~XLR_INFO_MASK;
24 : :
3446 alvherre@alvh.no-ip. 25 : 63252 : info &= XLOG_BRIN_OPMASK;
26 [ + + ]: 63252 : if (info == XLOG_BRIN_CREATE_INDEX)
27 : : {
3446 alvherre@alvh.no-ip. 28 :GBC 6 : xl_brin_createidx *xlrec = (xl_brin_createidx *) rec;
29 : :
3433 heikki.linnakangas@i 30 : 6 : appendStringInfo(buf, "v%d pagesPerRange %u",
31 : 6 : xlrec->version, xlrec->pagesPerRange);
32 : : }
3446 alvherre@alvh.no-ip. 33 [ + + ]:CBC 63246 : else if (info == XLOG_BRIN_INSERT)
34 : : {
35 : 1408 : xl_brin_insert *xlrec = (xl_brin_insert *) rec;
36 : :
3433 heikki.linnakangas@i 37 : 1408 : appendStringInfo(buf, "heapBlk %u pagesPerRange %u offnum %u",
38 : : xlrec->heapBlk,
39 : : xlrec->pagesPerRange,
40 : 1408 : xlrec->offnum);
41 : : }
3446 alvherre@alvh.no-ip. 42 [ + + ]: 61838 : else if (info == XLOG_BRIN_UPDATE)
43 : : {
44 : 295 : xl_brin_update *xlrec = (xl_brin_update *) rec;
45 : :
3433 heikki.linnakangas@i 46 : 295 : appendStringInfo(buf, "heapBlk %u pagesPerRange %u old offnum %u, new offnum %u",
47 : : xlrec->insert.heapBlk,
48 : : xlrec->insert.pagesPerRange,
49 : 295 : xlrec->oldOffnum,
50 : 295 : xlrec->insert.offnum);
51 : : }
3446 alvherre@alvh.no-ip. 52 [ + + ]: 61543 : else if (info == XLOG_BRIN_SAMEPAGE_UPDATE)
53 : : {
54 : 61530 : xl_brin_samepage_update *xlrec = (xl_brin_samepage_update *) rec;
55 : :
3433 heikki.linnakangas@i 56 : 61530 : appendStringInfo(buf, "offnum %u", xlrec->offnum);
57 : : }
3446 alvherre@alvh.no-ip. 58 [ + + ]: 13 : else if (info == XLOG_BRIN_REVMAP_EXTEND)
59 : : {
60 : 7 : xl_brin_revmap_extend *xlrec = (xl_brin_revmap_extend *) rec;
61 : :
3433 heikki.linnakangas@i 62 : 7 : appendStringInfo(buf, "targetBlk %u", xlrec->targetBlk);
63 : : }
2570 alvherre@alvh.no-ip. 64 [ + - ]:GBC 6 : else if (info == XLOG_BRIN_DESUMMARIZE)
65 : : {
66 : 6 : xl_brin_desummarize *xlrec = (xl_brin_desummarize *) rec;
67 : :
68 : 6 : appendStringInfo(buf, "pagesPerRange %u, heapBlk %u, page offset %u",
2489 tgl@sss.pgh.pa.us 69 : 6 : xlrec->pagesPerRange, xlrec->heapBlk, xlrec->regOffset);
70 : : }
3446 alvherre@alvh.no-ip. 71 :CBC 63252 : }
72 : :
73 : : const char *
74 : 63257 : brin_identify(uint8 info)
75 : : {
76 : 63257 : const char *id = NULL;
77 : :
78 [ + + + + : 63257 : switch (info & ~XLR_INFO_MASK)
+ + + +
- ]
79 : : {
3446 alvherre@alvh.no-ip. 80 :GBC 7 : case XLOG_BRIN_CREATE_INDEX:
81 : 7 : id = "CREATE_INDEX";
82 : 7 : break;
3446 alvherre@alvh.no-ip. 83 :CBC 1402 : case XLOG_BRIN_INSERT:
84 : 1402 : id = "INSERT";
85 : 1402 : break;
3446 alvherre@alvh.no-ip. 86 :GBC 7 : case XLOG_BRIN_INSERT | XLOG_BRIN_INIT_PAGE:
87 : 7 : id = "INSERT+INIT";
88 : 7 : break;
3446 alvherre@alvh.no-ip. 89 :CBC 290 : case XLOG_BRIN_UPDATE:
90 : 290 : id = "UPDATE";
91 : 290 : break;
92 : 5 : case XLOG_BRIN_UPDATE | XLOG_BRIN_INIT_PAGE:
93 : 5 : id = "UPDATE+INIT";
94 : 5 : break;
95 : 61531 : case XLOG_BRIN_SAMEPAGE_UPDATE:
96 : 61531 : id = "SAMEPAGE_UPDATE";
97 : 61531 : break;
98 : 8 : case XLOG_BRIN_REVMAP_EXTEND:
99 : 8 : id = "REVMAP_EXTEND";
100 : 8 : break;
2570 alvherre@alvh.no-ip. 101 :GBC 7 : case XLOG_BRIN_DESUMMARIZE:
102 : 7 : id = "DESUMMARIZE";
103 : 7 : break;
104 : : }
105 : :
3446 alvherre@alvh.no-ip. 106 :CBC 63257 : return id;
107 : : }
|