mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
fixed NdbConnection::restart and made use of it in ha_ndbcluster
added testcase
This commit is contained in:
parent
0187978567
commit
7d192fcbd7
4 changed files with 13 additions and 23 deletions
|
@ -75,6 +75,7 @@ drop table t1;
|
|||
DROP TABLE IF EXISTS t2;
|
||||
create table t2 (a int NOT NULL PRIMARY KEY) engine=myisam;
|
||||
alter table t2 engine=ndbcluster;
|
||||
alter table t2 add c int;
|
||||
delete from t2;
|
||||
ERROR HY000: Got temporary error 1217 '1217' from ndbcluster
|
||||
select count(*) from t2 where a+0 > 0;
|
||||
|
|
|
@ -62,6 +62,7 @@ while ($1)
|
|||
}
|
||||
enable_query_log;
|
||||
alter table t2 engine=ndbcluster;
|
||||
alter table t2 add c int;
|
||||
--error 1297
|
||||
delete from t2;
|
||||
#to make sure we do a full table scan
|
||||
|
|
|
@ -201,7 +201,9 @@ NdbConnection::restart(){
|
|||
} else {
|
||||
theNdb->theFirstTransId = tTransid + 1;
|
||||
}
|
||||
theCommitStatus = Started;
|
||||
theCompletionStatus = NotCompleted;
|
||||
theTransactionIsStarted = false;
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
DBUG_PRINT("error",("theCompletionStatus != CompletedSuccess"));
|
||||
|
|
|
@ -1451,36 +1451,22 @@ int ha_ndbcluster::write_row(byte *record)
|
|||
(int)rows_inserted, (int)bulk_insert_rows));
|
||||
|
||||
bulk_insert_not_flushed= false;
|
||||
if (thd->transaction.on) {
|
||||
if (trans->execute(NoCommit) != 0)
|
||||
{
|
||||
skip_auto_increment= true;
|
||||
DBUG_RETURN(ndb_err(trans));
|
||||
}
|
||||
if (thd->transaction.on)
|
||||
{
|
||||
if (trans->execute(NoCommit) != 0)
|
||||
{
|
||||
skip_auto_increment= true;
|
||||
DBUG_RETURN(ndb_err(trans));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (trans->execute(Commit) != 0)
|
||||
{
|
||||
skip_auto_increment= true;
|
||||
DBUG_RETURN(ndb_err(trans));
|
||||
}
|
||||
#if 0 // this is what we want to use but it is not functional
|
||||
trans->restart();
|
||||
#else
|
||||
m_ndb->closeTransaction(m_active_trans);
|
||||
m_active_trans= m_ndb->startTransaction();
|
||||
if (thd->transaction.all.ndb_tid)
|
||||
thd->transaction.all.ndb_tid= m_active_trans;
|
||||
else
|
||||
thd->transaction.stmt.ndb_tid= m_active_trans;
|
||||
if (m_active_trans == NULL)
|
||||
{
|
||||
skip_auto_increment= true;
|
||||
ERR_RETURN(m_ndb->getNdbError());
|
||||
DBUG_RETURN(ndb_err(trans));
|
||||
}
|
||||
trans= m_active_trans;
|
||||
#endif
|
||||
trans->restart();
|
||||
}
|
||||
}
|
||||
if ((has_auto_increment) && (skip_auto_increment))
|
||||
|
|
Loading…
Reference in a new issue