PostgreSQL Source Code  git master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
smgrdesc.c
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2  *
3  * smgrdesc.c
4  * rmgr descriptor routines for catalog/storage.c
5  *
6  * Portions Copyright (c) 1996-2017, 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/catalog.h"
18 #include "catalog/storage_xlog.h"
19 
20 
21 void
23 {
24  char *rec = XLogRecGetData(record);
25  uint8 info = XLogRecGetInfo(record) & ~XLR_INFO_MASK;
26 
27  if (info == XLOG_SMGR_CREATE)
28  {
29  xl_smgr_create *xlrec = (xl_smgr_create *) rec;
30  char *path = relpathperm(xlrec->rnode, xlrec->forkNum);
31 
32  appendStringInfoString(buf, path);
33  pfree(path);
34  }
35  else if (info == XLOG_SMGR_TRUNCATE)
36  {
37  xl_smgr_truncate *xlrec = (xl_smgr_truncate *) rec;
38  char *path = relpathperm(xlrec->rnode, MAIN_FORKNUM);
39 
40  appendStringInfo(buf, "%s to %u blocks flags %d", path,
41  xlrec->blkno, xlrec->flags);
42  pfree(path);
43  }
44 }
45 
46 const char *
48 {
49  const char *id = NULL;
50 
51  switch (info & ~XLR_INFO_MASK)
52  {
53  case XLOG_SMGR_CREATE:
54  id = "CREATE";
55  break;
56  case XLOG_SMGR_TRUNCATE:
57  id = "TRUNCATE";
58  break;
59  }
60 
61  return id;
62 }
#define relpathperm(rnode, forknum)
Definition: relpath.h:67
unsigned char uint8
Definition: c.h:266
void smgr_desc(StringInfo buf, XLogReaderState *record)
Definition: smgrdesc.c:22
RelFileNode rnode
Definition: storage_xlog.h:49
const char * smgr_identify(uint8 info)
Definition: smgrdesc.c:47
#define XLOG_SMGR_CREATE
Definition: storage_xlog.h:30
void pfree(void *pointer)
Definition: mcxt.c:950
#define XLogRecGetData(decoder)
Definition: xlogreader.h:218
void appendStringInfo(StringInfo str, const char *fmt,...)
Definition: stringinfo.c:110
void appendStringInfoString(StringInfo str, const char *s)
Definition: stringinfo.c:189
static char * buf
Definition: pg_test_fsync.c:66
#define XLogRecGetInfo(decoder)
Definition: xlogreader.h:214
#define XLOG_SMGR_TRUNCATE
Definition: storage_xlog.h:31
ForkNumber forkNum
Definition: storage_xlog.h:36
#define NULL
Definition: c.h:229
#define XLR_INFO_MASK
Definition: xlogrecord.h:62
BlockNumber blkno
Definition: storage_xlog.h:48
RelFileNode rnode
Definition: storage_xlog.h:35