[PostGIS] #5983: Data corruption in topology.topoelement and topology.topogeometry after upgrade to 3.6.0

PostGIS trac at osgeo.org
Thu Oct 30 07:18:04 PDT 2025


#5983: Data corruption in topology.topoelement and topology.topogeometry after
upgrade to 3.6.0
-----------------------+---------------------------
  Reporter:  packi     |      Owner:  robe
      Type:  defect    |     Status:  new
  Priority:  blocker   |  Milestone:  PostGIS 3.6.1
 Component:  topology  |    Version:  3.6.x
Resolution:            |   Keywords:
-----------------------+---------------------------
Comment (by robe):

 Replying to [comment:25 strk]:
 > Replying to [comment:23 robe]:
 >
 > > Wouldn't you end up overupdating with that.  I was thinking more like
 > >
 > >  WHERE (  (topogeom).id & 0xFFFFFFFF ) <> (topogeom).id;
 >
 > I was thinking more like:
 >
 > {{{
 > WHERE ( xmin < ( select xmin from pg_proc where oid =
 'topology.st_createtopogeo'::regproc )
 > }}}
 >

 Did you test this out?

 If I do something like this:


 {{{
 SELECT xmin from pg_proc where  xmin < ( select p.xmin from pg_proc AS p
 where oid = 'topology.st_createtopogeo'::regproc );
 }}}

 I get error:


 {{{
 ERROR:  operator does not exist: xid < xid
 }}}

 So we would probably need to change it to:


  {{{
  WHERE ( xmin::text::int < ( select xmin::text::int from pg_proc where oid
 = 'topology.st_createtopogeo'::regproc )
  }}}

 but like I said, I'm sure there is a good reason they didn't define  <>
 operators for xid.  Though that would probably be a faster test.
-- 
Ticket URL: <https://trac.osgeo.org/postgis/ticket/5983#comment:28>
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