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*/