summaryrefslogtreecommitdiff
path: root/sql/ha_ndbcluster.cc
diff options
context:
space:
mode:
authorunknown <tomas@poseidon.ndb.mysql.com>2006-06-14 13:52:50 +0200
committerunknown <tomas@poseidon.ndb.mysql.com>2006-06-14 13:52:50 +0200
commit7189f0a59995035ac4ccdb9ca9033ac03877a029 (patch)
tree3fe7a2754fd76e9d1ec1a5055594136482736b99 /sql/ha_ndbcluster.cc
parentb10b25fbb59fb10527c207154bbb65270beddb84 (diff)
parent2e1616d627d0fa7e39198ca4f2f13094cac5eba2 (diff)
downloadmariadb-git-7189f0a59995035ac4ccdb9ca9033ac03877a029.tar.gz
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-4.1
into poseidon.ndb.mysql.com:/home/tomas/mysql-4.1-main sql/ha_ndbcluster.cc: Auto merged
Diffstat (limited to 'sql/ha_ndbcluster.cc')
-rw-r--r--sql/ha_ndbcluster.cc34
1 files changed, 27 insertions, 7 deletions
diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc
index 1031c4f635c..f09b4bf42f7 100644
--- a/sql/ha_ndbcluster.cc
+++ b/sql/ha_ndbcluster.cc
@@ -4147,20 +4147,30 @@ int ha_ndbcluster::delete_table(const char *name)
int ha_ndbcluster::drop_table()
{
+ THD *thd= current_thd;
Ndb *ndb= get_ndb();
NdbDictionary::Dictionary *dict= ndb->getDictionary();
DBUG_ENTER("drop_table");
DBUG_PRINT("enter", ("Deleting %s", m_tabname));
- if (dict->dropTable(m_tabname))
+ while (dict->dropTable(m_tabname))
{
const NdbError err= dict->getNdbError();
- if (err.code == 709)
- ; // 709: No such table existed
- else
+ switch (err.status)
+ {
+ case NdbError::TemporaryError:
+ if (!thd->killed)
+ continue; // retry indefinitly
+ break;
+ default:
+ break;
+ }
+ if (err.code != 709) // 709: No such table existed
ERR_RETURN(dict->getNdbError());
- }
+ break;
+ }
+
release_metadata();
DBUG_RETURN(0);
}
@@ -4564,14 +4574,24 @@ int ndbcluster_drop_database(const char *path)
List_iterator_fast<char> it(drop_list);
while ((tabname=it++))
{
- if (dict->dropTable(tabname))
+ while (dict->dropTable(tabname))
{
const NdbError err= dict->getNdbError();
- if (err.code != 709)
+ switch (err.status)
+ {
+ case NdbError::TemporaryError:
+ if (!thd->killed)
+ continue; // retry indefinitly
+ break;
+ default:
+ break;
+ }
+ if (err.code != 709) // 709: No such table existed
{
ERR_PRINT(err);
ret= ndb_to_mysql_error(&err);
}
+ break;
}
}
DBUG_RETURN(ret);