summaryrefslogtreecommitdiff
path: root/sql/ha_ndbcluster.cc
diff options
context:
space:
mode:
authorunknown <tomas@poseidon.ndb.mysql.com>2006-04-20 03:05:50 +0200
committerunknown <tomas@poseidon.ndb.mysql.com>2006-04-20 03:05:50 +0200
commitc8171434aebec3c1224e320062952287f727c7fb (patch)
tree15af7f2ac0f807fb9b272f7afed80b1eec66b584 /sql/ha_ndbcluster.cc
parentc5363887e701ae6f8b682be8519983b5eff28ec3 (diff)
downloadmariadb-git-c8171434aebec3c1224e320062952287f727c7fb.tar.gz
ndb uncomitted row count cont'd, applying new fix since last one was no good
Diffstat (limited to 'sql/ha_ndbcluster.cc')
-rw-r--r--sql/ha_ndbcluster.cc33
1 files changed, 11 insertions, 22 deletions
diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc
index c99c6f94761..3d0e6df2831 100644
--- a/sql/ha_ndbcluster.cc
+++ b/sql/ha_ndbcluster.cc
@@ -363,6 +363,8 @@ Thd_ndb::~Thd_ndb()
void
Thd_ndb::init_open_tables()
{
+ count= 0;
+ error= 0;
my_hash_reset(&open_tables);
}
@@ -380,8 +382,17 @@ Thd_ndb::get_open_table(THD *thd, const void *key)
thd_ndb_share= (THD_NDB_SHARE *) alloc_root(&thd->transaction.mem_root,
sizeof(THD_NDB_SHARE));
thd_ndb_share->key= key;
+ thd_ndb_share->stat.last_count= count;
+ thd_ndb_share->stat.no_uncommitted_rows_count= 0;
+ thd_ndb_share->stat.records == ~(ha_rows)0;
my_hash_insert(&open_tables, (byte *)thd_ndb_share);
}
+ else if (thd_ndb_share->stat.last_count != count)
+ {
+ thd_ndb_share->stat.last_count= count;
+ thd_ndb_share->stat.no_uncommitted_rows_count= 0;
+ thd_ndb_share->stat.records == ~(ha_rows)0;
+ }
DBUG_PRINT("exit", ("thd_ndb_share: 0x%x key: 0x%x", thd_ndb_share, key));
DBUG_RETURN(thd_ndb_share);
}
@@ -444,25 +455,6 @@ void ha_ndbcluster::no_uncommitted_rows_execute_failure()
DBUG_VOID_RETURN;
}
-void ha_ndbcluster::no_uncommitted_rows_init(THD *thd)
-{
- if (m_ha_not_exact_count)
- return;
- DBUG_ENTER("ha_ndbcluster::no_uncommitted_rows_init");
- struct Ndb_local_table_statistics *info= m_table_info;
- Thd_ndb *thd_ndb= get_thd_ndb(thd);
- if (info->last_count != thd_ndb->count)
- {
- info->last_count= thd_ndb->count;
- info->no_uncommitted_rows_count= 0;
- info->records= ~(ha_rows)0;
- DBUG_PRINT("info", ("id=%d, no_uncommitted_rows_count=%d",
- ((const NDBTAB *)m_table)->getTableId(),
- info->no_uncommitted_rows_count));
- }
- DBUG_VOID_RETURN;
-}
-
void ha_ndbcluster::no_uncommitted_rows_update(int c)
{
if (m_ha_not_exact_count)
@@ -3946,7 +3938,6 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
if (trans == NULL)
ERR_RETURN(ndb->getNdbError());
thd_ndb->init_open_tables();
- no_uncommitted_rows_reset(thd);
thd_ndb->stmt= trans;
trans_register_ha(thd, FALSE, &ndbcluster_hton);
}
@@ -3962,7 +3953,6 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
if (trans == NULL)
ERR_RETURN(ndb->getNdbError());
thd_ndb->init_open_tables();
- no_uncommitted_rows_reset(thd);
thd_ndb->all= trans;
trans_register_ha(thd, TRUE, &ndbcluster_hton);
@@ -4041,7 +4031,6 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
}
m_thd_ndb_share= thd_ndb->get_open_table(thd, m_table);
m_table_info= &m_thd_ndb_share->stat;
- no_uncommitted_rows_init(thd);
}
else
{