1 /*-------------------------------------------------------------------------
4 * rmgr descriptor routines for access/spgist/spgxlog.c
6 * Portions Copyright (c) 1996-2014, PostgreSQL Global Development Group
7 * Portions Copyright (c) 1994, Regents of the University of California
11 * src/backend/access/rmgrdesc/spgdesc.c
13 *-------------------------------------------------------------------------
17 #include "access/spgist_private.h"
20 out_target(StringInfo buf, RelFileNode node)
22 appendStringInfo(buf, "rel %u/%u/%u ",
23 node.spcNode, node.dbNode, node.relNode);
27 spg_desc(StringInfo buf, uint8 xl_info, char *rec)
29 uint8 info = xl_info & ~XLR_INFO_MASK;
33 case XLOG_SPGIST_CREATE_INDEX:
34 appendStringInfo(buf, "create_index: rel %u/%u/%u",
35 ((RelFileNode *) rec)->spcNode,
36 ((RelFileNode *) rec)->dbNode,
37 ((RelFileNode *) rec)->relNode);
39 case XLOG_SPGIST_ADD_LEAF:
40 out_target(buf, ((spgxlogAddLeaf *) rec)->node);
41 appendStringInfo(buf, "add leaf to page: %u",
42 ((spgxlogAddLeaf *) rec)->blknoLeaf);
44 case XLOG_SPGIST_MOVE_LEAFS:
45 out_target(buf, ((spgxlogMoveLeafs *) rec)->node);
46 appendStringInfo(buf, "move %u leafs from page %u to page %u",
47 ((spgxlogMoveLeafs *) rec)->nMoves,
48 ((spgxlogMoveLeafs *) rec)->blknoSrc,
49 ((spgxlogMoveLeafs *) rec)->blknoDst);
51 case XLOG_SPGIST_ADD_NODE:
52 out_target(buf, ((spgxlogAddNode *) rec)->node);
53 appendStringInfo(buf, "add node to %u:%u",
54 ((spgxlogAddNode *) rec)->blkno,
55 ((spgxlogAddNode *) rec)->offnum);
57 case XLOG_SPGIST_SPLIT_TUPLE:
58 out_target(buf, ((spgxlogSplitTuple *) rec)->node);
59 appendStringInfo(buf, "split node %u:%u to %u:%u",
60 ((spgxlogSplitTuple *) rec)->blknoPrefix,
61 ((spgxlogSplitTuple *) rec)->offnumPrefix,
62 ((spgxlogSplitTuple *) rec)->blknoPostfix,
63 ((spgxlogSplitTuple *) rec)->offnumPostfix);
65 case XLOG_SPGIST_PICKSPLIT:
66 out_target(buf, ((spgxlogPickSplit *) rec)->node);
67 appendStringInfoString(buf, "split leaf page");
69 case XLOG_SPGIST_VACUUM_LEAF:
70 out_target(buf, ((spgxlogVacuumLeaf *) rec)->node);
71 appendStringInfo(buf, "vacuum leaf tuples on page %u",
72 ((spgxlogVacuumLeaf *) rec)->blkno);
74 case XLOG_SPGIST_VACUUM_ROOT:
75 out_target(buf, ((spgxlogVacuumRoot *) rec)->node);
76 appendStringInfo(buf, "vacuum leaf tuples on root page %u",
77 ((spgxlogVacuumRoot *) rec)->blkno);
79 case XLOG_SPGIST_VACUUM_REDIRECT:
80 out_target(buf, ((spgxlogVacuumRedirect *) rec)->node);
81 appendStringInfo(buf, "vacuum redirect tuples on page %u, newest XID %u",
82 ((spgxlogVacuumRedirect *) rec)->blkno,
83 ((spgxlogVacuumRedirect *) rec)->newestRedirectXid);
86 appendStringInfo(buf, "unknown spgist op code %u", info);