📄 dbdict.hpp
字号:
NDB_NODE_ALIVE = 1, NDB_NODE_DEAD = 2 }; bool hotSpare; NodeState nodeState; }; typedef Ptr<NodeRecord> NodeRecordPtr; CArray<NodeRecord> c_nodes; NdbNodeBitmask c_aliveNodes; /** * This record stores all the information about a table and all its attributes ****************************************************************************/ struct PageRecord { Uint32 word[8192]; }; typedef Ptr<PageRecord> PageRecordPtr; CArray<PageRecord> c_pageRecordArray; struct SchemaPageRecord { Uint32 word[NDB_SF_PAGE_SIZE_IN_WORDS]; }; CArray<SchemaPageRecord> c_schemaPageRecordArray; /** * A page for create index table signal. */ PageRecord c_indexPage;public: Dbdict(const class Configuration &); virtual ~Dbdict();private: BLOCK_DEFINES(Dbdict); // Signal receivers void execDICTSTARTREQ(Signal* signal); void execGET_TABINFOREQ(Signal* signal); void execGET_TABLEDID_REQ(Signal* signal); void execGET_TABINFO_REF(Signal* signal); void execGET_TABINFO_CONF(Signal* signal); void execCONTINUEB(Signal* signal); void execDUMP_STATE_ORD(Signal* signal); void execHOT_SPAREREP(Signal* signal); void execDIADDTABCONF(Signal* signal); void execDIADDTABREF(Signal* signal); void execTAB_COMMITCONF(Signal* signal); void execTAB_COMMITREF(Signal* signal); void execGET_SCHEMA_INFOREQ(Signal* signal); void execSCHEMA_INFO(Signal* signal); void execSCHEMA_INFOCONF(Signal* signal); void execREAD_NODESCONF(Signal* signal); void execFSCLOSECONF(Signal* signal); void execFSOPENCONF(Signal* signal); void execFSOPENREF(Signal* signal); void execFSREADCONF(Signal* signal); void execFSREADREF(Signal* signal); void execFSWRITECONF(Signal* signal); void execNDB_STTOR(Signal* signal); void execREAD_CONFIG_REQ(Signal* signal); void execSTTOR(Signal* signal); void execTC_SCHVERCONF(Signal* signal); void execNODE_FAILREP(Signal* signal); void execINCL_NODEREQ(Signal* signal); void execAPI_FAILREQ(Signal* signal); void execWAIT_GCP_REF(Signal* signal); void execWAIT_GCP_CONF(Signal* signal); void execLIST_TABLES_REQ(Signal* signal); // Index signals void execCREATE_INDX_REQ(Signal* signal); void execCREATE_INDX_CONF(Signal* signal); void execCREATE_INDX_REF(Signal* signal); void execALTER_INDX_REQ(Signal* signal); void execALTER_INDX_CONF(Signal* signal); void execALTER_INDX_REF(Signal* signal); void execCREATE_TABLE_CONF(Signal* signal); void execCREATE_TABLE_REF(Signal* signal); void execDROP_INDX_REQ(Signal* signal); void execDROP_INDX_CONF(Signal* signal); void execDROP_INDX_REF(Signal* signal); void execDROP_TABLE_CONF(Signal* signal); void execDROP_TABLE_REF(Signal* signal); void execBUILDINDXREQ(Signal* signal); void execBUILDINDXCONF(Signal* signal); void execBUILDINDXREF(Signal* signal); void execBACKUP_FRAGMENT_REQ(Signal*); // Util signals used by Event code void execUTIL_PREPARE_CONF(Signal* signal); void execUTIL_PREPARE_REF (Signal* signal); void execUTIL_EXECUTE_CONF(Signal* signal); void execUTIL_EXECUTE_REF (Signal* signal); void execUTIL_RELEASE_CONF(Signal* signal); void execUTIL_RELEASE_REF (Signal* signal); // Event signals from API void execCREATE_EVNT_REQ (Signal* signal); void execCREATE_EVNT_CONF(Signal* signal); void execCREATE_EVNT_REF (Signal* signal); void execDROP_EVNT_REQ (Signal* signal); void execSUB_START_REQ (Signal* signal); void execSUB_START_CONF (Signal* signal); void execSUB_START_REF (Signal* signal); void execSUB_STOP_REQ (Signal* signal); void execSUB_STOP_CONF (Signal* signal); void execSUB_STOP_REF (Signal* signal); // Event signals from SUMA void execCREATE_SUBID_CONF(Signal* signal); void execCREATE_SUBID_REF (Signal* signal); void execSUB_CREATE_CONF(Signal* signal); void execSUB_CREATE_REF (Signal* signal); void execSUB_SYNC_CONF(Signal* signal); void execSUB_SYNC_REF (Signal* signal); void execSUB_REMOVE_REQ(Signal* signal); void execSUB_REMOVE_CONF(Signal* signal); void execSUB_REMOVE_REF(Signal* signal); // Trigger signals void execCREATE_TRIG_REQ(Signal* signal); void execCREATE_TRIG_CONF(Signal* signal); void execCREATE_TRIG_REF(Signal* signal); void execALTER_TRIG_REQ(Signal* signal); void execALTER_TRIG_CONF(Signal* signal); void execALTER_TRIG_REF(Signal* signal); void execDROP_TRIG_REQ(Signal* signal); void execDROP_TRIG_CONF(Signal* signal); void execDROP_TRIG_REF(Signal* signal); void execDROP_TABLE_REQ(Signal* signal); void execPREP_DROP_TAB_REQ(Signal* signal); void execPREP_DROP_TAB_REF(Signal* signal); void execPREP_DROP_TAB_CONF(Signal* signal); void execDROP_TAB_REQ(Signal* signal); void execDROP_TAB_REF(Signal* signal); void execDROP_TAB_CONF(Signal* signal); void execCREATE_TABLE_REQ(Signal* signal); void execALTER_TABLE_REQ(Signal* signal); void execCREATE_FRAGMENTATION_REF(Signal*); void execCREATE_FRAGMENTATION_CONF(Signal*); void execCREATE_TAB_REQ(Signal* signal); void execADD_FRAGREQ(Signal* signal); void execLQHFRAGREF(Signal* signal); void execLQHFRAGCONF(Signal* signal); void execLQHADDATTREF(Signal* signal); void execLQHADDATTCONF(Signal* signal); void execCREATE_TAB_REF(Signal* signal); void execCREATE_TAB_CONF(Signal* signal); void execALTER_TAB_REQ(Signal* signal); void execALTER_TAB_REF(Signal* signal); void execALTER_TAB_CONF(Signal* signal); bool check_ndb_versions() const; /* * 2.4 COMMON STORED VARIABLES */ /** * This record stores all the state needed * when the schema page is being sent to other nodes ***************************************************************************/ struct SendSchemaRecord { /** Number of words of schema data */ Uint32 noOfWords; /** Page Id of schema data */ Uint32 pageId; Uint32 nodeId; SignalCounter m_SCHEMAINFO_Counter; Uint32 noOfWordsCurrentlySent; Uint32 noOfSignalsSentSinceDelay; bool inUse; }; SendSchemaRecord c_sendSchemaRecord; /** * This record stores all the state needed * when a table file is being read from disk ****************************************************************************/ struct ReadTableRecord { /** Number of Pages */ Uint32 noOfPages; /** Page Id*/ Uint32 pageId; /** Table Id of read table */ Uint32 tableId; bool inUse; Callback m_callback; }; ReadTableRecord c_readTableRecord; /** * This record stores all the state needed * when a table file is being written to disk ****************************************************************************/ struct WriteTableRecord { /** Number of Pages */ Uint32 noOfPages; /** Page Id*/ Uint32 pageId; /** Table Files Handled, local state variable */ Uint32 noOfTableFilesHandled; /** Table Id of written table */ Uint32 tableId; /** State, indicates from where it was called */ enum TableWriteState { IDLE = 0, WRITE_ADD_TABLE_MASTER = 1, WRITE_ADD_TABLE_SLAVE = 2, WRITE_RESTART_FROM_MASTER = 3, WRITE_RESTART_FROM_OWN = 4, TWR_CALLBACK = 5 }; TableWriteState tableWriteState; Callback m_callback; }; WriteTableRecord c_writeTableRecord; /** * This record stores all the state needed * when a schema file is being read from disk ****************************************************************************/ struct ReadSchemaRecord { /** Page Id of schema page */ Uint32 pageId; /** First page to read */ Uint32 firstPage; /** Number of pages to read */ Uint32 noOfPages; /** State, indicates from where it was called */ enum SchemaReadState { IDLE = 0, INITIAL_READ_HEAD = 1, INITIAL_READ = 2 }; SchemaReadState schemaReadState; }; ReadSchemaRecord c_readSchemaRecord; /** * This record stores all the state needed * when a schema file is being written to disk ****************************************************************************/ struct WriteSchemaRecord { /** Page Id of schema page */ Uint32 pageId; /** Rewrite entire file */ Uint32 newFile; /** First page to write */ Uint32 firstPage; /** Number of pages to write */ Uint32 noOfPages; /** Schema Files Handled, local state variable */ Uint32 noOfSchemaFilesHandled; bool inUse; Callback m_callback; }; WriteSchemaRecord c_writeSchemaRecord; /** * This record stores all the information needed * when a file is being read from disk ****************************************************************************/ struct RestartRecord { /** Global check point identity */ Uint32 gciToRestart; /** The active table at restart process */ Uint32 activeTable; /** The active table at restart process */ BlockReference returnBlockRef; }; RestartRecord c_restartRecord; /** * This record stores all the information needed * when a file is being read from disk ****************************************************************************/ struct RetrieveRecord { RetrieveRecord(){ noOfWaiters = 0;} /** Only one retrieve table definition at a time */ bool busyState; /** * No of waiting in time queue */ Uint32 noOfWaiters; /** Block Reference of retriever */ BlockReference blockRef; /** Id of retriever */ Uint32 m_senderData; /** Table id of retrieved table */ Uint32 tableId; /** Starting page to retrieve data from */ Uint32 retrievePage; /** Number of pages retrieved */ Uint32 retrievedNoOfPages; /** Number of words retrieved */ Uint32 retrievedNoOfWords; /** Number of words sent currently */ Uint32 currentSent; /** * Long signal stuff */ bool m_useLongSig; }; RetrieveRecord c_retrieveRecord; /** * This record stores all the information needed * when a file is being read from disk * * This is the info stored in one entry of the schema * page. Each table has 4 words of info. * Word 1: Schema version (upper 16 bits) * Table State (lower 16 bits) * Word 2: Number of pages of table description * Word 3: Global checkpoint id table was created * Word 4: Currently zero ****************************************************************************/ struct SchemaRecord { /** Schema file first page (0) */ Uint32 schemaPage; /** Old Schema file first page (used at node restart) */ Uint32 oldSchemaPage; Callback m_callback; }; SchemaRecord c_schemaRecord; /* * Schema file, list of schema pages. Use an array until a pool * exists and NDBFS interface can use it. */ struct XSchemaFile { SchemaFile* schemaPage; Uint32 noOfPages; }; // 0-normal 1-old XSchemaFile c_schemaFile[2]; void initSchemaFile(XSchemaFile *, Uint32 firstPage, Uint32 lastPage, bool initEntries); void resizeSchemaFile(XSchemaFile * xsf, Uint32 noOfPages); void computeChecksum(XSchemaFile *, Uint32 pageNo); bool validateChecksum(const XSchemaFile *); SchemaFile::TableEntry * getTableEntry(XSchemaFile *, Uint32 tableId); Uint32 computeChecksum(const Uint32 * src, Uint32 len); /* ----------------------------------------------------------------------- */ // Node References /* ----------------------------------------------------------------------- */ Uint16 c_masterNodeId; /* ----------------------------------------------------------------------- */ // Various current system properties /* ----------------------------------------------------------------------- */ Uint16 c_numberNode; Uint16 c_noHotSpareNodes; Uint16 c_noNodesFailed; Uint32 c_failureNr; /* ----------------------------------------------------------------------- */ // State variables /* ----------------------------------------------------------------------- */ enum BlockState {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -