]> granicus.if.org Git - postgresql/blob - src/backend/access/rmgrdesc/smgrdesc.c
Fix initialization of fake LSN for unlogged relations
[postgresql] / src / backend / access / rmgrdesc / smgrdesc.c
1 /*-------------------------------------------------------------------------
2  *
3  * smgrdesc.c
4  *        rmgr descriptor routines for catalog/storage.c
5  *
6  * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
7  * Portions Copyright (c) 1994, Regents of the University of California
8  *
9  *
10  * IDENTIFICATION
11  *        src/backend/access/rmgrdesc/smgrdesc.c
12  *
13  *-------------------------------------------------------------------------
14  */
15 #include "postgres.h"
16
17 #include "catalog/storage_xlog.h"
18
19
20 void
21 smgr_desc(StringInfo buf, XLogReaderState *record)
22 {
23         char       *rec = XLogRecGetData(record);
24         uint8           info = XLogRecGetInfo(record) & ~XLR_INFO_MASK;
25
26         if (info == XLOG_SMGR_CREATE)
27         {
28                 xl_smgr_create *xlrec = (xl_smgr_create *) rec;
29                 char       *path = relpathperm(xlrec->rnode, xlrec->forkNum);
30
31                 appendStringInfoString(buf, path);
32                 pfree(path);
33         }
34         else if (info == XLOG_SMGR_TRUNCATE)
35         {
36                 xl_smgr_truncate *xlrec = (xl_smgr_truncate *) rec;
37                 char       *path = relpathperm(xlrec->rnode, MAIN_FORKNUM);
38
39                 appendStringInfo(buf, "%s to %u blocks flags %d", path,
40                                                  xlrec->blkno, xlrec->flags);
41                 pfree(path);
42         }
43 }
44
45 const char *
46 smgr_identify(uint8 info)
47 {
48         const char *id = NULL;
49
50         switch (info & ~XLR_INFO_MASK)
51         {
52                 case XLOG_SMGR_CREATE:
53                         id = "CREATE";
54                         break;
55                 case XLOG_SMGR_TRUNCATE:
56                         id = "TRUNCATE";
57                         break;
58         }
59
60         return id;
61 }