]> git.openstreetmap.org Git - nominatim.git/commitdiff
gracefully fail if nodes from an address interpolation are missing
authorSarah Hoffmann <lonvia@denofr.de>
Fri, 13 Jul 2012 20:33:09 +0000 (22:33 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Fri, 13 Jul 2012 20:33:09 +0000 (22:33 +0200)
sql/functions.sql

index 03ea4011ddeec55f7ba388b43e40e6a75dc67125..1d653bb205d8e7f17f00f2be8f79eb52726e64a7 100644 (file)
@@ -769,6 +769,13 @@ BEGIN
           -- null record of right type
           select * from placex where osm_type = 'N' and osm_id = waynodes[nodeidpos]::INTEGER and type = 'house' limit 1 INTO nextnode;
           select ST_SetSRID(ST_Point(lon::float/10000000,lat::float/10000000),4326) from planet_osm_nodes where id = waynodes[nodeidpos] INTO nextnode.geometry;
           -- null record of right type
           select * from placex where osm_type = 'N' and osm_id = waynodes[nodeidpos]::INTEGER and type = 'house' limit 1 INTO nextnode;
           select ST_SetSRID(ST_Point(lon::float/10000000,lat::float/10000000),4326) from planet_osm_nodes where id = waynodes[nodeidpos] INTO nextnode.geometry;
+          IF nextnode.geometry IS NULL THEN
+            -- we don't have any information about this point, most likely
+            -- because an excerpt was updated and the node never imported
+            -- because the interpolation is outside the region of the excerpt.
+            -- Give up.
+            RETURN newpoints;
+          END IF;
         ELSE
           select * from placex where place_id = search_place_id INTO nextnode;
         END IF;
         ELSE
           select * from placex where place_id = search_place_id INTO nextnode;
         END IF;