diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index 610771724e124d36c9b1de62de524b1369e6e9bd..2500ea46c3e4b2a44cda7b2a251851318fd7c026 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -1132,6 +1132,26 @@ bool execute_ddl_log_entry(THD *thd, uint first_entry)
 }
 
 
+/*
+  Close the ddl log
+  SYNOPSIS
+    close_ddl_log()
+  RETURN VALUES
+    NONE
+*/
+
+static void close_ddl_log()
+{
+  DBUG_ENTER("close_ddl_log");
+  if (global_ddl_log.file_id >= 0)
+  {
+    VOID(my_close(global_ddl_log.file_id, MYF(MY_WME)));
+    global_ddl_log.file_id= (File) -1;
+  }
+  DBUG_VOID_RETURN;
+}
+
+
 /*
   Execute the ddl log at recovery of MySQL Server
   SYNOPSIS
@@ -1183,6 +1203,7 @@ void execute_ddl_log_recovery()
       }
     }
   }
+  close_ddl_log();
   create_ddl_log_file_name(file_name);
   VOID(my_delete(file_name, MYF(0)));
   global_ddl_log.recovery_phase= FALSE;
@@ -1220,11 +1241,7 @@ void release_ddl_log()
     my_free((char*)free_list, MYF(0));
     free_list= tmp;
   }
-  if (global_ddl_log.file_id >= 0)
-  {
-    VOID(my_close(global_ddl_log.file_id, MYF(MY_WME)));
-    global_ddl_log.file_id= (File) -1;
-  }
+  close_ddl_log();
   global_ddl_log.inited= 0;
   pthread_mutex_unlock(&LOCK_gdl);
   VOID(pthread_mutex_destroy(&LOCK_gdl));