- -- Update the interpolation table:
- -- delete all old interpolation lines with same osm_id
- -- and insert the new one(s) (they can be split up, if they have > 2 nodes)
- IF existingline.osm_id IS NOT NULL THEN
- DELETE FROM location_property_osmline where osm_id = NEW.osm_id;
+ IF existingline IS NULL or array_length(existingline, 1) = 0 THEN
+ INSERT INTO location_property_osmline (osm_id, address, linegeo)
+ VALUES (NEW.osm_id, NEW.address, NEW.geometry);
+ ELSE
+ -- Update the interpolation table:
+ -- The first entry gets the original data, all other entries
+ -- are removed and will be recreated on indexing.
+ -- (An interpolation can be split up, if it has more than 2 address nodes)
+ UPDATE location_property_osmline
+ SET address = NEW.address,
+ linegeo = NEW.geometry,
+ startnumber = null,
+ indexed_status = 1
+ WHERE place_id = existingline[1];
+ IF array_length(existingline, 1) > 1 THEN
+ DELETE FROM location_property_osmline
+ WHERE place_id = any(existingline[2:]);
+ END IF;