diff --git a/sql/rpl_utility.cc b/sql/rpl_utility.cc
index 3d5b3baad3094ed07ffa0934e9a30a8c5b6ce5bf..16eaae9b91d9199505668b38a685cc390e22df29 100644
--- a/sql/rpl_utility.cc
+++ b/sql/rpl_utility.cc
@@ -590,6 +590,13 @@ can_convert_field_to(Field *field,
    */
   if (field->real_type() == source_type)
   {
+    if (metadata == 0) // Metadata can only be zero if no metadata was provided
+    {
+      DBUG_PRINT("debug", ("Base types are identical, but there is no metadata"));
+      *order_var= 0;
+      DBUG_RETURN(true);
+    }
+
     DBUG_PRINT("debug", ("Base types are identical, doing field size comparison"));
     if (field->compatible_field_size(metadata, rli, mflags, order_var))
       DBUG_RETURN(is_conversion_ok(*order_var, rli));
@@ -920,7 +927,7 @@ TABLE *table_def::create_conversion_table(THD *thd, Relay_log_info *rli, TABLE *
     field_def->init_for_tmp_table(type(col),
                                   max_length,
                                   decimals,
-                                  maybe_null(col), // maybe_null
+                                  TRUE,         // maybe_null
                                   FALSE,        // unsigned_flag
                                   pack_length);
     field_def->charset= target_table->field[col]->charset();