<?php
-require_once(CONST_BasePath.'/lib/init-cmd.php');
+require_once(CONST_LibDir.'/init-cmd.php');
$term_colors = array(
'green' => "\033[92m",
$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;
'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',
'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 ... ";
$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);
}
}
+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 (CONST_Use_US_Tiger_Data) {
echo 'Checking TIGER table exists ... ';
if ($oDB->tableExists('location_property_tiger')) {