@@ -35,77 +35,76 @@ void DatabaseManager::execute(const DatabaseManagerOptions& options)
3535 StatusWrapper statusWrapper{getClient ()};
3636 auto builder =
3737 fbUnique (getClient ().getUtil ()->getXpbBuilder (&statusWrapper, fb::IXpbBuilder::SPB_START , nullptr , 0 ));
38-
39- const bool isRepair = options.getSweep () || options.getValidate () || options.getMend () ||
40- options.getIgnoreChecksum () || options.getKillShadows () || options.getFull () || options.getCheckDb () ||
41- options.getIcu () || options.getUpgradeDb () || options.getParallelWorkers ().has_value ();
42-
43- if (isRepair)
44- builder->insertTag (&statusWrapper, isc_action_svc_repair);
45- else
46- builder->insertTag (&statusWrapper, isc_action_svc_properties);
47-
38+ builder->insertTag (&statusWrapper, isc_action_svc_properties);
4839 builder->insertString (&statusWrapper, isc_spb_dbname, options.getDatabase ().c_str ());
4940
50- if (isRepair)
51- {
52- int optionsVal = 0 ;
53- if (options.getSweep ())
54- optionsVal |= isc_spb_rpr_sweep_db;
55- if (options.getValidate ())
56- optionsVal |= isc_spb_rpr_validate_db;
57- if (options.getMend ())
58- optionsVal |= isc_spb_rpr_mend_db;
59- if (options.getIgnoreChecksum ())
60- optionsVal |= isc_spb_rpr_ignore_checksum;
61- if (options.getKillShadows ())
62- optionsVal |= isc_spb_rpr_kill_shadows;
63- if (options.getFull ())
64- optionsVal |= isc_spb_rpr_full;
65- if (options.getCheckDb ())
66- optionsVal |= isc_spb_rpr_check_db;
67- if (options.getIcu ())
68- optionsVal |= isc_spb_rpr_icu;
69- if (options.getUpgradeDb ())
70- optionsVal |= isc_spb_rpr_upgrade_db;
71-
72- if (optionsVal != 0 )
73- builder->insertInt (&statusWrapper, isc_spb_options, optionsVal);
74-
75- if (const auto parallelWorkers = options.getParallelWorkers ())
76- builder->insertInt (&statusWrapper, isc_spb_rpr_par_workers, static_cast <int >(*parallelWorkers));
77- }
78- else
41+ if (const auto replicaMode = options.getReplicaMode ())
7942 {
80- if (const auto replicaMode = options.getReplicaMode ())
43+ std::uint8_t modeVal = 0 ;
44+ switch (*replicaMode)
8145 {
82- std::uint8_t modeVal = 0 ;
83- switch (*replicaMode)
84- {
85- case ReplicaMode::NONE :
86- modeVal = isc_spb_prp_rm_none;
87- break ;
88- case ReplicaMode::READ_ONLY :
89- modeVal = isc_spb_prp_rm_readonly;
90- break ;
91- case ReplicaMode::READ_WRITE :
92- modeVal = isc_spb_prp_rm_readwrite;
93- break ;
94- default :
95- assert (false );
96- break ;
97- }
98- builder->insertBytes (&statusWrapper, isc_spb_prp_replica_mode, &modeVal, 1u );
46+ case ReplicaMode::NONE :
47+ modeVal = isc_spb_prp_rm_none;
48+ break ;
49+ case ReplicaMode::READ_ONLY :
50+ modeVal = isc_spb_prp_rm_readonly;
51+ break ;
52+ case ReplicaMode::READ_WRITE :
53+ modeVal = isc_spb_prp_rm_readwrite;
54+ break ;
55+ default :
56+ assert (false );
57+ break ;
9958 }
59+ builder->insertBytes (&statusWrapper, isc_spb_prp_replica_mode, &modeVal, 1u );
10060 }
10161
10262 const auto buffer = builder->getBuffer (&statusWrapper);
10363 const auto length = builder->getBufferLength (&statusWrapper);
10464
10565 startAction (std::vector<std::uint8_t >(buffer, buffer + length));
66+ waitForCompletion ();
67+ }
68+
10669
107- if (isRepair)
108- waitForCompletion (options.getVerboseOutput ());
109- else
110- waitForCompletion ();
70+ void DatabaseManager::execute (const MaintenanceOptions& options)
71+ {
72+ StatusWrapper statusWrapper{getClient ()};
73+ auto builder =
74+ fbUnique (getClient ().getUtil ()->getXpbBuilder (&statusWrapper, fb::IXpbBuilder::SPB_START , nullptr , 0 ));
75+
76+ builder->insertTag (&statusWrapper, isc_action_svc_repair);
77+ builder->insertString (&statusWrapper, isc_spb_dbname, options.getDatabase ().c_str ());
78+
79+ int optionsVal = 0 ;
80+ if (options.getSweep ())
81+ optionsVal |= isc_spb_rpr_sweep_db;
82+ if (options.getValidate ())
83+ optionsVal |= isc_spb_rpr_validate_db;
84+ if (options.getMend ())
85+ optionsVal |= isc_spb_rpr_mend_db;
86+ if (options.getIgnoreChecksum ())
87+ optionsVal |= isc_spb_rpr_ignore_checksum;
88+ if (options.getKillShadows ())
89+ optionsVal |= isc_spb_rpr_kill_shadows;
90+ if (options.getFull ())
91+ optionsVal |= isc_spb_rpr_full;
92+ if (options.getCheckDb ())
93+ optionsVal |= isc_spb_rpr_check_db;
94+ if (options.getIcu ())
95+ optionsVal |= isc_spb_rpr_icu;
96+ if (options.getUpgradeDb ())
97+ optionsVal |= isc_spb_rpr_upgrade_db;
98+
99+ if (optionsVal != 0 )
100+ builder->insertInt (&statusWrapper, isc_spb_options, optionsVal);
101+
102+ if (const auto parallelWorkers = options.getParallelWorkers ())
103+ builder->insertInt (&statusWrapper, isc_spb_rpr_par_workers, static_cast <int >(*parallelWorkers));
104+
105+ const auto buffer = builder->getBuffer (&statusWrapper);
106+ const auto length = builder->getBufferLength (&statusWrapper);
107+
108+ startAction (std::vector<std::uint8_t >(buffer, buffer + length));
109+ waitForCompletion (options.getVerboseOutput ());
111110}
0 commit comments