diff options
Diffstat (limited to 'src/backend/access/rmgrdesc/smgrdesc.c')
-rw-r--r-- | src/backend/access/rmgrdesc/smgrdesc.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/backend/access/rmgrdesc/smgrdesc.c b/src/backend/access/rmgrdesc/smgrdesc.c new file mode 100644 index 00000000000..40b9708bad5 --- /dev/null +++ b/src/backend/access/rmgrdesc/smgrdesc.c @@ -0,0 +1,45 @@ +/*------------------------------------------------------------------------- + * + * smgrdesc.c + * rmgr descriptor routines for catalog/storage.c + * + * Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * + * IDENTIFICATION + * src/backend/access/rmgrdesc/smgrdesc.c + * + *------------------------------------------------------------------------- + */ +#include "postgres.h" + +#include "catalog/catalog.h" +#include "catalog/storage_xlog.h" + + +void +smgr_desc(StringInfo buf, uint8 xl_info, char *rec) +{ + uint8 info = xl_info & ~XLR_INFO_MASK; + + if (info == XLOG_SMGR_CREATE) + { + xl_smgr_create *xlrec = (xl_smgr_create *) rec; + char *path = relpathperm(xlrec->rnode, xlrec->forkNum); + + appendStringInfo(buf, "file create: %s", path); + pfree(path); + } + else if (info == XLOG_SMGR_TRUNCATE) + { + xl_smgr_truncate *xlrec = (xl_smgr_truncate *) rec; + char *path = relpathperm(xlrec->rnode, MAIN_FORKNUM); + + appendStringInfo(buf, "file truncate: %s to %u blocks", path, + xlrec->blkno); + pfree(path); + } + else + appendStringInfo(buf, "UNKNOWN"); +} |