]> git.openstreetmap.org Git - nominatim.git/blobdiff - utils/check_import_finished.php
utils/check_import_finished: skip some checks when setup ran with --drop
[nominatim.git] / utils / check_import_finished.php
index c6ccb67b392e858ca91d4144c3710e9858e95b84..bd5d7a00216a20e76dacfcc5b28feeda419193e1 100755 (executable)
@@ -1,6 +1,8 @@
 <?php
 
 <?php
 
-require_once(CONST_BasePath.'/lib/init-cmd.php');
+require_once(CONST_LibDir.'/init-cmd.php');
+
+loadSettings(getcwd());
 
 $term_colors = array(
                 'green' => "\033[92m",
 
 $term_colors = array(
                 'green' => "\033[92m",
@@ -20,15 +22,29 @@ $print_fail = function ($message = 'Failed') use ($term_colors) {
 $oDB = new Nominatim\DB;
 
 
 $oDB = new Nominatim\DB;
 
 
+function isReverseOnlyInstallation()
+{
+    global $oDB;
+    return !$oDB->tableExists('search_name');
+}
+
+// Check (guess) if the setup.php included --drop
+function isNoUpdateInstallation()
+{
+    global $oDB;
+    return $oDB->tableExists('placex') && !$oDB->tableExists('planet_osm_rels') ;
+}
+
+
 echo 'Checking database got created ... ';
 echo 'Checking database got created ... ';
-if ($oDB->databaseExists()) {
+if ($oDB->checkConnection()) {
     $print_success();
 } else {
     $print_fail();
     echo <<< END
     Hints:
     * Is the database server started?
     $print_success();
 } else {
     $print_fail();
     echo <<< END
     Hints:
     * Is the database server started?
-    * Check the CONST_Database_DSN variable in build/settings/local.php
+    * Check the NOMINATIM_DATABASE_DSN variable in your local .env
     * Try connecting to the database with the same settings
 
 END;
     * Try connecting to the database with the same settings
 
 END;
@@ -54,27 +70,28 @@ END;
     exit(1);
 }
 
     exit(1);
 }
 
-echo 'Checking place table ... ';
-if ($oDB->tableExists('place')) {
-    $print_success();
-} else {
-    $print_fail();
-    echo <<< END
-    * The import didn't finish.
-    Hints:
-    * Check the output of the utils/setup.php you ran.
-    Usually the osm2pgsql step failed. Check for errors related to
-    * the file you imported not containing any places
-    * harddrive full
-    * out of memory (RAM)
-    * osm2pgsql killed by other scripts, for consuming to much memory
-
-END;
-    exit(1);
+if (!isNoUpdateInstallation()) {
+    echo 'Checking place table ... ';
+    if ($oDB->tableExists('place')) {
+        $print_success();
+    } else {
+        $print_fail();
+        echo <<< END
+        * The import didn't finish.
+        Hints:
+        * Check the output of the utils/setup.php you ran.
+        Usually the osm2pgsql step failed. Check for errors related to
+        * the file you imported not containing any places
+        * harddrive full
+        * out of memory (RAM)
+        * osm2pgsql killed by other scripts, for consuming to much memory
+
+    END;
+        exit(1);
+    }
 }
 
 
 }
 
 
-
 echo 'Checking indexing status ... ';
 $iUnindexed = $oDB->getOne('SELECT count(*) FROM placex WHERE indexed_status > 0');
 if ($iUnindexed == 0) {
 echo 'Checking indexing status ... ';
 $iUnindexed = $oDB->getOne('SELECT count(*) FROM placex WHERE indexed_status > 0');
 if ($iUnindexed == 0) {
@@ -97,23 +114,29 @@ $aExpectedIndices = array(
     'idx_place_addressline_address_place_id',
     'idx_placex_rank_search',
     'idx_placex_rank_address',
     'idx_place_addressline_address_place_id',
     'idx_placex_rank_search',
     'idx_placex_rank_address',
-    'idx_placex_pendingsector',
     'idx_placex_parent_place_id',
     'idx_placex_parent_place_id',
-    'idx_placex_geometry_reverse_lookuppoint',
     'idx_placex_geometry_reverse_lookuppolygon',
     'idx_placex_geometry_reverse_placenode',
     'idx_placex_geometry_reverse_lookuppolygon',
     'idx_placex_geometry_reverse_placenode',
-    'idx_location_area_country_place_id',
     'idx_osmline_parent_place_id',
     'idx_osmline_parent_osm_id',
     'idx_osmline_parent_place_id',
     'idx_osmline_parent_osm_id',
-    'idx_place_osm_unique',
     'idx_postcode_id',
     'idx_postcode_id',
-    'idx_postcode_postcode',
-
-    // sql/indices_search.src.sql
-    'idx_search_name_nameaddress_vector',
-    'idx_search_name_name_vector',
-    'idx_search_name_centroid'
+    'idx_postcode_postcode'
 );
 );
+if (!isReverseOnlyInstallation()) {
+    $aExpectedIndices = array_merge($aExpectedIndices, array(
+        // sql/indices_search.src.sql
+        'idx_search_name_nameaddress_vector',
+        'idx_search_name_name_vector',
+        'idx_search_name_centroid'
+    ));
+}
+if (!isNoUpdateInstallation()) {
+    $aExpectedIndices = array_merge($aExpectedIndices, array(
+        'idx_placex_pendingsector',
+        'idx_location_area_country_place_id',
+        'idx_place_osm_unique',
+    ));
+}
 
 foreach ($aExpectedIndices as $sExpectedIndex) {
     echo "Checking index $sExpectedIndex ... ";
 
 foreach ($aExpectedIndices as $sExpectedIndex) {
     echo "Checking index $sExpectedIndex ... ";
@@ -123,7 +146,8 @@ foreach ($aExpectedIndices as $sExpectedIndex) {
         $print_fail();
         echo <<< END
         Hints:
         $print_fail();
         echo <<< END
         Hints:
-        * Rerun the setup.php --create-search-indices step
+        * Run './utils/setup.php --create-search-indices --ignore-errors' to
+          create missing indices.
 
 END;
         exit(1);
 
 END;
         exit(1);
@@ -156,7 +180,7 @@ END;
 
 
 
 
 
 
-if (CONST_Use_US_Tiger_Data) {
+if (getSettingBool('USE_US_TIGER_DATA')) {
     echo 'Checking TIGER table exists ... ';
     if ($oDB->tableExists('location_property_tiger')) {
         $print_success();
     echo 'Checking TIGER table exists ... ';
     if ($oDB->tableExists('location_property_tiger')) {
         $print_success();