1 /*------------------------------------------------------------------------- 2 * origin.h 3 * Exports from replication/logical/origin.c 4 * 5 * Copyright (c) 2013-2020, 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" 16 #include "catalog/pg_replication_origin.h" 17 18 typedef struct xl_replorigin_set 19 { 20 XLogRecPtr remote_lsn; 21 RepOriginId node_id; 22 bool force; 23 } xl_replorigin_set; 24 25 typedef struct xl_replorigin_drop 26 { 27 RepOriginId node_id; 28 } xl_replorigin_drop; 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 extern PGDLLIMPORT RepOriginId replorigin_session_origin; 37 extern PGDLLIMPORT XLogRecPtr replorigin_session_origin_lsn; 38 extern PGDLLIMPORT TimestampTz replorigin_session_origin_timestamp; 39 40 /* API for querying & manipulating replication origins */ 41 extern RepOriginId replorigin_by_name(char *name, bool missing_ok); 42 extern RepOriginId replorigin_create(char *name); 43 extern void replorigin_drop(RepOriginId roident, bool nowait); 44 extern bool replorigin_by_oid(RepOriginId roident, bool missing_ok, 45 char **roname); 46 47 /* API for querying & manipulating replication progress tracking */ 48 extern void replorigin_advance(RepOriginId node, 49 XLogRecPtr remote_commit, 50 XLogRecPtr local_commit, 51 bool go_backward, bool wal_log); 52 extern XLogRecPtr replorigin_get_progress(RepOriginId node, bool flush); 53 54 extern void replorigin_session_advance(XLogRecPtr remote_commit, 55 XLogRecPtr local_commit); 56 extern void replorigin_session_setup(RepOriginId node); 57 extern void replorigin_session_reset(void); 58 extern XLogRecPtr replorigin_session_get_progress(bool flush); 59 60 /* Checkpoint/Startup integration */ 61 extern void CheckPointReplicationOrigin(void); 62 extern void StartupReplicationOrigin(void); 63 64 /* WAL logging */ 65 void replorigin_redo(XLogReaderState *record); 66 void replorigin_desc(StringInfo buf, XLogReaderState *record); 67 const char *replorigin_identify(uint8 info); 68 69 /* shared memory allocation */ 70 extern Size ReplicationOriginShmemSize(void); 71 extern void ReplicationOriginShmemInit(void); 72 73 #endif /* PG_ORIGIN_H */ 74