[postgis-tickets] [PostGIS] #4684: concurrent topology construction routine may result in invalid topology

PostGIS trac at osgeo.org
Mon Jan 11 02:46:22 PST 2021


#4684: concurrent topology construction routine may result in invalid topology
-----------------------+---------------------------
  Reporter:  laopsahl  |      Owner:  strk
      Type:  defect    |     Status:  new
  Priority:  medium    |  Milestone:  PostGIS 3.0.4
 Component:  topology  |    Version:  3.0.x
Resolution:            |   Keywords:
-----------------------+---------------------------

Comment (by strk):

 Same kind of invalidity (wrong containment info) happens for isolated
 edges:

 Using SQL:

   - P0: select createtopology('isoinface');
   - P1: begin; select topogeo_addpoint('isoinface', 'LINESTRING(4 5, 6
 5)');
   - P2: begin: select topogeo_addlinestring('isoinface', 'LINESTRING(0 0,0
 10,10 10,10 0,0 0)');
   - P1: commit;
   - P2: commit;

 At the end of the above process, we'll have th `isoinface` topology
 containing 1 face, 2 edge and 3 nodes. The ISOLATED edge (the one inserted
 by P1) will have a wrong `left_face` and `right_face` values:

 {{{
 =# select e.edge_id, st_astext(e.geom) g, e.left_face, e.right_face,
    f.face_id as containing_face
    from isoinface.edge e left outer join isoinface.face f
    on (f.face_id != 0 and ST_Contains(ST_GetFaceGeometry('isoinface',
 f.face_id), e.geom));
  edge_id |                  g                  | left_face | right_face |
 containing_face
 ---------+-------------------------------------+-----------+------------+-----------------
        2 | LINESTRING(0 0,0 10,10 10,10 0,0 0) |         0 |          2 |
        3 | LINESTRING(4 4,6 6)                 |         0 |          0 |
 2
 (2 rows)

 }}}

 This kind of invalidity is also not currently detected by ValidateTopology
 function (see #4830)

-- 
Ticket URL: <https://trac.osgeo.org/postgis/ticket/4684#comment:19>
PostGIS <http://trac.osgeo.org/postgis/>
The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project.


More information about the postgis-tickets mailing list