Line data Source code
1 : /*-------------------------------------------------------------------------
2 : *
3 : * gistdesc.c
4 : * rmgr descriptor routines for access/gist/gistxlog.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/gistdesc.c
12 : *
13 : *-------------------------------------------------------------------------
14 : */
15 : #include "postgres.h"
16 :
17 : #include "access/gistxlog.h"
18 : #include "lib/stringinfo.h"
19 : #include "storage/relfilenode.h"
20 :
21 : static void
22 0 : out_gistxlogPageUpdate(StringInfo buf, gistxlogPageUpdate *xlrec)
23 : {
24 0 : }
25 :
26 : static void
27 0 : out_gistxlogPageSplit(StringInfo buf, gistxlogPageSplit *xlrec)
28 : {
29 0 : appendStringInfo(buf, "page_split: splits to %d pages",
30 0 : xlrec->npage);
31 0 : }
32 :
33 : void
34 0 : gist_desc(StringInfo buf, XLogReaderState *record)
35 : {
36 0 : char *rec = XLogRecGetData(record);
37 0 : uint8 info = XLogRecGetInfo(record) & ~XLR_INFO_MASK;
38 :
39 0 : switch (info)
40 : {
41 : case XLOG_GIST_PAGE_UPDATE:
42 0 : out_gistxlogPageUpdate(buf, (gistxlogPageUpdate *) rec);
43 0 : break;
44 : case XLOG_GIST_PAGE_SPLIT:
45 0 : out_gistxlogPageSplit(buf, (gistxlogPageSplit *) rec);
46 0 : break;
47 : case XLOG_GIST_CREATE_INDEX:
48 0 : break;
49 : }
50 0 : }
51 :
52 : const char *
53 0 : gist_identify(uint8 info)
54 : {
55 0 : const char *id = NULL;
56 :
57 0 : switch (info & ~XLR_INFO_MASK)
58 : {
59 : case XLOG_GIST_PAGE_UPDATE:
60 0 : id = "PAGE_UPDATE";
61 0 : break;
62 : case XLOG_GIST_PAGE_SPLIT:
63 0 : id = "PAGE_SPLIT";
64 0 : break;
65 : case XLOG_GIST_CREATE_INDEX:
66 0 : id = "CREATE_INDEX";
67 0 : break;
68 : }
69 :
70 0 : return id;
71 : }
|