Commit 61be5a9c authored by magnus@neptunus.(none)'s avatar magnus@neptunus.(none)

Merge

parents 58899f01 b1fa0304
...@@ -186,7 +186,7 @@ void ha_ndbcluster::records_update() ...@@ -186,7 +186,7 @@ void ha_ndbcluster::records_update()
DBUG_PRINT("info", ("id=%d, no_uncommitted_rows_count=%d", DBUG_PRINT("info", ("id=%d, no_uncommitted_rows_count=%d",
((const NDBTAB *)m_table)->getTableId(), ((const NDBTAB *)m_table)->getTableId(),
info->no_uncommitted_rows_count)); info->no_uncommitted_rows_count));
if (info->records == ~(ha_rows)0) // if (info->records == ~(ha_rows)0)
{ {
Uint64 rows; Uint64 rows;
if(ndb_get_table_statistics(m_ndb, m_tabname, &rows, 0) == 0){ if(ndb_get_table_statistics(m_ndb, m_tabname, &rows, 0) == 0){
...@@ -621,7 +621,7 @@ int ha_ndbcluster::get_metadata(const char *path) ...@@ -621,7 +621,7 @@ int ha_ndbcluster::get_metadata(const char *path)
DBUG_ENTER("get_metadata"); DBUG_ENTER("get_metadata");
DBUG_PRINT("enter", ("m_tabname: %s, path: %s", m_tabname, path)); 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()); ERR_RETURN(dict->getNdbError());
DBUG_PRINT("info", ("Table schema version: %d", tab->getObjectVersion())); DBUG_PRINT("info", ("Table schema version: %d", tab->getObjectVersion()));
...@@ -670,7 +670,9 @@ int ha_ndbcluster::get_metadata(const char *path) ...@@ -670,7 +670,9 @@ int ha_ndbcluster::get_metadata(const char *path)
DBUG_RETURN(error); DBUG_RETURN(error);
// All checks OK, lets use the table // All checks OK, lets use the table
m_table= (void*)tab; // m_table= (void*)tab;
m_table= 0;
m_table_info= 0;
DBUG_RETURN(build_index_list(table, ILBP_OPEN)); DBUG_RETURN(build_index_list(table, ILBP_OPEN));
} }
...@@ -2408,8 +2410,18 @@ void ha_ndbcluster::info(uint flag) ...@@ -2408,8 +2410,18 @@ void ha_ndbcluster::info(uint flag)
if (flag & HA_STATUS_VARIABLE) if (flag & HA_STATUS_VARIABLE)
{ {
DBUG_PRINT("info", ("HA_STATUS_VARIABLE")); DBUG_PRINT("info", ("HA_STATUS_VARIABLE"));
if (m_table_info)
{
records_update(); records_update();
} }
else
{
Uint64 rows;
if(ndb_get_table_statistics(m_ndb, m_tabname, &rows, 0) == 0){
records= rows;
}
}
}
if (flag & HA_STATUS_ERRKEY) if (flag & HA_STATUS_ERRKEY)
{ {
DBUG_PRINT("info", ("HA_STATUS_ERRKEY")); DBUG_PRINT("info", ("HA_STATUS_ERRKEY"));
...@@ -2795,6 +2807,16 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type) ...@@ -2795,6 +2807,16 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
// Start of transaction // Start of transaction
retrieve_all_fields= FALSE; retrieve_all_fields= FALSE;
ops_pending= 0; 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); no_uncommitted_rows_init(thd);
} }
else else
...@@ -2817,6 +2839,8 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type) ...@@ -2817,6 +2839,8 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
thd->transaction.stmt.ndb_tid= 0; thd->transaction.stmt.ndb_tid= 0;
} }
} }
m_table= (void *)0;
m_table_info= 0;
/* /*
This is the place to make sure this handler instance This is the place to make sure this handler instance
no longer are connected to the active transaction. no longer are connected to the active transaction.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment