Commit a1e5f5b0 authored by jonas@perch.ndb.mysql.com's avatar jonas@perch.ndb.mysql.com

Merge perch.ndb.mysql.com:/home/jonas/src/51-work

into  perch.ndb.mysql.com:/home/jonas/src/mysql-5.1-new
parents 53a1ff95 31e4b8db
......@@ -34,7 +34,8 @@ public:
bool allowConstraintViolation = true,
int doSleep = 0,
bool oneTrans = false,
int updateValue = 0);
int updateValue = 0,
bool abort = false);
int scanReadRecords(Ndb*,
int records,
......
......@@ -519,7 +519,8 @@ HugoTransactions::loadTable(Ndb* pNdb,
bool allowConstraintViolation,
int doSleep,
bool oneTrans,
int value){
int value,
bool abort){
int check, a;
int retryAttempt = 0;
int retryMax = 5;
......@@ -585,10 +586,22 @@ HugoTransactions::loadTable(Ndb* pNdb,
if (!oneTrans || (c + batch) >= records) {
// closeTrans = true;
closeTrans = false;
check = pTrans->execute( Commit );
if(check != -1)
m_latest_gci = pTrans->getGCI();
pTrans->restart();
if (!abort)
{
check = pTrans->execute( Commit );
if(check != -1)
m_latest_gci = pTrans->getGCI();
pTrans->restart();
}
else
{
check = pTrans->execute( NoCommit );
if (check != -1)
{
check = pTrans->execute( Rollback );
closeTransaction(pNdb);
}
}
} else {
closeTrans = false;
check = pTrans->execute( NoCommit );
......
......@@ -31,6 +31,8 @@ int main(int argc, const char** argv){
int _batch = 512;
int _loops = -1;
int _rand = 0;
int _onetrans = 0;
int _abort = 0;
const char* db = 0;
struct getargs args[] = {
......@@ -39,7 +41,9 @@ int main(int argc, const char** argv){
{ "loops", 'l', arg_integer, &_loops, "Number of loops", "" },
{ "database", 'd', arg_string, &db, "Database", "" },
{ "usage", '?', arg_flag, &_help, "Print help", "" },
{ "rnd-rows", 0, arg_flag, &_rand, "Rand number of records", "recs" }
{ "rnd-rows", 0, arg_flag, &_rand, "Rand number of records", "recs" },
{ "one-trans", 0, arg_flag, &_onetrans, "Insert as 1 trans", "" },
{ "abort", 0, arg_integer, &_abort, "Abort probability", "" }
};
int num_args = sizeof(args) / sizeof(args[0]);
int optind = 0;
......@@ -92,10 +96,13 @@ int main(int argc, const char** argv){
HugoTransactions hugoTrans(*pTab);
loop:
int rows = (_rand ? rand() % _records : _records);
int abort = (rand() % 100) < _abort ? 1 : 0;
if (abort)
ndbout << "load+abort" << endl;
if (hugoTrans.loadTable(&MyNdb,
rows,
_batch,
true, 0, false, _loops) != 0){
true, 0, _onetrans, _loops, abort) != 0){
return NDBT_ProgramExit(NDBT_FAILED);
}
......
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