Commit c7deb0d6 authored by unknown's avatar unknown
Browse files

bug#5591

parent 81dbc0f9
Loading
Loading
Loading
Loading
+29 −5
Original line number Diff line number Diff line
@@ -175,7 +175,7 @@ void ha_ndbcluster::records_update()
  DBUG_PRINT("info", ("id=%d, no_uncommitted_rows_count=%d",
		      ((const NDBTAB *)m_table)->getTableId(),
		      info->no_uncommitted_rows_count));
  if (info->records == ~(ha_rows)0)
  //  if (info->records == ~(ha_rows)0)
  {
    Uint64 rows;
    if(ndb_get_table_statistics(m_ndb, m_tabname, &rows, 0) == 0){
@@ -607,7 +607,7 @@ int ha_ndbcluster::get_metadata(const char *path)
  DBUG_ENTER("get_metadata");
  DBUG_PRINT("enter", ("m_tabname: %s, path: %s", m_tabname, path));

  if (!(tab= dict->getTable(m_tabname, &m_table_info)))
  if (!(tab= dict->getTable(m_tabname)))
    ERR_RETURN(dict->getNdbError());
  DBUG_PRINT("info", ("Table schema version: %d", tab->getObjectVersion()));
  
@@ -655,8 +655,8 @@ int ha_ndbcluster::get_metadata(const char *path)
  if (error)
    DBUG_RETURN(error);

  // All checks OK, lets use the table
  m_table= (void*)tab;
  m_table= NULL;
  m_table_info= NULL;
  
  DBUG_RETURN(build_index_list(table, ILBP_OPEN));  
}
@@ -771,6 +771,7 @@ void ha_ndbcluster::release_metadata()
  DBUG_PRINT("enter", ("m_tabname: %s", m_tabname));

  m_table= NULL;
  m_table_info= NULL;

  // Release index list 
  for (i= 0; i < MAX_KEY; i++)
@@ -2394,8 +2395,18 @@ void ha_ndbcluster::info(uint flag)
  if (flag & HA_STATUS_VARIABLE)
  {
    DBUG_PRINT("info", ("HA_STATUS_VARIABLE"));
    if (m_table_info)
    {
      records_update();
    }
    else
    {
      Uint64 rows;
      if(ndb_get_table_statistics(m_ndb, m_tabname, &rows, 0) == 0){
	records= rows;
      }
    }
  }
  if (flag & HA_STATUS_ERRKEY)
  {
    DBUG_PRINT("info", ("HA_STATUS_ERRKEY"));
@@ -2781,6 +2792,16 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
    // Start of transaction
    retrieve_all_fields= FALSE;
    ops_pending= 0;    
    {
      NDBDICT *dict= m_ndb->getDictionary();
      const NDBTAB *tab;
      void *tab_info;
      if (!(tab= dict->getTable(m_tabname, &tab_info)))
	ERR_RETURN(dict->getNdbError());
      DBUG_PRINT("info", ("Table schema version: %d", tab->getObjectVersion()));
      m_table= (void *)tab;
      m_table_info= tab_info;
    }
    no_uncommitted_rows_init(thd);
  } 
  else 
@@ -2803,6 +2824,8 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
        thd->transaction.stmt.ndb_tid= 0;
      }
    }
    m_table= NULL;
    m_table_info= NULL;
    if (m_active_trans)
      DBUG_PRINT("warning", ("m_active_trans != NULL"));
    if (m_active_cursor)
@@ -3288,6 +3311,7 @@ int ha_ndbcluster::alter_table_name(const char *from, const char *to)
    ERR_RETURN(dict->getNdbError());

  m_table= NULL;
  m_table_info= NULL;
                                                                             
  DBUG_RETURN(0);
}