X-Git-Url: https://git.openstreetmap.org/nominatim.git/blobdiff_plain/7db0da40ad02694b82fe9a387f277a58ca7c5fce..992d3faac81baa105c92874a412ebf5389c0ca14:/utils/check_import_finished.php diff --git a/utils/check_import_finished.php b/utils/check_import_finished.php index 7828f5cf..e28053be 100755 --- a/utils/check_import_finished.php +++ b/utils/check_import_finished.php @@ -1,6 +1,8 @@ "\033[92m", @@ -20,15 +22,22 @@ $print_fail = function ($message = 'Failed') use ($term_colors) { $oDB = new Nominatim\DB; +function isReverseOnlyInstallation() +{ + global $oDB; + return !$oDB->tableExists('search_name'); +} + + echo 'Checking database got created ... '; -if ($oDB->databaseExists()) { +if ($oDB->checkConnection()) { $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; @@ -99,7 +108,6 @@ $aExpectedIndices = array( 'idx_placex_rank_address', 'idx_placex_pendingsector', 'idx_placex_parent_place_id', - 'idx_placex_geometry_reverse_lookuppoint', 'idx_placex_geometry_reverse_lookuppolygon', 'idx_placex_geometry_reverse_placenode', 'idx_location_area_country_place_id', @@ -107,13 +115,16 @@ $aExpectedIndices = array( 'idx_osmline_parent_osm_id', 'idx_place_osm_unique', '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' + )); +} foreach ($aExpectedIndices as $sExpectedIndex) { echo "Checking index $sExpectedIndex ... "; @@ -123,14 +134,41 @@ foreach ($aExpectedIndices as $sExpectedIndex) { $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); } } -if (CONST_Use_US_Tiger_Data) { +echo 'Checking search indices are valid ... '; +$sSQL = <<< END + SELECT relname + FROM pg_class, pg_index + WHERE pg_index.indisvalid = false + AND pg_index.indexrelid = pg_class.oid; +END; +$aInvalid = $oDB->getCol($sSQL); +if (empty($aInvalid)) { + $print_success(); +} else { + $print_fail(); + echo <<< END + At least one index is invalid. That can happen, e.g. when index creation was + disrupted and later restarted. You should delete the affected indices and + run the index stage of setup again. + See the question 'Can a stopped/killed import process be resumed?' in the + troubleshooting guide. + Affected indices: +END; + echo join(', ', $aInvalid) . "\n"; + exit(1); +} + + + +if (getSettingBool('USE_US_TIGER_DATA')) { echo 'Checking TIGER table exists ... '; if ($oDB->tableExists('location_property_tiger')) { $print_success();