⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbdih.hpp

📁 mysql-5.0.22.tar.gz源码包
💻 HPP
📖 第 1 页 / 共 4 页
字号:
    Uint8 lcpStatus[MAX_LCP_STORED];    /* -------------------------------------------------------------------- */    /*       THE NEXT LOCAL CHECKPOINT TO EXECUTE IN THIS FRAGMENT REPLICA. */    /* -------------------------------------------------------------------- */    Uint8 nextLcp;    /* -------------------------------------------------------------------- */    /*       THE NUMBER OF CRASHED REPLICAS IN THIS REPLICAS SO FAR.        */    /* -------------------------------------------------------------------- */    Uint8 noCrashedReplicas;    /**     * Is a LCP currently ongoing on fragment     */    Uint8 lcpOngoingFlag;  };  typedef Ptr<ReplicaRecord> ReplicaRecordPtr;  /*************************************************************************   * TAB_DESCRIPTOR IS A DESCRIPTOR OF THE LOCATION OF THE FRAGMENTS BELONGING   * TO THE TABLE.THE INFORMATION ABOUT FRAGMENTS OF A TABLE ARE STORED IN    * CHUNKS OF FRAGMENTSTORE RECORDS.   * THIS RECORD ALSO HAS THE NECESSARY INFORMATION TO LOCATE A FRAGMENT AND    * TO LOCATE A FRAGMENT AND TO TRANSLATE A KEY OF A TUPLE TO THE FRAGMENT IT   * BELONGS   */  struct TabRecord {    /**     * State for copying table description into pages     */    enum CopyStatus {      CS_IDLE,      CS_SR_PHASE1_READ_PAGES,      CS_SR_PHASE2_READ_TABLE,      CS_SR_PHASE3_COPY_TABLE,      CS_REMOVE_NODE,      CS_LCP_READ_TABLE,      CS_COPY_TAB_REQ,      CS_COPY_NODE_STATE,      CS_ADD_TABLE_MASTER,      CS_ADD_TABLE_SLAVE,      CS_INVALIDATE_NODE_LCP    };    /**     * State for copying pages to disk     */    enum UpdateState {      US_IDLE,      US_LOCAL_CHECKPOINT,      US_REMOVE_NODE,      US_COPY_TAB_REQ,      US_ADD_TABLE_MASTER,      US_ADD_TABLE_SLAVE,      US_INVALIDATE_NODE_LCP    };    enum TabLcpStatus {      TLS_ACTIVE = 1,      TLS_WRITING_TO_FILE = 2,      TLS_COMPLETED = 3    };    enum TabStatus {      TS_IDLE = 0,      TS_ACTIVE = 1,      TS_CREATING = 2,      TS_DROPPING = 3    };    enum Method {      HASH = 0,      NOTDEFINED = 1    };    CopyStatus tabCopyStatus;    UpdateState tabUpdateState;    TabLcpStatus tabLcpStatus;    TabStatus tabStatus;    Method method;    Uint32 pageRef[8];//-----------------------------------------------------------------------------// Each entry in this array contains a reference to 16 fragment records in a// row. Thus finding the correct record is very quick provided the fragment id.//-----------------------------------------------------------------------------    Uint32 startFid[MAX_NDB_NODES];    Uint32 tabFile[2];    Uint32 connectrec;                                        Uint32 hashpointer;    Uint32 mask;    Uint32 noOfWords;    Uint32 schemaVersion;    Uint32 tabRemoveNode;    Uint32 totalfragments;    Uint32 noOfFragChunks;    Uint32 tabErrorCode;    struct {      Uint32 tabUserRef;      Uint32 tabUserPtr;    } m_dropTab;    struct DropTable {      Uint32 senderRef;      Uint32 senderData;      SignalCounter waitDropTabCount;    } m_prepDropTab;    Uint8 kvalue;    Uint8 noOfBackups;    Uint8 noPages;    Uint8 storedTable;              /* 0 IF THE TABLE IS A TEMPORARY TABLE */    Uint16 tableType;    Uint16 primaryTableId;  };  typedef Ptr<TabRecord> TabRecordPtr;  /***************************************************************************/  /* THIS RECORD IS USED TO KEEP TRACK OF TAKE OVER AND STARTING A NODE.    */  /* WE KEEP IT IN A RECORD TO ENABLE IT TO BE PARALLELISED IN THE FUTURE.  */  /**************************************************************************/  struct TakeOverRecord {    enum ToMasterStatus {      IDLE = 0,      TO_WAIT_START_TAKE_OVER = 1,      TO_START_COPY = 2,      TO_START_COPY_ONGOING = 3,      TO_WAIT_START = 4,      STARTING = 5,      SELECTING_NEXT = 6,      TO_WAIT_PREPARE_CREATE = 9,      PREPARE_CREATE = 10,      COPY_FRAG = 11,      TO_WAIT_UPDATE_TO = 12,      TO_UPDATE_TO = 13,      COPY_ACTIVE = 14,      TO_WAIT_COMMIT_CREATE = 15,      LOCK_MUTEX = 23,      COMMIT_CREATE = 16,      TO_COPY_COMPLETED = 17,      WAIT_LCP = 18,      TO_END_COPY = 19,      TO_END_COPY_ONGOING = 20,      TO_WAIT_ENDING = 21,      ENDING = 22    };    enum ToSlaveStatus {      TO_SLAVE_IDLE = 0,      TO_SLAVE_STARTED = 1,      TO_SLAVE_CREATE_PREPARE = 2,      TO_SLAVE_COPY_FRAG_COMPLETED = 3,      TO_SLAVE_CREATE_COMMIT = 4,      TO_SLAVE_COPY_COMPLETED = 5    };    Uint32 startGci;    Uint32 toCopyNode;    Uint32 toCurrentFragid;    Uint32 toCurrentReplica;    Uint32 toCurrentTabref;    Uint32 toFailedNode;    Uint32 toStartingNode;    Uint32 nextTakeOver;    Uint32 prevTakeOver;    bool toNodeRestart;    ToMasterStatus toMasterStatus;    ToSlaveStatus toSlaveStatus;    MutexHandle2<DIH_SWITCH_PRIMARY_MUTEX> m_switchPrimaryMutexHandle;  };  typedef Ptr<TakeOverRecord> TakeOverRecordPtr;  public:  Dbdih(const class Configuration &);  virtual ~Dbdih();  struct RWFragment {    Uint32 pageIndex;    Uint32 wordIndex;    Uint32 fragId;    TabRecordPtr rwfTabPtr;    PageRecordPtr rwfPageptr;  };  struct CopyTableNode {    Uint32 pageIndex;    Uint32 wordIndex;    Uint32 noOfWords;    TabRecordPtr ctnTabPtr;    PageRecordPtr ctnPageptr;  };  private:  BLOCK_DEFINES(Dbdih);    void execDUMP_STATE_ORD(Signal *);  void execNDB_TAMPER(Signal *);  void execDEBUG_SIG(Signal *);  void execEMPTY_LCP_CONF(Signal *);  void execMASTER_GCPREF(Signal *);  void execMASTER_GCPREQ(Signal *);  void execMASTER_GCPCONF(Signal *);  void execMASTER_LCPREF(Signal *);  void execMASTER_LCPREQ(Signal *);  void execMASTER_LCPCONF(Signal *);  void execNF_COMPLETEREP(Signal *);  void execSTART_PERMREQ(Signal *);  void execSTART_PERMCONF(Signal *);  void execSTART_PERMREF(Signal *);  void execINCL_NODEREQ(Signal *);  void execINCL_NODECONF(Signal *);  void execEND_TOREQ(Signal *);  void execEND_TOCONF(Signal *);  void execSTART_TOREQ(Signal *);  void execSTART_TOCONF(Signal *);  void execSTART_MEREQ(Signal *);  void execSTART_MECONF(Signal *);  void execSTART_MEREF(Signal *);  void execSTART_COPYREQ(Signal *);  void execSTART_COPYCONF(Signal *);  void execSTART_COPYREF(Signal *);  void execCREATE_FRAGREQ(Signal *);  void execCREATE_FRAGCONF(Signal *);  void execDIVERIFYREQ(Signal *);  void execGCP_SAVECONF(Signal *);  void execGCP_PREPARECONF(Signal *);  void execGCP_PREPARE(Signal *);  void execGCP_NODEFINISH(Signal *);  void execGCP_COMMIT(Signal *);  void execDIHNDBTAMPER(Signal *);  void execCONTINUEB(Signal *);  void execCOPY_GCIREQ(Signal *);  void execCOPY_GCICONF(Signal *);  void execCOPY_TABREQ(Signal *);  void execCOPY_TABCONF(Signal *);  void execTCGETOPSIZECONF(Signal *);  void execTC_CLOPSIZECONF(Signal *);    void execLCP_FRAG_REP(Signal *);  void execLCP_COMPLETE_REP(Signal *);  void execSTART_LCP_REQ(Signal *);  void execSTART_LCP_CONF(Signal *);  MutexHandle2<DIH_START_LCP_MUTEX> c_startLcpMutexHandle;  void startLcpMutex_locked(Signal* signal, Uint32, Uint32);  void startLcpMutex_unlocked(Signal* signal, Uint32, Uint32);  MutexHandle2<DIH_SWITCH_PRIMARY_MUTEX> c_switchPrimaryMutexHandle;  void switchPrimaryMutex_locked(Signal* signal, Uint32, Uint32);  void switchPrimaryMutex_unlocked(Signal* signal, Uint32, Uint32);  void switch_primary_stop_node(Signal* signal, Uint32, Uint32);  void execBLOCK_COMMIT_ORD(Signal *);  void execUNBLOCK_COMMIT_ORD(Signal *);  void execDIH_SWITCH_REPLICA_REQ(Signal *);  void execDIH_SWITCH_REPLICA_REF(Signal *);  void execDIH_SWITCH_REPLICA_CONF(Signal *);    void execSTOP_PERM_REQ(Signal *);  void execSTOP_PERM_REF(Signal *);  void execSTOP_PERM_CONF(Signal *);  void execSTOP_ME_REQ(Signal *);  void execSTOP_ME_REF(Signal *);  void execSTOP_ME_CONF(Signal *);  void execREAD_CONFIG_REQ(Signal *);  void execUNBLO_DICTCONF(Signal *);  void execCOPY_ACTIVECONF(Signal *);  void execTAB_COMMITREQ(Signal *);  void execNODE_FAILREP(Signal *);  void execCOPY_FRAGCONF(Signal *);  void execCOPY_FRAGREF(Signal *);  void execDIADDTABREQ(Signal *);  void execDIGETNODESREQ(Signal *);  void execDIRELEASEREQ(Signal *);  void execDISEIZEREQ(Signal *);  void execSTTOR(Signal *);  void execDI_FCOUNTREQ(Signal *);  void execDIGETPRIMREQ(Signal *);  void execGCP_SAVEREF(Signal *);  void execGCP_TCFINISHED(Signal *);  void execREAD_NODESCONF(Signal *);  void execNDB_STTOR(Signal *);  void execDICTSTARTCONF(Signal *);  void execNDB_STARTREQ(Signal *);  void execGETGCIREQ(Signal *);  void execDIH_RESTARTREQ(Signal *);  void execSTART_RECCONF(Signal *);  void execSTART_FRAGCONF(Signal *);  void execADD_FRAGCONF(Signal *);  void execADD_FRAGREF(Signal *);  void execFSOPENCONF(Signal *);  void execFSOPENREF(Signal *);  void execFSCLOSECONF(Signal *);  void execFSCLOSEREF(Signal *);  void execFSREADCONF(Signal *);  void execFSREADREF(Signal *);  void execFSWRITECONF(Signal *);  void execFSWRITEREF(Signal *);  void execSET_VAR_REQ(Signal *);  void execCHECKNODEGROUPSREQ(Signal *);  void execSTART_INFOREQ(Signal*);  void execSTART_INFOREF(Signal*);  void execSTART_INFOCONF(Signal*);  void execWAIT_GCP_REQ(Signal* signal);  void execWAIT_GCP_REF(Signal* signal);  void execWAIT_GCP_CONF(Signal* signal);  void execUPDATE_TOREQ(Signal* signal);  void execUPDATE_TOCONF(Signal* signal);  void execPREP_DROP_TAB_REQ(Signal* signal);  void execWAIT_DROP_TAB_REF(Signal* signal);  void execWAIT_DROP_TAB_CONF(Signal* signal);  void execDROP_TAB_REQ(Signal* signal);  void execALTER_TAB_REQ(Signal* signal);  void execCREATE_FRAGMENTATION_REQ(Signal*);    void waitDropTabWritingToFile(Signal *, TabRecordPtr tabPtr);  void checkPrepDropTabComplete(Signal *, TabRecordPtr tabPtr);  void checkWaitDropTabFailedLqh(Signal *, Uint32 nodeId, Uint32 tableId);  // Statement blocks//------------------------------------// Methods that send signals//------------------------------------  void nullRoutine(Signal *, Uint32 nodeId);  void sendCOPY_GCIREQ(Signal *, Uint32 nodeId);  void sendDIH_SWITCH_REPLICA_REQ(Signal *, Uint32 nodeId);  void sendEMPTY_LCP_REQ(Signal *, Uint32 nodeId);  void sendEND_TOREQ(Signal *, Uint32 nodeId);  void sendGCP_COMMIT(Signal *, Uint32 nodeId);  void sendGCP_PREPARE(Signal *, Uint32 nodeId);  void sendGCP_SAVEREQ(Signal *, Uint32 nodeId);  void sendINCL_NODEREQ(Signal *, Uint32 nodeId);  void sendMASTER_GCPREQ(Signal *, Uint32 nodeId);  void sendMASTER_LCPREQ(Signal *, Uint32 nodeId);  void sendMASTER_LCPCONF(Signal * signal);  void sendSTART_RECREQ(Signal *, Uint32 nodeId);  void sendSTART_INFOREQ(Signal *, Uint32 nodeId);  void sendSTART_TOREQ(Signal *, Uint32 nodeId);  void sendSTOP_ME_REQ(Signal *, Uint32 nodeId);  void sendTC_CLOPSIZEREQ(Signal *, Uint32 nodeId);  void sendTCGETOPSIZEREQ(Signal *, Uint32 nodeId);  void sendUPDATE_TOREQ(Signal *, Uint32 nodeId);  void sendSTART_LCP_REQ(Signal *, Uint32 nodeId);  void sendLCP_FRAG_ORD(Signal*, NodeRecord::FragmentCheckpointInfo info);  void sendLastLCP_FRAG_ORD(Signal *);    void sendCopyTable(Signal *, CopyTableNode* ctn,                     BlockReference ref, Uint32 reqinfo);  void sendCreateFragReq(Signal *,                         Uint32 startGci,                         Uint32 storedType,                         Uint32 takeOverPtr);  void sendDihfragreq(Signal *,                      TabRecordPtr regTabPtr,                      Uint32 fragId);  void sendStartFragreq(Signal *,                        TabRecordPtr regTabPtr,                        Uint32 fragId);  void sendHOT_SPAREREP(Signal *);  void sendAddFragreq(Signal *,                      TabRecordPtr regTabPtr,                      Uint32 fragId,                      Uint32 lcpNo,                      Uint32 param);  void sendAddFragreq(Signal*, ConnectRecordPtr, TabRecordPtr, Uint32 fragId);  void addTable_closeConf(Signal* signal, Uint32 tabPtrI);  void resetReplicaSr(TabRecordPtr tabPtr);  void resetReplicaLcp(ReplicaRecord * replicaP, Uint32 stopGci);//------------------------------------// Methods for LCP functionality//------------------------------------  void checkKeepGci(TabRecordPtr, Uint32, Fragmentstore*, Uint32);  void checkLcpStart(Signal *, Uint32 lineNo);  void checkStartMoreLcp(Signal *, Uint32 nodeId);  bool reportLcpCompletion(const class LcpFragRep *);  void sendLCP_COMPLETE_REP(Signal *);//------------------------------------// Methods for Delete Table Files//------------------------------------  void startDeleteFile(Signal* signal, TabRecordPtr tabPtr);  void openTableFileForDelete(Signal* signal, Uint32 fileIndex);  void tableOpenLab(Signal* signal, FileRecordPtr regFilePtr);  void tableDeleteLab(Signal* signal, FileRecordPtr regFilePtr);//------------------------------------// File Record specific methods//------------------------------------  void closeFile(Signal *, FileRecordPtr regFilePtr);  void closeFileDelete(Signal *, FileRecordPtr regFilePtr);  void createFileRw(Signal *, FileRecordPtr regFilePtr);  void openFileRw(Signal *, FileRecordPtr regFilePtr);  void openFileRo(Signal *, FileRecordPtr regFilePtr);  void seizeFile(FileRecordPtr& regFilePtr);  void releaseFile(Uint32 fileIndex);//------------------------------------// Methods called when completing file// operation.//------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -