diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2012-11-28 12:35:01 -0300 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2012-11-28 13:01:15 -0300 |
commit | 1577b46b7c81e490cf5c8f0e90d0e5d0c09b5414 (patch) | |
tree | 6b7b73eea52d8beb905c8c4b592235cba4c41565 /src/backend/access/rmgrdesc/gistdesc.c | |
parent | dd7353dde82ad451bf681b37175be128995330fe (diff) | |
download | postgresql-1577b46b7c81e490cf5c8f0e90d0e5d0c09b5414.tar.gz postgresql-1577b46b7c81e490cf5c8f0e90d0e5d0c09b5414.zip |
Split out rmgr rm_desc functions into their own files
This is necessary (but not sufficient) to have them compilable outside
of a backend environment.
Diffstat (limited to 'src/backend/access/rmgrdesc/gistdesc.c')
-rw-r--r-- | src/backend/access/rmgrdesc/gistdesc.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/backend/access/rmgrdesc/gistdesc.c b/src/backend/access/rmgrdesc/gistdesc.c new file mode 100644 index 00000000000..1f47c6b8bbb --- /dev/null +++ b/src/backend/access/rmgrdesc/gistdesc.c @@ -0,0 +1,68 @@ +/*------------------------------------------------------------------------- + * + * gistdesc.c + * rmgr descriptor routines for access/gist/gistxlog.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/gistdesc.c + * + *------------------------------------------------------------------------- + */ +#include "postgres.h" + +#include "access/gist_private.h" +#include "lib/stringinfo.h" +#include "storage/relfilenode.h" + +static void +out_target(StringInfo buf, RelFileNode node) +{ + appendStringInfo(buf, "rel %u/%u/%u", + node.spcNode, node.dbNode, node.relNode); +} + +static void +out_gistxlogPageUpdate(StringInfo buf, gistxlogPageUpdate *xlrec) +{ + out_target(buf, xlrec->node); + appendStringInfo(buf, "; block number %u", xlrec->blkno); +} + +static void +out_gistxlogPageSplit(StringInfo buf, gistxlogPageSplit *xlrec) +{ + appendStringInfo(buf, "page_split: "); + out_target(buf, xlrec->node); + appendStringInfo(buf, "; block number %u splits to %d pages", + xlrec->origblkno, xlrec->npage); +} + +void +gist_desc(StringInfo buf, uint8 xl_info, char *rec) +{ + uint8 info = xl_info & ~XLR_INFO_MASK; + + switch (info) + { + case XLOG_GIST_PAGE_UPDATE: + appendStringInfo(buf, "page_update: "); + out_gistxlogPageUpdate(buf, (gistxlogPageUpdate *) rec); + break; + case XLOG_GIST_PAGE_SPLIT: + out_gistxlogPageSplit(buf, (gistxlogPageSplit *) rec); + break; + case XLOG_GIST_CREATE_INDEX: + appendStringInfo(buf, "create_index: rel %u/%u/%u", + ((RelFileNode *) rec)->spcNode, + ((RelFileNode *) rec)->dbNode, + ((RelFileNode *) rec)->relNode); + break; + default: + appendStringInfo(buf, "unknown gist op code %u", info); + break; + } +} |