Commit 470087cb authored by tomas@poseidon.ndb.mysql.com's avatar tomas@poseidon.ndb.mysql.com

Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.1-new-ndb

into  poseidon.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb
parents 63c72dc0 1cc537d9
...@@ -414,6 +414,37 @@ void ha_ndbcluster::set_rec_per_key() ...@@ -414,6 +414,37 @@ void ha_ndbcluster::set_rec_per_key()
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
ha_rows ha_ndbcluster::records()
{
ha_rows retval;
DBUG_ENTER("ha_ndbcluster::records");
struct Ndb_local_table_statistics *info= m_table_info;
DBUG_PRINT("info", ("id=%d, no_uncommitted_rows_count=%d",
((const NDBTAB *)m_table)->getTableId(),
info->no_uncommitted_rows_count));
Ndb *ndb= get_ndb();
ndb->setDatabaseName(m_dbname);
struct Ndb_statistics stat;
if (ndb_get_table_statistics(ndb, m_table, &stat) == 0)
{
retval= stat.row_count;
}
else
{
/**
* Be consistent with BUG#19914 until we fix it properly
*/
DBUG_RETURN(-1);
}
THD *thd= current_thd;
if (get_thd_ndb(thd)->error)
info->no_uncommitted_rows_count= 0;
DBUG_RETURN(retval + info->no_uncommitted_rows_count);
}
void ha_ndbcluster::records_update() void ha_ndbcluster::records_update()
{ {
if (m_ha_not_exact_count) if (m_ha_not_exact_count)
...@@ -5455,7 +5486,8 @@ void ha_ndbcluster::get_auto_increment(ulonglong offset, ulonglong increment, ...@@ -5455,7 +5486,8 @@ void ha_ndbcluster::get_auto_increment(ulonglong offset, ulonglong increment,
HA_PRIMARY_KEY_REQUIRED_FOR_POSITION | \ HA_PRIMARY_KEY_REQUIRED_FOR_POSITION | \
HA_PRIMARY_KEY_REQUIRED_FOR_DELETE | \ HA_PRIMARY_KEY_REQUIRED_FOR_DELETE | \
HA_PARTIAL_COLUMN_READ | \ HA_PARTIAL_COLUMN_READ | \
HA_HAS_OWN_BINLOGGING HA_HAS_OWN_BINLOGGING | \
HA_HAS_RECORDS
ha_ndbcluster::ha_ndbcluster(TABLE_SHARE *table_arg): ha_ndbcluster::ha_ndbcluster(TABLE_SHARE *table_arg):
handler(&ndbcluster_hton, table_arg), handler(&ndbcluster_hton, table_arg),
......
...@@ -622,6 +622,7 @@ class ha_ndbcluster: public handler ...@@ -622,6 +622,7 @@ class ha_ndbcluster: public handler
int read_multi_range_next(KEY_MULTI_RANGE **found_range_p); int read_multi_range_next(KEY_MULTI_RANGE **found_range_p);
bool get_error_message(int error, String *buf); bool get_error_message(int error, String *buf);
ha_rows records();
void info(uint); void info(uint);
void get_dynamic_partition_info(PARTITION_INFO *stat_info, uint part_id); void get_dynamic_partition_info(PARTITION_INFO *stat_info, uint part_id);
int extra(enum ha_extra_function operation); int extra(enum ha_extra_function operation);
......
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