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

📄 dbdict.cpp

📁 mysql-5.0.22.tar.gz源码包
💻 CPP
📖 第 1 页 / 共 5 页
字号:
boolDbdict::convertSchemaFileTo_5_0_6(XSchemaFile * xsf){  const Uint32 pageSize_old = 32 * 1024;  Uint32 page_old[pageSize_old >> 2];  SchemaFile * sf_old = (SchemaFile *)page_old;  if (xsf->noOfPages * NDB_SF_PAGE_SIZE != pageSize_old)    return false;  SchemaFile * sf0 = &xsf->schemaPage[0];  memcpy(sf_old, sf0, pageSize_old);  // init max number new pages needed  xsf->noOfPages = (sf_old->NoOfTableEntries + NDB_SF_PAGE_ENTRIES - 1) /                   NDB_SF_PAGE_ENTRIES;  initSchemaFile(xsf, 0, xsf->noOfPages, true);  Uint32 noOfPages = 1;  Uint32 n, i, j;  for (n = 0; n < xsf->noOfPages; n++) {    jam();    for (i = 0; i < NDB_SF_PAGE_ENTRIES; i++) {      j = n * NDB_SF_PAGE_ENTRIES + i;      if (j >= sf_old->NoOfTableEntries)        continue;      const SchemaFile::TableEntry_old & te_old = sf_old->TableEntries_old[j];      if (te_old.m_tableState == SchemaFile::INIT ||          te_old.m_tableState == SchemaFile::DROP_TABLE_COMMITTED ||          te_old.m_noOfPages == 0)        continue;      SchemaFile * sf = &xsf->schemaPage[n];      SchemaFile::TableEntry & te = sf->TableEntries[i];      te.m_tableState = te_old.m_tableState;      te.m_tableVersion = te_old.m_tableVersion;      te.m_tableType = te_old.m_tableType;      te.m_info_words = te_old.m_noOfPages * ZSIZE_OF_PAGES_IN_WORDS -                        ZPAGE_HEADER_SIZE;      te.m_gcp = te_old.m_gcp;      if (noOfPages < n)        noOfPages = n;    }  }  xsf->noOfPages = noOfPages;  initSchemaFile(xsf, 0, xsf->noOfPages, false);  return true;}/* **************************************************************** *//* ---------------------------------------------------------------- *//* MODULE:          INITIALISATION MODULE ------------------------- *//* ---------------------------------------------------------------- *//*                                                                  *//* This module contains initialisation of data at start/restart.    *//* ---------------------------------------------------------------- *//* **************************************************************** */Dbdict::Dbdict(const class Configuration & conf):  SimulatedBlock(DBDICT, conf),  c_tableRecordHash(c_tableRecordPool),  c_attributeRecordHash(c_attributeRecordPool),  c_triggerRecordHash(c_triggerRecordPool),  c_opCreateTable(c_opRecordPool),  c_opDropTable(c_opRecordPool),  c_opCreateIndex(c_opRecordPool),  c_opDropIndex(c_opRecordPool),  c_opAlterIndex(c_opRecordPool),  c_opBuildIndex(c_opRecordPool),  c_opCreateEvent(c_opRecordPool),  c_opSubEvent(c_opRecordPool),  c_opDropEvent(c_opRecordPool),  c_opSignalUtil(c_opRecordPool),  c_opCreateTrigger(c_opRecordPool),  c_opDropTrigger(c_opRecordPool),  c_opAlterTrigger(c_opRecordPool),  c_opRecordSequence(0){  BLOCK_CONSTRUCTOR(Dbdict);    const ndb_mgm_configuration_iterator * p = conf.getOwnConfigIterator();  ndbrequire(p != 0);  ndb_mgm_get_int_parameter(p, CFG_DB_NO_TRIGGERS, &c_maxNoOfTriggers);  // Transit signals  addRecSignal(GSN_DUMP_STATE_ORD, &Dbdict::execDUMP_STATE_ORD);  addRecSignal(GSN_GET_TABINFOREQ, &Dbdict::execGET_TABINFOREQ);  addRecSignal(GSN_GET_TABLEID_REQ, &Dbdict::execGET_TABLEDID_REQ);  addRecSignal(GSN_GET_TABINFO_CONF, &Dbdict::execGET_TABINFO_CONF);  addRecSignal(GSN_CONTINUEB, &Dbdict::execCONTINUEB);  addRecSignal(GSN_CREATE_TABLE_REQ, &Dbdict::execCREATE_TABLE_REQ);  addRecSignal(GSN_CREATE_TAB_REQ, &Dbdict::execCREATE_TAB_REQ);  addRecSignal(GSN_CREATE_TAB_REF, &Dbdict::execCREATE_TAB_REF);  addRecSignal(GSN_CREATE_TAB_CONF, &Dbdict::execCREATE_TAB_CONF);  addRecSignal(GSN_CREATE_FRAGMENTATION_REF, &Dbdict::execCREATE_FRAGMENTATION_REF);  addRecSignal(GSN_CREATE_FRAGMENTATION_CONF, &Dbdict::execCREATE_FRAGMENTATION_CONF);  addRecSignal(GSN_DIADDTABCONF, &Dbdict::execDIADDTABCONF);  addRecSignal(GSN_DIADDTABREF, &Dbdict::execDIADDTABREF);  addRecSignal(GSN_ADD_FRAGREQ, &Dbdict::execADD_FRAGREQ);  addRecSignal(GSN_TAB_COMMITCONF, &Dbdict::execTAB_COMMITCONF);  addRecSignal(GSN_TAB_COMMITREF, &Dbdict::execTAB_COMMITREF);  addRecSignal(GSN_ALTER_TABLE_REQ, &Dbdict::execALTER_TABLE_REQ);  addRecSignal(GSN_ALTER_TAB_REQ, &Dbdict::execALTER_TAB_REQ);  addRecSignal(GSN_ALTER_TAB_REF, &Dbdict::execALTER_TAB_REF);  addRecSignal(GSN_ALTER_TAB_CONF, &Dbdict::execALTER_TAB_CONF);  // Index signals  addRecSignal(GSN_CREATE_INDX_REQ, &Dbdict::execCREATE_INDX_REQ);  addRecSignal(GSN_CREATE_INDX_CONF, &Dbdict::execCREATE_INDX_CONF);  addRecSignal(GSN_CREATE_INDX_REF, &Dbdict::execCREATE_INDX_REF);  addRecSignal(GSN_ALTER_INDX_REQ, &Dbdict::execALTER_INDX_REQ);  addRecSignal(GSN_ALTER_INDX_CONF, &Dbdict::execALTER_INDX_CONF);  addRecSignal(GSN_ALTER_INDX_REF, &Dbdict::execALTER_INDX_REF);  addRecSignal(GSN_CREATE_TABLE_CONF, &Dbdict::execCREATE_TABLE_CONF);  addRecSignal(GSN_CREATE_TABLE_REF, &Dbdict::execCREATE_TABLE_REF);  addRecSignal(GSN_DROP_INDX_REQ, &Dbdict::execDROP_INDX_REQ);  addRecSignal(GSN_DROP_INDX_CONF, &Dbdict::execDROP_INDX_CONF);  addRecSignal(GSN_DROP_INDX_REF, &Dbdict::execDROP_INDX_REF);  addRecSignal(GSN_DROP_TABLE_CONF, &Dbdict::execDROP_TABLE_CONF);  addRecSignal(GSN_DROP_TABLE_REF, &Dbdict::execDROP_TABLE_REF);  addRecSignal(GSN_BUILDINDXREQ, &Dbdict::execBUILDINDXREQ);  addRecSignal(GSN_BUILDINDXCONF, &Dbdict::execBUILDINDXCONF);  addRecSignal(GSN_BUILDINDXREF, &Dbdict::execBUILDINDXREF);  // Util signals  addRecSignal(GSN_UTIL_PREPARE_CONF, &Dbdict::execUTIL_PREPARE_CONF);  addRecSignal(GSN_UTIL_PREPARE_REF,  &Dbdict::execUTIL_PREPARE_REF);  addRecSignal(GSN_UTIL_EXECUTE_CONF, &Dbdict::execUTIL_EXECUTE_CONF);  addRecSignal(GSN_UTIL_EXECUTE_REF,  &Dbdict::execUTIL_EXECUTE_REF);  addRecSignal(GSN_UTIL_RELEASE_CONF, &Dbdict::execUTIL_RELEASE_CONF);  addRecSignal(GSN_UTIL_RELEASE_REF,  &Dbdict::execUTIL_RELEASE_REF);  // Event signals  addRecSignal(GSN_CREATE_EVNT_REQ,  &Dbdict::execCREATE_EVNT_REQ);  addRecSignal(GSN_CREATE_EVNT_CONF, &Dbdict::execCREATE_EVNT_CONF);  addRecSignal(GSN_CREATE_EVNT_REF,  &Dbdict::execCREATE_EVNT_REF);  addRecSignal(GSN_CREATE_SUBID_CONF, &Dbdict::execCREATE_SUBID_CONF);  addRecSignal(GSN_CREATE_SUBID_REF,  &Dbdict::execCREATE_SUBID_REF);  addRecSignal(GSN_SUB_CREATE_CONF, &Dbdict::execSUB_CREATE_CONF);  addRecSignal(GSN_SUB_CREATE_REF,  &Dbdict::execSUB_CREATE_REF);  addRecSignal(GSN_SUB_START_REQ,  &Dbdict::execSUB_START_REQ);  addRecSignal(GSN_SUB_START_CONF,  &Dbdict::execSUB_START_CONF);  addRecSignal(GSN_SUB_START_REF,  &Dbdict::execSUB_START_REF);  addRecSignal(GSN_SUB_STOP_REQ,  &Dbdict::execSUB_STOP_REQ);  addRecSignal(GSN_SUB_STOP_CONF,  &Dbdict::execSUB_STOP_CONF);  addRecSignal(GSN_SUB_STOP_REF,  &Dbdict::execSUB_STOP_REF);  addRecSignal(GSN_SUB_SYNC_CONF, &Dbdict::execSUB_SYNC_CONF);  addRecSignal(GSN_SUB_SYNC_REF,  &Dbdict::execSUB_SYNC_REF);  addRecSignal(GSN_DROP_EVNT_REQ,  &Dbdict::execDROP_EVNT_REQ);  addRecSignal(GSN_SUB_REMOVE_REQ, &Dbdict::execSUB_REMOVE_REQ);  addRecSignal(GSN_SUB_REMOVE_CONF, &Dbdict::execSUB_REMOVE_CONF);  addRecSignal(GSN_SUB_REMOVE_REF,  &Dbdict::execSUB_REMOVE_REF);  // Trigger signals  addRecSignal(GSN_CREATE_TRIG_REQ, &Dbdict::execCREATE_TRIG_REQ);  addRecSignal(GSN_CREATE_TRIG_CONF, &Dbdict::execCREATE_TRIG_CONF);  addRecSignal(GSN_CREATE_TRIG_REF, &Dbdict::execCREATE_TRIG_REF);  addRecSignal(GSN_ALTER_TRIG_REQ, &Dbdict::execALTER_TRIG_REQ);  addRecSignal(GSN_ALTER_TRIG_CONF, &Dbdict::execALTER_TRIG_CONF);  addRecSignal(GSN_ALTER_TRIG_REF, &Dbdict::execALTER_TRIG_REF);  addRecSignal(GSN_DROP_TRIG_REQ, &Dbdict::execDROP_TRIG_REQ);  addRecSignal(GSN_DROP_TRIG_CONF, &Dbdict::execDROP_TRIG_CONF);  addRecSignal(GSN_DROP_TRIG_REF, &Dbdict::execDROP_TRIG_REF);  // Received signals  addRecSignal(GSN_HOT_SPAREREP, &Dbdict::execHOT_SPAREREP);  addRecSignal(GSN_GET_SCHEMA_INFOREQ, &Dbdict::execGET_SCHEMA_INFOREQ);  addRecSignal(GSN_SCHEMA_INFO, &Dbdict::execSCHEMA_INFO);  addRecSignal(GSN_SCHEMA_INFOCONF, &Dbdict::execSCHEMA_INFOCONF);  addRecSignal(GSN_DICTSTARTREQ, &Dbdict::execDICTSTARTREQ);  addRecSignal(GSN_READ_NODESCONF, &Dbdict::execREAD_NODESCONF);  addRecSignal(GSN_FSOPENCONF, &Dbdict::execFSOPENCONF);  addRecSignal(GSN_FSOPENREF, &Dbdict::execFSOPENREF, true);  addRecSignal(GSN_FSCLOSECONF, &Dbdict::execFSCLOSECONF);  addRecSignal(GSN_FSWRITECONF, &Dbdict::execFSWRITECONF);  addRecSignal(GSN_FSREADCONF, &Dbdict::execFSREADCONF);  addRecSignal(GSN_FSREADREF, &Dbdict::execFSREADREF, true);  addRecSignal(GSN_LQHFRAGCONF, &Dbdict::execLQHFRAGCONF);  addRecSignal(GSN_LQHADDATTCONF, &Dbdict::execLQHADDATTCONF);  addRecSignal(GSN_LQHADDATTREF, &Dbdict::execLQHADDATTREF);  addRecSignal(GSN_LQHFRAGREF, &Dbdict::execLQHFRAGREF);  addRecSignal(GSN_NDB_STTOR, &Dbdict::execNDB_STTOR);  addRecSignal(GSN_READ_CONFIG_REQ, &Dbdict::execREAD_CONFIG_REQ, true);  addRecSignal(GSN_STTOR, &Dbdict::execSTTOR);  addRecSignal(GSN_TC_SCHVERCONF, &Dbdict::execTC_SCHVERCONF);  addRecSignal(GSN_NODE_FAILREP, &Dbdict::execNODE_FAILREP);  addRecSignal(GSN_INCL_NODEREQ, &Dbdict::execINCL_NODEREQ);  addRecSignal(GSN_API_FAILREQ, &Dbdict::execAPI_FAILREQ);  addRecSignal(GSN_WAIT_GCP_REF, &Dbdict::execWAIT_GCP_REF);  addRecSignal(GSN_WAIT_GCP_CONF, &Dbdict::execWAIT_GCP_CONF);  addRecSignal(GSN_LIST_TABLES_REQ, &Dbdict::execLIST_TABLES_REQ);  addRecSignal(GSN_DROP_TABLE_REQ, &Dbdict::execDROP_TABLE_REQ);    addRecSignal(GSN_PREP_DROP_TAB_REQ, &Dbdict::execPREP_DROP_TAB_REQ);  addRecSignal(GSN_PREP_DROP_TAB_REF, &Dbdict::execPREP_DROP_TAB_REF);  addRecSignal(GSN_PREP_DROP_TAB_CONF, &Dbdict::execPREP_DROP_TAB_CONF);    addRecSignal(GSN_DROP_TAB_REQ, &Dbdict::execDROP_TAB_REQ);  addRecSignal(GSN_DROP_TAB_REF, &Dbdict::execDROP_TAB_REF);  addRecSignal(GSN_DROP_TAB_CONF, &Dbdict::execDROP_TAB_CONF);  addRecSignal(GSN_BACKUP_FRAGMENT_REQ, &Dbdict::execBACKUP_FRAGMENT_REQ);}//Dbdict::Dbdict()Dbdict::~Dbdict() {}//Dbdict::~Dbdict()BLOCK_FUNCTIONS(Dbdict)void Dbdict::initCommonData() {/* ---------------------------------------------------------------- */// Initialise all common variables./* ---------------------------------------------------------------- */  initRetrieveRecord(0, 0, 0);  initSchemaRecord();  initRestartRecord();  initSendSchemaRecord();  initReadTableRecord();  initWriteTableRecord();  initReadSchemaRecord();  initWriteSchemaRecord();  c_masterNodeId = ZNIL;  c_numberNode = 0;  c_noNodesFailed = 0;  c_failureNr = 0;  c_blockState = BS_IDLE;  c_packTable.m_state = PackTable::PTS_IDLE;  c_startPhase = 0;  c_restartType = 255; //Ensure not used restartType  c_tabinfoReceived = 0;  c_initialStart = false;  c_systemRestart = false;  c_initialNodeRestart = false;  c_nodeRestart = false;}//Dbdict::initCommonData()void Dbdict::initRecords() {  initNodeRecords();  initPageRecords();  initTableRecords();  initTriggerRecords();}//Dbdict::initRecords()void Dbdict::initSendSchemaRecord() {  c_sendSchemaRecord.noOfWords = (Uint32)-1;  c_sendSchemaRecord.pageId = RNIL;  c_sendSchemaRecord.noOfWordsCurrentlySent = 0;  c_sendSchemaRecord.noOfSignalsSentSinceDelay = 0;  c_sendSchemaRecord.inUse = false;  //c_sendSchemaRecord.sendSchemaState = SendSchemaRecord::IDLE;}//initSendSchemaRecord()void Dbdict::initReadTableRecord() {  c_readTableRecord.noOfPages = (Uint32)-1;  c_readTableRecord.pageId = RNIL;  c_readTableRecord.tableId = ZNIL;  c_readTableRecord.inUse = false;}//initReadTableRecord()void Dbdict::initWriteTableRecord() {  c_writeTableRecord.noOfPages = (Uint32)-1;  c_writeTableRecord.pageId = RNIL;  c_writeTableRecord.noOfTableFilesHandled = 3;  c_writeTableRecord.tableId = ZNIL;  c_writeTableRecord.tableWriteState = WriteTableRecord::IDLE;}//initWriteTableRecord()void Dbdict::initReadSchemaRecord() {  c_readSchemaRecord.pageId = RNIL;  c_readSchemaRecord.schemaReadState = ReadSchemaRecord::IDLE;}//initReadSchemaRecord()void Dbdict::initWriteSchemaRecord() {  c_writeSchemaRecord.inUse = false;  c_writeSchemaRecord.pageId = RNIL;  c_writeSchemaRecord.noOfSchemaFilesHandled = 3;}//initWriteSchemaRecord()void Dbdict::initRetrieveRecord(Signal* signal, Uint32 i, Uint32 returnCode) {  c_retrieveRecord.busyState = false;  c_retrieveRecord.blockRef = 0;  c_retrieveRecord.m_senderData = RNIL;  c_retrieveRecord.tableId = RNIL;  c_retrieveRecord.currentSent = 0;  c_retrieveRecord.retrievedNoOfPages = 0;  c_retrieveRecord.retrievedNoOfWords = 0;  c_retrieveRecord.m_useLongSig = false;}//initRetrieveRecord()void Dbdict::initSchemaRecord() {  c_schemaRecord.schemaPage = RNIL;  c_schemaRecord.oldSchemaPage = RNIL;}//Dbdict::initSchemaRecord()void Dbdict::initRestartRecord() {  c_restartRecord.gciToRestart = 0;  c_restartRecord.activeTable = ZNIL;}//Dbdict::initRestartRecord()void Dbdict::initNodeRecords() {  jam();  for (unsigned i = 1; i < MAX_NODES; i++) {    NodeRecordPtr nodePtr;    c_nodes.getPtr(nodePtr, i);    nodePtr.p->hotSpare = false;    nodePtr.p->nodeState = NodeRecord::API_NODE;  }//for}//Dbdict::initNodeRecords()void Dbdict::initPageRecords() {  c_retrieveRecord.retrievePage =  ZMAX_PAGES_OF_TABLE_DEFINITION;  ndbrequire(ZNUMBER_OF_PAGES >= (ZMAX_PAGES_OF_TABLE_DEFINITION + 1));  c_schemaRecord.schemaPage = 0;  c_schemaRecord.oldSchemaPage = NDB_SF_MAX_PAGES;}//Dbdict::initPageRecords()void Dbdict::initTableRecords() {  TableRecordPtr tablePtr;  while (1) {    jam();    refresh_watch_dog();    c_tableRecordPool.seize(tablePtr);    if (tablePtr.i == RNIL) {      jam();      break;    }//if    initialiseTableRecord(tablePtr);  }//while}//Dbdict::initTableRecords()void Dbdict::initialiseTableRecord(TableRecordPtr tablePtr) {  tablePtr.p->activePage = RNIL;  tablePtr.p->filePtr[0] = RNIL;  tablePtr.p->filePtr[1] = RNIL;  tablePtr.p->firstAttribute = RNIL;  tablePtr.p->firstPage = RNIL;  tablePtr.p->lastAttribute = RNIL;  tablePtr.p->tableId = tablePtr.i;  tablePtr.p->tableVersion = (Uint32)-1;  tablePtr.p->tabState = TableRecord::NOT_DEFINED;  tablePtr.p->tabReturnState = TableRecord::TRS_IDLE;  tablePtr.p->fragmentType = DictTabInfo::AllNodesSmallTable;  memset(tablePtr.p->tableName, 0, sizeof(tablePtr.p->tableName));  tablePtr.p->gciTableCreated = 0;

⌨️ 快捷键说明

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