]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge remote-tracking branch 'upstream/master'
authorSarah Hoffmann <lonvia@denofr.de>
Sat, 9 Mar 2019 10:51:24 +0000 (11:51 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Sat, 9 Mar 2019 10:51:24 +0000 (11:51 +0100)
1  2 
lib/Geocode.php
lib/lib.php
utils/update.php

diff --combined lib/Geocode.php
index b176701c02ef2b4ee28e18956db656996bb2edbc,492c6865f19c6498cac6aff7e2266ea7464b8b74..94816283c2f1281241db1b54fc17deda152ad131
@@@ -18,7 -18,7 +18,7 @@@ class Geocod
      protected $aLangPrefOrder = array();
  
      protected $aExcludePlaceIDs = array();
 -    protected $bReverseInPlan = false;
 +    protected $bReverseInPlan = true;
  
      protected $iLimit = 20;
      protected $iFinalLimit = 10;
          $sNormQuery = $this->normTerm($this->sQuery);
          Debug::printVar('Normalized query', $sNormQuery);
  
-         $sLanguagePrefArraySQL = getArraySQL(
-             array_map('getDBQuoted', $this->aLangPrefOrder)
+         $sLanguagePrefArraySQL = $this->oDB->getArraySQL(
+             $this->oDB->getDBQuotedList($this->aLangPrefOrder)
          );
  
          $sQuery = $this->sQuery;
              $aPhrases = array();
              foreach ($aInPhrases as $iPhrase => $sPhrase) {
                  $sPhrase = chksql(
-                     $this->oDB->getOne('SELECT make_standard_name('.getDBQuoted($sPhrase).')'),
+                     $this->oDB->getOne('SELECT make_standard_name('.$this->oDB->getDBQuoted($sPhrase).')'),
                      'Cannot normalize query string (is it a UTF-8 string?)'
                  );
                  if (trim($sPhrase)) {
              if (!empty($aTokens)) {
                  $sSQL = 'SELECT word_id, word_token, word, class, type, country_code, operator, search_name_count';
                  $sSQL .= ' FROM word ';
-                 $sSQL .= ' WHERE word_token in ('.join(',', array_map('getDBQuoted', $aTokens)).')';
+                 $sSQL .= ' WHERE word_token in ('.join(',', $this->oDB->getDBQuotedList($aTokens)).')';
  
                  Debug::printSQL($sSQL);
  
diff --combined lib/lib.php
index 458930fdb7bd85581b1609c79442d5eeb1d7b664,759c71d7ea735fc7639b9712d4f60e50a3bd3135..c90c334c9a7533a7eac65c3180b33d2c3985df7b
@@@ -4,7 -4,7 +4,7 @@@ function fail($sError, $sUserError = fa
  {
      if (!$sUserError) $sUserError = $sError;
      error_log('ERROR: '.$sError);
-     echo $sUserError."\n";
+     var_dump($sUserError)."\n";
      exit(-1);
  }
  
@@@ -177,10 -177,10 +177,10 @@@ function geometryText2Points($geometry_
          //
          preg_match_all('/(-?[0-9.]+) (-?[0-9.]+)/', $aMatch[1], $aPolyPoints, PREG_SET_ORDER);
          //
 -    } elseif (preg_match('#MULTIPOLYGON\\(\\(\\(([- 0-9.,]+)#', $geometry_as_text, $aMatch)) {
 +/*    } elseif (preg_match('#MULTIPOLYGON\\(\\(\\(([- 0-9.,]+)#', $geometry_as_text, $aMatch)) {
          //
          preg_match_all('/(-?[0-9.]+) (-?[0-9.]+)/', $aMatch[1], $aPolyPoints, PREG_SET_ORDER);
 -        //
 +        */
      } elseif (preg_match('#POINT\\((-?[0-9.]+) (-?[0-9.]+)\\)#', $geometry_as_text, $aMatch)) {
          //
          $aPolyPoints = createPointsAroundCenter($aMatch[1], $aMatch[2], $fRadius);
diff --combined utils/update.php
index 8e1188349f025a4ec6558f1ccec25b6df9039570,96789ef46b845ed01bc593b10e95199c8297e072..e52e3b9bd294fae37a417b18544138a0922f6d2e
@@@ -48,14 -48,14 +48,15 @@@ $aCMDOption
  getCmdOpt($_SERVER['argv'], $aCMDOptions, $aResult, true, true);
  
  if (!isset($aResult['index-instances'])) $aResult['index-instances'] = 1;
 +
  if (!isset($aResult['index-rank'])) $aResult['index-rank'] = 0;
  
  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
@@@ -116,7 -116,7 +117,7 @@@ if ($aResult['init-updates']) 
      }
  
      $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.');
      }
  
@@@ -220,9 -223,10 +224,10 @@@ if ($bHaveDiff) 
  }
  
  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));
          }
      }
  }
@@@ -307,7 -311,7 +312,7 @@@ if ($aResult['index']) 
  
      runWithEnv($sCmd, $aProcEnv);
  
-     $oDB->query('update import_status set indexed = true');
+     $oDB->exec('update import_status set indexed = true');
  }
  
  if ($aResult['update-address-levels']) {
@@@ -414,12 -418,12 +419,12 @@@ if ($aResult['import-osmosis'] || $aRes
              $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 .= 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";