summaryrefslogtreecommitdiff
path: root/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp
diff options
context:
space:
mode:
authorunknown <joreland@mysql.com>2004-09-21 14:58:23 +0200
committerunknown <joreland@mysql.com>2004-09-21 14:58:23 +0200
commitb61bfd8c9786da2c33530699245eacc2b96d768b (patch)
treead4e24fde24d62245442034d6c47e32fd7665fee /ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp
parent300346fad3379f3b95d5b30c7f23bc5b9b7c2900 (diff)
downloadmariadb-git-b61bfd8c9786da2c33530699245eacc2b96d768b.tar.gz
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
Diffstat (limited to 'ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp')
-rw-r--r--ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp15
1 files changed, 6 insertions, 9 deletions
diff --git a/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp b/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp
index fa3667b221e..cbd56c3281f 100644
--- a/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp
+++ b/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp
@@ -224,7 +224,8 @@ void Dbtup::removeActiveOpList(Operationrec* const regOperPtr)
/* ---------------------------------------------------------------- */
/* INITIALIZATION OF ONE CONNECTION RECORD TO PREPARE FOR NEXT OP. */
/* ---------------------------------------------------------------- */
-void Dbtup::initOpConnection(Operationrec* const regOperPtr)
+void Dbtup::initOpConnection(Operationrec* regOperPtr,
+ Fragrecord * fragPtrP)
{
Uint32 RinFragList = regOperPtr->inFragList;
regOperPtr->transstate = IDLE;
@@ -244,22 +245,18 @@ void Dbtup::initOpConnection(Operationrec* const regOperPtr)
regOperPtr->inFragList = ZFALSE;
if (tropPrevLinkPtr.i == RNIL) {
ljam();
- FragrecordPtr regFragPtr;
- regFragPtr.i = regOperPtr->fragmentPtr;
- ptrCheckGuard(regFragPtr, cnoOfFragrec, fragrecord);
- regFragPtr.p->firstusedOprec = tropNextLinkPtr.i;
+ fragPtrP->firstusedOprec = tropNextLinkPtr.i;
} else {
ljam();
ptrCheckGuard(tropPrevLinkPtr, cnoOfOprec, operationrec);
tropPrevLinkPtr.p->nextOprecInList = tropNextLinkPtr.i;
}//if
if (tropNextLinkPtr.i == RNIL) {
- ;
+ fragPtrP->lastusedOprec = tropPrevLinkPtr.i;
} else {
- ljam();
ptrCheckGuard(tropNextLinkPtr, cnoOfOprec, operationrec);
tropNextLinkPtr.p->prevOprecInList = tropPrevLinkPtr.i;
- }//if
+ }
regOperPtr->prevOprecInList = RNIL;
regOperPtr->nextOprecInList = RNIL;
}//if
@@ -336,7 +333,7 @@ void Dbtup::execTUP_COMMITREQ(Signal* signal)
commitUpdate(signal, regOperPtr.p, regFragPtr.p, regTabPtr.p);
removeActiveOpList(regOperPtr.p);
}//if
- initOpConnection(regOperPtr.p);
+ initOpConnection(regOperPtr.p, regFragPtr.p);
}//execTUP_COMMITREQ()
void