1 | /*------------------------------------------------------------------------- |
2 | * |
3 | * dbasedesc.c |
4 | * rmgr descriptor routines for commands/dbcommands.c |
5 | * |
6 | * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group |
7 | * Portions Copyright (c) 1994, Regents of the University of California |
8 | * |
9 | * |
10 | * IDENTIFICATION |
11 | * src/backend/access/rmgrdesc/dbasedesc.c |
12 | * |
13 | *------------------------------------------------------------------------- |
14 | */ |
15 | #include "postgres.h" |
16 | |
17 | #include "commands/dbcommands_xlog.h" |
18 | #include "lib/stringinfo.h" |
19 | |
20 | |
21 | void |
22 | dbase_desc(StringInfo buf, XLogReaderState *record) |
23 | { |
24 | char *rec = XLogRecGetData(record); |
25 | uint8 info = XLogRecGetInfo(record) & ~XLR_INFO_MASK; |
26 | |
27 | if (info == XLOG_DBASE_CREATE) |
28 | { |
29 | xl_dbase_create_rec *xlrec = (xl_dbase_create_rec *) rec; |
30 | |
31 | appendStringInfo(buf, "copy dir %u/%u to %u/%u" , |
32 | xlrec->src_tablespace_id, xlrec->src_db_id, |
33 | xlrec->tablespace_id, xlrec->db_id); |
34 | } |
35 | else if (info == XLOG_DBASE_DROP) |
36 | { |
37 | xl_dbase_drop_rec *xlrec = (xl_dbase_drop_rec *) rec; |
38 | |
39 | appendStringInfo(buf, "dir %u/%u" , |
40 | xlrec->tablespace_id, xlrec->db_id); |
41 | } |
42 | } |
43 | |
44 | const char * |
45 | dbase_identify(uint8 info) |
46 | { |
47 | const char *id = NULL; |
48 | |
49 | switch (info & ~XLR_INFO_MASK) |
50 | { |
51 | case XLOG_DBASE_CREATE: |
52 | id = "CREATE" ; |
53 | break; |
54 | case XLOG_DBASE_DROP: |
55 | id = "DROP" ; |
56 | break; |
57 | } |
58 | |
59 | return id; |
60 | } |
61 | |