1/*-------------------------------------------------------------------------
2 *
3 * replnodes.h
4 * definitions for replication grammar parse nodes
5 *
6 *
7 * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
9 *
10 * src/include/nodes/replnodes.h
11 *
12 *-------------------------------------------------------------------------
13 */
14#ifndef REPLNODES_H
15#define REPLNODES_H
16
17#include "access/xlogdefs.h"
18#include "nodes/pg_list.h"
19
20typedef enum ReplicationKind
21{
22 REPLICATION_KIND_PHYSICAL,
23 REPLICATION_KIND_LOGICAL
24} ReplicationKind;
25
26
27/* ----------------------
28 * IDENTIFY_SYSTEM command
29 * ----------------------
30 */
31typedef struct IdentifySystemCmd
32{
33 NodeTag type;
34} IdentifySystemCmd;
35
36
37/* ----------------------
38 * BASE_BACKUP command
39 * ----------------------
40 */
41typedef struct BaseBackupCmd
42{
43 NodeTag type;
44 List *options;
45} BaseBackupCmd;
46
47
48/* ----------------------
49 * CREATE_REPLICATION_SLOT command
50 * ----------------------
51 */
52typedef struct CreateReplicationSlotCmd
53{
54 NodeTag type;
55 char *slotname;
56 ReplicationKind kind;
57 char *plugin;
58 bool temporary;
59 List *options;
60} CreateReplicationSlotCmd;
61
62
63/* ----------------------
64 * DROP_REPLICATION_SLOT command
65 * ----------------------
66 */
67typedef struct DropReplicationSlotCmd
68{
69 NodeTag type;
70 char *slotname;
71 bool wait;
72} DropReplicationSlotCmd;
73
74
75/* ----------------------
76 * START_REPLICATION command
77 * ----------------------
78 */
79typedef struct StartReplicationCmd
80{
81 NodeTag type;
82 ReplicationKind kind;
83 char *slotname;
84 TimeLineID timeline;
85 XLogRecPtr startpoint;
86 List *options;
87} StartReplicationCmd;
88
89
90/* ----------------------
91 * TIMELINE_HISTORY command
92 * ----------------------
93 */
94typedef struct TimeLineHistoryCmd
95{
96 NodeTag type;
97 TimeLineID timeline;
98} TimeLineHistoryCmd;
99
100/* ----------------------
101 * SQL commands
102 * ----------------------
103 */
104typedef struct SQLCmd
105{
106 NodeTag type;
107} SQLCmd;
108
109#endif /* REPLNODES_H */
110