1 | /* |
2 | * timeline.h |
3 | * |
4 | * Functions for reading and writing timeline history files. |
5 | * |
6 | * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group |
7 | * Portions Copyright (c) 1994, Regents of the University of California |
8 | * |
9 | * src/include/access/timeline.h |
10 | */ |
11 | #ifndef TIMELINE_H |
12 | #define TIMELINE_H |
13 | |
14 | #include "access/xlogdefs.h" |
15 | #include "nodes/pg_list.h" |
16 | |
17 | /* |
18 | * A list of these structs describes the timeline history of the server. Each |
19 | * TimeLineHistoryEntry represents a piece of WAL belonging to the history, |
20 | * from newest to oldest. All WAL locations between 'begin' and 'end' belong to |
21 | * the timeline represented by the entry. Together the 'begin' and 'end' |
22 | * pointers of all the entries form a contiguous line from beginning of time |
23 | * to infinity. |
24 | */ |
25 | typedef struct |
26 | { |
27 | TimeLineID tli; |
28 | XLogRecPtr begin; /* inclusive */ |
29 | XLogRecPtr end; /* exclusive, InvalidXLogRecPtr means infinity */ |
30 | } TimeLineHistoryEntry; |
31 | |
32 | extern List *readTimeLineHistory(TimeLineID targetTLI); |
33 | extern bool existsTimeLineHistory(TimeLineID probeTLI); |
34 | extern TimeLineID findNewestTimeLine(TimeLineID startTLI); |
35 | extern void writeTimeLineHistory(TimeLineID newTLI, TimeLineID parentTLI, |
36 | XLogRecPtr switchpoint, char *reason); |
37 | extern void writeTimeLineHistoryFile(TimeLineID tli, char *content, int size); |
38 | extern void restoreTimeLineHistoryFiles(TimeLineID begin, TimeLineID end); |
39 | extern bool tliInHistory(TimeLineID tli, List *expectedTLIs); |
40 | extern TimeLineID tliOfPointInHistory(XLogRecPtr ptr, List *history); |
41 | extern XLogRecPtr tliSwitchPoint(TimeLineID tli, List *history, |
42 | TimeLineID *nextTLI); |
43 | |
44 | #endif /* TIMELINE_H */ |
45 | |