📄 dbdict.hpp
字号:
* * Current use of 2) is by a starting node, to prevent schema ops * until started. The ops are refused (BlockState != BS_IDLE), * not queued. * * Master failure is not handled, in node start case the starting * node will crash too anyway. Use lock table in future.. * * The lock queue is "serial" but other behaviour is possible * by checking lock types e.g. to allow parallel node starts. * * Checking release of last op record is not convenient with * current structure (5.0). Instead we poll via continueB. * * XXX only table ops check BlockState */ struct DictLockType; friend struct DictLockType; struct DictLockType { DictLockReq::LockType lockType; BlockState blockState; const char* text; }; struct DictLockRecord; friend struct DictLockRecord; struct DictLockRecord { DictLockReq req; const DictLockType* lt; bool locked; union { Uint32 nextPool; Uint32 nextList; }; Uint32 prevList; }; typedef Ptr<DictLockRecord> DictLockPtr; ArrayPool<DictLockRecord> c_dictLockPool; DLFifoList<DictLockRecord> c_dictLockQueue; bool c_dictLockPoll; static const DictLockType* getDictLockType(Uint32 lockType); void sendDictLockInfoEvent(Uint32 pollCount); void sendDictLockInfoEvent(DictLockPtr lockPtr, const char* text); // check if any schema op exists (conflicting with dict lock) bool hasDictLockSchemaOp(); void checkDictLockQueue(Signal* signal, bool poll); void sendDictLockConf(Signal* signal, DictLockPtr lockPtr); void sendDictLockRef(Signal* signal, DictLockReq req, Uint32 errorCode); // control polling i.e. continueB loop void setDictLockPoll(Signal* signal, bool on, Uint32 pollCount); // NF handling void removeStaleDictLocks(Signal* signal, const Uint32* theFailedNodes); // Statement blocks /* ------------------------------------------------------------ */ // Start/Restart Handling /* ------------------------------------------------------------ */ void sendSTTORRY(Signal* signal); void sendNDB_STTORRY(Signal* signal); void initSchemaFile(Signal* signal); /* ------------------------------------------------------------ */ // Drop Table Handling /* ------------------------------------------------------------ */ void releaseTableObject(Uint32 tableId, bool removeFromHash = true); /* ------------------------------------------------------------ */ // General Stuff /* ------------------------------------------------------------ */ Uint32 getFreeTableRecord(Uint32 primaryTableId); Uint32 getFreeTriggerRecord(); bool getNewAttributeRecord(TableRecordPtr tablePtr, AttributeRecordPtr & attrPtr); void packTableIntoPages(Signal* signal, Uint32 tableId, Uint32 pageId); void packTableIntoPagesImpl(SimpleProperties::Writer &, TableRecordPtr, Signal* signal= 0); void sendGET_TABINFOREQ(Signal* signal, Uint32 tableId); void sendTC_SCHVERREQ(Signal* signal, Uint32 tableId, BlockReference tcRef); /* ------------------------------------------------------------ */ // System Restart Handling /* ------------------------------------------------------------ */ void initSendSchemaData(Signal* signal); void sendSchemaData(Signal* signal); Uint32 sendSCHEMA_INFO(Signal* signal, Uint32 nodeId, Uint32* pagePointer); void checkSchemaStatus(Signal* signal); void sendDIHSTARTTAB_REQ(Signal* signal); /* ------------------------------------------------------------ */ // Receive Table Handling /* ------------------------------------------------------------ */ void handleTabInfoInit(SimpleProperties::Reader &, ParseDictTabInfoRecord *, bool checkExist = true); void handleTabInfo(SimpleProperties::Reader & it, ParseDictTabInfoRecord *); void handleAddTableFailure(Signal* signal, Uint32 failureLine, Uint32 tableId); bool verifyTableCorrect(Signal* signal, Uint32 tableId); /* ------------------------------------------------------------ */ // Add Table Handling /* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */ // Add Fragment Handling /* ------------------------------------------------------------ */ void sendLQHADDATTRREQ(Signal*, CreateTableRecordPtr, Uint32 attributePtrI); /* ------------------------------------------------------------ */ // Read/Write Schema and Table files /* ------------------------------------------------------------ */ void updateSchemaState(Signal* signal, Uint32 tableId, SchemaFile::TableEntry*, Callback*); void startWriteSchemaFile(Signal* signal); void openSchemaFile(Signal* signal, Uint32 fileNo, Uint32 fsPtr, bool writeFlag, bool newFile); void writeSchemaFile(Signal* signal, Uint32 filePtr, Uint32 fsPtr); void writeSchemaConf(Signal* signal, FsConnectRecordPtr fsPtr); void closeFile(Signal* signal, Uint32 filePtr, Uint32 fsPtr); void closeWriteSchemaConf(Signal* signal, FsConnectRecordPtr fsPtr); void initSchemaFile_conf(Signal* signal, Uint32 i, Uint32 returnCode); void writeTableFile(Signal* signal, Uint32 tableId, SegmentedSectionPtr tabInfo, Callback*); void startWriteTableFile(Signal* signal, Uint32 tableId); void openTableFile(Signal* signal, Uint32 fileNo, Uint32 fsPtr, Uint32 tableId, bool writeFlag); void writeTableFile(Signal* signal, Uint32 filePtr, Uint32 fsPtr); void writeTableConf(Signal* signal, FsConnectRecordPtr fsPtr); void closeWriteTableConf(Signal* signal, FsConnectRecordPtr fsPtr); void startReadTableFile(Signal* signal, Uint32 tableId); void openReadTableRef(Signal* signal, FsConnectRecordPtr fsPtr); void readTableFile(Signal* signal, Uint32 filePtr, Uint32 fsPtr); void readTableConf(Signal* signal, FsConnectRecordPtr fsPtr); void readTableRef(Signal* signal, FsConnectRecordPtr fsPtr); void closeReadTableConf(Signal* signal, FsConnectRecordPtr fsPtr); void startReadSchemaFile(Signal* signal); void openReadSchemaRef(Signal* signal, FsConnectRecordPtr fsPtr); void readSchemaFile(Signal* signal, Uint32 filePtr, Uint32 fsPtr); void readSchemaConf(Signal* signal, FsConnectRecordPtr fsPtr); void readSchemaRef(Signal* signal, FsConnectRecordPtr fsPtr); void closeReadSchemaConf(Signal* signal, FsConnectRecordPtr fsPtr); bool convertSchemaFileTo_5_0_6(XSchemaFile*); /* ------------------------------------------------------------ */ // Get table definitions /* ------------------------------------------------------------ */ void sendGET_TABINFOREF(Signal* signal, GetTabInfoReq*, GetTabInfoRef::ErrorCode errorCode); void sendGET_TABLEID_REF(Signal* signal, GetTableIdReq * req, GetTableIdRef::ErrorCode errorCode); void sendGetTabResponse(Signal* signal); /* ------------------------------------------------------------ */ // Indexes and triggers /* ------------------------------------------------------------ */ // reactivate and rebuild indexes on start up void activateIndexes(Signal* signal, Uint32 i); void rebuildIndexes(Signal* signal, Uint32 i); // create index void createIndex_recvReply(Signal* signal, const CreateIndxConf* conf, const CreateIndxRef* ref); void createIndex_slavePrepare(Signal* signal, OpCreateIndexPtr opPtr); void createIndex_toCreateTable(Signal* signal, OpCreateIndexPtr opPtr); void createIndex_fromCreateTable(Signal* signal, OpCreateIndexPtr opPtr); void createIndex_toAlterIndex(Signal* signal, OpCreateIndexPtr opPtr); void createIndex_fromAlterIndex(Signal* signal, OpCreateIndexPtr opPtr); void createIndex_slaveCommit(Signal* signal, OpCreateIndexPtr opPtr); void createIndex_slaveAbort(Signal* signal, OpCreateIndexPtr opPtr); void createIndex_sendSlaveReq(Signal* signal, OpCreateIndexPtr opPtr); void createIndex_sendReply(Signal* signal, OpCreateIndexPtr opPtr, bool); // drop index void dropIndex_recvReply(Signal* signal, const DropIndxConf* conf, const DropIndxRef* ref); void dropIndex_slavePrepare(Signal* signal, OpDropIndexPtr opPtr); void dropIndex_toAlterIndex(Signal* signal, OpDropIndexPtr opPtr); void dropIndex_fromAlterIndex(Signal* signal, OpDropIndexPtr opPtr); void dropIndex_toDropTable(Signal* signal, OpDropIndexPtr opPtr); void dropIndex_fromDropTable(Signal* signal, OpDropIndexPtr opPtr); void dropIndex_slaveCommit(Signal* signal, OpDropIndexPtr opPtr); void dropIndex_slaveAbort(Signal* signal, OpDropIndexPtr opPtr); void dropIndex_sendSlaveReq(Signal* signal, OpDropIndexPtr opPtr); void dropIndex_sendReply(Signal* signal, OpDropIndexPtr opPtr, bool); // alter index void alterIndex_recvReply(Signal* signal, const AlterIndxConf* conf, const AlterIndxRef* ref); void alterIndex_slavePrepare(Signal* signal, OpAlterIndexPtr opPtr); void alterIndex_toCreateTc(Signal* signal, OpAlterIndexPtr opPtr); void alterIndex_fromCreateTc(Signal* signal, OpAlterIndexPtr opPtr); void alterIndex_toDropTc(Signal* signal, OpAlterIndexPtr opPtr); void alterIndex_fromDropTc(Signal* signal, OpAlterIndexPtr opPtr); void alterIndex_toCreateTrigger(Signal* signal, OpAlterIndexPtr opPtr); void alterIndex_fromCreateTrigger(Signal* signal, OpAlterIndexPtr opPtr); void alterIndex_toDropTrigger(Signal* signal, OpAlterIndexPtr opPtr); void alterIndex_fromDropTrigger(Signal* signal, OpAlterIndexPtr opPtr); void alterIndex_toBuildIndex(Signal* signal, OpAlterIndexPtr opPtr); void alterIndex_fromBuildIndex(Signal* signal, OpAlterIndexPtr opPtr); void alterIndex_slaveCommit(Signal* signal, OpAlterIndexPtr opPtr); void alterIndex_slaveAbort(Signal* signal, OpAlterIndexPtr opPtr); void alterIndex_sendSlaveReq(Signal* signal, OpAlterIndexPtr opPtr); void alterIndex_sendReply(Signal* signal, OpAlterIndexPtr opPtr, bool); // build index void buildIndex_recvReply(Signal* signal, const BuildIndxConf* conf, const BuildIndxRef* ref); void buildIndex_toCreateConstr(Signal* signal, OpBuildIndexPtr opPtr); void buildIndex_fromCreateConstr(Signal* signal, OpBuildIndexPtr opPtr); void buildIndex_buildTrix(Signal* signal, OpBuildIndexPtr opPtr); void buildIndex_toDropConstr(Signal* signal, OpBuildIndexPtr opPtr); void buildIndex_fromDropConstr(Signal* signal, OpBuildIndexPtr opPtr); void buildIndex_toOnline(Signal* signal, OpBuildIndexPtr opPtr); void buildIndex_fromOnline(Signal* signal, OpBuildIndexPtr opPtr); void buildIndex_sendSlaveReq(Signal* signal, OpBuildIndexPtr opPtr); void buildIndex_sendReply(Signal* signal, OpBuildIndexPtr opPtr, bool); // create trigger void createTrigger_recvReply(Signal* signal, const CreateTrigConf* conf, const CreateTrigRef* ref); void createTrigger_slavePrepare(Signal* signal, OpCreateTriggerPtr opPtr); void createTrigger_masterSeize(Signal* signal, OpCreateTriggerPtr opPtr); void createTrigger_slaveCreate(Signal* signal, OpCreateTriggerPtr opPtr); void createTrigger_toAlterTrigger(Signal* signal, OpCreateTriggerPtr opPtr); void createTrigger_fromAlterTrigger(Signal* signal, OpCreateTriggerPtr opPtr); void createTrigger_slaveCommit(Signal* signal, OpCreateTriggerPtr opPtr); void createTrigger_slaveAbort(Signal* signal, OpCreateTriggerPtr opPtr); void createTrigger_sendSlaveReq(Signal* signal, OpCreateTriggerPtr opPtr); void createTrigger_sendReply(Signal* signal, OpCreateTriggerPtr opPtr, bool); // drop trigger void dropTrigger_recvReply(Signal* signal, const DropTrigConf* conf, const DropTrigRef* ref); void dropTrigger_slavePrepare(Signal* signal, OpDropTriggerPtr opPtr); void dropTrigger_toAlterTrigger(Signal* signal, OpDropTriggerPtr opPtr); void dropTrigger_fromAlterTrigger(Signal* signal, OpDropTriggerPtr opPtr); void dropTrigger_slaveCommit(Signal* signal, OpDropTriggerPtr opPtr); void dropTrigger_slaveAbort(Signal* signal, OpDropTriggerPtr opPtr); void dropTrigger_sendSlaveReq(Signal* signal, OpDropTriggerPtr opPtr); void dropTrigger_sendReply(Signal* signal, OpDropTriggerPtr opPtr, bool); // alter trigger void alterTrigger_recvReply(Signal* signal, const AlterTrigConf* conf, const AlterTrigRef* ref); void alterTrigger_slavePrepare(Signal* signal, OpAlterTriggerPtr opPtr); void alterTrigger_toCreateLocal(Signal* signal, OpAlterTriggerPtr opPtr); void alterTrigger_fromCreateLocal(Signal* signal, OpAlterTriggerPtr opPtr); void alterTrigger_toDropLocal(Signal* signal, OpAlterTriggerPtr opPtr); void alterTrigger_fromDropLocal(Signal* signal, OpAlterTriggerPtr opPtr); void alterTrigger_slaveCommit(Signal* signal, OpAlterTriggerPtr opPtr); void alterTrigger_slaveAbort(Signal* signal, OpAlterTriggerPtr opPtr); void alterTrigger_sendSlaveReq(Signal* signal, OpAlterTriggerPtr opPtr); void alterTrigger_sendReply(Signal* signal, OpAlterTriggerPtr opPtr, bool); // support void getTableKeyList(TableRecordPtr tablePtr, AttributeList& list); void getIndexAttr(TableRecordPtr indexPtr, Uint32 itAttr, Uint32* id); void getIndexAttrList(TableRecordPtr indexPtr, AttributeList& list); void getIndexAttrMask(TableRecordPtr indexPtr, AttributeMask& mask); /* ------------------------------------------------------------ */ // Initialisation /* ------------------------------------------------------------ */ void initCommonData(); void initRecords(); void initConnectRecord(); void initRetrieveRecord(Signal*, Uint32, Uint32 returnCode); void initSchemaRecord(); void initRestartRecord(); void initSendSchemaRecord(); void initReadTableRecord(); void initWriteTableRecord(); void initReadSchemaRecord(); void initWriteSchemaRecord(); void initNodeRecords(); void initTableRecords(); void initialiseTableRecord(TableRecordPtr tablePtr); void initTriggerRecords(); void initialiseTriggerRecord(TriggerRecordPtr triggerPtr); void initPageRecords(); Uint32 getFsConnRecord(); bool getIsFailed(Uint32 nodeId) const; void dropTable_backup_mutex_locked(Signal* signal, Uint32, Uint32); void dropTableRef(Signal * signal, DropTableReq *, DropTableRef::ErrorCode); void printTables(); // For debugging only int handleAlterTab(AlterTabReq * req, CreateTableRecord * regAlterTabPtr, TableRecordPtr origTablePtr, TableRecordPtr newTablePtr); void revertAlterTable(Signal * signal, Uint32 changeMask, Uint32 tableId, CreateTableRecord * regAlterTabPtr); void alterTable_backup_mutex_locked(Signal* signal, Uint32, Uint32); void alterTableRef(Signal * signal, AlterTableReq *, AlterTableRef::ErrorCode, ParseDictTabInfoRecord* parseRecord = NULL); void alterTabRef(Signal * signal, AlterTabReq *, AlterTableRef::ErrorCode, ParseDictTabInfoRecord* parseRecord = NULL); void alterTab_writeSchemaConf(Signal* signal, Uint32 callbackData, Uint32 returnCode); void alterTab_writeTableConf(Signal* signal, Uint32 callbackData, Uint32 returnCode); void prepDropTab_nextStep(Signal* signal, DropTableRecordPtr); void prepDropTab_complete(Signal* signal, DropTableRecordPtr); void prepDropTab_writeSchemaConf(Signal* signal, Uint32 dropTabPtrI, Uint32); void dropTab_localDROP_TAB_CONF(Signal* signal); void dropTab_nextStep(Signal* signal, DropTableRecordPtr); void dropTab_complete(Signal* signal, Uint32 dropTabPtrI, Uint32); void dropTab_writeSchemaConf(Signal* signal, Uint32 dropTabPtrI, Uint32); void createTab_prepare(Signal* signal, CreateTabReq * req); void createTab_writeSchemaConf1(Signal* signal, Uint32 callback, Uint32); void createTab_writeTableConf(Signal* signal, Uint32 callbackData, Uint32); void createTab_dih(Signal*, CreateTableRecordPtr, SegmentedSectionPtr, Callback*); void createTab_dihComplete(Signal* signal, Uint32 callbackData, Uint32); void createTab_startLcpMutex_locked(Signal* signal, Uint32, Uint32); void createTab_startLcpMutex_unlocked(Signal* signal, Uint32, Uint32); void createTab_commit(Signal* signal, CreateTabReq * req); void createTab_writeSchemaConf2(Signal* signal, Uint32 callbackData, Uint32); void createTab_alterComplete(Signal*, Uint32 callbackData, Uint32); void createTab_drop(Signal* signal, CreateTabReq * req); void createTab_dropComplete(Signal* signal, Uint32 callbackData, Uint32); void createTab_reply(Signal* signal, CreateTableRecordPtr, Uint32 nodeId); void alterTab_activate(Signal*, CreateTableRecordPtr, Callback*); void restartCreateTab(Signal*, Uint32, const SchemaFile::TableEntry *, bool); void restartCreateTab_readTableConf(Signal* signal, Uint32 callback, Uint32); void restartCreateTab_writeTableConf(Signal* signal, Uint32 callback, Uint32); void restartCreateTab_dihComplete(Signal* signal, Uint32 callback, Uint32); void restartCreateTab_activateComplete(Signal*, Uint32 callback, Uint32); void restartDropTab(Signal* signal, Uint32 tableId); void restartDropTab_complete(Signal*, Uint32 callback, Uint32); void restart_checkSchemaStatusComplete(Signal*, Uint32 callback, Uint32); void restart_writeSchemaConf(Signal*, Uint32 callbackData, Uint32); void masterRestart_checkSchemaStatusComplete(Signal*, Uint32, Uint32); void sendSchemaComplete(Signal*, Uint32 callbackData, Uint32); // global metadata support friend class MetaData; int getMetaTablePtr(TableRecordPtr& tablePtr, Uint32 tableId, Uint32 tableVersion); int getMetaTable(MetaData::Table& table, Uint32 tableId, Uint32 tableVersion); int getMetaTable(MetaData::Table& table, const char* tableName); int getMetaAttribute(MetaData::Attribute& attribute, const MetaData::Table& table, Uint32 attributeId); int getMetaAttribute(MetaData::Attribute& attribute, const MetaData::Table& table, const char* attributeName);};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -