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

Commitd92434f

Browse files
committed
Refactoring of restore and validate options.
Collect them into pgRestoreParams structure
1 parentf4790b6 commitd92434f

File tree

3 files changed

+82
-67
lines changed

3 files changed

+82
-67
lines changed

‎src/pg_probackup.c

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ static char *target_name = NULL;
8989
staticchar*target_action=NULL;
9090

9191
staticpgRecoveryTarget*recovery_target_options=NULL;
92+
staticpgRestoreParams*restore_params=NULL;
9293

9394
boolrestore_as_replica= false;
9495
boolno_validate= false;
@@ -598,7 +599,32 @@ main(int argc, char *argv[])
598599
target_inclusive,target_tli,target_lsn,
599600
(target_stop!=NULL) ?target_stop :
600601
(target_immediate) ?"immediate" :NULL,
601-
target_name,target_action,no_validate);
602+
target_name,target_action);
603+
604+
/* keep all params in one structure */
605+
restore_params=pgut_new(pgRestoreParams);
606+
restore_params->is_restore= (backup_subcmd==RESTORE_CMD);
607+
restore_params->no_validate=no_validate;
608+
restore_params->restore_as_replica=restore_as_replica;
609+
restore_params->skip_block_validation=skip_block_validation;
610+
restore_params->skip_external_dirs=skip_external_dirs;
611+
612+
/* handle partial restore parameters */
613+
if (datname_exclude_list&&datname_include_list)
614+
elog(ERROR,"You cannot specify '--db-include' and '--db-exclude' together");
615+
616+
if (datname_exclude_list)
617+
{
618+
restore_params->is_include_list= false;
619+
restore_params->partial_db_list=datname_exclude_list;
620+
}
621+
elseif (datname_include_list)
622+
{
623+
restore_params->is_include_list= true;
624+
restore_params->partial_db_list=datname_include_list;
625+
}
626+
627+
602628
}
603629

604630
if (num_threads<1)
@@ -633,37 +659,16 @@ main(int argc, char *argv[])
633659
returndo_backup(start_time,no_validate);
634660
}
635661
caseRESTORE_CMD:
636-
{
637-
parray*datname_list=NULL;
638-
/* true for 'include', false for 'exclude' */
639-
boolpartial_restore_type= false;
640-
641-
if (datname_exclude_list&&datname_include_list)
642-
elog(ERROR,"You cannot specify '--db-include' and '--db-exclude' together");
643-
644-
if (datname_exclude_list)
645-
datname_list=datname_exclude_list;
646-
647-
if (datname_include_list)
648-
{
649-
partial_restore_type= true;
650-
datname_list=datname_include_list;
651-
}
652-
returndo_restore_or_validate(current.backup_id,
662+
returndo_restore_or_validate(current.backup_id,
653663
recovery_target_options,
654-
true,
655-
datname_list,
656-
partial_restore_type);
657-
}
664+
restore_params);
658665
caseVALIDATE_CMD:
659666
if (current.backup_id==0&&target_time==0&&target_xid==0)
660667
returndo_validate_all();
661668
else
662669
returndo_restore_or_validate(current.backup_id,
663670
recovery_target_options,
664-
false,
665-
NULL,
666-
false);
671+
restore_params);
667672
caseSHOW_CMD:
668673
returndo_show(current.backup_id);
669674
caseDELETE_CMD:

‎src/pg_probackup.h

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -336,9 +336,22 @@ typedef struct pgRecoveryTarget
336336
constchar*target_stop;
337337
constchar*target_name;
338338
constchar*target_action;
339-
boolno_validate;
340339
}pgRecoveryTarget;
341340

341+
/* Options needed for restore and validate commands */
342+
typedefstructpgRestoreParams
343+
{
344+
boolis_restore;
345+
boolno_validate;
346+
boolrestore_as_replica;
347+
boolskip_external_dirs;
348+
boolskip_block_validation;
349+
350+
/* options for partial restore */
351+
boolis_include_list;
352+
parray*partial_db_list;
353+
}pgRestoreParams;
354+
342355
typedefstruct
343356
{
344357
constchar*from_root;
@@ -444,11 +457,6 @@ extern char* remote_agent;
444457
externboolis_ptrack_support;
445458
externboolexclusive_backup;
446459

447-
/* restore options */
448-
externboolrestore_as_replica;
449-
externboolskip_block_validation;
450-
externboolskip_external_dirs;
451-
452460
/* delete options */
453461
externbooldelete_wal;
454462
externbooldelete_expired;
@@ -467,6 +475,7 @@ extern ShowFormat show_format;
467475

468476
/* checkdb options */
469477
externboolheapallindexed;
478+
externboolskip_block_validation;
470479

471480
/* current settings */
472481
externpgBackupcurrent;
@@ -494,17 +503,15 @@ extern char *pg_ptrack_get_block(ConnectionArgs *arguments,
494503
/* in restore.c */
495504
externintdo_restore_or_validate(time_ttarget_backup_id,
496505
pgRecoveryTarget*rt,
497-
boolis_restore,
498-
parray*datname_list,
499-
boolpartial_restore_type);
506+
pgRestoreParams*params);
500507
externboolsatisfy_timeline(constparray*timelines,constpgBackup*backup);
501508
externboolsatisfy_recovery_target(constpgBackup*backup,
502509
constpgRecoveryTarget*rt);
503510
externpgRecoveryTarget*parseRecoveryTargetOptions(
504511
constchar*target_time,constchar*target_xid,
505512
constchar*target_inclusive,TimeLineIDtarget_tli,constchar*target_lsn,
506513
constchar*target_stop,constchar*target_name,
507-
constchar*target_action,boolno_validate);
514+
constchar*target_action);
508515

509516
/* in merge.c */
510517
externvoiddo_merge(time_tbackup_id);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp