/
githubmirror
/
postgres
Обзор
Документация
Войти
/
githubmirror
/
postgres
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/include/replication/origin.h
87 строк
3 KB
Heikki Linnakangas
Convert all remaining subsystems to use the new shmem allocation API
06 апр 2026, 02:13
06 апр 2026, 02:13
9b5acad
Код
Авторство
О чём код?
/*------------------------------------------------------------------------- * origin.h * Exports from replication/logical/origin.c * * Copyright (c) 2013-2026, PostgreSQL Global Development Group * * src/include/replication/origin.h *------------------------------------------------------------------------- */ #ifndef PG_ORIGIN_H #define PG_ORIGIN_H #include "access/xlog.h" #include "access/xlogdefs.h" #include "access/xlogreader.h" #include "catalog/pg_replication_origin.h" typedef struct xl_replorigin_set { XLogRecPtr remote_lsn; ReplOriginId node_id; bool force; } xl_replorigin_set; typedef struct xl_replorigin_drop { ReplOriginId node_id; } xl_replorigin_drop; #define XLOG_REPLORIGIN_SET 0x00 #define XLOG_REPLORIGIN_DROP 0x10 #define InvalidReplOriginId 0 #define DoNotReplicateId PG_UINT16_MAX /* * To avoid needing a TOAST table for pg_replication_origin, we limit * replication origin names to 512 bytes. This should be more than enough for * all practical use. */ #define MAX_RONAME_LEN 512 typedef struct ReplOriginXactState { ReplOriginId origin; XLogRecPtr origin_lsn; TimestampTz origin_timestamp; } ReplOriginXactState; extern PGDLLIMPORT ReplOriginXactState replorigin_xact_state; /* GUCs */ extern PGDLLIMPORT int max_active_replication_origins; /* API for querying & manipulating replication origins */ extern ReplOriginId replorigin_by_name(const char *roname, bool missing_ok); extern ReplOriginId replorigin_create(const char *roname); extern void replorigin_drop_by_name(const char *name, bool missing_ok, bool nowait); extern bool replorigin_by_oid(ReplOriginId roident, bool missing_ok, char **roname); /* API for querying & manipulating replication progress tracking */ extern void replorigin_advance(ReplOriginId node, XLogRecPtr remote_commit, XLogRecPtr local_commit, bool go_backward, bool wal_log); extern XLogRecPtr replorigin_get_progress(ReplOriginId node, bool flush); extern void replorigin_session_advance(XLogRecPtr remote_commit, XLogRecPtr local_commit); extern void replorigin_session_setup(ReplOriginId node, int acquired_by); extern void replorigin_session_reset(void); extern XLogRecPtr replorigin_session_get_progress(bool flush); /* Per-transaction replication origin state manipulation */ extern void replorigin_xact_clear(bool clear_origin); /* Checkpoint/Startup integration */ extern void CheckPointReplicationOrigin(void); extern void StartupReplicationOrigin(void); /* WAL logging */ extern void replorigin_redo(XLogReaderState *record); extern void replorigin_desc(StringInfo buf, XLogReaderState *record); extern const char *replorigin_identify(uint8 info); #endif /* PG_ORIGIN_H */