]> granicus.if.org Git - postgis/commitdiff
merged changes r7092 to fix null handling in st_collect for #912, #630 in 1.5 branch...
authorChris Hodgson <chodgson@refractions.net>
Wed, 4 May 2011 23:56:34 +0000 (23:56 +0000)
committerChris Hodgson <chodgson@refractions.net>
Wed, 4 May 2011 23:56:34 +0000 (23:56 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@7093 b70326c6-7e19-0410-871a-916f4a2858ee

postgis/lwgeom_functions_basic.c
regress/tickets.sql
regress/tickets_expected

index f2a5c945741d798af56ad538d869b66f2702b8f3..bc4313c96594f76cdcff9374e63735b71816db63 100644 (file)
@@ -1252,19 +1252,20 @@ Datum LWGEOM_collect_garray(PG_FUNCTION_ARGS)
                                outtype = COLLECTIONTYPE;
                        }
 
-                       /* Advance NULL bitmap */
-                       if (bitmap)
+                       count++;
+               }
+
+               /* Advance NULL bitmap */
+               if (bitmap)
+               {
+                       bitmask <<= 1;
+                       if (bitmask == 0x100)
                        {
-                               bitmask <<= 1;
-                               if (bitmask == 0x100)
-                               {
-                                       bitmap++;
-                                       bitmask = 1;
-                               }
+                               bitmap++;
+                               bitmask = 1;
                        }
-
-                       count++;
                }
+               
        }
 
        POSTGIS_DEBUGF(3, "LWGEOM_collect_garray: outtype = %d", outtype);
index 54581395b2ef370c7c2eff108202eda0ddc85199..6ca704ecf2ecafafd052b69544d33015b5503e90 100644 (file)
@@ -297,6 +297,9 @@ SELECT '#457.7', st_astext(st_collectionExtract('POLYGON((0 0, 1 0, 1 1, 0 1, 0
 SELECT '#457.8', st_astext(st_collectionExtract('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))', 2));
 SELECT '#457.9', st_astext(st_collectionExtract('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))', 3));
 
+-- #650 --
+SELECT '#650', ST_AsText(ST_Collect(ARRAY[ST_MakePoint(0,0), ST_MakePoint(1,1), null, ST_MakePoint(2,2)]));
+
 -- #662 --
 --SELECT '#662', ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_SetSRID(ST_MakePointM(i+m,j,m),4326),ST_SetSRID(ST_MakePointM(j+m,i-m,m),4326)),ST_SetSRID(ST_MakePointM(i,j,m),4326)),ST_SetSRID(ST_MakePointM(i+m,j,m),4326))) As the_geom FROM generate_series(-10,50,20) As i CROSS JOIN generate_series(50,70, 20) As j CROSS JOIN generate_series(1,2) As m ORDER BY i, j, m, i*j*m LIMIT 1;
 
index affef536e74fa5e4c3d3f7e7cb8c14ffa2e9bcce..ca2b989f6bc3fd38a93050f7c9d28d812f9ebd62 100644 (file)
@@ -81,6 +81,7 @@ NOTICE:  IllegalArgumentException: Invalid number of points in LinearRing found
 #457.7|
 #457.8|
 #457.9|POLYGON((0 0,1 0,1 1,0 1,0 0))
+#650|MULTIPOINT(0 0,1 1,2 2)
 #667|SRID=4326;CURVEPOLYGON(CIRCULARSTRING(30 40,18.2842712474619 11.7157287525381,-9.99999999999994 0,-38.284271247462 68.2842712474618,30 40))
 #677|1121395
 #680|010100000000000000000024c00000000000004940