remove code that disables processing of forward dependencies

This commit is contained in:
Sarah Hoffmann 2022-12-11 19:35:58 +01:00
parent cd861345b7
commit 6f51c1ba33
5 changed files with 27 additions and 14 deletions

View File

@ -181,7 +181,6 @@ class NominatimArgs:
osm2pgsql_style_path=self.config.config_dir, osm2pgsql_style_path=self.config.config_dir,
threads=self.threads or default_threads, threads=self.threads or default_threads,
dsn=self.config.get_libpq_dsn(), dsn=self.config.get_libpq_dsn(),
forward_dependencies=self.config.get_bool('UPDATE_FORWARD_DEPENDENCIES'),
flatnode_file=str(self.config.get_path('FLATNODE_FILE') or ''), flatnode_file=str(self.config.get_path('FLATNODE_FILE') or ''),
tablespaces=dict(slim_data=self.config.TABLESPACE_OSM_DATA, tablespaces=dict(slim_data=self.config.TABLESPACE_OSM_DATA,
slim_index=self.config.TABLESPACE_OSM_INDEX, slim_index=self.config.TABLESPACE_OSM_INDEX,

View File

@ -136,9 +136,6 @@ def run_osm2pgsql(options: Mapping[str, Any]) -> None:
if options['flatnode_file']: if options['flatnode_file']:
cmd.extend(('--flat-nodes', options['flatnode_file'])) cmd.extend(('--flat-nodes', options['flatnode_file']))
if not options.get('forward_dependencies', False):
cmd.extend(('--with-forward-dependencies', 'false'))
for key, param in (('slim_data', '--tablespace-slim-data'), for key, param in (('slim_data', '--tablespace-slim-data'),
('slim_index', '--tablespace-slim-index'), ('slim_index', '--tablespace-slim-index'),
('main_data', '--tablespace-main-data'), ('main_data', '--tablespace-main-data'),

View File

@ -348,3 +348,29 @@ def split_pending_index(conn: Connection, **_: Any) -> None:
WHERE class = 'boundary' and type = 'administrative' WHERE class = 'boundary' and type = 'administrative'
and indexed_status > 0""") and indexed_status > 0""")
cur.execute("DROP INDEX IF EXISTS idx_placex_pendingsector") cur.execute("DROP INDEX IF EXISTS idx_placex_pendingsector")
@_migration(4, 2, 99, 0)
def enable_forward_dependencies(conn: Connection, **_: Any) -> None:
""" Create indexes for updates with forward dependency tracking (long-running).
"""
if conn.table_exists('planet_osm_ways'):
with conn.cursor() as cur:
cur.execute("""SELECT * FROM pg_indexes
WHERE tablename = 'planet_osm_ways'
and indexdef LIKE '%nodes%'""")
if cur.rowcount == 0:
cur.execute("""CREATE OR REPLACE FUNCTION public.planet_osm_index_bucket(bigint[])
RETURNS bigint[]
LANGUAGE sql IMMUTABLE
AS $function$
SELECT ARRAY(SELECT DISTINCT unnest($1) >> 5)
$function$""")
cur.execute("""CREATE INDEX planet_osm_ways_nodes_bucket_idx
ON planet_osm_ways
USING gin (planet_osm_index_bucket(nodes))
WITH (fastupdate=off)""")
cur.execute("""CREATE INDEX planet_osm_rels_parts_idx
ON planet_osm_rels USING gin (parts)
WITH (fastupdate=off)""")
cur.execute("ANALYZE planet_osm_ways")

View File

@ -25,7 +25,7 @@ from typing import Optional, Tuple
# patch level when cherry-picking the commit with the migration. # patch level when cherry-picking the commit with the migration.
# #
# Released versions always have a database patch level of 0. # Released versions always have a database patch level of 0.
NOMINATIM_VERSION = (4, 2, 0, 0) NOMINATIM_VERSION = (4, 2, 99, 0)
POSTGRESQL_REQUIRED_VERSION = (9, 6) POSTGRESQL_REQUIRED_VERSION = (9, 6)
POSTGIS_REQUIRED_VERSION = (2, 2) POSTGIS_REQUIRED_VERSION = (2, 2)

View File

@ -33,15 +33,6 @@ NOMINATIM_MAX_WORD_FREQUENCY=50000
# If true, admin level changes on places with many contained children are blocked. # If true, admin level changes on places with many contained children are blocked.
NOMINATIM_LIMIT_REINDEXING=yes NOMINATIM_LIMIT_REINDEXING=yes
# When set to 'yes' changes to OSM objects will be propagated to dependent
# objects. This means that geometries of way/relations are updated when a
# node on a way or a way in a relation changes.
# EXPERT ONLY: Use with care. Enabling this option might lead to significantly
# more load when updates are applied.
# Do not enable this option on an existing database.
# The default is to not propagate these changes.
NOMINATIM_UPDATE_FORWARD_DEPENDENCIES=no
# Restrict search languages. # Restrict search languages.
# Normally Nominatim will include all language variants of name:XX # Normally Nominatim will include all language variants of name:XX
# in the search index. Set this to a comma separated list of language # in the search index. Set this to a comma separated list of language