X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/2af20f8df88461f2593c7fa0851e3841f20d66c3..ed7f0d9e46cf6ecd8c3182e02156ff0e4d1cd864:/lib-sql/functions/interpolation.sql?ds=sidebyside diff --git a/lib-sql/functions/interpolation.sql b/lib-sql/functions/interpolation.sql index 928d55c5..b0797df2 100644 --- a/lib-sql/functions/interpolation.sql +++ b/lib-sql/functions/interpolation.sql @@ -67,10 +67,6 @@ BEGIN END LOOP; END IF; - IF parent_place_id is null THEN - RETURN 0; - END IF; - RETURN parent_place_id; END; $$ @@ -183,6 +179,13 @@ BEGIN ST_PointOnSurface(NEW.linegeo), NEW.linegeo); + -- Cannot find a parent street. We will not be able to display a reliable + -- address, so drop entire interpolation. + IF NEW.parent_place_id is NULL THEN + DELETE FROM location_property_osmline where place_id = OLD.place_id; + RETURN NULL; + END IF; + NEW.token_info := token_strip_info(NEW.token_info); IF NEW.address ? '_inherited' THEN NEW.address := hstore('interpolation', NEW.address->'interpolation'); @@ -219,10 +222,11 @@ BEGIN -- formatted postcode and therefore 'postcode' contains a derived -- variant. CASE WHEN address ? 'postcode' THEN placex.postcode ELSE NULL::text END as postcode, - substring(address->'housenumber','[0-9]+')::integer as hnr + (address->'housenumber')::integer as hnr FROM placex, generate_series(1, array_upper(waynodes, 1)) nodeidpos WHERE osm_type = 'N' and osm_id = waynodes[nodeidpos]::BIGINT and address is not NULL and address ? 'housenumber' + and address->'housenumber' ~ '^[0-9]{1,6}$' and ST_Distance(NEW.linegeo, geometry) < 0.0005 ORDER BY nodeidpos LOOP