- -- Get the existing entry from the interpolation table.
- SELECT array_agg(place_id) INTO existingline
- 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;
- END IF;