LCOV - differential code coverage report
Current view: top level - src/backend/access/transam - xlogbackup.c (source / functions) Coverage Total Hit GNC
Current: Differential Code Coverage HEAD vs 15 Lines: 100.0 % 30 30 30
Current Date: 2023-04-08 17:13:01 Functions: 100.0 % 1 1 1
Baseline: 15 Line coverage date bins:
Baseline Date: 2023-04-08 15:09:40 (180,240] days: 100.0 % 30 30 30
Legend: Lines: hit not hit Function coverage date bins:
(180,240] days: 100.0 % 1 1 1

 Age         Owner                  TLA  Line data    Source code
                                  1                 : /*-------------------------------------------------------------------------
                                  2                 :  *
                                  3                 :  * xlogbackup.c
                                  4                 :  *      Internal routines for base backups.
                                  5                 :  *
                                  6                 :  * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
                                  7                 :  * Portions Copyright (c) 1994, Regents of the University of California
                                  8                 :  *
                                  9                 :  * IDENTIFICATION
                                 10                 :  *      src/backend/access/transam/xlogbackup.c
                                 11                 :  *-------------------------------------------------------------------------
                                 12                 :  */
                                 13                 : 
                                 14                 : #include "postgres.h"
                                 15                 : 
                                 16                 : #include "access/xlog.h"
                                 17                 : #include "access/xlog_internal.h"
                                 18                 : #include "access/xlogbackup.h"
                                 19                 : 
                                 20                 : /*
                                 21                 :  * Build contents for backup_label or backup history file.
                                 22                 :  *
                                 23                 :  * When ishistoryfile is true, it creates the contents for a backup history
                                 24                 :  * file, otherwise it creates contents for a backup_label file.
                                 25                 :  *
                                 26                 :  * Returns the result generated as a palloc'd string.
                                 27                 :  */
                                 28                 : char *
  195 michael                    29 GNC         245 : build_backup_content(BackupState *state, bool ishistoryfile)
                                 30                 : {
                                 31                 :     char        startstrbuf[128];
                                 32                 :     char        startxlogfile[MAXFNAMELEN]; /* backup start WAL file */
                                 33                 :     XLogSegNo   startsegno;
                                 34             245 :     StringInfo  result = makeStringInfo();
                                 35                 :     char       *data;
                                 36                 : 
                                 37             245 :     Assert(state != NULL);
                                 38                 : 
                                 39                 :     /* Use the log timezone here, not the session timezone */
                                 40             245 :     pg_strftime(startstrbuf, sizeof(startstrbuf), "%Y-%m-%d %H:%M:%S %Z",
                                 41             245 :                 pg_localtime(&state->starttime, log_timezone));
                                 42                 : 
                                 43             245 :     XLByteToSeg(state->startpoint, startsegno, wal_segment_size);
                                 44             245 :     XLogFileName(startxlogfile, state->starttli, startsegno, wal_segment_size);
                                 45             245 :     appendStringInfo(result, "START WAL LOCATION: %X/%X (file %s)\n",
                                 46             245 :                      LSN_FORMAT_ARGS(state->startpoint), startxlogfile);
                                 47                 : 
                                 48             245 :     if (ishistoryfile)
                                 49                 :     {
                                 50                 :         char        stopxlogfile[MAXFNAMELEN];  /* backup stop WAL file */
                                 51                 :         XLogSegNo   stopsegno;
                                 52                 : 
                                 53             117 :         XLByteToSeg(state->stoppoint, stopsegno, wal_segment_size);
                                 54             117 :         XLogFileName(stopxlogfile, state->stoptli, stopsegno, wal_segment_size);
                                 55             117 :         appendStringInfo(result, "STOP WAL LOCATION: %X/%X (file %s)\n",
                                 56             117 :                          LSN_FORMAT_ARGS(state->stoppoint), stopxlogfile);
                                 57                 :     }
                                 58                 : 
                                 59             245 :     appendStringInfo(result, "CHECKPOINT LOCATION: %X/%X\n",
                                 60             245 :                      LSN_FORMAT_ARGS(state->checkpointloc));
                                 61             245 :     appendStringInfo(result, "BACKUP METHOD: streamed\n");
                                 62             245 :     appendStringInfo(result, "BACKUP FROM: %s\n",
                                 63             245 :                      state->started_in_recovery ? "standby" : "primary");
                                 64             245 :     appendStringInfo(result, "START TIME: %s\n", startstrbuf);
                                 65             245 :     appendStringInfo(result, "LABEL: %s\n", state->name);
                                 66             245 :     appendStringInfo(result, "START TIMELINE: %u\n", state->starttli);
                                 67                 : 
                                 68             245 :     if (ishistoryfile)
                                 69                 :     {
                                 70                 :         char        stopstrfbuf[128];
                                 71                 : 
                                 72                 :         /* Use the log timezone here, not the session timezone */
                                 73             117 :         pg_strftime(stopstrfbuf, sizeof(stopstrfbuf), "%Y-%m-%d %H:%M:%S %Z",
                                 74             117 :                     pg_localtime(&state->stoptime, log_timezone));
                                 75                 : 
                                 76             117 :         appendStringInfo(result, "STOP TIME: %s\n", stopstrfbuf);
                                 77             117 :         appendStringInfo(result, "STOP TIMELINE: %u\n", state->stoptli);
                                 78                 :     }
                                 79                 : 
  194                            80             245 :     data = result->data;
                                 81             245 :     pfree(result);
                                 82                 : 
                                 83             245 :     return data;
                                 84                 : }
        

Generated by: LCOV version v1.16-55-g56c0a2a