diff --git a/mysql-test/r/gis.result b/mysql-test/r/gis.result index de034d93dc5cb953b94568f997d99405f5a694e1..58149d68ca396e99b1acc04d4002709bacddcacd 100644 --- a/mysql-test/r/gis.result +++ b/mysql-test/r/gis.result @@ -730,6 +730,12 @@ point(b, b) IS NULL linestring(b) IS NULL polygon(b) IS NULL multipoint(b) IS NU 1 1 1 1 1 1 1 0 1 1 1 1 1 1 drop table t1; +CREATE TABLE t1(a POINT) ENGINE=MyISAM; +INSERT INTO t1 VALUES (NULL); +SELECT * FROM t1; +a +NULL +DROP TABLE t1; End of 4.1 tests create table t1 (s1 geometry not null,s2 char(100)); create trigger t1_bu before update on t1 for each row set new.s1 = null; diff --git a/mysql-test/t/gis.test b/mysql-test/t/gis.test index b32764f1f62058513a8ba947cfad1928844aadfa..d92ff804ccba4dd31d78999befb785ec30454373 100644 --- a/mysql-test/t/gis.test +++ b/mysql-test/t/gis.test @@ -423,6 +423,14 @@ from t1; drop table t1; +# +# Bug #27164: Crash when mixing InnoDB and MyISAM Geospatial tables +# +CREATE TABLE t1(a POINT) ENGINE=MyISAM; +INSERT INTO t1 VALUES (NULL); +SELECT * FROM t1; +DROP TABLE t1; + --echo End of 4.1 tests # diff --git a/sql/field.h b/sql/field.h index 87bbda5c875baaae2dddfd30a12afb44b3316864..e82e90ce5ab3662021c531f22b57828bb6600f1e 100644 --- a/sql/field.h +++ b/sql/field.h @@ -1284,7 +1284,7 @@ public: int store_decimal(const my_decimal *); void get_key_image(char *buff,uint length,imagetype type); uint size_of() const { return sizeof(*this); } - int reset(void) { return !maybe_null(); } + int reset(void) { return !maybe_null() || Field_blob::reset(); } }; #endif /*HAVE_SPATIAL*/