@lonvia commented on this pull request.
> + // endpoint equality, not ST_Intersects, to avoid deleting unrelated
+ // same-group lines that cross a component. A second pass over the changed
+ // region cleans up outputs of components that disappeared entirely (all
+ // their lines deleted), which leave no reached nodes behind; that pass is
+ // self-correcting because anything it removes either vanished or has a
+ // surviving line in the region and is regenerated below.
+ timer(m_timer_delete).start();
+ auto deleted = dbexec(R"(
+DELETE FROM {dest} d
+ USING _glm_nodes n
+ WHERE {group_join_dn}
+ AND ( (ST_X(ST_StartPoint(d."{geom_column}")) = n.x
+ AND ST_Y(ST_StartPoint(d."{geom_column}")) = n.y)
+ OR (ST_X(ST_EndPoint(d."{geom_column}")) = n.x
+ AND ST_Y(ST_EndPoint(d."{geom_column}")) = n.y) )
+)");
The important question here is what exactly has changed. If A has changed its
tags or geometry then both tiles right and left of the boundary will be expired
and in your set or regions to recompute. While your CTE recurses outside the
expiry tile area, it does not recurse to a merged way that doesn't intersect
with a expired tile.
I might be wrong of course, which is why we are going to need lots and lots of
tests for the update case, once the implementation has settled down a bit.
--
Reply to this email directly or view it on GitHub:
https://github.com/osm2pgsql-dev/osm2pgsql/pull/2482#discussion_r3364833768
You are receiving this because you are subscribed to this thread.
Message ID: <osm2pgsql-dev/osm2pgsql/pull/2482/review/[email protected]>_______________________________________________
Tile-serving mailing list
[email protected]
https://lists.openstreetmap.org/listinfo/tile-serving