File mysql-5.0.67-gis.patch of Package mysql

Index: mysql-test/r/gis.result
===================================================================
--- mysql-test/r/gis.result.orig
+++ mysql-test/r/gis.result
@@ -971,4 +971,16 @@ select min(`col002`) from t1 union selec
 min(`col002`)
 NULL
 drop table t1;
+#
+# Bug #47780: crash when comparing GIS items from subquery
+#
+CREATE TABLE t1(a INT, b MULTIPOLYGON);
+INSERT INTO t1 VALUES
+(0,
+GEOMFROMTEXT(
+'multipolygon(((1 2,3 4,5 6,7 8,9 8),(7 6,5 4,3 2,1 2,3 4)))'));
+# must not crash
+SELECT 1 FROM t1 WHERE a <> (SELECT GEOMETRYCOLLECTIONFROMWKB(b) FROM t1);
+1
+DROP TABLE t1;
 End of 5.0 tests
Index: mysql-test/t/gis.test
===================================================================
--- mysql-test/t/gis.test.orig
+++ mysql-test/t/gis.test
@@ -651,4 +651,19 @@ insert into t1 values (),(),();
 select min(`col002`) from t1 union select `col002` from t1;
 drop table t1;
 
+--echo #
+--echo # Bug #47780: crash when comparing GIS items from subquery
+--echo #
+
+CREATE TABLE t1(a INT, b MULTIPOLYGON);
+INSERT INTO t1 VALUES
+  (0,
+   GEOMFROMTEXT(
+    'multipolygon(((1 2,3 4,5 6,7 8,9 8),(7 6,5 4,3 2,1 2,3 4)))'));
+
+--echo # must not crash
+SELECT 1 FROM t1 WHERE a <> (SELECT GEOMETRYCOLLECTIONFROMWKB(b) FROM t1);
+
+DROP TABLE t1;
+
 --echo End of 5.0 tests
Index: sql/item_geofunc.cc
===================================================================
--- sql/item_geofunc.cc.orig
+++ sql/item_geofunc.cc
@@ -79,7 +79,10 @@ String *Item_func_geometry_from_wkb::val
 
   str->set_charset(&my_charset_bin);
   if (str->reserve(SRID_SIZE, 512))
-    return 0;
+  {
+    null_value= TRUE;                           /* purecov: inspected */
+    return 0;                                   /* purecov: inspected */
+  }
   str->length(0);
   str->q_append(srid);
   if ((null_value= 
openSUSE Build Service is sponsored by