]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge remote-tracking branch 'upstream/master'
authorSarah Hoffmann <lonvia@denofr.de>
Wed, 30 Oct 2013 20:52:06 +0000 (21:52 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Wed, 30 Oct 2013 20:52:06 +0000 (21:52 +0100)
1  2 
sql/functions.sql

diff --combined sql/functions.sql
index 2407db5b6b9db377cf966c8f31b58aaddb59e8d3,4670a71fec4d0756bdd419364f254f7c3ae1f0f5..4c040fdceb4b4157f9d67c8ab998d68076d2da14
@@@ -347,7 -347,7 +347,7 @@@ BEGI
  
      w := getorcreate_word_id(s);
  
-     IF NOT (ARRAY[w] <@ result) THEN
+     IF w IS NOT NULL AND NOT (ARRAY[w] <@ result) THEN
        result := result || w;
      END IF;
  
@@@ -415,7 -415,7 +415,7 @@@ BEGI
  
    w := getorcreate_word_id(s);
  
-   IF NOT (ARRAY[w] <@ result) THEN
+   IF w IS NOT NULL AND NOT (ARRAY[w] <@ result) THEN
      result := result || w;
    END IF;
  
@@@ -1357,26 -1357,13 +1357,26 @@@ BEGI
      NEW.centroid := null;
  
      -- reclaculate country and partition
 -    IF NEW.rank_search >= 4 THEN
 -      --NEW.calculated_country_code := lower(get_country_code(NEW.geometry, NEW.country_code));
 -      NEW.calculated_country_code := lower(get_country_code(place_centroid));
 +    IF NEW.rank_search = 4 THEN
 +      -- for countries, believe the mapped country code,
 +      -- so that we remain in the right partition if the boundaries
 +      -- suddenly expand.
 +      NEW.partition := get_partition(place_centroid, lower(NEW.country_code));
 +      IF NEW.partition = 0 THEN
 +        NEW.calculated_country_code := lower(get_country_code(place_centroid));
 +        NEW.partition := get_partition(place_centroid, NEW.calculated_country_code);
 +      ELSE
 +        NEW.calculated_country_code := lower(NEW.country_code);
 +      END IF;
      ELSE
 -      NEW.calculated_country_code := NULL;
 +      IF NEW.rank_search > 4 THEN
 +        --NEW.calculated_country_code := lower(get_country_code(NEW.geometry, NEW.country_code));
 +        NEW.calculated_country_code := lower(get_country_code(place_centroid));
 +      ELSE
 +        NEW.calculated_country_code := NULL;
 +      END IF;
 +      NEW.partition := get_partition(place_centroid, NEW.calculated_country_code);
      END IF;
 -    NEW.partition := get_partition(place_centroid, NEW.calculated_country_code);
      NEW.geometry_sector := geometry_sector(NEW.partition, place_centroid);
  
      -- Adding ourselves to the list simplifies address calculations later