Opened 13 years ago
Closed 13 years ago
#1205 closed defect (fixed)
Test for ST_AddEdgeNewFaces fails under machine load
Reported by: | strk | Owned by: | strk |
---|---|---|---|
Priority: | medium | Milestone: | PostGIS 2.0.0 |
Component: | topology | Version: | master |
Keywords: | Cc: |
Description
If a postgresql backend is under heavy load, the test for ST_AddEdgeNewFaces fails . Maybe a missing ORDER BY somewhere …
Change History (6)
comment:1 by , 13 years ago
follow-up: 3 comment:2 by , 13 years ago
Status: | new → assigned |
---|
The order by is there, but is based on minx/miny of bounding box, which in this case are the same (ouch). The annoying thing is that any ordering serves predictability but not performance. Anyway, when an added edge splits 2 faces… _which_ face should we add first ? For the AddEdgeModFace function we retain the right face, maybe for symmetry we should _add_ the right face first in the AddEdgeNewFace..
comment:3 by , 13 years ago
Replying to strk:
The order by is there, but is based on minx/miny of bounding box, which in this case
are the same (ouch). The annoying thing is that any ordering serves predictability but not performance.
I'm not sure to fully understand but I guess perhaps an order based on idface number sometime like "idface1 < idface2"
could be more fast, But I dont know if is right for this case.
Anyway, when an added edge splits 2 faces… _which_ face should we add first ? For the AddEdgeModFace function we retain the right face, maybe for symmetry we should _add_ the right face first in the AddEdgeNewFace..
+1
comment:4 by , 13 years ago
Using the ST_GetRingEdges it would be more elegant and probably also faster (reduce some significant geos calls). Only, it would then work _only_ for properly linked topologies, that is those in which next_left_face/next_right_face are correct.
Mind you: AddEdge/AddFace functions do _not_ set those values correctly, and ValidateTopology doesnt' check for their correctness.
comment:6 by , 13 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Confirmed, is now stable under heavy load.
The failure: