PostgreSQL Source Code  git master
xlog.h
Go to the documentation of this file.
1 /*
2  * xlog.h
3  *
4  * PostgreSQL write-ahead log manager
5  *
6  * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
7  * Portions Copyright (c) 1994, Regents of the University of California
8  *
9  * src/include/access/xlog.h
10  */
11 #ifndef XLOG_H
12 #define XLOG_H
13 
14 #include "access/rmgr.h"
15 #include "access/xlogdefs.h"
16 #include "access/xloginsert.h"
17 #include "access/xlogreader.h"
18 #include "datatype/timestamp.h"
19 #include "lib/stringinfo.h"
20 #include "nodes/pg_list.h"
21 #include "storage/fd.h"
22 
23 
24 /* Sync methods */
25 #define SYNC_METHOD_FSYNC 0
26 #define SYNC_METHOD_FDATASYNC 1
27 #define SYNC_METHOD_OPEN 2 /* for O_SYNC */
28 #define SYNC_METHOD_FSYNC_WRITETHROUGH 3
29 #define SYNC_METHOD_OPEN_DSYNC 4 /* for O_DSYNC */
30 extern int sync_method;
31 
32 extern PGDLLIMPORT TimeLineID ThisTimeLineID; /* current TLI */
33 
34 /*
35  * Recovery target type.
36  * Only set during a Point in Time recovery, not when in standby mode.
37  */
38 typedef enum
39 {
47 
48 /*
49  * Recovery target TimeLine goal
50  */
51 typedef enum
52 {
57 
61 
62 extern bool reachedConsistency;
63 
64 /* these variables are GUC parameters related to XLOG */
65 extern int wal_segment_size;
66 extern int min_wal_size_mb;
67 extern int max_wal_size_mb;
68 extern int wal_keep_size_mb;
69 extern int max_slot_wal_keep_size_mb;
70 extern int XLOGbuffers;
71 extern int XLogArchiveTimeout;
73 extern char *XLogArchiveCommand;
74 extern bool EnableHotStandby;
75 extern bool fullPageWrites;
76 extern bool wal_log_hints;
77 extern int wal_compression;
78 extern bool wal_init_zero;
79 extern bool wal_recycle;
80 extern bool *wal_consistency_checking;
82 extern bool log_checkpoints;
83 extern char *recoveryRestoreCommand;
84 extern char *recoveryEndCommand;
85 extern char *archiveCleanupCommand;
86 extern bool recoveryTargetInclusive;
87 extern int recoveryTargetAction;
88 extern int recovery_min_apply_delay;
89 extern char *PrimaryConnInfo;
90 extern char *PrimarySlotName;
92 extern bool track_wal_io_timing;
93 
94 /* indirectly set via GUC system */
96 extern char *recovery_target_time_string;
97 extern const char *recoveryTargetName;
100 extern char *PromoteTriggerFile;
104 
105 extern int CheckPointSegments;
106 
107 /* option set locally in startup process only when signal files exist */
108 extern bool StandbyModeRequested;
109 extern bool StandbyMode;
110 
111 /* Archive modes */
112 typedef enum ArchiveMode
113 {
114  ARCHIVE_MODE_OFF = 0, /* disabled */
115  ARCHIVE_MODE_ON, /* enabled while server is running normally */
116  ARCHIVE_MODE_ALWAYS /* enabled always (even during recovery) */
117 } ArchiveMode;
118 extern int XLogArchiveMode;
119 
120 /* WAL levels */
121 typedef enum WalLevel
122 {
126 } WalLevel;
127 
128 /* Compression algorithms for WAL */
129 typedef enum WalCompression
130 {
135 
136 /* Recovery states */
137 typedef enum RecoveryState
138 {
139  RECOVERY_STATE_CRASH = 0, /* crash recovery */
140  RECOVERY_STATE_ARCHIVE, /* archive recovery */
141  RECOVERY_STATE_DONE /* currently in production */
142 } RecoveryState;
143 
144 /* Recovery pause states */
145 typedef enum RecoveryPauseState
146 {
147  RECOVERY_NOT_PAUSED, /* pause not requested */
148  RECOVERY_PAUSE_REQUESTED, /* pause requested, but not yet paused */
149  RECOVERY_PAUSED /* recovery is paused */
151 
152 extern PGDLLIMPORT int wal_level;
153 
154 /* Is WAL archiving enabled (always or only while server is running normally)? */
155 #define XLogArchivingActive() \
156  (AssertMacro(XLogArchiveMode == ARCHIVE_MODE_OFF || wal_level >= WAL_LEVEL_REPLICA), XLogArchiveMode > ARCHIVE_MODE_OFF)
157 /* Is WAL archiving enabled always (even during recovery)? */
158 #define XLogArchivingAlways() \
159  (AssertMacro(XLogArchiveMode == ARCHIVE_MODE_OFF || wal_level >= WAL_LEVEL_REPLICA), XLogArchiveMode == ARCHIVE_MODE_ALWAYS)
160 #define XLogArchiveCommandSet() (XLogArchiveCommand[0] != '\0')
161 
162 /*
163  * Is WAL-logging necessary for archival or log-shipping, or can we skip
164  * WAL-logging if we fsync() the data before committing instead?
165  */
166 #define XLogIsNeeded() (wal_level >= WAL_LEVEL_REPLICA)
167 
168 /*
169  * Is a full-page image needed for hint bit updates?
170  *
171  * Normally, we don't WAL-log hint bit updates, but if checksums are enabled,
172  * we have to protect them against torn page writes. When you only set
173  * individual bits on a page, it's still consistent no matter what combination
174  * of the bits make it to disk, but the checksum wouldn't match. Also WAL-log
175  * them if forced by wal_log_hints=on.
176  */
177 #define XLogHintBitIsNeeded() (DataChecksumsEnabled() || wal_log_hints)
178 
179 /* Do we need to WAL-log information required only for Hot Standby and logical replication? */
180 #define XLogStandbyInfoActive() (wal_level >= WAL_LEVEL_REPLICA)
181 
182 /* Do we need to WAL-log information required only for logical replication? */
183 #define XLogLogicalInfoActive() (wal_level >= WAL_LEVEL_LOGICAL)
184 
185 #ifdef WAL_DEBUG
186 extern bool XLOG_DEBUG;
187 #endif
188 
189 /*
190  * OR-able request flag bits for checkpoints. The "cause" bits are used only
191  * for logging purposes. Note: the flags must be defined so that it's
192  * sensible to OR together request flags arising from different requestors.
193  */
194 
195 /* These directly affect the behavior of CreateCheckPoint and subsidiaries */
196 #define CHECKPOINT_IS_SHUTDOWN 0x0001 /* Checkpoint is for shutdown */
197 #define CHECKPOINT_END_OF_RECOVERY 0x0002 /* Like shutdown checkpoint, but
198  * issued at end of WAL recovery */
199 #define CHECKPOINT_IMMEDIATE 0x0004 /* Do it without delays */
200 #define CHECKPOINT_FORCE 0x0008 /* Force even if no activity */
201 #define CHECKPOINT_FLUSH_ALL 0x0010 /* Flush all pages, including those
202  * belonging to unlogged tables */
203 /* These are important to RequestCheckpoint */
204 #define CHECKPOINT_WAIT 0x0020 /* Wait for completion */
205 #define CHECKPOINT_REQUESTED 0x0040 /* Checkpoint request has been made */
206 /* These indicate the cause of a checkpoint request */
207 #define CHECKPOINT_CAUSE_XLOG 0x0080 /* XLOG consumption */
208 #define CHECKPOINT_CAUSE_TIME 0x0100 /* Elapsed time */
209 
210 /*
211  * Flag bits for the record being inserted, set using XLogSetRecordFlags().
212  */
213 #define XLOG_INCLUDE_ORIGIN 0x01 /* include the replication origin */
214 #define XLOG_MARK_UNIMPORTANT 0x02 /* record not important for durability */
215 #define XLOG_INCLUDE_XID 0x04 /* WAL-internal message-passing hack */
216 
217 
218 /* Checkpoint statistics */
219 typedef struct CheckpointStatsData
220 {
221  TimestampTz ckpt_start_t; /* start of checkpoint */
222  TimestampTz ckpt_write_t; /* start of flushing buffers */
223  TimestampTz ckpt_sync_t; /* start of fsyncs */
224  TimestampTz ckpt_sync_end_t; /* end of fsyncs */
225  TimestampTz ckpt_end_t; /* end of checkpoint */
226 
227  int ckpt_bufs_written; /* # of buffers written */
228 
229  int ckpt_segs_added; /* # of new xlog segments created */
230  int ckpt_segs_removed; /* # of xlog segments deleted */
231  int ckpt_segs_recycled; /* # of xlog segments recycled */
232 
233  int ckpt_sync_rels; /* # of relations synced */
234  uint64 ckpt_longest_sync; /* Longest sync for one relation */
235  uint64 ckpt_agg_sync_time; /* The sum of all the individual sync
236  * times, which is not necessarily the
237  * same as the total elapsed time for the
238  * entire sync phase. */
240 
242 
243 /*
244  * GetWALAvailability return codes
245  */
246 typedef enum WALAvailability
247 {
248  WALAVAIL_INVALID_LSN, /* parameter error */
249  WALAVAIL_RESERVED, /* WAL segment is within max_wal_size */
250  WALAVAIL_EXTENDED, /* WAL segment is reserved by a slot or
251  * wal_keep_size */
252  WALAVAIL_UNRESERVED, /* no longer reserved, but not removed yet */
253  WALAVAIL_REMOVED /* WAL segment has been removed */
255 
256 struct XLogRecData;
257 
258 extern XLogRecPtr XLogInsertRecord(struct XLogRecData *rdata,
259  XLogRecPtr fpw_lsn,
260  uint8 flags,
261  int num_fpi);
262 extern void XLogFlush(XLogRecPtr RecPtr);
263 extern bool XLogBackgroundFlush(void);
264 extern bool XLogNeedsFlush(XLogRecPtr RecPtr);
265 extern int XLogFileInit(XLogSegNo segno);
266 extern int XLogFileOpen(XLogSegNo segno);
267 
268 extern void CheckXLogRemoved(XLogSegNo segno, TimeLineID tli);
270 extern void XLogSetAsyncXactLSN(XLogRecPtr record);
272 
273 extern void xlog_redo(XLogReaderState *record);
274 extern void xlog_desc(StringInfo buf, XLogReaderState *record);
275 extern const char *xlog_identify(uint8 info);
276 
277 extern void issue_xlog_fsync(int fd, XLogSegNo segno);
278 
279 extern bool RecoveryInProgress(void);
280 extern RecoveryState GetRecoveryState(void);
281 extern bool HotStandbyActive(void);
282 extern bool HotStandbyActiveInReplay(void);
283 extern bool XLogInsertAllowed(void);
284 extern void GetXLogReceiptTime(TimestampTz *rtime, bool *fromStream);
285 extern XLogRecPtr GetXLogReplayRecPtr(TimeLineID *replayTLI);
286 extern XLogRecPtr GetXLogInsertRecPtr(void);
287 extern XLogRecPtr GetXLogWriteRecPtr(void);
289 extern void SetRecoveryPause(bool recoveryPause);
290 extern TimestampTz GetLatestXTime(void);
292 
293 extern void UpdateControlFile(void);
294 extern uint64 GetSystemIdentifier(void);
295 extern char *GetMockAuthenticationNonce(void);
296 extern bool DataChecksumsEnabled(void);
298 extern Size XLOGShmemSize(void);
299 extern void XLOGShmemInit(void);
300 extern void BootStrapXLOG(void);
301 extern void LocalProcessControlFile(bool reset);
302 extern void StartupXLOG(void);
303 extern void ShutdownXLOG(int code, Datum arg);
304 extern void InitXLOGAccess(void);
305 extern void CreateCheckPoint(int flags);
306 extern bool CreateRestartPoint(int flags);
309 extern void XLogPutNextOid(Oid nextOid);
310 extern XLogRecPtr XLogRestorePoint(const char *rpName);
311 extern void UpdateFullPageWrites(void);
312 extern void GetFullPageWriteInfo(XLogRecPtr *RedoRecPtr_p, bool *doPageWrites_p);
313 extern XLogRecPtr GetRedoRecPtr(void);
314 extern XLogRecPtr GetInsertRecPtr(void);
315 extern XLogRecPtr GetFlushRecPtr(void);
317 extern void RemovePromoteSignalFiles(void);
318 
319 extern bool PromoteIsTriggered(void);
320 extern bool CheckPromoteSignal(void);
321 extern void WakeupRecovery(void);
322 extern void SetWalWriterSleeping(bool sleeping);
323 
324 extern void StartupRequestWalReceiverRestart(void);
325 extern void XLogRequestWalReceiverReply(void);
326 
327 extern void assign_max_wal_size(int newval, void *extra);
328 extern void assign_checkpoint_completion_target(double newval, void *extra);
329 
330 /*
331  * Routines to start, stop, and get status of a base backup.
332  */
333 
334 /*
335  * Session-level status of base backups
336  *
337  * This is used in parallel with the shared memory status to control parallel
338  * execution of base backup functions for a given session, be it a backend
339  * dedicated to replication or a normal backend connected to a database. The
340  * update of the session-level status happens at the same time as the shared
341  * memory counters to keep a consistent global and local state of the backups
342  * running.
343  */
344 typedef enum SessionBackupState
345 {
350 
351 extern XLogRecPtr do_pg_start_backup(const char *backupidstr, bool fast,
352  TimeLineID *starttli_p, StringInfo labelfile,
353  List **tablespaces, StringInfo tblspcmapfile);
354 extern XLogRecPtr do_pg_stop_backup(char *labelfile, bool waitforarchive,
355  TimeLineID *stoptli_p);
356 extern void do_pg_abort_backup(int code, Datum arg);
359 
360 /* File path names (all relative to $PGDATA) */
361 #define RECOVERY_SIGNAL_FILE "recovery.signal"
362 #define STANDBY_SIGNAL_FILE "standby.signal"
363 #define BACKUP_LABEL_FILE "backup_label"
364 #define BACKUP_LABEL_OLD "backup_label.old"
365 
366 #define TABLESPACE_MAP "tablespace_map"
367 #define TABLESPACE_MAP_OLD "tablespace_map.old"
368 
369 /* files to signal promotion to primary */
370 #define PROMOTE_SIGNAL_FILE "promote"
371 
372 #endif /* XLOG_H */
void CreateCheckPoint(int flags)
Definition: xlog.c:9010
struct CheckpointStatsData CheckpointStatsData
XLogRecPtr GetXLogWriteRecPtr(void)
Definition: xlog.c:11962
uint64 ckpt_agg_sync_time
Definition: xlog.h:235
TimeLineID recoveryTargetTLI
Definition: xlog.c:333
XLogRecPtr do_pg_start_backup(const char *backupidstr, bool fast, TimeLineID *starttli_p, StringInfo labelfile, List **tablespaces, StringInfo tblspcmapfile)
Definition: xlog.c:10946
const char * recoveryTargetName
Definition: xlog.c:281
TimestampTz ckpt_sync_end_t
Definition: xlog.h:224
bool CreateRestartPoint(int flags)
Definition: xlog.c:9611
int ckpt_sync_rels
Definition: xlog.h:233
bool XLogInsertAllowed(void)
Definition: xlog.c:8441
bool recoveryTargetInclusive
Definition: xlog.c:276
char * recovery_target_time_string
Definition: xlog.c:279
int min_wal_size_mb
Definition: xlog.c:92
bool XLogNeedsFlush(XLogRecPtr RecPtr)
Definition: xlog.c:3208
uint32 TimeLineID
Definition: xlogdefs.h:59
XLogRecPtr GetRedoRecPtr(void)
Definition: xlog.c:8620
bool track_wal_io_timing
Definition: xlog.c:113
int wal_keep_size_mb
Definition: xlog.c:93
bool DataChecksumsEnabled(void)
Definition: xlog.c:5018
bool wal_receiver_create_temp_slot
Definition: xlog.c:290
void WakeupRecovery(void)
Definition: xlog.c:13168
uint32 TransactionId
Definition: c.h:587
void XLogFlush(XLogRecPtr RecPtr)
Definition: xlog.c:2887
void xlog_desc(StringInfo buf, XLogReaderState *record)
Definition: xlogdesc.c:37
bool HotStandbyActive(void)
Definition: xlog.c:8402
int64 TimestampTz
Definition: timestamp.h:39
int XLogFileOpen(XLogSegNo segno)
Definition: xlog.c:3705
void reset(void)
Definition: sql-declare.c:600
int recoveryTargetAction
Definition: xlog.c:277
WALAvailability
Definition: xlog.h:246
WALAvailability GetWALAvailability(XLogRecPtr targetLSN)
Definition: xlog.c:9879
TimestampTz ckpt_start_t
Definition: xlog.h:221
XLogRecPtr XactLastRecEnd
Definition: xlog.c:353
RecoveryTargetTimeLineGoal
Definition: xlog.h:51
bool wal_log_hints
Definition: xlog.c:100
void LocalProcessControlFile(bool reset)
Definition: xlog.c:5118
unsigned char uint8
Definition: c.h:439
char * GetMockAuthenticationNonce(void)
Definition: xlog.c:5008
int ckpt_segs_recycled
Definition: xlog.h:231
bool fullPageWrites
Definition: xlog.c:99
XLogSegNo XLogGetLastRemovedSegno(void)
Definition: xlog.c:4030
int max_wal_size_mb
Definition: xlog.c:91
RecoveryState GetRecoveryState(void)
Definition: xlog.c:8381
char * wal_consistency_checking_string
Definition: xlog.c:102
unsigned int Oid
Definition: postgres_ext.h:31
void SetRecoveryPause(bool recoveryPause)
Definition: xlog.c:6277
bool CheckPromoteSignal(void)
Definition: xlog.c:13153
XLogRecPtr GetXLogReplayRecPtr(TimeLineID *replayTLI)
Definition: xlog.c:11927
static int fd(const char *x, int i)
Definition: preproc-init.c:105
void UpdateFullPageWrites(void)
Definition: xlog.c:10162
char * recoveryRestoreCommand
Definition: xlog.c:272
RecoveryTargetTimeLineGoal recoveryTargetTimeLineGoal
Definition: xlog.c:331
bool XLogBackgroundFlush(void)
Definition: xlog.c:3076
#define PGDLLIMPORT
Definition: c.h:1317
void xlog_redo(XLogReaderState *record)
Definition: xlog.c:10273
bool wal_init_zero
Definition: xlog.c:104
void XLogSetReplicationSlotMinimumLSN(XLogRecPtr lsn)
Definition: xlog.c:2769
void XLogSetAsyncXactLSN(XLogRecPtr record)
Definition: xlog.c:2728
void CheckXLogRemoved(XLogSegNo segno, TimeLineID tli)
Definition: xlog.c:3999
XLogRecPtr GetInsertRecPtr(void)
Definition: xlog.c:8664
bool reachedConsistency
Definition: xlog.c:877
void assign_checkpoint_completion_target(double newval, void *extra)
Definition: xlog.c:2354
bool * wal_consistency_checking
Definition: xlog.c:103
bool PromoteIsTriggered(void)
Definition: xlog.c:13064
void UpdateControlFile(void)
Definition: xlog.c:4989
RecoveryPauseState
Definition: xlog.h:145
int XLogArchiveTimeout
Definition: xlog.c:95
int XLogArchiveMode
Definition: xlog.c:96
const char * xlog_identify(uint8 info)
Definition: xlogdesc.c:154
char * recoveryEndCommand
Definition: xlog.c:273
void InitXLOGAccess(void)
Definition: xlog.c:8594
SessionBackupState
Definition: xlog.h:344
char * PrimaryConnInfo
Definition: xlog.c:287
PGDLLIMPORT int wal_level
Definition: xlog.c:108
bool EnableHotStandby
Definition: xlog.c:98
static char * buf
Definition: pg_test_fsync.c:68
XLogRecPtr GetXLogInsertRecPtr(void)
Definition: xlog.c:11946
int XLOGbuffers
Definition: xlog.c:94
int wal_compression
Definition: xlog.c:101
uint64 XLogSegNo
Definition: xlogdefs.h:48
RecoveryTargetType recoveryTarget
Definition: xlog.c:275
char * PromoteTriggerFile
Definition: xlog.c:289
RecoveryTargetType
Definition: xlog.h:38
void RemovePromoteSignalFiles(void)
Definition: xlog.c:13144
int ckpt_segs_removed
Definition: xlog.h:230
bool log_checkpoints
Definition: xlog.c:106
bool StandbyMode
Definition: xlog.c:293
XLogRecPtr GetFlushRecPtr(void)
Definition: xlog.c:8680
int max_slot_wal_keep_size_mb
Definition: xlog.c:112
int recovery_min_apply_delay
Definition: xlog.c:283
int ckpt_bufs_written
Definition: xlog.h:227
void register_persistent_abort_backup_handler(void)
Definition: xlog.c:11911
void StartupXLOG(void)
Definition: xlog.c:6617
int wal_segment_size
Definition: xlog.c:119
bool HotStandbyActiveInReplay(void)
Definition: xlog.c:8427
int CheckPointSegments
Definition: xlog.c:132
uintptr_t Datum
Definition: postgres.h:411
bool StandbyModeRequested
Definition: xlog.c:286
SessionBackupState get_backup_status(void)
Definition: xlog.c:11443
void issue_xlog_fsync(int fd, XLogSegNo segno)
Definition: xlog.c:10826
RecoveryPauseState GetRecoveryPauseState(void)
Definition: xlog.c:6257
XLogRecPtr ProcLastRecPtr
Definition: xlog.c:352
TimestampTz GetCurrentChunkReplayStartTime(void)
Definition: xlog.c:6456
XLogRecPtr GetLastImportantRecPtr(void)
Definition: xlog.c:8698
WalCompression
Definition: xlog.h:129
int sync_method
Definition: xlog.c:107
uint64 XLogRecPtr
Definition: xlogdefs.h:21
XLogRecPtr do_pg_stop_backup(char *labelfile, bool waitforarchive, TimeLineID *stoptli_p)
Definition: xlog.c:11464
PGDLLIMPORT XLogRecPtr XactLastCommitEnd
Definition: xlog.c:354
void SetWalWriterSleeping(bool sleeping)
Definition: xlog.c:13177
void ShutdownXLOG(int code, Datum arg)
Definition: xlog.c:8744
XLogRecPtr GetFakeLSNForUnloggedRel(void)
Definition: xlog.c:5034
void assign_max_wal_size(int newval, void *extra)
Definition: xlog.c:2347
ArchiveMode
Definition: xlog.h:112
size_t Size
Definition: c.h:540
TimestampTz GetLatestXTime(void)
Definition: xlog.c:6426
TimestampTz ckpt_write_t
Definition: xlog.h:222
#define newval
void XLogRequestWalReceiverReply(void)
Definition: xlog.c:13188
XLogRecPtr XLogRestorePoint(const char *rpName)
Definition: xlog.c:10074
Size XLOGShmemSize(void)
Definition: xlog.c:5129
bool RecoveryInProgress(void)
Definition: xlog.c:8328
TransactionId recoveryTargetXid
Definition: xlog.c:278
TimestampTz ckpt_sync_t
Definition: xlog.h:223
void do_pg_abort_backup(int code, Datum arg)
Definition: xlog.c:11879
XLogRecPtr recoveryTargetLSN
Definition: xlog.c:282
int ckpt_segs_added
Definition: xlog.h:229
void XLOGShmemInit(void)
Definition: xlog.c:5170
char * archiveCleanupCommand
Definition: xlog.c:274
bool wal_recycle
Definition: xlog.c:105
void * arg
CheckpointStatsData CheckpointStats
Definition: xlog.c:188
PGDLLIMPORT TimeLineID ThisTimeLineID
Definition: xlog.c:194
XLogRecPtr XLogInsertRecord(struct XLogRecData *rdata, XLogRecPtr fpw_lsn, uint8 flags, int num_fpi)
Definition: xlog.c:1013
void GetFullPageWriteInfo(XLogRecPtr *RedoRecPtr_p, bool *doPageWrites_p)
Definition: xlog.c:8649
int XLogFileInit(XLogSegNo segno)
Definition: xlog.c:3472
RecoveryState
Definition: xlog.h:137
int wal_retrieve_retry_interval
Definition: xlog.c:111
void StartupRequestWalReceiverRestart(void)
Definition: xlog.c:13002
void BootStrapXLOG(void)
Definition: xlog.c:5283
void XLogPutNextOid(Oid nextOid)
Definition: xlog.c:10019
Definition: pg_list.h:50
void GetXLogReceiptTime(TimestampTz *rtime, bool *fromStream)
Definition: xlog.c:6472
uint64 GetSystemIdentifier(void)
Definition: xlog.c:4998
XLogRecPtr CalculateMaxmumSafeLSN(void)
TimeLineID recoveryTargetTLIRequested
Definition: xlog.c:332
TimestampTz ckpt_end_t
Definition: xlog.h:225
WalLevel
Definition: xlog.h:121
uint64 ckpt_longest_sync
Definition: xlog.h:234
char * XLogArchiveCommand
Definition: xlog.c:97
char * PrimarySlotName
Definition: xlog.c:288