From 63544db8f9c56f74d8b061ec5c83250076f86453 Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Tue, 1 Dec 2020 14:54:42 +0100 Subject: [PATCH] null entries need to be typed --- sql/functions/address_lookup.sql | 22 +++++++++++----------- test/bdd/db/import/addressing.feature | 14 +++++++++----- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/sql/functions/address_lookup.sql b/sql/functions/address_lookup.sql index 1194022a..dfd5a953 100644 --- a/sql/functions/address_lookup.sql +++ b/sql/functions/address_lookup.sql @@ -93,15 +93,15 @@ DECLARE location_isaddress BOOLEAN; BEGIN -- The place in question might not have a direct entry in place_addressline. - -- Look for the parent of such places then and save if in for_place_id. + -- Look for the parent of such places then and save it in place. -- first query osmline (interpolation lines) IF in_housenumber >= 0 THEN SELECT parent_place_id as place_id, country_code, in_housenumber::text as housenumber, postcode, 'place' as class, 'house' as type, - null as name, null::hstore as address, - centroid + null::hstore as name, null::hstore as address, + ST_Centroid(linegeo) as centroid INTO place FROM location_property_osmline WHERE place_id = in_place_id @@ -114,7 +114,7 @@ BEGIN SELECT parent_place_id as place_id, 'us' as country_code, in_housenumber::text as housenumber, postcode, 'place' as class, 'house' as type, - null as name, null::hstore as address, + null::hstore as name, null::hstore as address, ST_Centroid(linegeo) as centroid INTO place FROM location_property_tiger @@ -128,7 +128,7 @@ BEGIN SELECT parent_place_id as place_id, 'us' as country_code, housenumber, postcode, 'place' as class, 'house' as type, - null as name, null::hstore as address, + null::hstore as name, null::hstore as address, centroid INTO place FROM location_property_aux @@ -139,10 +139,10 @@ BEGIN -- postcode table IF place IS NULL THEN SELECT parent_place_id as place_id, country_code, - null as housenumber, postcode, + null::text as housenumber, postcode, 'place' as class, 'postcode' as type, - null as name, null::hstore as address, - null as centroid + null::hstore as name, null::hstore as address, + null::geometry as centroid INTO place FROM location_postcode WHERE place_id = in_place_id; @@ -160,15 +160,15 @@ BEGIN WHERE place_id = in_place_id and rank_search > 27; END IF; - -- If for_place_id is still NULL at this point then the object has its own + -- If place is still NULL at this point then the object has its own -- entry in place_address line. However, still check if there is not linked -- place we should be using instead. IF place IS NULL THEN select coalesce(linked_place_id, place_id) as place_id, country_code, housenumber, postcode, class, type, - null as name, address, - null as centroid + null::hstore as name, address, + null::geometry as centroid INTO place FROM placex where place_id = in_place_id; END IF; diff --git a/test/bdd/db/import/addressing.feature b/test/bdd/db/import/addressing.feature index 5eea3de1..479ddd31 100644 --- a/test/bdd/db/import/addressing.feature +++ b/test/bdd/db/import/addressing.feature @@ -5,11 +5,11 @@ Feature: Address computation Scenario: place nodes are added to the address when they are close enough Given the 0.002 grid | 2 | | | | | | 1 | | 3 | - And the named places - | osm | class | type | geometry | - | N1 | place | square | 1 | - | N2 | place | hamlet | 2 | - | N3 | place | hamlet | 3 | + And the places + | osm | class | type | name | geometry | + | N1 | place | square | Square | 1 | + | N2 | place | hamlet | West Farm | 2 | + | N3 | place | hamlet | East Farm | 3 | When importing Then place_addressline contains | object | address | fromarea | @@ -17,6 +17,10 @@ Feature: Address computation Then place_addressline doesn't contain | object | address | | N1 | N2 | + When searching for "Square" + Then results contain + | osm_type | osm_id | name | + | N | 1 | Square, East Farm | Scenario: given two place nodes, the closer one wins for the address Given the grid -- 2.45.2