diff --git a/mysql-test/extra/rpl_tests/type_conversions.test b/mysql-test/extra/rpl_tests/type_conversions.test
index 6e52da59201dcc85d9a1e79e0b8c97dab7c7f798..791e07c4822dee15934b9d3262c57a810e1a44c5 100644
--- a/mysql-test/extra/rpl_tests/type_conversions.test
+++ b/mysql-test/extra/rpl_tests/type_conversions.test
@@ -12,6 +12,13 @@ connection slave;
 let $if_is_lossy = `SELECT FIND_IN_SET('ALL_LOSSY', @@SLAVE_TYPE_CONVERSIONS)`;
 let $if_is_non_lossy = `SELECT FIND_IN_SET('ALL_NON_LOSSY', @@SLAVE_TYPE_CONVERSIONS)`;
 
+let $source_type  = GEOMETRY;
+let $target_type  = GEOMETRY;
+let $source_value = PointFromText('POINT(10 10)');
+let $target_value = PointFromText('POINT(10 10)');
+let $can_convert  = 1;
+source extra/rpl_tests/check_type.inc;
+
 let $source_type  = BIT(1);
 let $target_type  = BIT(1);
 let $source_value = b'1';
diff --git a/mysql-test/suite/rpl/r/rpl_typeconv.result b/mysql-test/suite/rpl/r/rpl_typeconv.result
index 904517594061918e3e375d20076c3e214822e79d..34ec81973ae46331dfd47a8ca1f2473a9fe8eefc 100644
--- a/mysql-test/suite/rpl/r/rpl_typeconv.result
+++ b/mysql-test/suite/rpl/r/rpl_typeconv.result
@@ -69,6 +69,7 @@ RESET MASTER;
 include/start_slave.inc
 **** Result of conversions ****
 Source_Type	Target_Type	All_Type_Conversion_Flags	Value_On_Slave
+GEOMETRY       	GEOMETRY       	                         	<Correct value>
 BIT(1)         	BIT(1)         	                         	<Correct value>
 DATE           	DATE           	                         	<Correct value>
 ENUM('master','	ENUM('master','	                         	<Correct value>
@@ -171,6 +172,7 @@ BIT(5)         	BIT(6)         	                         	<Correct error>
 BIT(6)         	BIT(5)         	                         	<Correct error>
 BIT(5)         	BIT(12)        	                         	<Correct error>
 BIT(12)        	BIT(5)         	                         	<Correct error>
+GEOMETRY       	GEOMETRY       	ALL_NON_LOSSY            	<Correct value>
 BIT(1)         	BIT(1)         	ALL_NON_LOSSY            	<Correct value>
 DATE           	DATE           	ALL_NON_LOSSY            	<Correct value>
 ENUM('master','	ENUM('master','	ALL_NON_LOSSY            	<Correct value>
@@ -273,6 +275,7 @@ BIT(5)         	BIT(6)         	ALL_NON_LOSSY            	<Correct value>
 BIT(6)         	BIT(5)         	ALL_NON_LOSSY            	<Correct error>
 BIT(5)         	BIT(12)        	ALL_NON_LOSSY            	<Correct value>
 BIT(12)        	BIT(5)         	ALL_NON_LOSSY            	<Correct error>
+GEOMETRY       	GEOMETRY       	ALL_LOSSY                	<Correct value>
 BIT(1)         	BIT(1)         	ALL_LOSSY                	<Correct value>
 DATE           	DATE           	ALL_LOSSY                	<Correct value>
 ENUM('master','	ENUM('master','	ALL_LOSSY                	<Correct value>
@@ -375,6 +378,7 @@ BIT(5)         	BIT(6)         	ALL_LOSSY                	<Correct error>
 BIT(6)         	BIT(5)         	ALL_LOSSY                	<Correct value>
 BIT(5)         	BIT(12)        	ALL_LOSSY                	<Correct error>
 BIT(12)        	BIT(5)         	ALL_LOSSY                	<Correct value>
+GEOMETRY       	GEOMETRY       	ALL_LOSSY,ALL_NON_LOSSY  	<Correct value>
 BIT(1)         	BIT(1)         	ALL_LOSSY,ALL_NON_LOSSY  	<Correct value>
 DATE           	DATE           	ALL_LOSSY,ALL_NON_LOSSY  	<Correct value>
 ENUM('master','	ENUM('master','	ALL_LOSSY,ALL_NON_LOSSY  	<Correct value>
diff --git a/sql/field.h b/sql/field.h
index 041610f5385ef14dd46ab0e973ab11e16e069620..192f0c8e460d3b9d15221cfa0202f80d75ba08ec 100644
--- a/sql/field.h
+++ b/sql/field.h
@@ -1817,6 +1817,10 @@ class Field_geom :public Field_blob {
   uint size_of() const { return sizeof(*this); }
   int  reset(void) { return !maybe_null() || Field_blob::reset(); }
   geometry_type get_geometry_type() { return geom_type; };
+  uint pack_length_from_metadata(uint field_metadata)
+  {
+    return pack_length_no_ptr();
+  }
 };
 #endif /*HAVE_SPATIAL*/