-#!@PHP_BIN@ -Cq
<?php
-require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
require_once(CONST_BasePath.'/lib/init-cmd.php');
require_once(CONST_BasePath.'/lib/setup_functions.php');
require_once(CONST_BasePath.'/lib/setup/SetupClass.php');
date_default_timezone_set('Etc/UTC');
-$oDB =& getDB();
+$oDB = new Nominatim\DB();
+$oDB->connect();
-$aDSNInfo = DB::parseDSN(CONST_Database_DSN);
+$aDSNInfo = Nominatim\DB::parseDSN(CONST_Database_DSN);
if (!isset($aDSNInfo['port']) || !$aDSNInfo['port']) $aDSNInfo['port'] = 5432;
// cache memory to be used by osm2pgsql, should not be more than the available memory
$iCacheMemory = getCacheMemoryMB();
echo "WARNING: resetting cache memory to $iCacheMemory\n";
}
-$sOsm2pgsqlCmd = CONST_Osm2pgsql_Binary.' -klas --number-processes 1 -C '.$iCacheMemory.' -O gazetteer -d '.$aDSNInfo['database'].' -P '.$aDSNInfo['port'];
+$sOsm2pgsqlCmd = CONST_Osm2pgsql_Binary.' -klas --number-processes 1 -C '.$iCacheMemory.' -O gazetteer -S '.CONST_Import_Style.' -d '.$aDSNInfo['database'].' -P '.$aDSNInfo['port'];
if (isset($aDSNInfo['username']) && $aDSNInfo['username']) {
$sOsm2pgsqlCmd .= ' -U ' . $aDSNInfo['username'];
}
}
$sDatabaseDate = getDatabaseDate($oDB);
- if ($sDatabaseDate === false) {
+ if (!$sDatabaseDate) {
fail('Cannot determine date of database.');
}
$sWindBack = strftime('%Y-%m-%dT%H:%M:%SZ', strtotime($sDatabaseDate) - (3*60*60));
fail('Error running pyosmium tools');
}
- pg_query($oDB->connection, 'TRUNCATE import_status');
+ $oDB->exec('TRUNCATE import_status');
$sSQL = "INSERT INTO import_status (lastimportdate, sequence_id, indexed) VALUES('";
$sSQL .= $sDatabaseDate."',".$aOutput[0].', true)';
- if (!pg_query($oDB->connection, $sSQL)) {
+
+ try {
+ $oDB->exec($sSQL);
+ } catch (\Nominatim\DatabaseError $e) {
fail('Could not enter sequence into database.');
}
}
if ($aResult['deduplicate']) {
- $oDB =& getDB();
+ $oDB = new Nominatim\DB();
+ $oDB->connect();
- if (getPostgresVersion($oDB) < 9.3) {
+ if ($oDB->getPostgresVersion() < 9.3) {
fail('ERROR: deduplicate is only currently supported in postgresql 9.3');
}
$sSQL .= ' name_vector = array_replace(name_vector,'.$aRemove['word_id'].','.$iKeepID.'),';
$sSQL .= ' nameaddress_vector = array_replace(nameaddress_vector,'.$aRemove['word_id'].','.$iKeepID.')';
$sSQL .= ' where name_vector @> ARRAY['.$aRemove['word_id'].']';
- chksql($oDB->query($sSQL));
+ chksql($oDB->exec($sSQL));
$sSQL = 'update search_name set';
$sSQL .= ' nameaddress_vector = array_replace(nameaddress_vector,'.$aRemove['word_id'].','.$iKeepID.')';
$sSQL .= ' where nameaddress_vector @> ARRAY['.$aRemove['word_id'].']';
- chksql($oDB->query($sSQL));
+ chksql($oDB->exec($sSQL));
$sSQL = 'update location_area_country set';
$sSQL .= ' keywords = array_replace(keywords,'.$aRemove['word_id'].','.$iKeepID.')';
$sSQL .= ' where keywords @> ARRAY['.$aRemove['word_id'].']';
- chksql($oDB->query($sSQL));
+ chksql($oDB->exec($sSQL));
foreach ($aPartitions as $sPartition) {
$sSQL = 'update search_name_'.$sPartition.' set';
$sSQL .= ' name_vector = array_replace(name_vector,'.$aRemove['word_id'].','.$iKeepID.')';
$sSQL .= ' where name_vector @> ARRAY['.$aRemove['word_id'].']';
- chksql($oDB->query($sSQL));
+ chksql($oDB->exec($sSQL));
$sSQL = 'update location_area_country set';
$sSQL .= ' keywords = array_replace(keywords,'.$aRemove['word_id'].','.$iKeepID.')';
$sSQL .= ' where keywords @> ARRAY['.$aRemove['word_id'].']';
- chksql($oDB->query($sSQL));
+ chksql($oDB->exec($sSQL));
}
$sSQL = 'delete from word where word_id = '.$aRemove['word_id'];
- chksql($oDB->query($sSQL));
+ chksql($oDB->exec($sSQL));
}
}
}
}
runWithEnv($sCmd, $aProcEnv);
+
+ $oDB->exec('update import_status set indexed = true');
}
if ($aResult['update-address-levels']) {
$sSQL .= date('Y-m-d H:i:s', $fCMDStartTime)."','";
$sSQL .= date('Y-m-d H:i:s')."','import')";
var_Dump($sSQL);
- chksql($oDB->query($sSQL));
+ chksql($oDB->exec($sSQL));
// update the status
$sSQL = "UPDATE import_status SET lastimportdate = '$sBatchEnd', indexed=false, sequence_id = $iEndSequence";
var_Dump($sSQL);
- chksql($oDB->query($sSQL));
+ chksql($oDB->exec($sSQL));
echo date('Y-m-d H:i:s')." Completed download step for $sBatchEnd in ".round((time()-$fCMDStartTime)/60, 2)." minutes\n";
}
$sSQL = 'INSERT INTO import_osmosis_log';
$sSQL .= '(batchend, batchseq, batchsize, starttime, endtime, event)';
- $sSQL .= " values ('$sBatchEnd',$iEndSequence,$iFileSize,'";
+ $sSQL .= " values ('$sBatchEnd',$iEndSequence,NULL,'";
$sSQL .= date('Y-m-d H:i:s', $fCMDStartTime)."','";
$sSQL .= date('Y-m-d H:i:s')."','index')";
var_Dump($sSQL);
- $oDB->query($sSQL);
+ $oDB->exec($sSQL);
echo date('Y-m-d H:i:s')." Completed index step for $sBatchEnd in ".round((time()-$fCMDStartTime)/60, 2)." minutes\n";
$sSQL = 'update import_status set indexed = true';
- $oDB->query($sSQL);
+ $oDB->exec($sSQL);
+ } else {
+ if ($aResult['import-osmosis-all']) {
+ echo "Error: --no-index cannot be used with continuous imports (--import-osmosis-all).\n";
+ exit(1);
+ }
}
$fDuration = time() - $fStartTime;