1
0
mirror of https://github.com/postgres/postgres.git synced 2025-04-24 10:47:04 +03:00
postgres/src/include/nodes/replnodes.h
Andres Freund c314ead5be Add ability to reserve WAL upon slot creation via replication protocol.
Since 6fcd885 it is possible to immediately reserve WAL when creating a
slot via pg_create_physical_replication_slot(). Extend the replication
protocol to allow that as well.

Although, in contrast to the SQL interface, it is possible to update the
reserved location via the replication interface, it is still useful
being able to reserve upon creation there. Otherwise the logic in
ReplicationSlotReserveWal() has to be repeated in slot employing
clients.

Author: Michael Paquier
Discussion: CAB7nPqT0Wc1W5mdYGeJ_wbutbwNN+3qgrFR64avXaQCiJMGaYA@mail.gmail.com
2015-09-06 13:30:57 +02:00

99 lines
1.8 KiB
C

/*-------------------------------------------------------------------------
*
* replnodes.h
* definitions for replication grammar parse nodes
*
*
* Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* src/include/nodes/replnodes.h
*
*-------------------------------------------------------------------------
*/
#ifndef REPLNODES_H
#define REPLNODES_H
#include "access/xlogdefs.h"
#include "nodes/pg_list.h"
typedef enum ReplicationKind
{
REPLICATION_KIND_PHYSICAL,
REPLICATION_KIND_LOGICAL
} ReplicationKind;
/* ----------------------
* IDENTIFY_SYSTEM command
* ----------------------
*/
typedef struct IdentifySystemCmd
{
NodeTag type;
} IdentifySystemCmd;
/* ----------------------
* BASE_BACKUP command
* ----------------------
*/
typedef struct BaseBackupCmd
{
NodeTag type;
List *options;
} BaseBackupCmd;
/* ----------------------
* CREATE_REPLICATION_SLOT command
* ----------------------
*/
typedef struct CreateReplicationSlotCmd
{
NodeTag type;
char *slotname;
ReplicationKind kind;
char *plugin;
bool reserve_wal;
} CreateReplicationSlotCmd;
/* ----------------------
* DROP_REPLICATION_SLOT command
* ----------------------
*/
typedef struct DropReplicationSlotCmd
{
NodeTag type;
char *slotname;
} DropReplicationSlotCmd;
/* ----------------------
* START_REPLICATION command
* ----------------------
*/
typedef struct StartReplicationCmd
{
NodeTag type;
ReplicationKind kind;
char *slotname;
TimeLineID timeline;
XLogRecPtr startpoint;
List *options;
} StartReplicationCmd;
/* ----------------------
* TIMELINE_HISTORY command
* ----------------------
*/
typedef struct TimeLineHistoryCmd
{
NodeTag type;
TimeLineID timeline;
} TimeLineHistoryCmd;
#endif /* REPLNODES_H */