X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/abf4dbd9505e9701f75c405c7ba1b3e3f1ecbd14..1cce464f866bb56b9427b29a2230321a695394a8:/sql/functions/address_lookup.sql

diff --git a/sql/functions/address_lookup.sql b/sql/functions/address_lookup.sql
index c8c63092..88b3a741 100644
--- a/sql/functions/address_lookup.sql
+++ b/sql/functions/address_lookup.sql
@@ -60,14 +60,16 @@ BEGIN
   prevresult := '';
 
   FOR location IN
-    SELECT * FROM get_addressdata(for_place_id, housenumber)
+    SELECT name,
+       CASE WHEN place_id = for_place_id THEN 99 ELSE rank_address END as rank_address
+    FROM get_addressdata(for_place_id, housenumber)
     WHERE isaddress order by rank_address desc
   LOOP
     currresult := trim(get_name_by_language(location.name, languagepref));
     IF currresult != prevresult AND currresult IS NOT NULL
        AND result[(100 - location.rank_address)] IS NULL
     THEN
-      result[(100 - location.rank_address)] := trim(get_name_by_language(location.name, languagepref));
+      result[(100 - location.rank_address)] := currresult;
       prevresult := currresult;
     END IF;
   END LOOP;
@@ -205,7 +207,7 @@ BEGIN
 
   FOR location IN
     SELECT placex.place_id, osm_type, osm_id, name, class, type,
-           coalesce(extratags->'place', extratags->'linked_place') as place_type,
+           coalesce(extratags->'linked_place', extratags->'place') as place_type,
            admin_level, fromarea, isaddress and linked_place_id is NULL as isaddress,
            CASE WHEN rank_address = 11 THEN 5 ELSE rank_address END as rank_address,
            distance, country_code, postcode
@@ -270,7 +272,7 @@ BEGIN
   END IF;
 
   IF searchhousenumber IS NOT NULL THEN
-    location := ROW(in_place_id, null, null, hstore('ref', searchhousenumber),
+    location := ROW(null, null, null, hstore('ref', searchhousenumber),
                     'place', 'house_number', null, null, true, true, 28, 0)::addressline;
     RETURN NEXT location;
   END IF;
