forked from hans/Nominatim
Select all entrances for results in one query
This commit is contained in:
@@ -338,6 +338,11 @@ BEGIN
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- When an existing way is updated, recalculate entrances
|
||||
IF existingplacex.osm_type = 'W' and (existingplacex.rank_search > 27 or existingplacex.class IN ('landuse', 'leisure')) THEN
|
||||
PERFORM place_update_entrances(existingplacex.place_id, existingplacex.osm_id);
|
||||
END IF;
|
||||
|
||||
-- Abort the insertion (we modified the existing place instead)
|
||||
RETURN NULL;
|
||||
END;
|
||||
@@ -365,35 +370,3 @@ BEGIN
|
||||
RETURN NULL;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
CREATE OR REPLACE FUNCTION place_after_insert()
|
||||
RETURNS TRIGGER
|
||||
AS $$
|
||||
BEGIN
|
||||
{% if debug %}
|
||||
RAISE WARNING 'place_after_insert: % % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type,st_area(NEW.geometry);
|
||||
{% endif %}
|
||||
|
||||
IF NEW.class IN ('routing:entrance', 'entrance') THEN
|
||||
PERFORM place_update_entrances_for_node(NEW.osm_id);
|
||||
END IF;
|
||||
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
CREATE OR REPLACE FUNCTION place_after_delete()
|
||||
RETURNS TRIGGER
|
||||
AS $$
|
||||
BEGIN
|
||||
{% if debug %}
|
||||
RAISE WARNING 'place_after_delete: % % % % %',OLD.osm_type,OLD.osm_id,OLD.class,OLD.type,st_area(OLD.geometry);
|
||||
{% endif %}
|
||||
|
||||
IF OLD.class IN ('routing:entrance', 'entrance') THEN
|
||||
PERFORM place_update_entrances_for_node(OLD.osm_id);
|
||||
END IF;
|
||||
|
||||
RETURN NULL;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
@@ -818,8 +818,6 @@ DECLARE
|
||||
nameaddress_vector INTEGER[];
|
||||
addr_nameaddress_vector INTEGER[];
|
||||
|
||||
entrances JSONB;
|
||||
|
||||
linked_place BIGINT;
|
||||
|
||||
linked_node_id BIGINT;
|
||||
|
||||
@@ -625,24 +625,6 @@ END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
|
||||
CREATE OR REPLACE FUNCTION place_update_entrances_for_node(osmid BIGINT)
|
||||
RETURNS INTEGER
|
||||
AS $$
|
||||
DECLARE
|
||||
entrance_way RECORD;
|
||||
BEGIN
|
||||
FOR entrance_way IN
|
||||
SELECT osm_id, place_id FROM planet_osm_ways JOIN placex ON placex.osm_id = planet_osm_ways.id WHERE osmid=ANY(nodes)
|
||||
LOOP
|
||||
PERFORM place_update_entrances(entrance_way.place_id, entrance_way.osm_id);
|
||||
END LOOP;
|
||||
|
||||
RETURN NULL;
|
||||
END;
|
||||
$$
|
||||
LANGUAGE plpgsql;
|
||||
|
||||
|
||||
CREATE OR REPLACE FUNCTION place_update_entrances(placeid BIGINT, osmid BIGINT)
|
||||
RETURNS INTEGER
|
||||
AS $$
|
||||
|
||||
@@ -24,10 +24,6 @@ CREATE TRIGGER place_before_delete BEFORE DELETE ON place
|
||||
FOR EACH ROW EXECUTE PROCEDURE place_delete();
|
||||
CREATE TRIGGER place_before_insert BEFORE INSERT ON place
|
||||
FOR EACH ROW EXECUTE PROCEDURE place_insert();
|
||||
CREATE TRIGGER place_after_insert AFTER INSERT ON place
|
||||
FOR EACH ROW EXECUTE PROCEDURE place_after_insert();
|
||||
CREATE TRIGGER place_after_delete AFTER DELETE ON place
|
||||
FOR EACH ROW EXECUTE PROCEDURE place_after_delete();
|
||||
|
||||
CREATE TRIGGER location_postcode_before_update BEFORE UPDATE ON location_postcode
|
||||
FOR EACH ROW EXECUTE PROCEDURE postcode_update();
|
||||
|
||||
Reference in New Issue
Block a user