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 15:15:32 Functions: 100.0 % 1 1 1
Baseline: 15
Baseline Date: 2023-04-08 15:09:40
Legend: Lines: hit not hit

           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 *
      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                 : 
      80             245 :     data = result->data;
      81             245 :     pfree(result);
      82                 : 
      83             245 :     return data;
      84                 : }
        

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