PostgreSQL Source Code: src/backend/access/rmgrdesc/dbasedesc.c Source File

PostgreSQL Source Code git master
dbasedesc.c
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * dbasedesc.c
4 * rmgr descriptor routines for commands/dbcommands.c
5 *
6 * Portions Copyright (c) 1996-2025, 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
21void
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_FILE_COPY)
28 {
29 xl_dbase_create_file_copy_rec *xlrec =
30 (xl_dbase_create_file_copy_rec *) rec;
31
32 appendStringInfo(buf, "copy dir %u/%u to %u/%u",
33 xlrec->src_tablespace_id, xlrec->src_db_id,
34 xlrec->tablespace_id, xlrec->db_id);
35 }
36 else if (info == XLOG_DBASE_CREATE_WAL_LOG)
37 {
38 xl_dbase_create_wal_log_rec *xlrec =
39 (xl_dbase_create_wal_log_rec *) rec;
40
41 appendStringInfo(buf, "create dir %u/%u",
42 xlrec->tablespace_id, xlrec->db_id);
43 }
44 else if (info == XLOG_DBASE_DROP)
45 {
46 xl_dbase_drop_rec *xlrec = (xl_dbase_drop_rec *) rec;
47 int i;
48
49 appendStringInfoString(buf, "dir");
50 for (i = 0; i < xlrec->ntablespaces; i++)
51 appendStringInfo(buf, " %u/%u",
52 xlrec->tablespace_ids[i], xlrec->db_id);
53 }
54}
55
56const char *
57 dbase_identify(uint8 info)
58{
59 const char *id = NULL;
60
61 switch (info & ~XLR_INFO_MASK)
62 {
63 case XLOG_DBASE_CREATE_FILE_COPY:
64 id = "CREATE_FILE_COPY";
65 break;
66 case XLOG_DBASE_CREATE_WAL_LOG:
67 id = "CREATE_WAL_LOG";
68 break;
69 case XLOG_DBASE_DROP:
70 id = "DROP";
71 break;
72 }
73
74 return id;
75}
uint8_t uint8
Definition: c.h:536
const char * dbase_identify(uint8 info)
Definition: dbasedesc.c:57
void dbase_desc(StringInfo buf, XLogReaderState *record)
Definition: dbasedesc.c:22
#define XLOG_DBASE_CREATE_WAL_LOG
#define XLOG_DBASE_DROP
#define XLOG_DBASE_CREATE_FILE_COPY
i
int i
Definition: isn.c:77
static char * buf
Definition: pg_test_fsync.c:72
void appendStringInfo(StringInfo str, const char *fmt,...)
Definition: stringinfo.c:145
void appendStringInfoString(StringInfo str, const char *s)
Definition: stringinfo.c:230
Oid tablespace_ids[FLEXIBLE_ARRAY_MEMBER]
#define XLogRecGetInfo(decoder)
Definition: xlogreader.h:410
#define XLogRecGetData(decoder)
Definition: xlogreader.h:415
#define XLR_INFO_MASK
Definition: xlogrecord.h:62

AltStyle によって変換されたページ (->オリジナル) /