diff --git a/mysql-test/r/ndb_cache.result b/mysql-test/r/ndb_cache.result
index 714e1831267e9c33e6b6009d057ac9a79f4b64ed..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/mysql-test/r/ndb_cache.result
+++ b/mysql-test/r/ndb_cache.result
@@ -1,43 +0,0 @@
-set GLOBAL query_cache_size=1355776;
-reset query cache;
-flush status;
-drop table if exists t1,t2;
-CREATE TABLE t1 (a int) ENGINE=ndbcluster;
-CREATE TABLE t2 (a int);
-select * from t1;
-a
-show status like "Qcache_queries_in_cache";
-Variable_name	Value
-Qcache_queries_in_cache	0
-show status like "Qcache_inserts";
-Variable_name	Value
-Qcache_inserts	0
-show status like "Qcache_hits";
-Variable_name	Value
-Qcache_hits	0
-select * from t2;
-a
-show status like "Qcache_queries_in_cache";
-Variable_name	Value
-Qcache_queries_in_cache	1
-show status like "Qcache_inserts";
-Variable_name	Value
-Qcache_inserts	1
-show status like "Qcache_hits";
-Variable_name	Value
-Qcache_hits	0
-select * from t1;
-a
-select * from t2;
-a
-show status like "Qcache_queries_in_cache";
-Variable_name	Value
-Qcache_queries_in_cache	1
-show status like "Qcache_inserts";
-Variable_name	Value
-Qcache_inserts	1
-show status like "Qcache_hits";
-Variable_name	Value
-Qcache_hits	1
-drop table t1, t2;
-SET GLOBAL query_cache_size=0;
diff --git a/mysql-test/t/ndb_cache.test b/mysql-test/t/ndb_cache.test
index abd09424f6489d13f42f679f52d5c8948233bd7a..bd368105a8425fa89be35f7dfa1bbd525ffca54c 100644
--- a/mysql-test/t/ndb_cache.test
+++ b/mysql-test/t/ndb_cache.test
@@ -1,31 +1,49 @@
 -- source include/have_query_cache.inc
 -- source include/have_ndb.inc
-
+set GLOBAL ndb_query_cache_type=on;
+# following line have to be removed when ndb_query_cache_type will made
+# global only
+set ndb_query_cache_type=on;
 set GLOBAL query_cache_size=1355776;
 reset query cache;
 flush status;
 
 --disable_warnings
-drop table if exists t1,t2;
+drop table if exists t1;
 --enable_warnings
 
 CREATE TABLE t1 (a int) ENGINE=ndbcluster;
-CREATE TABLE t2 (a int);
-
+insert into t1 value (2);
+select * from t1;
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+connect (con1,localhost,root,,);
+connection con1;
+use test;
+set autocommit=0;
+update t1 set a=3;
+connect (con2,localhost,root,,);
+connection con2;
+select * from t1;
 select * from t1;
 show status like "Qcache_queries_in_cache";
 show status like "Qcache_inserts";
 show status like "Qcache_hits";
-select * from t2;
+connection con1;
+select * from t1;
+select * from t1;
 show status like "Qcache_queries_in_cache";
 show status like "Qcache_inserts";
 show status like "Qcache_hits";
+commit;
+connection con2;
+select * from t1;
 select * from t1;
-select * from t2;
 show status like "Qcache_queries_in_cache";
 show status like "Qcache_inserts";
 show status like "Qcache_hits";
+drop table t1;
 
-drop table t1, t2;
 
 SET GLOBAL query_cache_size=0;
diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc
index 5c2698bcef2675d7e6688643c8edce0ea7cc259d..fa2fb0283f9dcb531aff345cc4398df3c2b68f94 100644
--- a/sql/sql_cache.cc
+++ b/sql/sql_cache.cc
@@ -1087,7 +1087,6 @@ Query_cache::send_result_to_client(THD *thd, char *sql, uint query_length)
       DBUG_PRINT("qcache", ("Handler does not allow caching for %s.%s",
 			    table_list.db, table_list.alias));
       BLOCK_UNLOCK_RD(query_block);
-      thd->lex->safe_to_cache_query= 0;          // Don't try to cache this
       if (engine_data != table->engine_data())
       {
         DBUG_PRINT("qcache",
@@ -1096,6 +1095,8 @@ Query_cache::send_result_to_client(THD *thd, char *sql, uint query_length)
                               engine_data, table->engine_data()));
         invalidate_table(table->db(), table->key_length());
       }
+      else
+        thd->lex->safe_to_cache_query= 0;       // Don't try to cache this
       goto err_unlock;				// Parse query
     }
     else