Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0ae5a66

Browse files
committed
partial_restore_type as separate type
1 parent454eeac commit0ae5a66

File tree

4 files changed

+36
-12
lines changed

4 files changed

+36
-12
lines changed

‎src/pg_probackup.c

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -609,23 +609,29 @@ main(int argc, char *argv[])
609609
restore_params->skip_block_validation=skip_block_validation;
610610
restore_params->skip_external_dirs=skip_external_dirs;
611611
restore_params->partial_db_list=NULL;
612+
restore_params->partial_restore_type=NONE;
612613

613614
/* handle partial restore parameters */
614615
if (datname_exclude_list&&datname_include_list)
615616
elog(ERROR,"You cannot specify '--db-include' and '--db-exclude' together");
616617

617618
if (datname_exclude_list)
618619
{
619-
restore_params->is_include_list=false;
620+
restore_params->partial_restore_type=EXCLUDE;
620621
restore_params->partial_db_list=datname_exclude_list;
621622
}
622623
elseif (datname_include_list)
623624
{
624-
restore_params->is_include_list=true;
625+
restore_params->partial_restore_type=INCLUDE;
625626
restore_params->partial_db_list=datname_include_list;
626627
}
627628
}
628629

630+
/* sanity */
631+
if (backup_subcmd==VALIDATE_CMD&&restore_params->no_validate)
632+
elog(ERROR,"You cannot specify \"--no-validate\" option with the \"%s\" command",
633+
command_name);
634+
629635
if (num_threads<1)
630636
num_threads=1;
631637

@@ -663,8 +669,15 @@ main(int argc, char *argv[])
663669
restore_params);
664670
caseVALIDATE_CMD:
665671
if (current.backup_id==0&&target_time==0&&target_xid==0&& !target_lsn)
672+
{
673+
/* sanity */
674+
if (datname_exclude_list||datname_include_list)
675+
elog(ERROR,"You must specify parameter (-i, --backup-id) for partial validation");
676+
666677
returndo_validate_all();
678+
}
667679
else
680+
/* PITR validation and, optionally, partial validation */
668681
returndo_restore_or_validate(current.backup_id,
669682
recovery_target_options,
670683
restore_params);
@@ -797,7 +810,10 @@ opt_datname_include_list(ConfigOption *opt, const char *arg)
797810

798811
dbname=pgut_malloc(strlen(arg)+1);
799812

800-
/* TODO add sanity for database name */
813+
if (strcmp(dbname,"tempate0")==0||
814+
strcmp(dbname,"tempate1")==0)
815+
elog(ERROR,"Databases 'template0' and 'template1' cannot be used for partial restore or validation");
816+
801817
strcpy(dbname,arg);
802818

803819
parray_append(datname_include_list,dbname);

‎src/pg_probackup.h

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,13 @@ typedef struct db_map_entry
9191
char*datname;
9292
}db_map_entry;
9393

94+
typedefenumPartialRestoreType
95+
{
96+
NONE,
97+
INCLUDE,
98+
EXCLUDE,
99+
}PartialRestoreType;
100+
94101
typedefenumCompressAlg
95102
{
96103
NOT_DEFINED_COMPRESS=0,
@@ -348,7 +355,7 @@ typedef struct pgRestoreParams
348355
boolskip_block_validation;
349356

350357
/* options for partial restore */
351-
boolis_include_list;
358+
PartialRestoreTypepartial_restore_type;
352359
parray*partial_db_list;
353360
}pgRestoreParams;
354361

@@ -512,8 +519,9 @@ extern pgRecoveryTarget *parseRecoveryTargetOptions(
512519
constchar*target_inclusive,TimeLineIDtarget_tli,constchar*target_lsn,
513520
constchar*target_stop,constchar*target_name,
514521
constchar*target_action);
522+
515523
externparray*get_dbOid_exclude_list(pgBackup*backup,parray*files,
516-
parray*datname_list,boolpartial_restore_type);
524+
parray*datname_list,PartialRestoreTypepartial_restore_type);
517525

518526
/* in merge.c */
519527
externvoiddo_merge(time_tbackup_id);

‎src/restore.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ do_restore_or_validate(time_t target_backup_id, pgRecoveryTarget *rt,
459459
*/
460460
if (params->partial_db_list)
461461
dbOid_exclude_list=get_dbOid_exclude_list(dest_backup,dest_files,params->partial_db_list,
462-
params->is_include_list);
462+
params->partial_restore_type);
463463

464464
/*
465465
* Restore dest_backup internal directories.
@@ -1183,7 +1183,7 @@ parseRecoveryTargetOptions(const char *target_time,
11831183
*/
11841184
parray*
11851185
get_dbOid_exclude_list(pgBackup*backup,parray*files,
1186-
parray*datname_list,boolis_include_list)
1186+
parray*datname_list,PartialRestoreTypepartial_restore_type)
11871187
{
11881188
inti;
11891189
intj;
@@ -1233,9 +1233,9 @@ get_dbOid_exclude_list(pgBackup *backup, parray *files,
12331233
* So we have a list of datnames and a database_map for it.
12341234
* We must construct a list of dbOids to exclude.
12351235
*/
1236-
if (is_include_list)
1236+
if (partial_restore_type==INCLUDE)
12371237
{
1238-
/* For 'include' keep dbOid of every datname NOT specified by user */
1238+
/* For 'include', keep dbOid of every datname NOT specified by user */
12391239
for (i=0;i<parray_num(datname_list);i++)
12401240
{
12411241
boolfound_match= false;
@@ -1270,9 +1270,9 @@ get_dbOid_exclude_list(pgBackup *backup, parray *files,
12701270
parray_append(dbOid_exclude_list,&db_entry->dbOid);
12711271
}
12721272
}
1273-
else
1273+
elseif (partial_restore_type==EXCLUDE)
12741274
{
1275-
/* For exclude job is easier, find dbOid for every specified datname */
1275+
/* For exclude, job is easier - find dbOid for every specified datname */
12761276
for (i=0;i<parray_num(datname_list);i++)
12771277
{
12781278
boolfound_match= false;

‎src/validate.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ pgBackupValidate(pgBackup *backup, pgRestoreParams *params)
109109

110110
if (params&&params->partial_db_list)
111111
dbOid_exclude_list=get_dbOid_exclude_list(backup,files,params->partial_db_list,
112-
params->is_include_list);
112+
params->partial_restore_type);
113113

114114
/* setup threads */
115115
for (i=0;i<parray_num(files);i++)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp