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

📄 dbtc.hpp

📁 mysql-5.0.22.tar.gz源码包
💻 HPP
📖 第 1 页 / 共 5 页
字号:
    // State of this scan    ScanState scanState;        DLList<ScanFragRec>::Head m_running_scan_frags;  // Currently in LQH    union { Uint32 m_queued_count; Uint32 scanReceivedOperations; };    DLList<ScanFragRec>::Head m_queued_scan_frags;   // In TC !sent to API    DLList<ScanFragRec>::Head m_delivered_scan_frags;// Delivered to API        // Id of the next fragment to be scanned. Used by scan fragment     // processes when they are ready for the next fragment    Uint32 scanNextFragId;        // Total number of fragments in the table we are scanning    Uint32 scanNoFrag;    // Index of next ScanRecords when in free list    Uint32 nextScan;    // Length of expected attribute information    union { Uint32 scanAiLength; Uint32 m_booked_fragments_count; };    Uint32 scanKeyLen;    // Reference to ApiConnectRecord    Uint32 scanApiRec;    // Reference to TcConnectRecord    Uint32 scanTcrec;    // Number of scan frag processes that belong to this scan     Uint32 scanParallel;    // Schema version used by this scan    Uint32 scanSchemaVersion;    // Index of stored procedure belonging to this scan    Uint32 scanStoredProcId;    // The index of table that is scanned    Uint32 scanTableref;    // Number of operation records per scanned fragment    // Number of operations in first batch    // Max number of bytes per batch    union {      Uint16 first_batch_size_rows;      Uint16 batch_size_rows;    };    Uint32 batch_byte_size;    Uint32 scanRequestInfo; // ScanFrag format    // Close is ordered    bool m_close_scan_req;  };     typedef Ptr<ScanRecord> ScanRecordPtr;    /* **********************************************************************$ */  /* ******$                        DATA BUFFER                      ******$ */  /*                                                                         */  /*       THIS BUFFER IS USED AS A GENERAL DATA STORAGE.                    */  /* **********************************************************************$ */  struct DatabufRecord {    UintR data[4];    /* 4 * 1 WORD = 4 WORD   */    UintR nextDatabuf;  }; /* p2c: size = 20 bytes */    typedef Ptr<DatabufRecord> DatabufRecordPtr;  /* **********************************************************************$ */  /* ******$                 ATTRIBUTE INFORMATION RECORD            ******$ */  /*   * CAN CONTAIN ONE (1) ATTRINFO SIGNAL. ONE SIGNAL CONTAINS 24 ATTR.         * INFO WORDS. BUT 32 ELEMENTS ARE USED TO MAKE PLEX HAPPY.   * SOME OF THE ELEMENTS ARE USED TO THE FOLLOWING THINGS:                    * DATA LENGHT IN THIS RECORD IS STORED IN THE ELEMENT INDEXED BY             * ZINBUF_DATA_LEN.                                                            * NEXT FREE ATTRBUF IS POINTED OUT BY THE ELEMENT INDEXED BY                  * PREVIOUS ATTRBUF IS POINTED OUT BY THE ELEMENT INDEXED BY ZINBUF_PREV        * (NOT USED YET).                                                             * NEXT ATTRBUF IS POINTED OUT BY THE ELEMENT INDEXED BY ZINBUF_NEXT.   */  /* ******************************************************************** */  struct AttrbufRecord {    UintR attrbuf[32];  }; /* p2c: size = 128 bytes */    typedef Ptr<AttrbufRecord> AttrbufRecordPtr;  /*************************************************************************>*/  /*                     GLOBAL CHECKPOINT INFORMATION RECORD                */  /*                                                                         */  /*       THIS RECORD IS USED TO STORE THE GLOBALCHECKPOINT NUMBER AND A    *       COUNTER DURING THE COMPLETION PHASE OF THE TRANSACTION            */  /*************************************************************************>*/  /*                                                                         */  /*       GCP RECORD ALIGNED TO BE 32 BYTES                                 */  /*************************************************************************>*/  struct GcpRecord {    UintR gcpUnused1[2];	/* p2c: Not used */    UintR firstApiConnect;    UintR lastApiConnect;    UintR gcpId;    UintR nextGcp;    UintR gcpUnused2;	/* p2c: Not used */    Uint16 gcpNomoretransRec;  }; /* p2c: size = 32 bytes */    typedef Ptr<GcpRecord> GcpRecordPtr;  /*************************************************************************>*/  /*               TC_FAIL_RECORD                                            */  /*       THIS RECORD IS USED WHEN HANDLING TAKE OVER OF ANOTHER FAILED    *       TC NODE.       */  /*************************************************************************>*/  struct TcFailRecord {    Uint16 queueList[MAX_NDB_NODES];    Uint8 takeOverProcState[MAX_NDB_NODES];    UintR completedTakeOver;    UintR currentHashIndexTakeOver;    FailState failStatus;    Uint16 queueIndex;    Uint16 takeOverNode;  }; /* p2c: size = 64 bytes */    typedef Ptr<TcFailRecord> TcFailRecordPtr;public:  Dbtc(const class Configuration &);  virtual ~Dbtc();private:  BLOCK_DEFINES(Dbtc);  // Transit signals  void execPACKED_SIGNAL(Signal* signal);  void execABORTED(Signal* signal);  void execATTRINFO(Signal* signal);  void execCONTINUEB(Signal* signal);  void execKEYINFO(Signal* signal);  void execSCAN_NEXTREQ(Signal* signal);  void execSCAN_PROCREQ(Signal* signal);  void execSCAN_PROCCONF(Signal* signal);  void execTAKE_OVERTCREQ(Signal* signal);  void execTAKE_OVERTCCONF(Signal* signal);  void execLQHKEYREF(Signal* signal);  void execTRANSID_AI_R(Signal* signal);  void execKEYINFO20_R(Signal* signal);  // Received signals  void execDUMP_STATE_ORD(Signal* signal);  void execSEND_PACKED(Signal* signal);  void execCOMPLETED(Signal* signal);  void execCOMMITTED(Signal* signal);  void execDIGETNODESREF(Signal* signal);  void execDIGETPRIMCONF(Signal* signal);  void execDIGETPRIMREF(Signal* signal);  void execDISEIZECONF(Signal* signal);  void execDIVERIFYCONF(Signal* signal);  void execDI_FCOUNTCONF(Signal* signal);  void execDI_FCOUNTREF(Signal* signal);  void execGCP_NOMORETRANS(Signal* signal);  void execLQHKEYCONF(Signal* signal);  void execNDB_STTOR(Signal* signal);  void execREAD_NODESCONF(Signal* signal);  void execREAD_NODESREF(Signal* signal);  void execSTTOR(Signal* signal);  void execTC_COMMITREQ(Signal* signal);  void execTC_CLOPSIZEREQ(Signal* signal);  void execTCGETOPSIZEREQ(Signal* signal);  void execTCKEYREQ(Signal* signal);  void execTCRELEASEREQ(Signal* signal);  void execTCSEIZEREQ(Signal* signal);  void execTCROLLBACKREQ(Signal* signal);  void execTC_HBREP(Signal* signal);  void execTC_SCHVERREQ(Signal* signal);  void execSCAN_TABREQ(Signal* signal);  void execSCAN_TABINFO(Signal* signal);  void execSCAN_FRAGCONF(Signal* signal);  void execSCAN_FRAGREF(Signal* signal);  void execREAD_CONFIG_REQ(Signal* signal);  void execLQH_TRANSCONF(Signal* signal);  void execCOMPLETECONF(Signal* signal);  void execCOMMITCONF(Signal* signal);  void execABORTCONF(Signal* signal);  void execNODE_FAILREP(Signal* signal);  void execINCL_NODEREQ(Signal* signal);  void execTIME_SIGNAL(Signal* signal);  void execAPI_FAILREQ(Signal* signal);  void execSCAN_HBREP(Signal* signal);  void execSET_VAR_REQ(Signal* signal);  void execABORT_ALL_REQ(Signal* signal);  void execCREATE_TRIG_REQ(Signal* signal);  void execDROP_TRIG_REQ(Signal* signal);  void execFIRE_TRIG_ORD(Signal* signal);  void execTRIG_ATTRINFO(Signal* signal);  void execCREATE_INDX_REQ(Signal* signal);  void execDROP_INDX_REQ(Signal* signal);  void execTCINDXREQ(Signal* signal);  void execINDXKEYINFO(Signal* signal);  void execINDXATTRINFO(Signal* signal);  void execALTER_INDX_REQ(Signal* signal);  // Index table lookup  void execTCKEYCONF(Signal* signal);  void execTCKEYREF(Signal* signal);  void execTRANSID_AI(Signal* signal);  void execTCROLLBACKREP(Signal* signal);  void execCREATE_TAB_REQ(Signal* signal);  void execPREP_DROP_TAB_REQ(Signal* signal);  void execDROP_TAB_REQ(Signal* signal);  void execWAIT_DROP_TAB_REF(Signal* signal);  void execWAIT_DROP_TAB_CONF(Signal* signal);  void checkWaitDropTabFailedLqh(Signal*, Uint32 nodeId, Uint32 tableId);  void execALTER_TAB_REQ(Signal* signal);  void set_timeout_value(Uint32 timeOut);  void set_appl_timeout_value(Uint32 timeOut);  void set_no_parallel_takeover(Uint32);  void updateBuddyTimer(ApiConnectRecordPtr);  // Statement blocks  void updatePackedList(Signal* signal, HostRecord* ahostptr, 			Uint16 ahostIndex);  void clearTcNodeData(Signal* signal,                        UintR TLastLqhIndicator,                       UintR Tstart);  void errorReport(Signal* signal, int place);  void warningReport(Signal* signal, int place);  void printState(Signal* signal, int place);  int seizeTcRecord(Signal* signal);  int seizeCacheRecord(Signal* signal);  void TCKEY_abort(Signal* signal, int place);  void copyFromToLen(UintR* sourceBuffer, UintR* destBuffer, UintR copyLen);  void reportNodeFailed(Signal* signal, Uint32 nodeId);  void sendPackedTCKEYCONF(Signal* signal,                           HostRecord * ahostptr,                           UintR hostId);  void sendPackedTCINDXCONF(Signal* signal,                            HostRecord * ahostptr,                            UintR hostId);  void sendPackedSignalLqh(Signal* signal, HostRecord * ahostptr);  void sendCommitLqh(Signal* signal,                     TcConnectRecord * const regTcPtr);  void sendCompleteLqh(Signal* signal,                       TcConnectRecord * const regTcPtr);  void sendTCKEY_FAILREF(Signal* signal, const ApiConnectRecord *);  void sendTCKEY_FAILCONF(Signal* signal, ApiConnectRecord *);  void checkStartTimeout(Signal* signal);  void checkStartFragTimeout(Signal* signal);  void timeOutFoundFragLab(Signal* signal, Uint32 TscanConPtr);  void timeOutLoopStartFragLab(Signal* signal, Uint32 TscanConPtr);  int  releaseAndAbort(Signal* signal);  void findApiConnectFail(Signal* signal);  void findTcConnectFail(Signal* signal);  void initApiConnectFail(Signal* signal);  void initTcConnectFail(Signal* signal);  void initTcFail(Signal* signal);  void releaseTakeOver(Signal* signal);  void setupFailData(Signal* signal);  void updateApiStateFail(Signal* signal);  void updateTcStateFail(Signal* signal);  void handleApiFailState(Signal* signal, UintR anApiConnectptr);  void handleFailedApiNode(Signal* signal,                           UintR aFailedNode,                           UintR anApiConnectPtr);  void handleScanStop(Signal* signal, UintR aFailedNode);  void initScanTcrec(Signal* signal);  void initScanrec(ScanRecordPtr,  const class ScanTabReq*,		   const UintR scanParallel, 		   const UintR noOprecPerFrag);  void initScanfragrec(Signal* signal);  void releaseScanResources(ScanRecordPtr, bool not_started = false);  ScanRecordPtr seizeScanrec(Signal* signal);  void sendScanFragReq(Signal*, ScanRecord*, ScanFragRec*);  void sendScanTabConf(Signal* signal, ScanRecordPtr);  void close_scan_req(Signal*, ScanRecordPtr, bool received_req);  void close_scan_req_send_conf(Signal*, ScanRecordPtr);    void checkGcp(Signal* signal);  void commitGciHandling(Signal* signal, UintR Tgci);  void copyApi(Signal* signal);  void DIVER_node_fail_handling(Signal* signal, UintR Tgci);  void gcpTcfinished(Signal* signal);  void handleGcp(Signal* signal);  void hash(Signal* signal);  bool handle_special_hash(Uint32 dstHash[4], 			     Uint32* src, Uint32 srcLen, 			     Uint32 tabPtrI, bool distr);    void initApiConnect(Signal* signal);  void initApiConnectRec(Signal* signal, 			 ApiConnectRecord * const regApiPtr,			 bool releaseIndexOperations = false);  void initattrbuf(Signal* signal);  void initdatabuf(Signal* signal);  void initgcp(Signal* signal);  void inithost(Signal* signal);  void initialiseScanrec(Signal* signal);  void initialiseScanFragrec(Signal* signal);  void initialiseScanOprec(Signal* signal);  void initTable(Signal* signal);  void initialiseTcConnect(Signal* signal);  void linkApiToGcp(Signal* signal);  void linkGciInGcilist(Signal* signal);  void linkKeybuf(Signal* signal);  void linkTcInConnectionlist(Signal* signal);  void releaseAbortResources(Signal* signal);  void releaseApiCon(Signal* signal, UintR aApiConnectPtr);  void releaseApiConCopy(Signal* signal);  void releaseApiConnectFail(Signal* signal);  void releaseAttrinfo();  void releaseGcp(Signal* signal);  void releaseKeys();  void releaseSimpleRead(Signal*, ApiConnectRecordPtr, TcConnectRecord*);  void releaseDirtyWrite(Signal* signal);  void releaseTcCon();  void releaseTcConnectFail(Signal* signal);  void releaseTransResources(Signal* signal);  void saveAttrbuf(Signal* signal);  void seizeApiConnect(Signal* signal);  void seizeApiConnectCopy(Signal* signal);  void seizeApiConnectFail(Signal* signal);  void seizeDatabuf(Signal* signal);  void seizeGcp(Signal* signal);  void seizeTcConnect(Signal* signal);  void seizeTcConnectFail(Signal* signal);  void sendApiCommit(Signal* signal);  void sendAttrinfo(Signal* signal,                    UintR TattrinfoPtr,                    AttrbufRecord * const regAttrPtr,                    UintR TBref);  void sendContinueTimeOutControl(Signal* signal, Uint32 TapiConPtr);  void sendKeyinfo(Signal* signal, BlockReference TBRef, Uint32 len);  void sendlqhkeyreq(Signal* signal, BlockReference TBRef);  void sendSystemError(Signal* signal, int line);  void sendtckeyconf(Signal* signal, UintR TcommitFlag);  void sendTcIndxConf(Signal* signal, UintR TcommitFlag);  void unlinkApiConnect(Signal* signal);  void unlinkGcp(Signal* signal);  void unlinkReadyTcCon(Signal* signal);  void handleFailedOperation(Signal* signal,			     const LqhKeyRef * const lqhKeyRef, 			     bool gotLqhKeyRef);  void markOperationAborted(ApiConnectRecord * const regApiPtr,			    TcConnectRecord * const regTcPtr);  void clearCommitAckMarker(ApiConnectRecord * const regApiPtr,			    TcConnectRecord * const regTcPtr);  // Trigger and index handling  bool saveINDXKEYINFO(Signal* signal,                       TcIndexOperation* indexOp,                       const Uint32 *src,                        Uint32 len);  bool receivedAllINDXKEYINFO(TcIndexOperation* indexOp);  bool saveINDXATTRINFO(Signal* signal,                        TcIndexOperation* indexOp,                        const Uint32 *src,                         Uint32 len);  bool receivedAllINDXATTRINFO(TcIndexOperation* indexOp);  bool  saveTRANSID_AI(Signal* signal,		       TcIndexOperation* indexOp,                        const Uint32 *src,                       Uint32 len);  bool receivedAllTRANSID_AI(TcIndexOperation* indexOp);  void readIndexTable(Signal* signal, 		      ApiConnectRecord* regApiPtr,		      TcIndexOperation* indexOp);  void executeIndexOperation(Signal* signal, 			     ApiConnectRecord* regApiPtr,			     TcIndexOperation* indexOp);  bool seizeIndexOperation(ApiConnectRecord* regApiPtr,			   TcIndexOperationPtr& indexOpPtr);  void releaseIndexOperation(ApiConnectRecord* regApiPtr,			     TcIndexOperation* indexOp);  void releaseAllSeizedIndexOperations(ApiConnectRecord* regApiPtr);

⌨️ 快捷键说明

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