PostgreSQL Source Code git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
xlogbackup.c File Reference
#include "postgres.h"
#include "access/xlog.h"
#include "access/xlog_internal.h"
#include "access/xlogbackup.h"
Include dependency graph for xlogbackup.c:

Go to the source code of this file.

Functions

char * build_backup_content (BackupState *state, bool ishistoryfile)
 

Function Documentation

◆ build_backup_content()

char * build_backup_content ( BackupState state,
bool  ishistoryfile 
)

Definition at line 29 of file xlogbackup.c.

30{
31 char startstrbuf[128];
32 char startxlogfile[MAXFNAMELEN]; /* backup start WAL file */
33 XLogSegNo startsegno;
34 StringInfo result = makeStringInfo();
35 char *data;
36
37 Assert(state != NULL);
38
39 /* Use the log timezone here, not the session timezone */
40 pg_strftime(startstrbuf, sizeof(startstrbuf), "%Y-%m-%d %H:%M:%S %Z",
41 pg_localtime(&state->starttime, log_timezone));
42
43 XLByteToSeg(state->startpoint, startsegno, wal_segment_size);
44 XLogFileName(startxlogfile, state->starttli, startsegno, wal_segment_size);
45 appendStringInfo(result, "START WAL LOCATION: %X/%X (file %s)\n",
46 LSN_FORMAT_ARGS(state->startpoint), startxlogfile);
47
48 if (ishistoryfile)
49 {
50 char stopxlogfile[MAXFNAMELEN]; /* backup stop WAL file */
51 XLogSegNo stopsegno;
52
53 XLByteToSeg(state->stoppoint, stopsegno, wal_segment_size);
54 XLogFileName(stopxlogfile, state->stoptli, stopsegno, wal_segment_size);
55 appendStringInfo(result, "STOP WAL LOCATION: %X/%X (file %s)\n",
56 LSN_FORMAT_ARGS(state->stoppoint), stopxlogfile);
57 }
58
59 appendStringInfo(result, "CHECKPOINT LOCATION: %X/%X\n",
60 LSN_FORMAT_ARGS(state->checkpointloc));
61 appendStringInfoString(result, "BACKUP METHOD: streamed\n");
62 appendStringInfo(result, "BACKUP FROM: %s\n",
63 state->started_in_recovery ? "standby" : "primary");
64 appendStringInfo(result, "START TIME: %s\n", startstrbuf);
65 appendStringInfo(result, "LABEL: %s\n", state->name);
66 appendStringInfo(result, "START TIMELINE: %u\n", state->starttli);
67
68 if (ishistoryfile)
69 {
70 char stopstrfbuf[128];
71
72 /* Use the log timezone here, not the session timezone */
73 pg_strftime(stopstrfbuf, sizeof(stopstrfbuf), "%Y-%m-%d %H:%M:%S %Z",
74 pg_localtime(&state->stoptime, log_timezone));
75
76 appendStringInfo(result, "STOP TIME: %s\n", stopstrfbuf);
77 appendStringInfo(result, "STOP TIMELINE: %u\n", state->stoptli);
78 }
79
80 /* either both istartpoint and istarttli should be set, or neither */
81 Assert(XLogRecPtrIsInvalid(state->istartpoint) == (state->istarttli == 0));
82 if (!XLogRecPtrIsInvalid(state->istartpoint))
83 {
84 appendStringInfo(result, "INCREMENTAL FROM LSN: %X/%X\n",
85 LSN_FORMAT_ARGS(state->istartpoint));
86 appendStringInfo(result, "INCREMENTAL FROM TLI: %u\n",
87 state->istarttli);
88 }
89
90 data = result->data;
91 pfree(result);
92
93 return data;
94}
#define Assert(condition)
Definition: c.h:812
void pfree(void *pointer)
Definition: mcxt.c:1521
const void * data
size_t pg_strftime(char *s, size_t maxsize, const char *format, const struct pg_tm *t)
Definition: strftime.c:128
struct pg_tm * pg_localtime(const pg_time_t *timep, const pg_tz *tz)
Definition: localtime.c:1344
PGDLLIMPORT pg_tz * log_timezone
Definition: pgtz.c:31
StringInfo makeStringInfo(void)
Definition: stringinfo.c:38
void appendStringInfo(StringInfo str, const char *fmt,...)
Definition: stringinfo.c:94
void appendStringInfoString(StringInfo str, const char *s)
Definition: stringinfo.c:179
Definition: regguts.h:323
int wal_segment_size
Definition: xlog.c:143
#define MAXFNAMELEN
#define XLByteToSeg(xlrp, logSegNo, wal_segsz_bytes)
static void XLogFileName(char *fname, TimeLineID tli, XLogSegNo logSegNo, int wal_segsz_bytes)
#define LSN_FORMAT_ARGS(lsn)
Definition: xlogdefs.h:43
#define XLogRecPtrIsInvalid(r)
Definition: xlogdefs.h:29
uint64 XLogSegNo
Definition: xlogdefs.h:48

References appendStringInfo(), appendStringInfoString(), Assert, StringInfoData::data, data, log_timezone, LSN_FORMAT_ARGS, makeStringInfo(), MAXFNAMELEN, pfree(), pg_localtime(), pg_strftime(), wal_segment_size, XLByteToSeg, XLogFileName(), and XLogRecPtrIsInvalid.

Referenced by do_pg_backup_stop(), perform_base_backup(), and pg_backup_stop().