Loading ndb/include/kernel/signaldata/TupFrag.hpp +4 −1 Original line number Diff line number Diff line Loading @@ -69,7 +69,7 @@ class TuxFragReq { friend class Dblqh; friend class Dbtux; public: STATIC_CONST( SignalLength = 9 ); STATIC_CONST( SignalLength = 14 ); private: Uint32 userPtr; Uint32 userRef; Loading @@ -80,6 +80,9 @@ private: Uint32 fragOff; Uint32 tableType; Uint32 primaryTableId; Uint32 tupIndexFragPtrI; Uint32 tupTableFragPtrI[2]; Uint32 accTableFragPtrI[2]; }; class TuxFragConf { Loading ndb/src/kernel/blocks/dbacc/DbaccMain.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -2432,6 +2432,7 @@ void Dbacc::execACC_LOCKREQ(Signal* signal) } fragrecptr.i = req->fragPtrI; ptrCheckGuard(fragrecptr, cfragmentsize, fragmentrec); ndbrequire(req->fragId == fragrecptr.p->myfid); // caller must be explicit here ndbrequire(req->accOpPtr == RNIL); // seize operation to hold the lock Loading ndb/src/kernel/blocks/dblqh/DblqhMain.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -1225,6 +1225,18 @@ Dblqh::sendAddFragReq(Signal* signal) tuxreq->fragOff = addfragptr.p->lh3DistrBits; tuxreq->tableType = addfragptr.p->tableType; tuxreq->primaryTableId = addfragptr.p->primaryTableId; // pointer to index fragment in TUP tuxreq->tupIndexFragPtrI = addfragptr.p->addfragStatus == AddFragRecord::WAIT_TWO_TUX ? fragptr.p->tupFragptr[0] : fragptr.p->tupFragptr[1]; // pointers to table fragments in TUP and ACC FragrecordPtr tFragPtr; tFragPtr.i = fragptr.p->tableFragptr; ptrCheckGuard(tFragPtr, cfragrecFileSize, fragrecord); tuxreq->tupTableFragPtrI[0] = tFragPtr.p->tupFragptr[0]; tuxreq->tupTableFragPtrI[1] = tFragPtr.p->tupFragptr[1]; tuxreq->accTableFragPtrI[0] = tFragPtr.p->accFragptr[0]; tuxreq->accTableFragPtrI[1] = tFragPtr.p->accFragptr[1]; sendSignal(fragptr.p->tuxBlockref, GSN_TUXFRAGREQ, signal, TuxFragReq::SignalLength, JBB); return; Loading ndb/src/kernel/blocks/dbtux/Dbtux.hpp +9 −1 Original line number Diff line number Diff line Loading @@ -446,6 +446,9 @@ private: Uint32 m_nodeList; // node cache of current operation Uint32 m_nodeFree; // one node pre-allocated for insert DLList<ScanOp> m_scanList; // current scans on this fragment Uint32 m_tupIndexFragPtrI; Uint32 m_tupTableFragPtrI[2]; Uint32 m_accTableFragPtrI[2]; union { Uint32 nextPool; }; Loading Loading @@ -981,8 +984,13 @@ Dbtux::Frag::Frag(ArrayPool<ScanOp>& scanOpPool) : m_tree(), m_nodeList(RNIL), m_nodeFree(RNIL), m_scanList(scanOpPool) m_scanList(scanOpPool), m_tupIndexFragPtrI(RNIL) { m_tupTableFragPtrI[0] = RNIL; m_tupTableFragPtrI[1] = RNIL; m_accTableFragPtrI[0] = RNIL; m_accTableFragPtrI[1] = RNIL; } inline Loading ndb/src/kernel/blocks/dbtux/DbtuxMaint.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -199,7 +199,7 @@ Dbtux::tupReadAttrs(Signal* signal, const Frag& frag, ReadPar& readPar) req->requestInfo = 0; req->tableId = frag.m_tableId; req->fragId = frag.m_fragId | (ent.m_fragBit << frag.m_fragOff); req->fragPtrI = RNIL; req->fragPtrI = frag.m_tupTableFragPtrI[ent.m_fragBit]; req->tupAddr = ent.m_tupAddr; req->tupVersion = ent.m_tupVersion; req->pageId = RNIL; Loading Loading @@ -246,7 +246,7 @@ Dbtux::tupReadKeys(Signal* signal, const Frag& frag, ReadPar& readPar) req->requestInfo = TupReadAttrs::ReadKeys; req->tableId = frag.m_tableId; req->fragId = frag.m_fragId | (ent.m_fragBit << frag.m_fragOff); req->fragPtrI = RNIL; req->fragPtrI = frag.m_tupTableFragPtrI[ent.m_fragBit]; req->tupAddr = ent.m_tupAddr; req->tupVersion = RNIL; // not used req->pageId = RNIL; Loading Loading @@ -284,7 +284,7 @@ Dbtux::tupStoreTh(Signal* signal, const Frag& frag, NodeHandlePtr nodePtr, Store req->errorCode = RNIL; req->tableId = frag.m_indexId; req->fragId = frag.m_fragId; req->fragPtrI = RNIL; req->fragPtrI = frag.m_tupIndexFragPtrI; req->tupAddr = nodePtr.p->m_addr; req->tupVersion = 0; req->pageId = nodePtr.p->m_loc.m_pageId; Loading Loading
ndb/include/kernel/signaldata/TupFrag.hpp +4 −1 Original line number Diff line number Diff line Loading @@ -69,7 +69,7 @@ class TuxFragReq { friend class Dblqh; friend class Dbtux; public: STATIC_CONST( SignalLength = 9 ); STATIC_CONST( SignalLength = 14 ); private: Uint32 userPtr; Uint32 userRef; Loading @@ -80,6 +80,9 @@ private: Uint32 fragOff; Uint32 tableType; Uint32 primaryTableId; Uint32 tupIndexFragPtrI; Uint32 tupTableFragPtrI[2]; Uint32 accTableFragPtrI[2]; }; class TuxFragConf { Loading
ndb/src/kernel/blocks/dbacc/DbaccMain.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -2432,6 +2432,7 @@ void Dbacc::execACC_LOCKREQ(Signal* signal) } fragrecptr.i = req->fragPtrI; ptrCheckGuard(fragrecptr, cfragmentsize, fragmentrec); ndbrequire(req->fragId == fragrecptr.p->myfid); // caller must be explicit here ndbrequire(req->accOpPtr == RNIL); // seize operation to hold the lock Loading
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -1225,6 +1225,18 @@ Dblqh::sendAddFragReq(Signal* signal) tuxreq->fragOff = addfragptr.p->lh3DistrBits; tuxreq->tableType = addfragptr.p->tableType; tuxreq->primaryTableId = addfragptr.p->primaryTableId; // pointer to index fragment in TUP tuxreq->tupIndexFragPtrI = addfragptr.p->addfragStatus == AddFragRecord::WAIT_TWO_TUX ? fragptr.p->tupFragptr[0] : fragptr.p->tupFragptr[1]; // pointers to table fragments in TUP and ACC FragrecordPtr tFragPtr; tFragPtr.i = fragptr.p->tableFragptr; ptrCheckGuard(tFragPtr, cfragrecFileSize, fragrecord); tuxreq->tupTableFragPtrI[0] = tFragPtr.p->tupFragptr[0]; tuxreq->tupTableFragPtrI[1] = tFragPtr.p->tupFragptr[1]; tuxreq->accTableFragPtrI[0] = tFragPtr.p->accFragptr[0]; tuxreq->accTableFragPtrI[1] = tFragPtr.p->accFragptr[1]; sendSignal(fragptr.p->tuxBlockref, GSN_TUXFRAGREQ, signal, TuxFragReq::SignalLength, JBB); return; Loading
ndb/src/kernel/blocks/dbtux/Dbtux.hpp +9 −1 Original line number Diff line number Diff line Loading @@ -446,6 +446,9 @@ private: Uint32 m_nodeList; // node cache of current operation Uint32 m_nodeFree; // one node pre-allocated for insert DLList<ScanOp> m_scanList; // current scans on this fragment Uint32 m_tupIndexFragPtrI; Uint32 m_tupTableFragPtrI[2]; Uint32 m_accTableFragPtrI[2]; union { Uint32 nextPool; }; Loading Loading @@ -981,8 +984,13 @@ Dbtux::Frag::Frag(ArrayPool<ScanOp>& scanOpPool) : m_tree(), m_nodeList(RNIL), m_nodeFree(RNIL), m_scanList(scanOpPool) m_scanList(scanOpPool), m_tupIndexFragPtrI(RNIL) { m_tupTableFragPtrI[0] = RNIL; m_tupTableFragPtrI[1] = RNIL; m_accTableFragPtrI[0] = RNIL; m_accTableFragPtrI[1] = RNIL; } inline Loading
ndb/src/kernel/blocks/dbtux/DbtuxMaint.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -199,7 +199,7 @@ Dbtux::tupReadAttrs(Signal* signal, const Frag& frag, ReadPar& readPar) req->requestInfo = 0; req->tableId = frag.m_tableId; req->fragId = frag.m_fragId | (ent.m_fragBit << frag.m_fragOff); req->fragPtrI = RNIL; req->fragPtrI = frag.m_tupTableFragPtrI[ent.m_fragBit]; req->tupAddr = ent.m_tupAddr; req->tupVersion = ent.m_tupVersion; req->pageId = RNIL; Loading Loading @@ -246,7 +246,7 @@ Dbtux::tupReadKeys(Signal* signal, const Frag& frag, ReadPar& readPar) req->requestInfo = TupReadAttrs::ReadKeys; req->tableId = frag.m_tableId; req->fragId = frag.m_fragId | (ent.m_fragBit << frag.m_fragOff); req->fragPtrI = RNIL; req->fragPtrI = frag.m_tupTableFragPtrI[ent.m_fragBit]; req->tupAddr = ent.m_tupAddr; req->tupVersion = RNIL; // not used req->pageId = RNIL; Loading Loading @@ -284,7 +284,7 @@ Dbtux::tupStoreTh(Signal* signal, const Frag& frag, NodeHandlePtr nodePtr, Store req->errorCode = RNIL; req->tableId = frag.m_indexId; req->fragId = frag.m_fragId; req->fragPtrI = RNIL; req->fragPtrI = frag.m_tupIndexFragPtrI; req->tupAddr = nodePtr.p->m_addr; req->tupVersion = 0; req->pageId = nodePtr.p->m_loc.m_pageId; Loading