Coverage Report

Created: 2026-08-14 06:37

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/postgres/src/common/archive.c
Line
Count
Source
1
/*-------------------------------------------------------------------------
2
 *
3
 * archive.c
4
 *    Common WAL archive routines
5
 *
6
 * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
7
 * Portions Copyright (c) 1994, Regents of the University of California
8
 *
9
 *
10
 * IDENTIFICATION
11
 *    src/common/archive.c
12
 *
13
 *-------------------------------------------------------------------------
14
 */
15
16
#ifndef FRONTEND
17
#include "postgres.h"
18
#else
19
#include "postgres_fe.h"
20
#endif
21
22
#include "common/archive.h"
23
#include "common/percentrepl.h"
24
25
/*
26
 * BuildRestoreCommand
27
 *
28
 * Builds a restore command to retrieve a file from WAL archives, replacing
29
 * the supported aliases with values supplied by the caller as defined by
30
 * the GUC parameter restore_command: xlogpath for %p, xlogfname for %f and
31
 * lastRestartPointFname for %r.
32
 *
33
 * The result is a palloc'd string for the restore command built.  The
34
 * caller is responsible for freeing it.  If any of the required arguments
35
 * is NULL and that the corresponding alias is found in the command given
36
 * by the caller, then an error is thrown.
37
 */
38
char *
39
BuildRestoreCommand(const char *restoreCommand,
40
          const char *xlogpath,
41
          const char *xlogfname,
42
          const char *lastRestartPointFname)
43
0
{
44
0
  char     *nativePath = NULL;
45
0
  char     *result;
46
47
0
  if (xlogpath)
48
0
  {
49
0
    nativePath = pstrdup(xlogpath);
50
0
    make_native_path(nativePath);
51
0
  }
52
53
0
  result = replace_percent_placeholders(restoreCommand, "restore_command", "frp",
54
0
                      xlogfname, lastRestartPointFname, nativePath);
55
56
0
  if (nativePath)
57
0
    pfree(nativePath);
58
59
0
  return result;
60
0
}