mirror of
https://github.com/MariaDB/server.git
synced 2026-05-02 05:05:33 +02:00
Make operation list on fragment fifo so that uncommitted operations
are undo-logged in correct order
Add bunch of testcases to autotest
ndb/src/kernel/blocks/dbtup/Dbtup.hpp:
Send fragrecord ptr to initOpConnection so that is does not
have to look it up every time (if needed)
Make operation list on fragment fifo so that uncommitted operations
are undo-logged in correct order
ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp:
Send fragptr to initOpConnection
ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp:
dllist -> dlfifolist
ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp:
dllist -> dlfifolist
ndb/src/kernel/blocks/dbtup/DbtupGen.cpp:
Make operation list on fragment fifo so that uncommitted operations
are undo-logged in correct order
ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp:
Fix uninitialized variable c_start.m_startTime
which made startPartial and startPartitioned fail
ndb/test/ndbapi/testSystemRestart.cpp:
Added testSystemRestart -n SR9 which
demonstrates that two prepared operation on same
records _used to_ be undo-logged in wrong order makeing
system restart fail
ndb/test/run-test/daily-devel-tests.txt:
Add
* testSystemRestart -n SR6
Restart while some nodes have fs and other not
* testSystemRestart -n SR7
Restart in partition win
* testSystemRestart -n SR8
Restart in partition win, others starting during restart
* testSystemRestart -n SR9
Multiple ops on same record prepared before
This commit is contained in:
parent
300346fad3
commit
b61bfd8c97
8 changed files with 103 additions and 30 deletions
|
|
@ -319,24 +319,20 @@ void Dbtup::linkOpIntoFragList(OperationrecPtr regOperPtr,
|
|||
Fragrecord* const regFragPtr)
|
||||
{
|
||||
OperationrecPtr sopTmpOperPtr;
|
||||
/* ----------------------------------------------------------------- */
|
||||
/* LINK THE OPERATION INTO A DOUBLY LINKED LIST ON THE FRAGMENT*/
|
||||
/* PUT IT FIRST IN THIS LIST SINCE IT DOESN'T MATTER WHERE IT */
|
||||
/* IS PUT. */
|
||||
/* ----------------------------------------------------------------- */
|
||||
Uint32 tail = regFragPtr->lastusedOprec;
|
||||
ndbrequire(regOperPtr.p->inFragList == ZFALSE);
|
||||
regOperPtr.p->inFragList = ZTRUE;
|
||||
regOperPtr.p->prevOprecInList = RNIL;
|
||||
sopTmpOperPtr.i = regFragPtr->firstusedOprec;
|
||||
regFragPtr->firstusedOprec = regOperPtr.i;
|
||||
regOperPtr.p->nextOprecInList = sopTmpOperPtr.i;
|
||||
if (sopTmpOperPtr.i == RNIL) {
|
||||
return;
|
||||
regOperPtr.p->prevOprecInList = tail;
|
||||
regOperPtr.p->nextOprecInList = RNIL;
|
||||
sopTmpOperPtr.i = tail;
|
||||
if (tail == RNIL) {
|
||||
regFragPtr->firstusedOprec = regOperPtr.i;
|
||||
} else {
|
||||
jam();
|
||||
ptrCheckGuard(sopTmpOperPtr, cnoOfOprec, operationrec);
|
||||
sopTmpOperPtr.p->prevOprecInList = regOperPtr.i;
|
||||
sopTmpOperPtr.p->nextOprecInList = regOperPtr.i;
|
||||
}//if
|
||||
regFragPtr->lastusedOprec = regOperPtr.i;
|
||||
}//Dbtup::linkOpIntoFragList()
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue