mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
Merge neptunus.(none):/home/msvensson/mysql/mysql-4.1
into neptunus.(none):/home/msvensson/mysql/bug6762
This commit is contained in:
commit
71ccc569ae
5 changed files with 33 additions and 4 deletions
|
@ -179,7 +179,7 @@ a b c
|
||||||
2 two two
|
2 two two
|
||||||
alter table t1 drop index c;
|
alter table t1 drop index c;
|
||||||
select * from t1 where b = 'two';
|
select * from t1 where b = 'two';
|
||||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
ERROR HY000: Table definition has changed, please retry transaction
|
||||||
select * from t1 where b = 'two';
|
select * from t1 where b = 'two';
|
||||||
a b c
|
a b c
|
||||||
2 two two
|
2 two two
|
||||||
|
|
|
@ -47,3 +47,4 @@ t2
|
||||||
t3
|
t3
|
||||||
t4
|
t4
|
||||||
drop table t1, t2, t3, t4;
|
drop table t1, t2, t3, t4;
|
||||||
|
drop table t1, t3, t4;
|
||||||
|
|
|
@ -143,7 +143,7 @@ select * from t1 where b = 'two';
|
||||||
connection server1;
|
connection server1;
|
||||||
alter table t1 drop index c;
|
alter table t1 drop index c;
|
||||||
connection server2;
|
connection server2;
|
||||||
--error 1146
|
--error 1105
|
||||||
select * from t1 where b = 'two';
|
select * from t1 where b = 'two';
|
||||||
select * from t1 where b = 'two';
|
select * from t1 where b = 'two';
|
||||||
connection server1;
|
connection server1;
|
||||||
|
|
|
@ -40,5 +40,7 @@ show status like 'handler_discover%';
|
||||||
show tables;
|
show tables;
|
||||||
|
|
||||||
drop table t1, t2, t3, t4;
|
drop table t1, t2, t3, t4;
|
||||||
|
connection server2;
|
||||||
|
drop table t1, t3, t4;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -113,7 +113,6 @@ static const err_code_mapping err_map[]=
|
||||||
{ 4244, HA_ERR_TABLE_EXIST, 1 },
|
{ 4244, HA_ERR_TABLE_EXIST, 1 },
|
||||||
|
|
||||||
{ 709, HA_ERR_NO_SUCH_TABLE, 1 },
|
{ 709, HA_ERR_NO_SUCH_TABLE, 1 },
|
||||||
{ 284, HA_ERR_NO_SUCH_TABLE, 1 },
|
|
||||||
|
|
||||||
{ 266, HA_ERR_LOCK_WAIT_TIMEOUT, 1 },
|
{ 266, HA_ERR_LOCK_WAIT_TIMEOUT, 1 },
|
||||||
{ 274, HA_ERR_LOCK_WAIT_TIMEOUT, 1 },
|
{ 274, HA_ERR_LOCK_WAIT_TIMEOUT, 1 },
|
||||||
|
@ -363,7 +362,7 @@ void ha_ndbcluster::invalidateDictionaryCache()
|
||||||
int ha_ndbcluster::ndb_err(NdbConnection *trans)
|
int ha_ndbcluster::ndb_err(NdbConnection *trans)
|
||||||
{
|
{
|
||||||
int res;
|
int res;
|
||||||
const NdbError err= trans->getNdbError();
|
NdbError err= trans->getNdbError();
|
||||||
DBUG_ENTER("ndb_err");
|
DBUG_ENTER("ndb_err");
|
||||||
|
|
||||||
ERR_PRINT(err);
|
ERR_PRINT(err);
|
||||||
|
@ -371,6 +370,33 @@ int ha_ndbcluster::ndb_err(NdbConnection *trans)
|
||||||
case NdbError::SchemaError:
|
case NdbError::SchemaError:
|
||||||
{
|
{
|
||||||
invalidateDictionaryCache();
|
invalidateDictionaryCache();
|
||||||
|
|
||||||
|
if (err.code==284)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
Check if the table is _really_ gone or if the table has
|
||||||
|
been alterend and thus changed table id
|
||||||
|
*/
|
||||||
|
NDBDICT *dict= get_ndb()->getDictionary();
|
||||||
|
DBUG_PRINT("info", ("Check if table %s is really gone", m_tabname));
|
||||||
|
if (!(dict->getTable(m_tabname)))
|
||||||
|
{
|
||||||
|
err= dict->getNdbError();
|
||||||
|
DBUG_PRINT("info", ("Table not found, error: %d", err.code));
|
||||||
|
if (err.code != 709)
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DBUG_PRINT("info", ("Table exist but must have changed"));
|
||||||
|
/* In 5.0, this should be replaced with a mapping to a mysql error */
|
||||||
|
my_printf_error(ER_UNKNOWN_ERROR,
|
||||||
|
"Table definition has changed, "\
|
||||||
|
"please retry transaction",
|
||||||
|
MYF(0));
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Add table
Reference in a new issue