X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/bc7f6209d83dcc161f093ce9907991facabb3491..567c31ab6a9a9edfa8cc902bec4004c1e0c25339:/nominatim/tools/check_database.py diff --git a/nominatim/tools/check_database.py b/nominatim/tools/check_database.py index e5cefe4f..b1cfce57 100644 --- a/nominatim/tools/check_database.py +++ b/nominatim/tools/check_database.py @@ -15,6 +15,7 @@ from nominatim.config import Configuration from nominatim.db.connection import connect, Connection from nominatim.errors import UsageError from nominatim.tokenizer import factory as tokenizer_factory +from nominatim.tools import freeze CHECKLIST = [] @@ -114,9 +115,10 @@ def _get_indexes(conn: Connection) -> List[str]: indexes.extend(('idx_placex_housenumber', 'idx_osmline_parent_osm_id_with_hnr')) if conn.table_exists('place'): - indexes.extend(('idx_placex_pendingsector', - 'idx_location_area_country_place_id', - 'idx_place_osm_unique')) + indexes.extend(('idx_location_area_country_place_id', + 'idx_place_osm_unique', + 'idx_placex_rank_address_sector', + 'idx_placex_rank_boundaries_sector')) return indexes @@ -163,7 +165,7 @@ def check_placex_table(conn: Connection, config: Configuration) -> CheckResult: return CheckState.FATAL, dict(config=config) -@_check(hint="""placex table has no data. Did the import finish sucessfully?""") +@_check(hint="""placex table has no data. Did the import finish successfully?""") def check_placex_size(conn: Connection, _: Configuration) -> CheckResult: """ Checking for placex content """ @@ -181,7 +183,7 @@ def check_tokenizer(_: Connection, config: Configuration) -> CheckResult: tokenizer = tokenizer_factory.get_tokenizer_for_db(config) except UsageError: return CheckState.FAIL, dict(msg="""\ - Cannot load tokenizer. Did the import finish sucessfully?""") + Cannot load tokenizer. Did the import finish successfully?""") result = tokenizer.check_database(config) @@ -199,7 +201,7 @@ def check_tokenizer(_: Connection, config: Configuration) -> CheckResult: def check_existance_wikipedia(conn: Connection, _: Configuration) -> CheckResult: """ Checking for wikipedia/wikidata data """ - if not conn.table_exists('search_name'): + if not conn.table_exists('search_name') or not conn.table_exists('place'): return CheckState.NOT_APPLICABLE with conn.cursor() as cur: @@ -222,6 +224,12 @@ def check_indexing(conn: Connection, _: Configuration) -> CheckResult: if cnt == 0: return CheckState.OK + if freeze.is_frozen(conn): + index_cmd="""\ + Database is marked frozen, it cannot be updated. + Low counts of unindexed places are fine.""" + return CheckState.WARN, dict(count=cnt, index_cmd=index_cmd) + if conn.index_exists('idx_placex_rank_search'): # Likely just an interrupted update. index_cmd = 'nominatim index' @@ -268,7 +276,7 @@ def check_database_index_valid(conn: Connection, _: Configuration) -> CheckResul WHERE pg_index.indisvalid = false AND pg_index.indexrelid = pg_class.oid""") - broken = list(cur) + broken = [c[0] for c in cur] if broken: return CheckState.FAIL, dict(indexes='\n '.join(broken))