Commit 5af87424 authored by joreland@mysql.com's avatar joreland@mysql.com

Merge joreland@bk-internal.mysql.com:/home/bk/mysql-5.0-ndb

into mysql.com:/home/jonas/src/mysql-5.0-ndb
parents 264bac2f 80b0974b
...@@ -85,7 +85,7 @@ FastScheduler::activateSendPacked() ...@@ -85,7 +85,7 @@ FastScheduler::activateSendPacked()
void void
FastScheduler::doJob() FastScheduler::doJob()
{ {
Uint32 init_loopCount = 0; Uint32 loopCount = 0;
Uint32 TminLoops = getBOccupancy() + EXTRA_SIGNALS_PER_DO_JOB; Uint32 TminLoops = getBOccupancy() + EXTRA_SIGNALS_PER_DO_JOB;
Uint32 TloopMax = (Uint32)globalData.loopMax; Uint32 TloopMax = (Uint32)globalData.loopMax;
if (TminLoops < TloopMax) { if (TminLoops < TloopMax) {
...@@ -94,10 +94,9 @@ FastScheduler::doJob() ...@@ -94,10 +94,9 @@ FastScheduler::doJob()
if (TloopMax < MIN_NUMBER_OF_SIG_PER_DO_JOB) { if (TloopMax < MIN_NUMBER_OF_SIG_PER_DO_JOB) {
TloopMax = MIN_NUMBER_OF_SIG_PER_DO_JOB; TloopMax = MIN_NUMBER_OF_SIG_PER_DO_JOB;
}//if }//if
do{
Uint32 loopCount = init_loopCount;
register Uint32 tHighPrio = globalData.highestAvailablePrio;
register Signal* signal = getVMSignals(); register Signal* signal = getVMSignals();
register Uint32 tHighPrio= globalData.highestAvailablePrio;
do{
while ((tHighPrio < LEVEL_IDLE) && (loopCount < TloopMax)) { while ((tHighPrio < LEVEL_IDLE) && (loopCount < TloopMax)) {
// signal->garbage_register(); // signal->garbage_register();
// To ensure we find bugs quickly // To ensure we find bugs quickly
...@@ -155,24 +154,27 @@ FastScheduler::doJob() ...@@ -155,24 +154,27 @@ FastScheduler::doJob()
}//if }//if
loopCount++; loopCount++;
}//while }//while
if (globalData.sendPackedActivated == 1) { sendPacked();
Uint32 t1 = theDoJobTotalCounter; tHighPrio = globalData.highestAvailablePrio;
Uint32 t2 = theDoJobCallCounter; if(getBOccupancy() > MAX_OCCUPANCY)
t1 += (loopCount - init_loopCount); {
t2++; if(loopCount != TloopMax)
theDoJobTotalCounter = t1; abort();
theDoJobCallCounter = t2; assert( loopCount == TloopMax );
if (t2 == 8192) { TloopMax += 512;
reportDoJobStatistics(t1 >> 13); }
} while ((getBOccupancy() > MAX_OCCUPANCY) ||
((loopCount < TloopMax) &&
(tHighPrio < LEVEL_IDLE)));
theDoJobCallCounter ++;
theDoJobTotalCounter += loopCount;
if (theDoJobCallCounter == 8192) {
reportDoJobStatistics(theDoJobTotalCounter >> 13);
theDoJobCallCounter = 0; theDoJobCallCounter = 0;
theDoJobTotalCounter = 0; theDoJobTotalCounter = 0;
}//if }//if
}//if
init_loopCount = loopCount;
sendPacked();
} while ((getBOccupancy() > MAX_OCCUPANCY) ||
((init_loopCount < TloopMax) &&
(globalData.highestAvailablePrio < LEVEL_IDLE)));
}//FastScheduler::doJob() }//FastScheduler::doJob()
void FastScheduler::sendPacked() void FastScheduler::sendPacked()
......
...@@ -1310,7 +1310,7 @@ enum enum_mysql_completiontype { ...@@ -1310,7 +1310,7 @@ enum enum_mysql_completiontype {
SAVEPOINT_NAME_ROLLBACK=2, SAVEPOINT_NAME_ROLLBACK=2,
SAVEPOINT_NAME_RELEASE=4, SAVEPOINT_NAME_RELEASE=4,
COMMIT_AND_CHAIN=6, COMMIT_AND_CHAIN=6,
ROLLBACK_AND_CHAIN=7, ROLLBACK_AND_CHAIN=7
}; };
int mysql_endtrans(THD *thd, enum enum_mysql_completiontype completion, int mysql_endtrans(THD *thd, enum enum_mysql_completiontype completion,
...@@ -2234,7 +2234,9 @@ mysql_execute_command(THD *thd) ...@@ -2234,7 +2234,9 @@ mysql_execute_command(THD *thd)
/* Locked closure of all tables */ /* Locked closure of all tables */
TABLE_LIST *locked_tables= NULL; TABLE_LIST *locked_tables= NULL;
/* Saved variable value */ /* Saved variable value */
#ifdef HAVE_INNOBASE_DB
my_bool old_innodb_table_locks= thd->variables.innodb_table_locks; my_bool old_innodb_table_locks= thd->variables.innodb_table_locks;
#endif
DBUG_ENTER("mysql_execute_command"); DBUG_ENTER("mysql_execute_command");
/* /*
...@@ -2330,7 +2332,9 @@ mysql_execute_command(THD *thd) ...@@ -2330,7 +2332,9 @@ mysql_execute_command(THD *thd)
{ {
if ((locked_tables= sp_hash_to_table_list(thd, &lex->sptabs))) if ((locked_tables= sp_hash_to_table_list(thd, &lex->sptabs)))
{ {
#ifdef HAVE_INNOBASE_DB
thd->variables.innodb_table_locks= FALSE; thd->variables.innodb_table_locks= FALSE;
#endif
sp_open_and_lock_tables(thd, locked_tables); sp_open_and_lock_tables(thd, locked_tables);
} }
} }
...@@ -4346,7 +4350,9 @@ cleanup: ...@@ -4346,7 +4350,9 @@ cleanup:
if (locked_tables) if (locked_tables)
{ {
#ifdef HAVE_INNOBASE_DB
thd->variables.innodb_table_locks= old_innodb_table_locks; thd->variables.innodb_table_locks= old_innodb_table_locks;
#endif
if (thd->locked_tables) if (thd->locked_tables)
sp_unlock_tables(thd); sp_unlock_tables(thd);
} }
......
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