transportation_name update to consider tags (#1289)

Following 8bb77b67a1 (r59190611)
This commit is contained in:
zstadler 2021-11-04 14:51:28 +02:00 committed by GitHub
parent dffb9c66d6
commit 5b2e43497e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -431,6 +431,7 @@ CREATE TABLE IF NOT EXISTS transportation_name.name_changes
name character varying, name character varying,
name_en character varying, name_en character varying,
name_de character varying, name_de character varying,
tags hstore,
ref character varying, ref character varying,
highway character varying, highway character varying,
subclass character varying, subclass character varying,
@ -452,19 +453,19 @@ $$
BEGIN BEGIN
IF (tg_op IN ('DELETE', 'UPDATE')) IF (tg_op IN ('DELETE', 'UPDATE'))
THEN THEN
INSERT INTO transportation_name.name_changes(is_old, osm_id, name, name_en, name_de, ref, highway, subclass, INSERT INTO transportation_name.name_changes(is_old, osm_id, name, name_en, name_de, tags, ref, highway, subclass,
brunnel, level, layer, indoor, network_type, brunnel, level, layer, indoor, network_type,
route_1, route_2, route_3, route_4, route_5, route_6) route_1, route_2, route_3, route_4, route_5, route_6)
VALUES (TRUE, old.osm_id, old.name, old.name_en, old.name_de, old.ref, old.highway, old.subclass, VALUES (TRUE, old.osm_id, old.name, old.name_en, old.name_de, old.tags, old.ref, old.highway, old.subclass,
old.brunnel, old.level, old.layer, old.indoor, old.network_type, old.brunnel, old.level, old.layer, old.indoor, old.network_type,
old.route_1, old.route_2, old.route_3, old.route_4, old.route_5, old.route_6); old.route_1, old.route_2, old.route_3, old.route_4, old.route_5, old.route_6);
END IF; END IF;
IF (tg_op IN ('UPDATE', 'INSERT')) IF (tg_op IN ('UPDATE', 'INSERT'))
THEN THEN
INSERT INTO transportation_name.name_changes(is_old, osm_id, name, name_en, name_de, ref, highway, subclass, INSERT INTO transportation_name.name_changes(is_old, osm_id, name, name_en, name_de, tags, ref, highway, subclass,
brunnel, level, layer, indoor, network_type, brunnel, level, layer, indoor, network_type,
route_1, route_2, route_3, route_4, route_5, route_6) route_1, route_2, route_3, route_4, route_5, route_6)
VALUES (FALSE, new.osm_id, new.name, new.name_en, new.name_de, new.ref, new.highway, new.subclass, VALUES (FALSE, new.osm_id, new.name, new.name_en, new.name_de, new.tags, new.ref, new.highway, new.subclass,
new.brunnel, new.level, new.layer, new.indoor, new.network_type, new.brunnel, new.level, new.layer, new.indoor, new.network_type,
new.route_1, new.route_2, new.route_3, new.route_4, new.route_5, new.route_6); new.route_1, new.route_2, new.route_3, new.route_4, new.route_5, new.route_6);
END IF; END IF;
@ -497,11 +498,12 @@ BEGIN
-- Compact the change history to keep only the first and last version, and then uniq version of row -- Compact the change history to keep only the first and last version, and then uniq version of row
CREATE TEMP TABLE name_changes_compact AS CREATE TEMP TABLE name_changes_compact AS
SELECT DISTINCT ON (name, name_en, name_de, ref, highway, subclass, brunnel, level, layer, indoor, network_type, SELECT DISTINCT ON (name, name_en, name_de, tags, ref, highway, subclass, brunnel, level, layer, indoor, network_type,
route_1, route_2, route_3, route_4, route_5, route_6) route_1, route_2, route_3, route_4, route_5, route_6)
name, name,
name_en, name_en,
name_de, name_de,
tags,
ref, ref,
highway, highway,
subclass, subclass,
@ -535,6 +537,7 @@ BEGIN
AND coalesce(n.ref, '') = coalesce(c.ref, '') AND coalesce(n.ref, '') = coalesce(c.ref, '')
AND n.name_en IS NOT DISTINCT FROM c.name_en AND n.name_en IS NOT DISTINCT FROM c.name_en
AND n.name_de IS NOT DISTINCT FROM c.name_de AND n.name_de IS NOT DISTINCT FROM c.name_de
AND n.tags IS NOT DISTINCT FROM c.tags
AND n.highway IS NOT DISTINCT FROM c.highway AND n.highway IS NOT DISTINCT FROM c.highway
AND n.subclass IS NOT DISTINCT FROM c.subclass AND n.subclass IS NOT DISTINCT FROM c.subclass
AND n.brunnel IS NOT DISTINCT FROM c.brunnel AND n.brunnel IS NOT DISTINCT FROM c.brunnel
@ -570,7 +573,7 @@ BEGIN
n.name, n.name,
n.name_en, n.name_en,
n.name_de, n.name_de,
hstore(string_agg(nullif(slice_language_tags(tags || hstore(string_agg(nullif(slice_language_tags(n.tags ||
hstore(ARRAY ['name', n.name, 'name:en', n.name_en, 'name:de', n.name_de]))::text, hstore(ARRAY ['name', n.name, 'name:en', n.name_en, 'name:de', n.name_de]))::text,
''), ',')) AS tags, ''), ',')) AS tags,
n.ref, n.ref,
@ -589,6 +592,7 @@ BEGIN
AND coalesce(n.ref, '') = coalesce(c.ref, '') AND coalesce(n.ref, '') = coalesce(c.ref, '')
AND n.name_en IS NOT DISTINCT FROM c.name_en AND n.name_en IS NOT DISTINCT FROM c.name_en
AND n.name_de IS NOT DISTINCT FROM c.name_de AND n.name_de IS NOT DISTINCT FROM c.name_de
AND n.tags IS NOT DISTINCT FROM c.tags
AND n.highway IS NOT DISTINCT FROM c.highway AND n.highway IS NOT DISTINCT FROM c.highway
AND n.subclass IS NOT DISTINCT FROM c.subclass AND n.subclass IS NOT DISTINCT FROM c.subclass
AND n.brunnel IS NOT DISTINCT FROM c.brunnel AND n.brunnel IS NOT DISTINCT FROM c.brunnel
@ -602,7 +606,7 @@ BEGIN
AND n.route_4 IS NOT DISTINCT FROM c.route_4 AND n.route_4 IS NOT DISTINCT FROM c.route_4
AND n.route_5 IS NOT DISTINCT FROM c.route_5 AND n.route_5 IS NOT DISTINCT FROM c.route_5
AND n.route_6 IS NOT DISTINCT FROM c.route_6 AND n.route_6 IS NOT DISTINCT FROM c.route_6
GROUP BY n.name, n.name_en, n.name_de, n.ref, n.highway, n.subclass, n.brunnel, n.level, n.layer, n.indoor, n.network_type, GROUP BY n.name, n.name_en, n.name_de, n.tags, n.ref, n.highway, n.subclass, n.brunnel, n.level, n.layer, n.indoor, n.network_type,
n.route_1, n.route_2, n.route_3, n.route_4, n.route_5, n.route_6 n.route_1, n.route_2, n.route_3, n.route_4, n.route_5, n.route_6
) AS highway_union; ) AS highway_union;
@ -614,6 +618,7 @@ BEGIN
AND n.name IS NOT DISTINCT FROM c.name AND n.name IS NOT DISTINCT FROM c.name
AND n.name_en IS NOT DISTINCT FROM c.name_en AND n.name_en IS NOT DISTINCT FROM c.name_en
AND n.name_de IS NOT DISTINCT FROM c.name_de AND n.name_de IS NOT DISTINCT FROM c.name_de
AND n.tags IS NOT DISTINCT FROM c.tags
AND n.ref IS NOT DISTINCT FROM c.ref AND n.ref IS NOT DISTINCT FROM c.ref
AND n.highway IS NOT DISTINCT FROM c.highway AND n.highway IS NOT DISTINCT FROM c.highway
AND n.subclass IS NOT DISTINCT FROM c.subclass AND n.subclass IS NOT DISTINCT FROM c.subclass
@ -634,6 +639,7 @@ BEGIN
AND n.name IS NOT DISTINCT FROM c.name AND n.name IS NOT DISTINCT FROM c.name
AND n.name_en IS NOT DISTINCT FROM c.name_en AND n.name_en IS NOT DISTINCT FROM c.name_en
AND n.name_de IS NOT DISTINCT FROM c.name_de AND n.name_de IS NOT DISTINCT FROM c.name_de
AND n.tags IS NOT DISTINCT FROM c.tags
AND n.ref IS NOT DISTINCT FROM c.ref AND n.ref IS NOT DISTINCT FROM c.ref
AND n.highway IS NOT DISTINCT FROM c.highway AND n.highway IS NOT DISTINCT FROM c.highway
AND n.subclass IS NOT DISTINCT FROM c.subclass AND n.subclass IS NOT DISTINCT FROM c.subclass
@ -654,6 +660,7 @@ BEGIN
AND n.name IS NOT DISTINCT FROM c.name AND n.name IS NOT DISTINCT FROM c.name
AND n.name_en IS NOT DISTINCT FROM c.name_en AND n.name_en IS NOT DISTINCT FROM c.name_en
AND n.name_de IS NOT DISTINCT FROM c.name_de AND n.name_de IS NOT DISTINCT FROM c.name_de
AND n.tags IS NOT DISTINCT FROM c.tags
AND n.ref IS NOT DISTINCT FROM c.ref AND n.ref IS NOT DISTINCT FROM c.ref
AND n.highway IS NOT DISTINCT FROM c.highway AND n.highway IS NOT DISTINCT FROM c.highway
AND n.subclass IS NOT DISTINCT FROM c.subclass AND n.subclass IS NOT DISTINCT FROM c.subclass
@ -674,6 +681,7 @@ BEGIN
AND n.name IS NOT DISTINCT FROM c.name AND n.name IS NOT DISTINCT FROM c.name
AND n.name_en IS NOT DISTINCT FROM c.name_en AND n.name_en IS NOT DISTINCT FROM c.name_en
AND n.name_de IS NOT DISTINCT FROM c.name_de AND n.name_de IS NOT DISTINCT FROM c.name_de
AND n.tags IS NOT DISTINCT FROM c.tags
AND n.ref IS NOT DISTINCT FROM c.ref AND n.ref IS NOT DISTINCT FROM c.ref
AND n.highway IS NOT DISTINCT FROM c.highway AND n.highway IS NOT DISTINCT FROM c.highway
AND n.subclass IS NOT DISTINCT FROM c.subclass AND n.subclass IS NOT DISTINCT FROM c.subclass
@ -694,6 +702,7 @@ BEGIN
AND n.name IS NOT DISTINCT FROM c.name AND n.name IS NOT DISTINCT FROM c.name
AND n.name_en IS NOT DISTINCT FROM c.name_en AND n.name_en IS NOT DISTINCT FROM c.name_en
AND n.name_de IS NOT DISTINCT FROM c.name_de AND n.name_de IS NOT DISTINCT FROM c.name_de
AND n.tags IS NOT DISTINCT FROM c.tags
AND n.ref IS NOT DISTINCT FROM c.ref AND n.ref IS NOT DISTINCT FROM c.ref
AND n.highway IS NOT DISTINCT FROM c.highway AND n.highway IS NOT DISTINCT FROM c.highway
AND n.subclass IS NOT DISTINCT FROM c.subclass AND n.subclass IS NOT DISTINCT FROM c.subclass
@ -714,6 +723,7 @@ BEGIN
AND n.name IS NOT DISTINCT FROM c.name AND n.name IS NOT DISTINCT FROM c.name
AND n.name_en IS NOT DISTINCT FROM c.name_en AND n.name_en IS NOT DISTINCT FROM c.name_en
AND n.name_de IS NOT DISTINCT FROM c.name_de AND n.name_de IS NOT DISTINCT FROM c.name_de
AND n.tags IS NOT DISTINCT FROM c.tags
AND n.ref IS NOT DISTINCT FROM c.ref AND n.ref IS NOT DISTINCT FROM c.ref
AND n.highway IS NOT DISTINCT FROM c.highway AND n.highway IS NOT DISTINCT FROM c.highway
AND n.subclass IS NOT DISTINCT FROM c.subclass AND n.subclass IS NOT DISTINCT FROM c.subclass
@ -734,6 +744,7 @@ BEGIN
AND n.name IS NOT DISTINCT FROM c.name AND n.name IS NOT DISTINCT FROM c.name
AND n.name_en IS NOT DISTINCT FROM c.name_en AND n.name_en IS NOT DISTINCT FROM c.name_en
AND n.name_de IS NOT DISTINCT FROM c.name_de AND n.name_de IS NOT DISTINCT FROM c.name_de
AND n.tags IS NOT DISTINCT FROM c.tags
AND n.ref IS NOT DISTINCT FROM c.ref AND n.ref IS NOT DISTINCT FROM c.ref
AND n.highway IS NOT DISTINCT FROM c.highway AND n.highway IS NOT DISTINCT FROM c.highway
AND n.subclass IS NOT DISTINCT FROM c.subclass AND n.subclass IS NOT DISTINCT FROM c.subclass
@ -754,6 +765,7 @@ BEGIN
AND n.name IS NOT DISTINCT FROM c.name AND n.name IS NOT DISTINCT FROM c.name
AND n.name_en IS NOT DISTINCT FROM c.name_en AND n.name_en IS NOT DISTINCT FROM c.name_en
AND n.name_de IS NOT DISTINCT FROM c.name_de AND n.name_de IS NOT DISTINCT FROM c.name_de
AND n.tags IS NOT DISTINCT FROM c.tags
AND n.ref IS NOT DISTINCT FROM c.ref AND n.ref IS NOT DISTINCT FROM c.ref
AND n.highway IS NOT DISTINCT FROM c.highway AND n.highway IS NOT DISTINCT FROM c.highway
AND n.subclass IS NOT DISTINCT FROM c.subclass AND n.subclass IS NOT DISTINCT FROM c.subclass