bdd: factor out reindexing on updates

This commit is contained in:
Sarah Hoffmann
2021-01-05 15:17:46 +01:00
parent 197870e67a
commit 25557e5f14
2 changed files with 16 additions and 14 deletions

View File

@@ -191,6 +191,20 @@ class NominatimEnvironment:
if not self.keep_scenario_db:
self.db_drop_database(self.test_db)
def reindex_placex(self, db):
""" Run the indexing step until all data in the placex has
been processed. Indexing during updates can produce more data
to index under some circumstances. That is why indexing may have
to be run multiple times.
"""
with db.cursor() as cur:
while True:
self.run_update_script('index')
cur.execute("SELECT 'a' FROM placex WHERE indexed_status != 0 LIMIT 1")
if cur.rowcount == 0:
return
def run_setup_script(self, *args, **kwargs):
""" Run the Nominatim setup script with the given arguments.
"""

View File

@@ -205,13 +205,7 @@ def update_place_table(context):
for row in context.table:
PlaceColumn(context).add_row(row, False).db_insert(cur)
while True:
context.nominatim.run_update_script('index')
cur.execute("SELECT 'a' FROM placex WHERE indexed_status != 0 LIMIT 1")
if cur.rowcount == 0:
break
context.nominatim.reindex_placex(context.db)
check_database_integrity(context)
@when("updating postcodes")
@@ -227,13 +221,7 @@ def delete_places(context, oids):
where, params = NominatimID(oid).table_select()
cur.execute("DELETE FROM place WHERE " + where, params)
while True:
context.nominatim.run_update_script('index')
with context.db.cursor() as cur:
cur.execute("SELECT 'a' FROM placex WHERE indexed_status != 0 LIMIT 1")
if cur.rowcount == 0:
break
context.nominatim.reindex_placex(context.db)
################################ THEN ##################################