!2240 解决问题单:gs_probackup备份后 restore 后报错

Merge pull request !2240 from zhaobingyu/master
This commit is contained in:
opengauss-bot
2022-09-28 08:21:20 +00:00
committed by Gitee

View File

@ -18,6 +18,7 @@
#include "thread.h"
#include "common/fe_memutils.h"
#include "catalog/catalog.h"
#define RESTORE_ARRAY_LEN 100
@ -933,6 +934,25 @@ static void get_pgdata_files(const char *pgdata_path,
pretty_time);
}
static bool skip_some_tblspc_files(pgFile *file)
{
Oid tblspcOid;
int sscanf_res;
char tmp_rel_path[MAXPGPATH];
bool equ_tbs_version_dir = false;
bool prefix_equ_tbs_version_dir = false;
sscanf_res = sscanf_s(file->rel_path, PG_TBLSPC_DIR "/%u/%[^/]/",
&tblspcOid, tmp_rel_path, sizeof(tmp_rel_path));
equ_tbs_version_dir = (strcmp(tmp_rel_path, TABLESPACE_VERSION_DIRECTORY) == 0);
prefix_equ_tbs_version_dir = (strncmp(tmp_rel_path, TABLESPACE_VERSION_DIRECTORY,
strlen(TABLESPACE_VERSION_DIRECTORY)) == 0);
if (sscanf_res == 2 && !equ_tbs_version_dir && prefix_equ_tbs_version_dir)
return true;
return false;
}
static void remove_redundant_files(const char *pgdata_path,
parray *pgdata_files,
pgBackup *dest_backup)
@ -946,6 +966,10 @@ static void remove_redundant_files(const char *pgdata_path,
{
pgFile *file = (pgFile *)parray_get(pgdata_files, i);
/* For incremental backups, we need to skip some files */
if (skip_some_tblspc_files(file))
continue;
/* if file does not exists in destination list, then we can safely unlink it */
if (parray_bsearch(dest_backup->files, file, pgFileCompareRelPathWithExternal) == NULL)
{