mirror of
https://github.com/postgres/postgres.git
synced 2025-04-24 10:47:04 +03:00
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
99 lines
1.8 KiB
C
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 */
|