]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge remote-tracking branch 'upstream/master'
authorSarah Hoffmann <lonvia@denofr.de>
Sun, 11 Jan 2015 14:40:37 +0000 (15:40 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Sun, 11 Jan 2015 14:40:37 +0000 (15:40 +0100)
Conflicts:
sql/tiger_import_finish.sql

1  2 
sql/functions.sql
sql/tiger_import_finish.sql
utils/setup.php

diff --combined sql/functions.sql
index 5e95d0f4e05f52b628a7df3c06f4c67925c59c90,a4a7f116e187d065fc462a598f3b6c0da0777315..577e02bfdacdc360128bc187394e252e87ce5f2c
@@@ -911,11 -911,6 +911,11 @@@ DECLAR
  BEGIN
    --DEBUG: RAISE WARNING '% %',NEW.osm_type,NEW.osm_id;
  
 +  -- remove operator tag for most places, messes too much with search_name indexes
 +  IF NEW.class not in ('amenity', 'shop') THEN
 +    NEW.name := delete(NEW.name, 'operator');
 +  END IF;
 +
    -- just block these
    IF NEW.class in ('landuse','natural') and NEW.name is null THEN
  --    RAISE WARNING 'empty landuse %',NEW.osm_id;
@@@ -1362,17 -1357,17 +1362,17 @@@ BEGI
  
      -- waterway ways are linked when they are part of a relation and have the same class/type
      IF NEW.osm_type = 'R' and NEW.class = 'waterway' THEN
-         FOR relation IN select * from planet_osm_rels r where r.id = NEW.osm_id and r.parts != array[]::bigint[]
+         FOR relation_members IN select members from planet_osm_rels r where r.id = NEW.osm_id and r.parts != array[]::bigint[]
          LOOP
-             FOR i IN 1..array_upper(relation.members, 1) BY 2 LOOP
-                 IF relation.members[i+1] in ('', 'main_stream', 'side_stream') AND substring(relation.members[i],1,1) = 'w' THEN
-                   --DEBUG: RAISE WARNING 'waterway parent %, child %/%', NEW.osm_id, i, relation.parts[i];
-                   FOR location IN SELECT * FROM placex
-                     WHERE osm_type = 'W' and osm_id = substring(relation.members[i],2,200)::bigint
+             FOR i IN 1..array_upper(relation_members, 1) BY 2 LOOP
+                 IF relation_members[i+1] in ('', 'main_stream', 'side_stream') AND substring(relation_members[i],1,1) = 'w' THEN
+                   --DEBUG: RAISE WARNING 'waterway parent %, child %/%', NEW.osm_id, i, relation.members[i];
+                   FOR linked_node_id IN SELECT place_id FROM placex
+                     WHERE osm_type = 'W' and osm_id = substring(relation_members[i],2,200)::bigint
                      and class = NEW.class and type = NEW.type
-                     and ( relation.members[i+1] != 'side_stream' or NEW.name->'name' = name->'name')
+                     and ( relation_members[i+1] != 'side_stream' or NEW.name->'name' = name->'name')
                    LOOP
-                     UPDATE placex SET linked_place_id = NEW.place_id WHERE place_id = location.place_id;
+                     UPDATE placex SET linked_place_id = NEW.place_id WHERE place_id = linked_node_id;
                    END LOOP;
                  END IF;
              END LOOP;
@@@ -2052,11 -2047,6 +2052,11 @@@ BEGI
      --DEBUG: RAISE WARNING '%', existingplacex;
    END IF;
  
 +  -- remove operator tag for most places, messes too much with search_name indexes
 +  IF NEW.class not in ('amenity', 'shop') THEN
 +    NEW.name := delete(NEW.name, 'operator');
 +  END IF;
 +
    -- Just block these - lots and pointless
    IF NEW.class in ('landuse','natural') and NEW.name is null THEN
      -- if the name tag was removed, older versions might still be lurking in the place table
  
    END IF;
  
 +  -- refuse to update multiplpoygons with too many objects, too much of a performance hit
 +  IF ST_NumGeometries(NEW.geometry) > 2000 THEN
 +    RAISE WARNING 'Dropping update of % % because of geometry complexity.', NEW.osm_type, NEW.osm_id;
 +    RETURN NULL;
 +  END IF;
 +
    IF coalesce(existing.name::text, '') != coalesce(NEW.name::text, '')
       OR coalesce(existing.extratags::text, '') != coalesce(NEW.extratags::text, '')
       OR coalesce(existing.housenumber, '') != coalesce(NEW.housenumber, '')
index d6ec1833a9fbc359ef5c66f54b73267ec037d013,4718d50263df84c55d646da70129f3bbce448dc1..a7d837f4c02a30927b93c77e63f3592c1b3e24c5
@@@ -1,12 -1,12 +1,12 @@@
- CREATE INDEX idx_location_property_tiger_housenumber_parent_place_id_imp ON location_property_tiger_import (parent_place_id, housenumber);
- CREATE UNIQUE INDEX idx_location_property_tiger_place_id_imp ON location_property_tiger_import (place_id);
+ CREATE INDEX idx_location_property_tiger_housenumber_parent_place_id_imp ON location_property_tiger_import (parent_place_id, housenumber) {ts:aux-index};
+ CREATE UNIQUE INDEX idx_location_property_tiger_place_id_imp ON location_property_tiger_import (place_id) {ts:aux-index};
  
- GRANT SELECT ON location_property_tiger_import TO "www-data";
+ GRANT SELECT ON location_property_tiger_import TO "{www-user}";
  
- --DROP TABLE location_property_tiger;
 -DROP TABLE IF EXISTS location_property_tiger;
 -ALTER TABLE location_property_tiger_import RENAME TO location_property_tiger;
++--DROP TABLE IF EXISTS location_property_tiger;
 +--ALTER TABLE location_property_tiger_import RENAME TO location_property_tiger;
  
 -ALTER INDEX idx_location_property_tiger_housenumber_parent_place_id_imp RENAME TO idx_location_property_tiger_housenumber_parent_place_id;
 -ALTER INDEX idx_location_property_tiger_place_id_imp RENAME TO idx_location_property_tiger_place_id;
 +--ALTER INDEX idx_location_property_tiger_housenumber_parent_place_id_imp RENAME TO idx_location_property_tiger_housenumber_parent_place_id;
 +--ALTER INDEX idx_location_property_tiger_place_id_imp RENAME TO idx_location_property_tiger_place_id;
  
  DROP FUNCTION tigger_create_interpolation (linegeo geometry, in_startnumber integer, in_endnumber integer, interpolationtype text, in_street text, in_isin text, in_postcode text);
diff --combined utils/setup.php
index a31fbadfa2d102565a80e2b148f26336e0fc8ba5,be385698e80afa963484573b1cdc1df156002215..c45cc857ac422bc87b3d26be85045fd20afef4f0
                if (CONST_Tablespace_Place_Index)
                        $osm2pgsql .= ' --tablespace-main-index '.CONST_Tablespace_Place_Index;
                $osm2pgsql .= ' -lsc -O gazetteer --hstore';
 -              $osm2pgsql .= ' -C '.$iCacheMemory;
 +              $osm2pgsql .= ' -C 25000';
                $osm2pgsql .= ' -P '.$aDSNInfo['port'];
                $osm2pgsql .= ' -d '.$aDSNInfo['database'].' '.$aCMDResult['osm-file'];
                passthruCheckReturn($osm2pgsql);
        {
                $bDidSomething = true;
  
-               pgsqlRunScriptFile(CONST_BasePath.'/sql/tiger_import_start.sql');
+               $sTemplate = file_get_contents(CONST_BasePath.'/sql/tiger_import_start.sql');
+               $sTemplate = str_replace('{www-user}', CONST_Database_Web_User, $sTemplate);
+               $sTemplate = replace_tablespace('{ts:aux-data}',
+                                               CONST_Tablespace_Aux_Data, $sTemplate);
+               $sTemplate = replace_tablespace('{ts:aux-index}',
+                                               CONST_Tablespace_Aux_Index, $sTemplate);
+               pgsqlRunScript($sTemplate, false);
  
                $aDBInstances = array();
                for($i = 0; $i < $iInstances; $i++)
                }
  
                echo "Creating indexes\n";
-               pgsqlRunScriptFile(CONST_BasePath.'/sql/tiger_import_finish.sql');
+               $sTemplate = file_get_contents(CONST_BasePath.'/sql/tiger_import_finish.sql');
+               $sTemplate = str_replace('{www-user}', CONST_Database_Web_User, $sTemplate);
+               $sTemplate = replace_tablespace('{ts:aux-data}',
+                                               CONST_Tablespace_Aux_Data, $sTemplate);
+               $sTemplate = replace_tablespace('{ts:aux-index}',
+                                               CONST_Tablespace_Aux_Index, $sTemplate);
+               pgsqlRunScript($sTemplate, false);
        }
  
        if ($aCMDResult['calculate-postcodes'] || $aCMDResult['all'])
                $sSQL .= "select 'P',nextval('seq_postcodes'),'place','postcode',postcode,calculated_country_code,";
                $sSQL .= "ST_SetSRID(ST_Point(x,y),4326) as geometry from (select calculated_country_code,postcode,";
                $sSQL .= "avg(st_x(st_centroid(geometry))) as x,avg(st_y(st_centroid(geometry))) as y ";
 -              $sSQL .= "from placex where postcode is not null group by calculated_country_code,postcode) as x";
 +              $sSQL .= "from placex where postcode is not null and calculated_country_code not in ('ie') group by calculated_country_code,postcode) as x";
                if (!pg_query($oDB->connection, $sSQL)) fail(pg_last_error($oDB->connection));
  
                $sSQL = "insert into placex (osm_type,osm_id,class,type,postcode,calculated_country_code,geometry) ";