[postgis-devel] [PostGIS] #210: segmentation faults in lwgeom_geos.c:pgis_union_geometry_array

PostGIS trac at osgeo.org
Sat Jun 27 13:45:42 PDT 2009


#210: segmentation faults in lwgeom_geos.c:pgis_union_geometry_array
------------------------+---------------------------------------------------
  Reporter:  dfuhriman  |       Owner:  robe         
      Type:  defect     |      Status:  assigned     
  Priority:  medium     |   Milestone:  postgis 1.3.7
 Component:  postgis    |     Version:  trunk        
Resolution:             |    Keywords:               
------------------------+---------------------------------------------------
Comment (by mcayland):

 Okay - I've worked out what's going on here. What is happening is that the
 code used to implement the aggregates does not handle NULLs correctly :(

 The issue is that NULLs in PostgreSQL arrays are stored in an out-of-array
 bitmap and so unless you check the bitmap to find out which elements to
 skip, you go outside of the allocated data area since NULLs *are* included
 in the element count.

 Please find attached a work-in-progress patch against 1.4 that makes
 ST_Union() NULL safe - can everyone test and make sure I didn't break
 anything? If it works, I'll do the same to the other aggregates, including
 ST_MakeLine() which was the cause of one of Regina's failures.

 With the attached patch applied I can now do this:

 postgis=# select  st_numgeometries(ST_Union(the_geom)) from foo;
  st_numgeometries
 ------------------

 (1 row)
 postgis=# SELECT ST_Union(ARRAY[NULL,NULL,NULL,NULL]);
  st_union
 ----------

 (1 row)


 HTH,

 Mark.

-- 
Ticket URL: <http://trac.osgeo.org/postgis/ticket/210#comment:14>
PostGIS <http://trac.osgeo.org/postgis/>
PostGIS


More information about the postgis-devel mailing list