diff --git a/mysql-test/r/ndb_lock.result b/mysql-test/r/ndb_lock.result
index 180a90fff2930d4837d4b32f66d1bc51668aecf1..ac93f15dac3cc9c84bbd246ffb6d8a30c9ce11a2 100644
--- a/mysql-test/r/ndb_lock.result
+++ b/mysql-test/r/ndb_lock.result
@@ -66,7 +66,6 @@ drop table t1;
 create table t3 (id2 int) engine=ndb;
 lock tables t3 write;
 unlock tables;
-id2
 drop table t3;
 create table t2 (id int, j int) engine=ndb;
 insert into t2 values (2, 2);
diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc
index d49eca4f1032c714b42860c7bae1e60c95a37859..93894487ee514f48a2a4dc013d1bea61d6727285 100644
--- a/sql/ha_ndbcluster.cc
+++ b/sql/ha_ndbcluster.cc
@@ -466,60 +466,58 @@ void ha_ndbcluster::no_uncommitted_rows_reset(THD *thd)
     #   The mapped error code
 */
 
-int
-ha_ndbcluster::invalidate_dictionary_cache(TABLE_SHARE *share, Ndb *ndb,
-                                           const char *dbname, const char *tabname,
-                                           bool global)
+int ha_ndbcluster::invalidate_dictionary_cache(bool global)
 {
-  NDBDICT *dict= ndb->getDictionary();
+  NDBDICT *dict= get_ndb()->getDictionary();
   DBUG_ENTER("invalidate_dictionary_cache");
-  DBUG_PRINT("info", ("invalidating %s", tabname));
-
-#ifdef HAVE_NDB_BINLOG
-  char key[FN_REFLEN];
-  build_table_filename(key, sizeof(key), dbname, tabname, "");
-  DBUG_PRINT("info", ("Getting ndbcluster mutex"));
-  pthread_mutex_lock(&ndbcluster_mutex);
-  NDB_SHARE *ndb_share= (NDB_SHARE*)hash_search(&ndbcluster_open_tables,
-                                                (byte*) key, strlen(key));
-  pthread_mutex_unlock(&ndbcluster_mutex);
-  DBUG_PRINT("info", ("Released ndbcluster mutex"));
-  // Only binlog_thread is allowed to globally invalidate a table
-  if (global && ndb_share && ndb_share->op && (current_thd != injector_thd))
-    DBUG_RETURN(1);
-#endif
+  DBUG_PRINT("info", ("m_tabname: %s  global: %d", m_tabname, global));
 
   if (global)
   {
-    const NDBTAB *tab= dict->getTable(tabname);
+#ifdef HAVE_NDB_BINLOG
+    if (current_thd != injector_thd)
+    {
+      char key[FN_REFLEN];
+      build_table_filename(key, sizeof(key), m_dbname, m_tabname, "");
+      DBUG_PRINT("info", ("Getting ndbcluster mutex"));
+      pthread_mutex_lock(&ndbcluster_mutex);
+      NDB_SHARE *ndb_share= (NDB_SHARE*)hash_search(&ndbcluster_open_tables,
+                                                    (byte*) key, strlen(key));
+      // Only binlog_thread is allowed to globally invalidate a table
+      if (ndb_share && ndb_share->op)
+      {
+        pthread_mutex_unlock(&ndbcluster_mutex);
+        DBUG_PRINT("info", ("Released ndbcluster mutex"));
+        DBUG_RETURN(1);
+      }
+      pthread_mutex_unlock(&ndbcluster_mutex);
+      DBUG_PRINT("info", ("Released ndbcluster mutex"));
+    }
+#endif
+    const NDBTAB *tab= dict->getTable(m_tabname);
     if (!tab)
       DBUG_RETURN(1);
     if (tab->getObjectStatus() == NdbDictionary::Object::Invalid)
     {
       // Global cache has already been invalidated
-      dict->removeCachedTable(tabname);
+      dict->removeCachedTable(m_tabname);
       global= FALSE;
+      DBUG_PRINT("info", ("global: %d", global));
     }
     else
-      dict->invalidateTable(tabname);
-    share->version=0L;			/* Free when thread is ready */
+      dict->invalidateTable(m_tabname);
+    table_share->version= 0L;			/* Free when thread is ready */
   }
   else
-    dict->removeCachedTable(tabname);
-  DBUG_RETURN(0);
-}
+    dict->removeCachedTable(m_tabname);
 
-void ha_ndbcluster::invalidate_dictionary_cache(bool global)
-{
-  NDBDICT *dict= get_ndb()->getDictionary();
-  if (invalidate_dictionary_cache(table_share, get_ndb(), m_dbname, m_tabname, global))
-    return;
   /* Invalidate indexes */
   for (uint i= 0; i < table_share->keys; i++)
   {
     NDBINDEX *index = (NDBINDEX *) m_index[i].index;
     NDBINDEX *unique_index = (NDBINDEX *) m_index[i].unique_index;
-    if (!index && !unique_index) continue;
+    if (!index && !unique_index)
+      continue;
     NDB_INDEX_TYPE idx_type= m_index[i].type;
 
     switch (idx_type) {
@@ -546,6 +544,7 @@ void ha_ndbcluster::invalidate_dictionary_cache(bool global)
       break;
     }
   }
+  DBUG_RETURN(0);
 }
 
 int ha_ndbcluster::ndb_err(NdbTransaction *trans)
diff --git a/sql/ha_ndbcluster.h b/sql/ha_ndbcluster.h
index 7498d2bb6248675a65c119af5067d98557e8781e..7fa50fef060b5ad6c7a00e1d6fc9a27c4070cc40 100644
--- a/sql/ha_ndbcluster.h
+++ b/sql/ha_ndbcluster.h
@@ -685,9 +685,6 @@ static void set_tabname(const char *pathname, char *tabname);
 
   bool check_if_incompatible_data(HA_CREATE_INFO *info,
 				  uint table_changes);
-  static int invalidate_dictionary_cache(TABLE_SHARE *share, Ndb *ndb,
-                                         const char *dbname, const char *tabname,
-                                         bool global);
 
 private:
   friend int ndbcluster_drop_database_impl(const char *path);
@@ -774,7 +771,7 @@ static void set_tabname(const char *pathname, char *tabname);
   void print_results();
 
   ulonglong get_auto_increment();
-  void invalidate_dictionary_cache(bool global);
+  int invalidate_dictionary_cache(bool global);
   int ndb_err(NdbTransaction*);
   bool uses_blob_value();