PostgreSQL Source Code git master
origin.h
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 * origin.h
3 * Exports from replication/logical/origin.c
4 *
5 * Copyright (c) 2013-2025, PostgreSQL Global Development Group
6 *
7 * src/include/replication/origin.h
8 *-------------------------------------------------------------------------
9 */
10#ifndef PG_ORIGIN_H
11#define PG_ORIGIN_H
12
13#include "access/xlog.h"
14#include "access/xlogdefs.h"
15#include "access/xlogreader.h"
17
18typedef struct xl_replorigin_set
19{
22 bool force;
24
25typedef struct xl_replorigin_drop
26{
29
30#define XLOG_REPLORIGIN_SET 0x00
31#define XLOG_REPLORIGIN_DROP 0x10
32
33#define InvalidRepOriginId 0
34#define DoNotReplicateId PG_UINT16_MAX
35
36/*
37 * To avoid needing a TOAST table for pg_replication_origin, we limit
38 * replication origin names to 512 bytes. This should be more than enough for
39 * all practical use.
40 */
41#define MAX_RONAME_LEN 512
42
46
47/* GUCs */
49
50/* API for querying & manipulating replication origins */
51extern RepOriginId replorigin_by_name(const char *roname, bool missing_ok);
52extern RepOriginId replorigin_create(const char *roname);
53extern void replorigin_drop_by_name(const char *name, bool missing_ok, bool nowait);
54extern bool replorigin_by_oid(RepOriginId roident, bool missing_ok,
55 char **roname);
56
57/* API for querying & manipulating replication progress tracking */
58extern void replorigin_advance(RepOriginId node,
59 XLogRecPtr remote_commit,
60 XLogRecPtr local_commit,
61 bool go_backward, bool wal_log);
62extern XLogRecPtr replorigin_get_progress(RepOriginId node, bool flush);
63
64extern void replorigin_session_advance(XLogRecPtr remote_commit,
65 XLogRecPtr local_commit);
66extern void replorigin_session_setup(RepOriginId node, int acquired_by);
67extern void replorigin_session_reset(void);
69
70/* Checkpoint/Startup integration */
71extern void CheckPointReplicationOrigin(void);
72extern void StartupReplicationOrigin(void);
73
74/* WAL logging */
75extern void replorigin_redo(XLogReaderState *record);
76extern void replorigin_desc(StringInfo buf, XLogReaderState *record);
77extern const char *replorigin_identify(uint8 info);
78
79/* shared memory allocation */
81extern void ReplicationOriginShmemInit(void);
82
83#endif /* PG_ORIGIN_H */
#define PGDLLIMPORT
Definition: c.h:1291
uint8_t uint8
Definition: c.h:500
size_t Size
Definition: c.h:576
int64 TimestampTz
Definition: timestamp.h:39
RepOriginId replorigin_by_name(const char *roname, bool missing_ok)
Definition: origin.c:226
Size ReplicationOriginShmemSize(void)
Definition: origin.c:534
RepOriginId replorigin_create(const char *roname)
Definition: origin.c:257
void replorigin_session_reset(void)
Definition: origin.c:1213
void replorigin_session_advance(XLogRecPtr remote_commit, XLogRecPtr local_commit)
Definition: origin.c:1242
PGDLLIMPORT XLogRecPtr replorigin_session_origin_lsn
Definition: origin.c:164
bool replorigin_by_oid(RepOriginId roident, bool missing_ok, char **roname)
Definition: origin.c:493
void replorigin_desc(StringInfo buf, XLogReaderState *record)
XLogRecPtr replorigin_get_progress(RepOriginId node, bool flush)
Definition: origin.c:1037
struct xl_replorigin_drop xl_replorigin_drop
const char * replorigin_identify(uint8 info)
PGDLLIMPORT int max_active_replication_origins
Definition: origin.c:104
void StartupReplicationOrigin(void)
Definition: origin.c:722
void replorigin_drop_by_name(const char *name, bool missing_ok, bool nowait)
Definition: origin.c:439
void replorigin_advance(RepOriginId node, XLogRecPtr remote_commit, XLogRecPtr local_commit, bool go_backward, bool wal_log)
Definition: origin.c:911
void replorigin_session_setup(RepOriginId node, int acquired_by)
Definition: origin.c:1120
void CheckPointReplicationOrigin(void)
Definition: origin.c:596
PGDLLIMPORT RepOriginId replorigin_session_origin
Definition: origin.c:163
XLogRecPtr replorigin_session_get_progress(bool flush)
Definition: origin.c:1260
void ReplicationOriginShmemInit(void)
Definition: origin.c:549
struct xl_replorigin_set xl_replorigin_set
PGDLLIMPORT TimestampTz replorigin_session_origin_timestamp
Definition: origin.c:165
void replorigin_redo(XLogReaderState *record)
Definition: origin.c:850
static char * buf
Definition: pg_test_fsync.c:72
RepOriginId node_id
Definition: origin.h:27
RepOriginId node_id
Definition: origin.h:21
XLogRecPtr remote_lsn
Definition: origin.h:20
const char * name
uint16 RepOriginId
Definition: xlogdefs.h:65
uint64 XLogRecPtr
Definition: xlogdefs.h:21