$bDidSomething = false;
$oNominatimCmd = new \Nominatim\Shell(getSetting('NOMINATIM_TOOL'));
-if (isset($aCMDResult['quiet']) && $aCMDResult['quiet']) {
- $oNominatimCmd->addParams('--quiet');
-}
-if ($aCMDResult['verbose']) {
- $oNominatimCmd->addParams('--verbose');
+
+// by default, use all but one processor, but never more than 15.
+$iInstances = max(1, $aCMDResult['threads'] ?? (min(16, getProcessorCount()) - 1));
+
+function run($oCmd)
+{
+ global $iInstances;
+ global $aCMDResult;
+ $oCmd->addParams('--threads', $iInstances);
+ if ($aCMDResult['ignore-errors'] ?? false) {
+ $oCmd->addParams('--ignore-errors');
+ }
+ if ($aCMDResult['quiet'] ?? false) {
+ $oCmd->addParams('--quiet');
+ }
+ if ($aCMDResult['verbose'] ?? false) {
+ $oCmd->addParams('--verbose');
+ }
+ $oCmd->run(true);
}
// go through complete process if 'all' is selected or start selected functions
if ($aCMDResult['create-db'] || $aCMDResult['all']) {
$bDidSomething = true;
- (clone($oNominatimCmd))->addParams('transition', '--create-db')->run(true);
+ run((clone($oNominatimCmd))->addParams('transition', '--create-db'));
}
if ($aCMDResult['setup-db'] || $aCMDResult['all']) {
$oCmd->addParams('--no-partitions');
}
- $oCmd->run(true);
+ run($oCmd);
}
if ($aCMDResult['import-data'] || $aCMDResult['all']) {
$oCmd->addParams('--drop');
}
- $oCmd->run(true);
+ run($oCmd);
}
if ($aCMDResult['create-functions'] || $aCMDResult['all']) {
$bDidSomething = true;
- $oSetup->createFunctions();
+ $oSetup->createSqlFunctions();
}
if ($aCMDResult['create-tables'] || $aCMDResult['all']) {
$bDidSomething = true;
- $oSetup->createTables($aCMDResult['reverse-only']);
- $oSetup->createFunctions();
- $oSetup->createTableTriggers();
+ $oCmd = (clone($oNominatimCmd))->addParams('transition', '--create-tables');
+
+ if ($aCMDResult['reverse-only'] ?? false) {
+ $oCmd->addParams('--reverse-only');
+ }
+
+ run($oCmd);
}
if ($aCMDResult['create-partition-tables'] || $aCMDResult['all']) {
$bDidSomething = true;
- $oSetup->createPartitionTables();
+ run((clone($oNominatimCmd))->addParams('transition', '--create-partition-tables'));
}
if ($aCMDResult['create-partition-functions'] || $aCMDResult['all']) {
$bDidSomething = true;
- $oSetup->createFunctions(); // also create partition functions
+ $oSetup->createSqlFunctions(); // also create partition functions
}
if ($aCMDResult['import-wikipedia-articles'] || $aCMDResult['all']) {
$bDidSomething = true;
+ // ignore errors!
(clone($oNominatimCmd))->addParams('refresh', '--wiki-data')->run();
}
if ($aCMDResult['load-data'] || $aCMDResult['all']) {
$bDidSomething = true;
- $oSetup->loadData($aCMDResult['disable-token-precalc']);
+ run((clone($oNominatimCmd))->addParams('transition', '--load-data'));
}
if ($aCMDResult['import-tiger-data']) {
$bDidSomething = true;
$sTigerPath = getSetting('TIGER_DATA_PATH', CONST_InstallDir.'/tiger');
- $oSetup->importTigerData($sTigerPath);
+ run((clone($oNominatimCmd))->addParams('transition', '--tiger-data', $sTigerPath));
}
if ($aCMDResult['calculate-postcodes'] || $aCMDResult['all']) {
if ($aCMDResult['index'] || $aCMDResult['all']) {
$bDidSomething = true;
- $oSetup->index($aCMDResult['index-noanalyse']);
+ $oCmd = (clone($oNominatimCmd))->addParams('transition', '--index');
+ if ($aCMDResult['index-noanalyse'] ?? false) {
+ $oCmd->addParams('--no-analyse');
+ }
+
+ run($oCmd);
}
if ($aCMDResult['drop']) {
$bDidSomething = true;
- (clone($oNominatimCmd))->addParams('freeze')->run(true);
+ run((clone($oNominatimCmd))->addParams('freeze'));
}
if ($aCMDResult['create-search-indices'] || $aCMDResult['all']) {
$bDidSomething = true;
- $oSetup->createSearchIndices();
+
+ $oCmd = (clone($oNominatimCmd))->addParams('transition', '--create-search-indices');
+
+ if ($aCMDResult['drop'] ?? false) {
+ $oCmd->addParams('--drop');
+ }
+
+ run($oCmd);
}
if ($aCMDResult['create-country-names'] || $aCMDResult['all']) {
if ($aCMDResult['setup-website'] || $aCMDResult['all']) {
$bDidSomething = true;
- (clone($oNominatimCmd))->addParams('refresh', '--website')->run(true);
+ run((clone($oNominatimCmd))->addParams('refresh', '--website'));
}
// ******************************************************