mirror of
https://github.com/postgres/postgres.git
synced 2025-05-03 22:24:49 +03:00
Fix pg_basebackup with in-place tablespaces.
Previously, pg_basebackup from a cluster that contained an 'in-place' tablespace, as introduced by commit 7170f215, would produce a harmless warning on Unix and fail completely on Windows. Reported-by: Kyotaro Horiguchi <horikyota.ntt@gmail.com> Reviewed-by: Kyotaro Horiguchi <horikyota.ntt@gmail.com> Reviewed-by: Michael Paquier <michael@paquier.xyz> Discussion: https://postgr.es/m/20220304.165449.1200020258723305904.horikyota.ntt%40gmail.com
This commit is contained in:
parent
9dde82899c
commit
c6f2f01611
@ -66,6 +66,7 @@
|
|||||||
#include "catalog/pg_control.h"
|
#include "catalog/pg_control.h"
|
||||||
#include "catalog/pg_database.h"
|
#include "catalog/pg_database.h"
|
||||||
#include "common/controldata_utils.h"
|
#include "common/controldata_utils.h"
|
||||||
|
#include "common/file_utils.h"
|
||||||
#include "executor/instrument.h"
|
#include "executor/instrument.h"
|
||||||
#include "miscadmin.h"
|
#include "miscadmin.h"
|
||||||
#include "pg_trace.h"
|
#include "pg_trace.h"
|
||||||
@ -8292,6 +8293,19 @@ do_pg_start_backup(const char *backupidstr, bool fast, TimeLineID *starttli_p,
|
|||||||
|
|
||||||
snprintf(fullpath, sizeof(fullpath), "pg_tblspc/%s", de->d_name);
|
snprintf(fullpath, sizeof(fullpath), "pg_tblspc/%s", de->d_name);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Skip anything that isn't a symlink/junction. For testing only,
|
||||||
|
* we sometimes use allow_in_place_tablespaces to create
|
||||||
|
* directories directly under pg_tblspc, which would fail below.
|
||||||
|
*/
|
||||||
|
#ifdef WIN32
|
||||||
|
if (!pgwin32_is_junction(fullpath))
|
||||||
|
continue;
|
||||||
|
#else
|
||||||
|
if (get_dirent_type(fullpath, de, false, ERROR) != PGFILETYPE_LNK)
|
||||||
|
continue;
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(HAVE_READLINK) || defined(WIN32)
|
#if defined(HAVE_READLINK) || defined(WIN32)
|
||||||
rllen = readlink(fullpath, linkpath, sizeof(linkpath));
|
rllen = readlink(fullpath, linkpath, sizeof(linkpath));
|
||||||
if (rllen < 0)
|
if (rllen < 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user