Commit 7d192fcb authored by tomas@poseidon.(none)'s avatar tomas@poseidon.(none)

fixed NdbConnection::restart and made use of it in ha_ndbcluster

added testcase
parent 01879785
......@@ -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,7 +1451,8 @@ int ha_ndbcluster::write_row(byte *record)
(int)rows_inserted, (int)bulk_insert_rows));
bulk_insert_not_flushed= false;
if (thd->transaction.on) {
if (thd->transaction.on)
{
if (trans->execute(NoCommit) != 0)
{
skip_auto_increment= true;
......@@ -1465,22 +1466,7 @@ int ha_ndbcluster::write_row(byte *record)
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());
}
trans= m_active_trans;
#endif
}
}
if ((has_auto_increment) && (skip_auto_increment))
......
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