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

📄 dbtupgen.cpp

📁 mysql-5.0.22.tar.gz源码包
💻 CPP
📖 第 1 页 / 共 3 页
字号:
  case CHECKPOINT_UNDO_WRITE:    ljam();    freeDiskBufferSegmentRecord(signal, dbsiPtr);    break;  default:    ndbrequire(false);    break;  }//switch  return;}//Dbtup::execFSWRITECONF()void Dbtup::execCONTINUEB(Signal* signal) {  ljamEntry();  Uint32 actionType = signal->theData[0];  Uint32 dataPtr = signal->theData[1];  switch (actionType) {  case ZSTART_EXEC_UNDO_LOG:    ljam();    startExecUndoLogLab(signal, dataPtr);    break;  case ZCONT_SAVE_DP:    ljam();    lcpSaveDataPageLab(signal, dataPtr);    break;  case ZCONT_START_SAVE_CL:  {    CheckpointInfoPtr ciPtr;    ljam();    ciPtr.i = dataPtr;    ptrCheckGuard(ciPtr, cnoOfLcpRec, checkpointInfo);    lcpSaveCopyListLab(signal, ciPtr);    break;  }  case ZCONT_EXECUTE_LC:  {    LocalLogInfoPtr lliPtr;    DiskBufferSegmentInfoPtr dbsiPtr;    ljam();    lliPtr.i = dataPtr;    ptrCheckGuard(lliPtr, cnoOfParallellUndoFiles, localLogInfo);    dbsiPtr.i = lliPtr.p->lliUndoBufferSegmentP;    ptrCheckGuard(dbsiPtr, cnoOfConcurrentWriteOp, diskBufferSegmentInfo);    xlcGetNextRecordLab(signal, dbsiPtr, lliPtr);    break;  }  case ZCONT_LOAD_DP:  {    DiskBufferSegmentInfoPtr dbsiPtr;    RestartInfoRecordPtr riPtr;    ljam();    riPtr.i = dataPtr;    ptrCheckGuard(riPtr, cnoOfRestartInfoRec, restartInfoRecord);    dbsiPtr.i = riPtr.p->sriDataBufferSegmentP;    ptrCheckGuard(dbsiPtr, cnoOfConcurrentWriteOp, diskBufferSegmentInfo);    rfrLoadDataPagesLab(signal, riPtr, dbsiPtr);    break;  }  case ZLOAD_BAL_LCP_TIMER:    ljam();    clblPageCounter = clblPagesPerTick;    signal->theData[0] = ZLOAD_BAL_LCP_TIMER;    sendSignalWithDelay(cownref, GSN_CONTINUEB, signal, 400, 1);    break;  case ZINITIALISE_RECORDS:    ljam();    initialiseRecordsLab(signal, dataPtr, 			 signal->theData[2], signal->theData[3]);    break;  case ZREL_FRAG:    ljam();    releaseFragment(signal, dataPtr);    break;  case ZREPORT_MEMORY_USAGE:{    ljam();    static int c_currentMemUsed = 0;    int now = (cnoOfAllocatedPages * 100)/cnoOfPage;    const int thresholds[] = { 100, 90, 80, 0 };        Uint32 i = 0;    const Uint32 sz = sizeof(thresholds)/sizeof(thresholds[0]);    for(i = 0; i<sz; i++){      if(now >= thresholds[i]){	now = thresholds[i];	break;      }    }    if(now != c_currentMemUsed){      reportMemoryUsage(signal, now > c_currentMemUsed ? 1 : -1);      c_currentMemUsed = now;    }    signal->theData[0] = ZREPORT_MEMORY_USAGE;    sendSignalWithDelay(reference(), GSN_CONTINUEB, signal, 2000, 1);        return;  }  case ZBUILD_INDEX:    ljam();    buildIndex(signal, dataPtr);    break;  default:    ndbrequire(false);    break;  }//switch}//Dbtup::execTUP_CONTINUEB()/* **************************************************************** *//* ---------------------------------------------------------------- *//* ------------------- SYSTEM RESTART MODULE ---------------------- *//* ---------------------------------------------------------------- *//* **************************************************************** */void Dbtup::execSTTOR(Signal* signal) {  ljamEntry();  Uint32 startPhase = signal->theData[1];  Uint32 sigKey = signal->theData[6];  switch (startPhase) {  case ZSTARTPHASE1:    ljam();    CLEAR_ERROR_INSERT_VALUE;    cownref = calcTupBlockRef(0);    break;  default:    ljam();    break;  }//switch  signal->theData[0] = sigKey;  signal->theData[1] = 3;  signal->theData[2] = 2;  signal->theData[3] = ZSTARTPHASE1;  signal->theData[4] = 255;  sendSignal(NDBCNTR_REF, GSN_STTORRY, signal, 5, JBB);  return;}//Dbtup::execSTTOR()/************************************************************************************************/// SIZE_ALTREP INITIALIZE DATA STRUCTURES, FILES AND DS VARIABLES, GET READY FOR EXTERNAL // CONNECTIONS./************************************************************************************************/void Dbtup::execREAD_CONFIG_REQ(Signal* signal) {  const ReadConfigReq * req = (ReadConfigReq*)signal->getDataPtr();  Uint32 ref = req->senderRef;  Uint32 senderData = req->senderData;  ndbrequire(req->noOfParameters == 0);    ljamEntry();  const ndb_mgm_configuration_iterator * p =     theConfiguration.getOwnConfigIterator();  ndbrequire(p != 0);    Uint32 log_page_size= 0;  ndb_mgm_get_int_parameter(p, CFG_DB_UNDO_DATA_BUFFER,  			    &log_page_size);  /**   * Always set page size in half MBytes   */  cnoOfUndoPage= (log_page_size / sizeof(UndoPage));  Uint32 mega_byte_part= cnoOfUndoPage & 15;  if (mega_byte_part != 0) {    jam();    cnoOfUndoPage+= (16 - mega_byte_part);  }  ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_TUP_FRAG, &cnoOfFragrec));  ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_TUP_OP_RECS, &cnoOfOprec));    ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_TUP_PAGE, &cnoOfPage));  Uint32 noOfTriggers= 0;    Uint32 tmp= 0;  ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_TUP_PAGE_RANGE, &tmp));  initPageRangeSize(tmp);  ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_TUP_TABLE, &cnoOfTablerec));  ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_TUP_TABLE_DESC, 					&cnoOfTabDescrRec));  Uint32 noOfStoredProc;  ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_TUP_STORED_PROC, 					&noOfStoredProc));  ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_DB_NO_TRIGGERS, 					&noOfTriggers));  Uint32 nScanOp;       // use TUX config for now  ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_TUX_SCAN_OP, &nScanOp));  cnoOfTabDescrRec = (cnoOfTabDescrRec & 0xFFFFFFF0) + 16;  initRecords();  c_storedProcPool.setSize(noOfStoredProc);  c_buildIndexPool.setSize(c_noOfBuildIndexRec);  c_triggerPool.setSize(noOfTriggers);  c_scanOpPool.setSize(nScanOp);  czero = 0;  cminusOne = czero - 1;  clastBitMask = 1;  clastBitMask = clastBitMask << 31;  cnoOfLocalLogInfo = 0;  cnoFreeUndoSeg = 0;  initialiseRecordsLab(signal, 0, ref, senderData);  clblPagesPerTick = 50;  ndb_mgm_get_int_parameter(p, CFG_DB_LCP_DISC_PAGES_TUP_SR, 			    &clblPagesPerTick);  clblPagesPerTickAfterSr = 50;  ndb_mgm_get_int_parameter(p, CFG_DB_LCP_DISC_PAGES_TUP, 			    &clblPagesPerTickAfterSr);}//Dbtup::execSIZEALT_REP()void Dbtup::initRecords() {  unsigned i;  // Records with dynamic sizes  page = (Page*)allocRecord("Page", 			    sizeof(Page), 			    cnoOfPage,			    false);    undoPage = (UndoPage*)allocRecord("UndoPage",				    sizeof(UndoPage),				    cnoOfUndoPage);    operationrec = (Operationrec*)allocRecord("Operationrec",					    sizeof(Operationrec),					    cnoOfOprec);  attrbufrec = (Attrbufrec*)allocRecord("Attrbufrec", 					sizeof(Attrbufrec), 					cnoOfAttrbufrec);  checkpointInfo = (CheckpointInfo*)allocRecord("CheckpointInfo",						sizeof(CheckpointInfo), 						cnoOfLcpRec);  diskBufferSegmentInfo = (DiskBufferSegmentInfo*)    allocRecord("DiskBufferSegmentInfo",		sizeof(DiskBufferSegmentInfo), 		cnoOfConcurrentWriteOp);  fragoperrec = (Fragoperrec*)allocRecord("Fragoperrec",					  sizeof(Fragoperrec),					  cnoOfFragoprec);  fragrecord = (Fragrecord*)allocRecord("Fragrecord",					sizeof(Fragrecord), 					cnoOfFragrec);    for (i = 0; i<cnoOfFragrec; i++) {    void * p = &fragrecord[i];    new (p) Fragrecord(c_scanOpPool);  }  hostBuffer = (HostBuffer*)allocRecord("HostBuffer",					sizeof(HostBuffer), 					MAX_NODES);  localLogInfo = (LocalLogInfo*)allocRecord("LocalLogInfo",					    sizeof(LocalLogInfo), 					    cnoOfParallellUndoFiles);  pageRange = (PageRange*)allocRecord("PageRange",				      sizeof(PageRange), 				      cnoOfPageRangeRec);    pendingFileOpenInfo = (PendingFileOpenInfo*)    allocRecord("PendingFileOpenInfo",		sizeof(PendingFileOpenInfo), 		cnoOfConcurrentOpenOp);    restartInfoRecord = (RestartInfoRecord*)    allocRecord("RestartInfoRecord",		sizeof(RestartInfoRecord),		cnoOfRestartInfoRec);    tablerec = (Tablerec*)allocRecord("Tablerec",				    sizeof(Tablerec), 				    cnoOfTablerec);    for (i = 0; i<cnoOfTablerec; i++) {    void * p = &tablerec[i];    new (p) Tablerec(c_triggerPool);  }    tableDescriptor = (TableDescriptor*)    allocRecord("TableDescriptor",		sizeof(TableDescriptor),		cnoOfTabDescrRec);    // Initialize BAT for interface to file system  NewVARIABLE* bat = allocateBat(3);  bat[1].WA = &page->pageWord[0];  bat[1].nrr = cnoOfPage;  bat[1].ClusterSize = sizeof(Page);  bat[1].bits.q = 13; /* 8192 words/page */  bat[1].bits.v = 5;  bat[2].WA = &undoPage->undoPageWord[0];  bat[2].nrr = cnoOfUndoPage;  bat[2].ClusterSize = sizeof(UndoPage);  bat[2].bits.q = 13; /* 8192 words/page */  bat[2].bits.v = 5;}//Dbtup::initRecords()void Dbtup::initialiseRecordsLab(Signal* signal, Uint32 switchData,				 Uint32 retRef, Uint32 retData) {  switch (switchData) {  case 0:    ljam();    initializeHostBuffer();    break;  case 1:    ljam();    initializeOperationrec();    break;  case 2:    ljam();    initializePage();    break;  case 3:    ljam();    initializeUndoPage();    break;  case 4:    ljam();    initializeTablerec();    break;  case 5:    ljam();    initializeCheckpointInfoRec();    break;  case 6:    ljam();    initializeFragrecord();    break;  case 7:    ljam();    initializeFragoperrec();    break;  case 8:    ljam();    initializePageRange();    break;  case 9:    ljam();    initializeTabDescr();    break;  case 10:    ljam();    initializeDiskBufferSegmentRecord();    break;  case 11:    ljam();    initializeLocalLogInfo();    break;  case 12:    ljam();    initializeAttrbufrec();    break;  case 13:    ljam();    initializePendingFileOpenInfoRecord();    break;  case 14:    ljam();    initializeRestartInfoRec();    {      ReadConfigConf * conf = (ReadConfigConf*)signal->getDataPtrSend();      conf->senderRef = reference();      conf->senderData = retData;      sendSignal(retRef, GSN_READ_CONFIG_CONF, signal, 		 ReadConfigConf::SignalLength, JBB);    }    return;  default:    ndbrequire(false);    break;  }//switch  signal->theData[0] = ZINITIALISE_RECORDS;  signal->theData[1] = switchData + 1;  signal->theData[2] = retRef;  signal->theData[3] = retData;  sendSignal(reference(), GSN_CONTINUEB, signal, 4, JBB);  return;}//Dbtup::initialiseRecordsLab()void Dbtup::execNDB_STTOR(Signal* signal) {  ljamEntry();  cndbcntrRef = signal->theData[0];  Uint32 ownNodeId = signal->theData[1];  Uint32 startPhase = signal->theData[2];  switch (startPhase) {  case ZSTARTPHASE1:    ljam();    cownNodeId = ownNodeId;    cownref = calcTupBlockRef(ownNodeId);    break;  case ZSTARTPHASE2:    ljam();    break;  case ZSTARTPHASE3:    ljam();    startphase3Lab(signal, ~0, ~0);    break;  case ZSTARTPHASE4:    ljam();    break;  case ZSTARTPHASE6:    ljam();/*****************************************//*       NOW SET THE DISK WRITE SPEED TO *//*       PAGES PER TICK AFTER SYSTEM     *//*       RESTART.                        *//*****************************************/    clblPagesPerTick = clblPagesPerTickAfterSr;    signal->theData[0] = ZREPORT_MEMORY_USAGE;    sendSignalWithDelay(reference(), GSN_CONTINUEB, signal, 2000, 1);        break;  default:    ljam();    break;  }//switch  signal->theData[0] = cownref;  sendSignal(cndbcntrRef, GSN_NDB_STTORRY, signal, 1, JBB);}//Dbtup::execNDB_STTOR()void Dbtup::startphase3Lab(Signal* signal, Uint32 config1, Uint32 config2) {  clblPageCounter = clblPagesPerTick;  signal->theData[0] = ZLOAD_BAL_LCP_TIMER;  sendSignalWithDelay(cownref, GSN_CONTINUEB, signal, 100, 1);}//Dbtup::startphase3Lab()void Dbtup::initializeAttrbufrec() 

⌨️ 快捷键说明

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