📄 dbacc.hpp
字号:
Uint8 lockMode; Uint8 lockOwner; Uint8 nodeType; Uint8 operation; Uint8 opSimple; Uint8 dirtyRead; Uint8 commitDeleteCheckFlag; Uint8 isAccLockReq; Uint8 isUndoLogReq;}; /* p2c: size = 168 bytes */ typedef Ptr<Operationrec> OperationrecPtr;/* --------------------------------------------------------------------------------- *//* OVERFLOW_RECORD *//* --------------------------------------------------------------------------------- */struct OverflowRecord { Uint32 dirindex; Uint32 nextOverRec; Uint32 nextOverList; Uint32 prevOverRec; Uint32 prevOverList; Uint32 overpage; Uint32 nextfreeoverrec;}; typedef Ptr<OverflowRecord> OverflowRecordPtr;/* --------------------------------------------------------------------------------- *//* PAGE8 *//* --------------------------------------------------------------------------------- */struct Page8 { Uint32 word32[2048];}; /* p2c: size = 8192 bytes */ typedef Ptr<Page8> Page8Ptr;/* --------------------------------------------------------------------------------- *//* ROOTFRAGMENTREC *//* DURING EXPAND FRAGMENT PROCESS, EACH FRAGMEND WILL BE EXPAND INTO TWO *//* NEW FRAGMENTS.TO MAKE THIS PROCESS EASIER, DURING ADD FRAGMENT PROCESS *//* NEXT FRAGMENT IDENTIIES WILL BE CALCULATED, AND TWO FRAGMENTS WILL BE *//* ADDED IN (NDBACC). THEREBY EXPAND OF FRAGMENT CAN BE PERFORMED QUICK AND *//* EASY.THE NEW FRAGMENT ID SENDS TO TUP MANAGER FOR ALL OPERATION PROCESS. *//* --------------------------------------------------------------------------------- */struct Rootfragmentrec { Uint32 scan[MAX_PARALLEL_SCANS_PER_FRAG]; Uint32 fragmentptr[2]; Uint32 fragmentid[2]; Uint32 lcpPtr; Uint32 mytabptr; Uint32 nextroot; Uint32 roothashcheck; Uint32 noOfElements; Uint32 m_commit_count; State rootState;}; /* p2c: size = 72 bytes */ typedef Ptr<Rootfragmentrec> RootfragmentrecPtr;/* --------------------------------------------------------------------------------- *//* SCAN_REC *//* --------------------------------------------------------------------------------- */struct ScanRec { enum ScanState { WAIT_NEXT, SCAN_DISCONNECT }; enum ScanBucketState { FIRST_LAP, SECOND_LAP, SCAN_COMPLETED }; Uint32 activeLocalFrag; Uint32 rootPtr; Uint32 nextBucketIndex; Uint32 scanNextfreerec; Uint32 scanFirstActiveOp; Uint32 scanFirstLockedOp; Uint32 scanLastLockedOp; Uint32 scanFirstQueuedOp; Uint32 scanLastQueuedOp; Uint32 scanUserptr; Uint32 scanTrid1; Uint32 scanTrid2; Uint32 startNoOfBuckets; Uint32 minBucketIndexToRescan; Uint32 maxBucketIndexToRescan; Uint32 scanOpsAllocated; ScanBucketState scanBucketState; ScanState scanState; Uint16 scanLockHeld; Uint32 scanUserblockref; Uint32 scanMask; Uint8 scanLockMode; Uint8 scanKeyinfoFlag; Uint8 scanTimer; Uint8 scanContinuebCounter; Uint8 scanReadCommittedFlag;}; typedef Ptr<ScanRec> ScanRecPtr;/* --------------------------------------------------------------------------------- *//* SR_VERSION_REC *//* --------------------------------------------------------------------------------- */struct SrVersionRec { Uint32 nextFreeSr; Uint32 checkPointId; Uint32 prevAddress; Uint32 srUnused; /* p2c: Not used */}; /* p2c: size = 16 bytes */ typedef Ptr<SrVersionRec> SrVersionRecPtr;/* --------------------------------------------------------------------------------- *//* TABREC *//* --------------------------------------------------------------------------------- */struct Tabrec { Uint32 fragholder[MAX_FRAG_PER_NODE]; Uint32 fragptrholder[MAX_FRAG_PER_NODE]; Uint32 tabUserPtr; BlockReference tabUserRef;}; typedef Ptr<Tabrec> TabrecPtr;/* --------------------------------------------------------------------------------- *//* UNDOPAGE *//* --------------------------------------------------------------------------------- */struct Undopage { Uint32 undoword[8192];}; /* p2c: size = 32768 bytes */ typedef Ptr<Undopage> UndopagePtr;public: Dbacc(const class Configuration &); virtual ~Dbacc(); // pointer to TUP instance in this thread Dbtup* c_tup;private: BLOCK_DEFINES(Dbacc); // Transit signals void execDEBUG_SIG(Signal* signal); void execCONTINUEB(Signal* signal); void execACC_CHECK_SCAN(Signal* signal); void execEXPANDCHECK2(Signal* signal); void execSHRINKCHECK2(Signal* signal); void execACC_OVER_REC(Signal* signal); void execACC_SAVE_PAGES(Signal* signal); void execNEXTOPERATION(Signal* signal); void execREAD_PSUEDO_REQ(Signal* signal); // Received signals void execSTTOR(Signal* signal); void execSR_FRAGIDREQ(Signal* signal); void execLCP_FRAGIDREQ(Signal* signal); void execLCP_HOLDOPREQ(Signal* signal); void execEND_LCPREQ(Signal* signal); void execACC_LCPREQ(Signal* signal); void execSTART_RECREQ(Signal* signal); void execACC_CONTOPREQ(Signal* signal); void execACCKEYREQ(Signal* signal); void execACCSEIZEREQ(Signal* signal); void execACCFRAGREQ(Signal* signal); void execACC_SRREQ(Signal* signal); void execNEXT_SCANREQ(Signal* signal); void execACC_ABORTREQ(Signal* signal); void execACC_SCANREQ(Signal* signal); void execACCMINUPDATE(Signal* signal); void execACC_COMMITREQ(Signal* signal); void execACC_TO_REQ(Signal* signal); void execACC_LOCKREQ(Signal* signal); void execFSOPENCONF(Signal* signal); void execFSCLOSECONF(Signal* signal); void execFSWRITECONF(Signal* signal); void execFSREADCONF(Signal* signal); void execNDB_STTOR(Signal* signal); void execDROP_TAB_REQ(Signal* signal); void execFSREMOVECONF(Signal* signal); void execREAD_CONFIG_REQ(Signal* signal); void execSET_VAR_REQ(Signal* signal); void execDUMP_STATE_ORD(Signal* signal); // Statement blocks void ACCKEY_error(Uint32 fromWhere); void commitDeleteCheck(); void initRootFragPageZero(RootfragmentrecPtr, Page8Ptr); void initRootFragSr(RootfragmentrecPtr, Page8Ptr); void initFragAdd(Signal*, Uint32 rootFragIndex, Uint32 rootIndex, FragmentrecPtr); void initFragPageZero(FragmentrecPtr, Page8Ptr); void initFragSr(FragmentrecPtr, Page8Ptr); void initFragGeneral(FragmentrecPtr); void verifyFragCorrect(FragmentrecPtr regFragPtr); void sendFSREMOVEREQ(Signal* signal, Uint32 tableId); void releaseFragResources(Signal* signal, Uint32 fragIndex); void releaseRootFragRecord(Signal* signal, RootfragmentrecPtr rootPtr); void releaseRootFragResources(Signal* signal, Uint32 tableId); void releaseDirResources(Signal* signal, Uint32 fragIndex, Uint32 dirIndex, Uint32 startIndex); void releaseDirectoryResources(Signal* signal, Uint32 fragIndex, Uint32 dirIndex, Uint32 startIndex, Uint32 directoryIndex); void releaseOverflowResources(Signal* signal, FragmentrecPtr regFragPtr); void releaseDirIndexResources(Signal* signal, FragmentrecPtr regFragPtr); void releaseFragRecord(Signal* signal, FragmentrecPtr regFragPtr); Uint32 remainingUndoPages(); void updateLastUndoPageIdWritten(Signal* signal, Uint32 aNewValue); void updateUndoPositionPage(Signal* signal, Uint32 aNewValue); void srCheckPage(Signal* signal); void srCheckContainer(Signal* signal); void initScanFragmentPart(Signal* signal); Uint32 checkScanExpand(Signal* signal); Uint32 checkScanShrink(Signal* signal); void initialiseDirRec(Signal* signal); void initialiseDirRangeRec(Signal* signal); void initialiseFragRec(Signal* signal); void initialiseFsConnectionRec(Signal* signal); void initialiseFsOpRec(Signal* signal); void initialiseLcpConnectionRec(Signal* signal); void initialiseOperationRec(Signal* signal); void initialiseOverflowRec(Signal* signal); void initialisePageRec(Signal* signal); void initialiseLcpPages(Signal* signal); void initialiseRootfragRec(Signal* signal); void initialiseScanRec(Signal* signal); void initialiseSrVerRec(Signal* signal); void initialiseTableRec(Signal* signal); bool addfragtotab(Signal* signal, Uint32 rootIndex, Uint32 fragId); void initOpRec(Signal* signal); void sendAcckeyconf(Signal* signal); Uint32 placeReadInLockQueue(Signal* signal); void placeSerialQueueRead(Signal* signal); void checkOnlyReadEntry(Signal* signal); Uint32 getNoParallelTransaction(const Operationrec*); void moveLastParallelQueue(Signal* signal); void moveLastParallelQueueWrite(Signal* signal); Uint32 placeWriteInLockQueue(Signal* signal); void placeSerialQueueWrite(Signal* signal); void expandcontainer(Signal* signal); void shrinkcontainer(Signal* signal); void nextcontainerinfoExp(Signal* signal); void lcpCopyPage(Signal* signal); void lcpUpdatePage(Signal* signal); void checkUndoPages(Signal* signal); void undoWritingProcess(Signal* signal); void writeUndoDataInfo(Signal* signal); void writeUndoHeader(Signal* signal, Uint32 logicalPageId, UndoHeader::UndoHeaderType pageType); void writeUndoOpInfo(Signal* signal); void checksumControl(Signal* signal, Uint32 checkPage); void startActiveUndo(Signal* signal); void releaseAndCommitActiveOps(Signal* signal); void releaseAndCommitQueuedOps(Signal* signal); void releaseAndAbortLockedOps(Signal* signal); void containerinfo(Signal* signal); bool getScanElement(Signal* signal); void initScanOpRec(Signal* signal); void nextcontainerinfo(Signal* signal); void putActiveScanOp(Signal* signal); void putOpScanLockQue(); void putReadyScanQueue(Signal* signal, Uint32 scanRecIndex); void releaseScanBucket(Signal* signal); void releaseScanContainer(Signal* signal); void releaseScanRec(Signal* signal); bool searchScanContainer(Signal* signal); void sendNextScanConf(Signal* signal); void setlock(Signal* signal); void takeOutActiveScanOp(Signal* signal); void takeOutScanLockQueue(Uint32 scanRecIndex); void takeOutReadyScanQueue(Signal* signal); void insertElement(Signal* signal); void insertContainer(Signal* signal); void addnewcontainer(Signal* signal); void getfreelist(Signal* signal); void increaselistcont(Signal* signal); void seizeLeftlist(Signal* signal); void seizeRightlist(Signal* signal); Uint32 readTablePk(Uint32 localkey1); void getElement(Signal* signal); void getdirindex(Signal* signal); void commitdelete(Signal* signal, bool systemRestart); void deleteElement(Signal* signal); void getLastAndRemove(Signal* signal); void releaseLeftlist(Signal* signal); void releaseRightlist(Signal* signal); void checkoverfreelist(Signal* signal); void abortOperation(Signal* signal); void accAbortReqLab(Signal* signal, bool sendConf); void commitOperation(Signal* signal); void copyOpInfo(Signal* signal); Uint32 executeNextOperation(Signal* signal); void releaselock(Signal* signal); void takeOutFragWaitQue(Signal* signal); void check_lock_upgrade(Signal* signal, OperationrecPtr lock_owner, OperationrecPtr release_op); void allocOverflowPage(Signal* signal); bool getrootfragmentrec(Signal* signal, RootfragmentrecPtr&, Uint32 fragId); void insertLockOwnersList(Signal* signal, const OperationrecPtr&); void takeOutLockOwnersList(Signal* signal, const OperationrecPtr&); void initFsOpRec(Signal* signal); void initLcpConnRec(Signal* signal); void initOverpage(Signal* signal); void initPage(Signal* signal); void initRootfragrec(Signal* signal); void putOpInFragWaitQue(Signal* signal); void putOverflowRecInFrag(Signal* signal); void putRecInFreeOverdir(Signal* signal); void releaseDirectory(Signal* signal); void releaseDirrange(Signal* signal); void releaseFsConnRec(Signal* signal); void releaseFsOpRec(Signal* signal); void releaseLcpConnectRec(Signal* signal); void releaseOpRec(Signal* signal); void releaseOverflowRec(Signal* signal); void releaseOverpage(Signal* signal); void releasePage(Signal* signal); void releaseLcpPage(Signal* signal); void releaseSrRec(Signal* signal); void releaseLogicalPage(Fragmentrec * fragP, Uint32 logicalPageId); void seizeDirectory(Signal* signal); void seizeDirrange(Signal* signal); void seizeFragrec(Signal* signal); void seizeFsConnectRec(Signal* signal); void seizeFsOpRec(Signal* signal); void seizeLcpConnectRec(Signal* signal); void seizeOpRec(Signal* signal); void seizeOverRec(Signal* signal); void seizePage(Signal* signal); void seizeLcpPage(Page8Ptr&); void seizeRootfragrec(Signal* signal); void seizeScanRec(Signal* signal); void seizeSrVerRec(Signal* signal); void sendSystemerror(Signal* signal, int line); void takeRecOutOfFreeOverdir(Signal* signal); void takeRecOutOfFreeOverpage(Signal* signal); void sendScanHbRep(Signal* signal, Uint32); void addFragRefuse(Signal* signal, Uint32 errorCode); void ndbsttorryLab(Signal* signal); void srCloseDataFileLab(Signal* signal); void acckeyref1Lab(Signal* signal, Uint32 result_code); void insertelementLab(Signal* signal); void startUndoLab(Signal* signal); void checkNextFragmentLab(Signal* signal); void endofexpLab(Signal* signal); void endofshrinkbucketLab(Signal* signal); void srStartUndoLab(Signal* signal); void senddatapagesLab(Signal* signal); void undoNext2Lab(Signal* signal); void sttorrysignalLab(Signal* signal); void sendholdconfsignalLab(Signal* signal); void accIsLockedLab(Signal* signal); void insertExistElemLab(Signal* signal); void refaccConnectLab(Signal* signal);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -