mirror of https://github.com/postgres/postgres
Presently, restore_command uses a different code path than
archive_cleanup_command and recovery_end_command. These code paths
are similar and can be easily combined, as long as it is possible to
identify if a command should:
- Issue a FATAL on signal.
- Exit immediately on SIGTERM.
While on it, this removes src/common/archive.c and its associated
header. Since the introduction of c96de2c, BuildRestoreCommand() has
become a simple wrapper of replace_percent_placeholders() able to call
make_native_path(). This simplifies shell_restore.c as long as
RestoreArchivedFile() includes a call to make_native_path().
Author: Nathan Bossart
Reviewed-by: Andres Freund, Michael Paquier
Discussion: https://postgr.es/m/20221227192449.GA3672473@nathanxps13
pull/114/head
parent
2f31f405e1
commit
14bdb3f13d
@ -1,60 +0,0 @@ |
|||||||
/*-------------------------------------------------------------------------
|
|
||||||
* |
|
||||||
* archive.c |
|
||||||
* Common WAL archive routines |
|
||||||
* |
|
||||||
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group |
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California |
|
||||||
* |
|
||||||
* |
|
||||||
* IDENTIFICATION |
|
||||||
* src/common/archive.c |
|
||||||
* |
|
||||||
*------------------------------------------------------------------------- |
|
||||||
*/ |
|
||||||
|
|
||||||
#ifndef FRONTEND |
|
||||||
#include "postgres.h" |
|
||||||
#else |
|
||||||
#include "postgres_fe.h" |
|
||||||
#endif |
|
||||||
|
|
||||||
#include "common/archive.h" |
|
||||||
#include "common/percentrepl.h" |
|
||||||
|
|
||||||
/*
|
|
||||||
* BuildRestoreCommand |
|
||||||
* |
|
||||||
* Builds a restore command to retrieve a file from WAL archives, replacing |
|
||||||
* the supported aliases with values supplied by the caller as defined by |
|
||||||
* the GUC parameter restore_command: xlogpath for %p, xlogfname for %f and |
|
||||||
* lastRestartPointFname for %r. |
|
||||||
* |
|
||||||
* The result is a palloc'd string for the restore command built. The |
|
||||||
* caller is responsible for freeing it. If any of the required arguments |
|
||||||
* is NULL and that the corresponding alias is found in the command given |
|
||||||
* by the caller, then an error is thrown. |
|
||||||
*/ |
|
||||||
char * |
|
||||||
BuildRestoreCommand(const char *restoreCommand, |
|
||||||
const char *xlogpath, |
|
||||||
const char *xlogfname, |
|
||||||
const char *lastRestartPointFname) |
|
||||||
{ |
|
||||||
char *nativePath = NULL; |
|
||||||
char *result; |
|
||||||
|
|
||||||
if (xlogpath) |
|
||||||
{ |
|
||||||
nativePath = pstrdup(xlogpath); |
|
||||||
make_native_path(nativePath); |
|
||||||
} |
|
||||||
|
|
||||||
result = replace_percent_placeholders(restoreCommand, "restore_command", "frp", |
|
||||||
xlogfname, lastRestartPointFname, nativePath); |
|
||||||
|
|
||||||
if (nativePath) |
|
||||||
pfree(nativePath); |
|
||||||
|
|
||||||
return result; |
|
||||||
} |
|
||||||
@ -1,21 +0,0 @@ |
|||||||
/*-------------------------------------------------------------------------
|
|
||||||
* |
|
||||||
* archive.h |
|
||||||
* Common WAL archive routines |
|
||||||
* |
|
||||||
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group |
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California |
|
||||||
* |
|
||||||
* src/include/common/archive.h |
|
||||||
* |
|
||||||
*------------------------------------------------------------------------- |
|
||||||
*/ |
|
||||||
#ifndef ARCHIVE_H |
|
||||||
#define ARCHIVE_H |
|
||||||
|
|
||||||
extern char *BuildRestoreCommand(const char *restoreCommand, |
|
||||||
const char *xlogpath, /* %p */ |
|
||||||
const char *xlogfname, /* %f */ |
|
||||||
const char *lastRestartPointFname); /* %r */ |
|
||||||
|
|
||||||
#endif /* ARCHIVE_H */ |
|
||||||
Loading…
Reference in new issue