diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc
index 50d619dcf6632d45a0a274a1e1c0c9d302178e28..0035e95ccf74e3269c6b7c53056fd7011ed0cb0a 100644
--- a/sql/ha_ndbcluster.cc
+++ b/sql/ha_ndbcluster.cc
@@ -197,6 +197,16 @@ struct Ndb_table_local_info {
   ha_rows records;
 };
 
+void ha_ndbcluster::set_rec_per_key()
+{
+  DBUG_ENTER("ha_ndbcluster::get_status_const");
+  for (uint i=0 ; i < table->keys ; i++)
+  {
+    table->key_info[i].rec_per_key[table->key_info[i].key_parts-1]= 1;
+  }
+  DBUG_VOID_RETURN;
+}
+
 void ha_ndbcluster::records_update()
 {
   DBUG_ENTER("ha_ndbcluster::records_update");
@@ -2405,8 +2415,6 @@ void ha_ndbcluster::info(uint flag)
     DBUG_PRINT("info", ("HA_STATUS_NO_LOCK"));
   if (flag & HA_STATUS_TIME)
     DBUG_PRINT("info", ("HA_STATUS_TIME"));
-  if (flag & HA_STATUS_CONST)
-    DBUG_PRINT("info", ("HA_STATUS_CONST"));
   if (flag & HA_STATUS_VARIABLE)
   {
     DBUG_PRINT("info", ("HA_STATUS_VARIABLE"));
@@ -2422,7 +2430,12 @@ void ha_ndbcluster::info(uint flag)
       }
     }
   }
-  if (flag & HA_STATUS_ERRKEY)
+  if (flag & HA_STATUS_CONST)
+  {
+    DBUG_PRINT("info", ("HA_STATUS_CONST"));
+    set_rec_per_key();
+  }
+   if (flag & HA_STATUS_ERRKEY)
   {
     DBUG_PRINT("info", ("HA_STATUS_ERRKEY"));
     errkey= dupkey;
@@ -3523,6 +3536,7 @@ ha_ndbcluster::~ha_ndbcluster()
 
 int ha_ndbcluster::open(const char *name, int mode, uint test_if_locked)
 {
+  int res;
   KEY *key;
   DBUG_ENTER("open");
   DBUG_PRINT("enter", ("name: %s mode: %d test_if_locked: %d",
@@ -3550,7 +3564,11 @@ int ha_ndbcluster::open(const char *name, int mode, uint test_if_locked)
     DBUG_RETURN(HA_ERR_NO_CONNECTION);
   }
   
-  DBUG_RETURN(get_metadata(name));
+  res= get_metadata(name);
+  if (!res)
+    info(HA_STATUS_VARIABLE | HA_STATUS_CONST);
+
+  DBUG_RETURN(res);
 }