origin.h 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /*-------------------------------------------------------------------------
  2. * origin.h
  3. * Exports from replication/logical/origin.c
  4. *
  5. * Copyright (c) 2013-2016, PostgreSQL Global Development Group
  6. *
  7. * src/include/replication/origin.h
  8. *-------------------------------------------------------------------------
  9. */
  10. #ifndef PG_ORIGIN_H
  11. #define PG_ORIGIN_H
  12. #include "fmgr.h"
  13. #include "access/xlog.h"
  14. #include "access/xlogdefs.h"
  15. #include "access/xlogreader.h"
  16. #include "catalog/pg_replication_origin.h"
  17. typedef struct xl_replorigin_set
  18. {
  19. XLogRecPtr remote_lsn;
  20. RepOriginId node_id;
  21. bool force;
  22. } xl_replorigin_set;
  23. typedef struct xl_replorigin_drop
  24. {
  25. RepOriginId node_id;
  26. } xl_replorigin_drop;
  27. #define XLOG_REPLORIGIN_SET 0x00
  28. #define XLOG_REPLORIGIN_DROP 0x10
  29. #define InvalidRepOriginId 0
  30. #define DoNotReplicateId PG_UINT16_MAX
  31. extern PGDLLIMPORT RepOriginId replorigin_session_origin;
  32. extern PGDLLIMPORT XLogRecPtr replorigin_session_origin_lsn;
  33. extern PGDLLIMPORT TimestampTz replorigin_session_origin_timestamp;
  34. /* API for querying & manipulating replication origins */
  35. extern RepOriginId replorigin_by_name(char *name, bool missing_ok);
  36. extern RepOriginId replorigin_create(char *name);
  37. extern void replorigin_drop(RepOriginId roident);
  38. extern bool replorigin_by_oid(RepOriginId roident, bool missing_ok,
  39. char **roname);
  40. /* API for querying & manipulating replication progress tracking */
  41. extern void replorigin_advance(RepOriginId node,
  42. XLogRecPtr remote_commit,
  43. XLogRecPtr local_commit,
  44. bool go_backward, bool wal_log);
  45. extern XLogRecPtr replorigin_get_progress(RepOriginId node, bool flush);
  46. extern void replorigin_session_advance(XLogRecPtr remote_commit,
  47. XLogRecPtr local_commit);
  48. extern void replorigin_session_setup(RepOriginId node);
  49. extern void replorigin_session_reset(void);
  50. extern XLogRecPtr replorigin_session_get_progress(bool flush);
  51. /* Checkpoint/Startup integration */
  52. extern void CheckPointReplicationOrigin(void);
  53. extern void StartupReplicationOrigin(void);
  54. /* WAL logging */
  55. void replorigin_redo(XLogReaderState *record);
  56. void replorigin_desc(StringInfo buf, XLogReaderState *record);
  57. const char *replorigin_identify(uint8 info);
  58. /* shared memory allocation */
  59. extern Size ReplicationOriginShmemSize(void);
  60. extern void ReplicationOriginShmemInit(void);
  61. /* SQL callable functions */
  62. extern Datum pg_replication_origin_create(PG_FUNCTION_ARGS);
  63. extern Datum pg_replication_origin_drop(PG_FUNCTION_ARGS);
  64. extern Datum pg_replication_origin_oid(PG_FUNCTION_ARGS);
  65. extern Datum pg_replication_origin_session_setup(PG_FUNCTION_ARGS);
  66. extern Datum pg_replication_origin_session_reset(PG_FUNCTION_ARGS);
  67. extern Datum pg_replication_origin_session_is_setup(PG_FUNCTION_ARGS);
  68. extern Datum pg_replication_origin_session_progress(PG_FUNCTION_ARGS);
  69. extern Datum pg_replication_origin_xact_setup(PG_FUNCTION_ARGS);
  70. extern Datum pg_replication_origin_xact_reset(PG_FUNCTION_ARGS);
  71. extern Datum pg_replication_origin_advance(PG_FUNCTION_ARGS);
  72. extern Datum pg_replication_origin_progress(PG_FUNCTION_ARGS);
  73. extern Datum pg_show_replication_origin_status(PG_FUNCTION_ARGS);
  74. #endif /* PG_ORIGIN_H */