]> git.openstreetmap.org Git - nominatim.git/commitdiff
remove code that disables processing of forward dependencies
authorSarah Hoffmann <lonvia@denofr.de>
Sun, 11 Dec 2022 18:35:58 +0000 (19:35 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Sun, 11 Dec 2022 18:35:58 +0000 (19:35 +0100)
nominatim/clicmd/args.py
nominatim/tools/exec_utils.py
nominatim/tools/migration.py
nominatim/version.py
settings/env.defaults

index 98673ed6365261c123d116182bf5047b9d144ee7..15de72a5bc7c61c797b3a3fd8cd005a2cd1153f2 100644 (file)
@@ -181,7 +181,6 @@ class NominatimArgs:
                     osm2pgsql_style_path=self.config.config_dir,
                     threads=self.threads or default_threads,
                     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 ''),
                     tablespaces=dict(slim_data=self.config.TABLESPACE_OSM_DATA,
                                      slim_index=self.config.TABLESPACE_OSM_INDEX,
index 9c801142f47438f0602a6095e344e2a58dd5cfa5..2e5c4801606115f1fe3adfa6616bb39d241ab5f3 100644 (file)
@@ -136,9 +136,6 @@ def run_osm2pgsql(options: Mapping[str, Any]) -> None:
     if 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'),
                        ('slim_index', '--tablespace-slim-index'),
                        ('main_data', '--tablespace-main-data'),
index 147a9f9c3c5faa28d1a275ac85437e39cc154f26..10bca15c117c78e0210f82aaf68aab0ad96b6920 100644 (file)
@@ -348,3 +348,29 @@ def split_pending_index(conn: Connection, **_: Any) -> None:
                            WHERE class = 'boundary' and type = 'administrative'
                                  and indexed_status > 0""")
             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")
index 3ae9c43ad3b4eb1bb04990586528296ce212079a..43a30d9e3bbfc17eb979dd0849c293c670e34363 100644 (file)
@@ -25,7 +25,7 @@ from typing import Optional, Tuple
 # patch level when cherry-picking the commit with the migration.
 #
 # 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)
 POSTGIS_REQUIRED_VERSION = (2, 2)
index 8378d7b0826994b828a9df00d0515a1408892dba..3115f4382aacf582c5a1054e78c03130bde9f00f 100644 (file)
@@ -33,15 +33,6 @@ NOMINATIM_MAX_WORD_FREQUENCY=50000
 # If true, admin level changes on places with many contained children are blocked.
 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.
 # Normally Nominatim will include all language variants of name:XX
 # in the search index. Set this to a comma separated list of language