Don't repeatedly register cache callbacks in pgoutput plugin.
[pgsql.git] / src / include / replication / walsender.h
blob4a60893a3bc52a050cf8dde91dafd2b930a91c4e
1 /*-------------------------------------------------------------------------
3 * walsender.h
4 * Exports from replication/walsender.c.
6 * Portions Copyright (c) 2010-2019, PostgreSQL Global Development Group
8 * src/include/replication/walsender.h
10 *-------------------------------------------------------------------------
12 #ifndef _WALSENDER_H
13 #define _WALSENDER_H
15 #include <signal.h>
17 #include "fmgr.h"
20 * What to do with a snapshot in create replication slot command.
22 typedef enum
24 CRS_EXPORT_SNAPSHOT,
25 CRS_NOEXPORT_SNAPSHOT,
26 CRS_USE_SNAPSHOT
27 } CRSSnapshotAction;
29 /* global state */
30 extern bool am_walsender;
31 extern bool am_cascading_walsender;
32 extern bool am_db_walsender;
33 extern bool wake_wal_senders;
35 /* user-settable parameters */
36 extern int max_wal_senders;
37 extern int wal_sender_timeout;
38 extern bool log_replication_commands;
40 extern void InitWalSender(void);
41 extern bool exec_replication_command(const char *query_string);
42 extern void WalSndErrorCleanup(void);
43 extern void WalSndSignals(void);
44 extern Size WalSndShmemSize(void);
45 extern void WalSndShmemInit(void);
46 extern void WalSndWakeup(void);
47 extern void WalSndInitStopping(void);
48 extern void WalSndWaitStopping(void);
49 extern void HandleWalSndInitStopping(void);
50 extern void WalSndRqstFileReload(void);
53 * Remember that we want to wakeup walsenders later
55 * This is separated from doing the actual wakeup because the writeout is done
56 * while holding contended locks.
58 #define WalSndWakeupRequest() \
59 do { wake_wal_senders = true; } while (0)
62 * wakeup walsenders if there is work to be done
64 #define WalSndWakeupProcessRequests() \
65 do \
66 { \
67 if (wake_wal_senders) \
68 { \
69 wake_wal_senders = false; \
70 if (max_wal_senders > 0) \
71 WalSndWakeup(); \
72 } \
73 } while (0)
75 #endif /* _WALSENDER_H */