Age Owner TLA Line data Source code
1 : /*-------------------------------------------------------------------------
2 : *
3 : * archive.c
4 : * Common WAL archive routines
5 : *
6 : * Portions Copyright (c) 1996-2023, 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 *
62 michael 39 CBC 132 : BuildRestoreCommand(const char *restoreCommand,
40 : const char *xlogpath,
41 : const char *xlogfname,
42 : const char *lastRestartPointFname)
43 : {
62 michael 44 GNC 132 : char *nativePath = NULL;
45 : char *result;
46 :
47 132 : if (xlogpath)
62 michael 48 ECB : {
62 michael 49 GNC 132 : nativePath = pstrdup(xlogpath);
50 132 : make_native_path(nativePath);
51 : }
52 :
53 132 : result = replace_percent_placeholders(restoreCommand, "restore_command", "frp",
54 : xlogfname, lastRestartPointFname, nativePath);
55 :
56 132 : if (nativePath)
57 132 : pfree(nativePath);
58 :
59 132 : return result;
60 : }
|