PostgreSQL Source Code git master
Loading...
Searching...
No Matches
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-2026, 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
24
29
30#define XLOG_REPLORIGIN_SET 0x00
31#define XLOG_REPLORIGIN_DROP 0x10
32
33#define InvalidReplOriginId 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
49
51
52/* GUCs */
54
55/* API for querying & manipulating replication origins */
56extern ReplOriginId replorigin_by_name(const char *roname, bool missing_ok);
57extern ReplOriginId replorigin_create(const char *roname);
58extern void replorigin_drop_by_name(const char *name, bool missing_ok, bool nowait);
59extern bool replorigin_by_oid(ReplOriginId roident, bool missing_ok,
60 char **roname);
61
62/* API for querying & manipulating replication progress tracking */
63extern void replorigin_advance(ReplOriginId node,
66 bool go_backward, bool wal_log);
67extern XLogRecPtr replorigin_get_progress(ReplOriginId node, bool flush);
68
71extern void replorigin_session_setup(ReplOriginId node, int acquired_by);
72extern void replorigin_session_reset(void);
74
75/* Per-transaction replication origin state manipulation */
76extern void replorigin_xact_clear(bool clear_origin);
77
78/* Checkpoint/Startup integration */
79extern void CheckPointReplicationOrigin(void);
80extern void StartupReplicationOrigin(void);
81
82/* WAL logging */
83extern void replorigin_redo(XLogReaderState *record);
84extern void replorigin_desc(StringInfo buf, XLogReaderState *record);
85extern const char *replorigin_identify(uint8 info);
86
87/* shared memory allocation */
89extern void ReplicationOriginShmemInit(void);
90
91#endif /* PG_ORIGIN_H */
#define PGDLLIMPORT
Definition c.h:1334
uint8_t uint8
Definition c.h:544
size_t Size
Definition c.h:619
int64 TimestampTz
Definition timestamp.h:39
ReplOriginId replorigin_create(const char *roname)
Definition origin.c:262
Size ReplicationOriginShmemSize(void)
Definition origin.c:542
ReplOriginId replorigin_by_name(const char *roname, bool missing_ok)
Definition origin.c:231
void replorigin_advance(ReplOriginId node, XLogRecPtr remote_commit, XLogRecPtr local_commit, bool go_backward, bool wal_log)
Definition origin.c:918
void replorigin_session_reset(void)
Definition origin.c:1276
bool replorigin_by_oid(ReplOriginId roident, bool missing_ok, char **roname)
Definition origin.c:501
void replorigin_session_advance(XLogRecPtr remote_commit, XLogRecPtr local_commit)
Definition origin.c:1310
void replorigin_desc(StringInfo buf, XLogReaderState *record)
XLogRecPtr replorigin_get_progress(ReplOriginId node, bool flush)
Definition origin.c:1047
const char * replorigin_identify(uint8 info)
PGDLLIMPORT int max_active_replication_origins
Definition origin.c:104
void StartupReplicationOrigin(void)
Definition origin.c:730
void replorigin_drop_by_name(const char *name, bool missing_ok, bool nowait)
Definition origin.c:447
PGDLLIMPORT ReplOriginXactState replorigin_xact_state
Definition origin.c:166
void CheckPointReplicationOrigin(void)
Definition origin.c:604
XLogRecPtr replorigin_session_get_progress(bool flush)
Definition origin.c:1328
void ReplicationOriginShmemInit(void)
Definition origin.c:557
void replorigin_xact_clear(bool clear_origin)
Definition origin.c:1352
void replorigin_session_setup(ReplOriginId node, int acquired_by)
Definition origin.c:1146
void replorigin_redo(XLogReaderState *record)
Definition origin.c:857
static char buf[DEFAULT_XLOG_SEG_SIZE]
static int fb(int x)
ReplOriginId origin
Definition origin.h:45
XLogRecPtr origin_lsn
Definition origin.h:46
TimestampTz origin_timestamp
Definition origin.h:47
ReplOriginId node_id
Definition origin.h:27
XLogRecPtr remote_lsn
Definition origin.h:20
ReplOriginId node_id
Definition origin.h:21
const char * name
uint16 ReplOriginId
Definition xlogdefs.h:69
uint64 XLogRecPtr
Definition xlogdefs.h:21