]> granicus.if.org Git - postgresql/blob - src/backend/access/rmgrdesc/spgdesc.c
pgindent run for 9.4
[postgresql] / src / backend / access / rmgrdesc / spgdesc.c
1 /*-------------------------------------------------------------------------
2  *
3  * spgdesc.c
4  *        rmgr descriptor routines for access/spgist/spgxlog.c
5  *
6  * Portions Copyright (c) 1996-2014, PostgreSQL Global Development Group
7  * Portions Copyright (c) 1994, Regents of the University of California
8  *
9  *
10  * IDENTIFICATION
11  *        src/backend/access/rmgrdesc/spgdesc.c
12  *
13  *-------------------------------------------------------------------------
14  */
15 #include "postgres.h"
16
17 #include "access/spgist_private.h"
18
19 static void
20 out_target(StringInfo buf, RelFileNode node)
21 {
22         appendStringInfo(buf, "rel %u/%u/%u ",
23                                          node.spcNode, node.dbNode, node.relNode);
24 }
25
26 void
27 spg_desc(StringInfo buf, uint8 xl_info, char *rec)
28 {
29         uint8           info = xl_info & ~XLR_INFO_MASK;
30
31         switch (info)
32         {
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);
38                         break;
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);
43                         break;
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);
50                         break;
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);
56                         break;
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);
64                         break;
65                 case XLOG_SPGIST_PICKSPLIT:
66                         out_target(buf, ((spgxlogPickSplit *) rec)->node);
67                         appendStringInfoString(buf, "split leaf page");
68                         break;
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);
73                         break;
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);
78                         break;
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);
84                         break;
85                 default:
86                         appendStringInfo(buf, "unknown spgist op code %u", info);
87                         break;
88         }
89 }