📄 dblqhinit.cpp
字号:
/* Copyright (C) 2003 MySQL AB This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */#include <pc.hpp>#define DBLQH_C#include "Dblqh.hpp"#include <ndb_limits.h>#define DEBUG(x) { ndbout << "LQH::" << x << endl; }void Dblqh::initData() { caddfragrecFileSize = ZADDFRAGREC_FILE_SIZE; cattrinbufFileSize = ZATTRINBUF_FILE_SIZE; c_no_attrinbuf_recs= ZATTRINBUF_FILE_SIZE; cdatabufFileSize = ZDATABUF_FILE_SIZE; cfragrecFileSize = 0; cgcprecFileSize = ZGCPREC_FILE_SIZE; chostFileSize = MAX_NDB_NODES; clcpFileSize = ZNO_CONCURRENT_LCP; clcpLocrecFileSize = ZLCP_LOCREC_FILE_SIZE; clfoFileSize = ZLFO_FILE_SIZE; clogFileFileSize = 0; clogPartFileSize = ZLOG_PART_FILE_SIZE; cpageRefFileSize = ZPAGE_REF_FILE_SIZE; cscanrecFileSize = ZSCANREC_FILE_SIZE; ctabrecFileSize = 0; ctcConnectrecFileSize = 0; ctcNodeFailrecFileSize = MAX_NDB_NODES; addFragRecord = 0; attrbuf = 0; databuf = 0; fragrecord = 0; gcpRecord = 0; hostRecord = 0; lcpRecord = 0; lcpLocRecord = 0; logPartRecord = 0; logFileRecord = 0; logFileOperationRecord = 0; logPageRecord = 0; pageRefRecord = 0; tablerec = 0; tcConnectionrec = 0; tcNodeFailRecord = 0; // Records with constant sizes cLqhTimeOutCount = 0; cLqhTimeOutCheckCount = 0; cbookedAccOps = 0; c_redo_log_complete_frags = RNIL;}//Dblqh::initData()void Dblqh::initRecords() { // Records with dynamic sizes addFragRecord = (AddFragRecord*)allocRecord("AddFragRecord", sizeof(AddFragRecord), caddfragrecFileSize); attrbuf = (Attrbuf*)allocRecord("Attrbuf", sizeof(Attrbuf), cattrinbufFileSize); databuf = (Databuf*)allocRecord("Databuf", sizeof(Databuf), cdatabufFileSize); fragrecord = (Fragrecord*)allocRecord("Fragrecord", sizeof(Fragrecord), cfragrecFileSize); gcpRecord = (GcpRecord*)allocRecord("GcpRecord", sizeof(GcpRecord), cgcprecFileSize); hostRecord = (HostRecord*)allocRecord("HostRecord", sizeof(HostRecord), chostFileSize); lcpRecord = (LcpRecord*)allocRecord("LcpRecord", sizeof(LcpRecord), clcpFileSize); for(Uint32 i = 0; i<clcpFileSize; i++){ new (&lcpRecord[i])LcpRecord(); } lcpLocRecord = (LcpLocRecord*)allocRecord("LcpLocRecord", sizeof(LcpLocRecord), clcpLocrecFileSize); logPartRecord = (LogPartRecord*)allocRecord("LogPartRecord", sizeof(LogPartRecord), clogPartFileSize); logFileRecord = (LogFileRecord*)allocRecord("LogFileRecord", sizeof(LogFileRecord), clogFileFileSize); logFileOperationRecord = (LogFileOperationRecord*) allocRecord("LogFileOperationRecord", sizeof(LogFileOperationRecord), clfoFileSize); logPageRecord = (LogPageRecord*)allocRecord("LogPageRecord", sizeof(LogPageRecord), clogPageFileSize, false); pageRefRecord = (PageRefRecord*)allocRecord("PageRefRecord", sizeof(PageRefRecord), cpageRefFileSize); cscanNoFreeRec = cscanrecFileSize; c_scanRecordPool.setSize(cscanrecFileSize); c_scanTakeOverHash.setSize(64); tablerec = (Tablerec*)allocRecord("Tablerec", sizeof(Tablerec), ctabrecFileSize); tcConnectionrec = (TcConnectionrec*)allocRecord("TcConnectionrec", sizeof(TcConnectionrec), ctcConnectrecFileSize); m_commitAckMarkerPool.setSize(ctcConnectrecFileSize); m_commitAckMarkerHash.setSize(1024); tcNodeFailRecord = (TcNodeFailRecord*)allocRecord("TcNodeFailRecord", sizeof(TcNodeFailRecord), ctcNodeFailrecFileSize); /* ndbout << "FRAGREC SIZE = " << sizeof(Fragrecord) << endl; ndbout << "TAB SIZE = " << sizeof(Tablerec) << endl; ndbout << "GCP SIZE = " << sizeof(GcpRecord) << endl; ndbout << "LCP SIZE = " << sizeof(LcpRecord) << endl; ndbout << "LCPLOC SIZE = " << sizeof(LcpLocRecord) << endl; ndbout << "LOGPART SIZE = " << sizeof(LogPartRecord) << endl; ndbout << "LOGFILE SIZE = " << sizeof(LogFileRecord) << endl; ndbout << "TC SIZE = " << sizeof(TcConnectionrec) << endl; ndbout << "HOST SIZE = " << sizeof(HostRecord) << endl; ndbout << "LFO SIZE = " << sizeof(LogFileOperationRecord) << endl; ndbout << "PR SIZE = " << sizeof(PageRefRecord) << endl; ndbout << "SCAN SIZE = " << sizeof(ScanRecord) << endl;*/ // Initialize BAT for interface to file system NewVARIABLE* bat = allocateBat(2); bat[1].WA = &logPageRecord->logPageWord[0]; bat[1].nrr = clogPageFileSize; bat[1].ClusterSize = sizeof(LogPageRecord); bat[1].bits.q = ZTWOLOG_PAGE_SIZE; bat[1].bits.v = 5;}//Dblqh::initRecords()Dblqh::Dblqh(const class Configuration & conf): SimulatedBlock(DBLQH, conf), m_commitAckMarkerHash(m_commitAckMarkerPool), c_scanTakeOverHash(c_scanRecordPool){ Uint32 log_page_size= 0; BLOCK_CONSTRUCTOR(Dblqh); const ndb_mgm_configuration_iterator * p = conf.getOwnConfigIterator(); ndbrequire(p != 0); ndb_mgm_get_int_parameter(p, CFG_DB_REDO_BUFFER, &log_page_size); /** * Always set page size in half MBytes */ clogPageFileSize= (log_page_size / sizeof(LogPageRecord)); Uint32 mega_byte_part= clogPageFileSize & 15; if (mega_byte_part != 0) { jam(); clogPageFileSize+= (16 - mega_byte_part); } addRecSignal(GSN_PACKED_SIGNAL, &Dblqh::execPACKED_SIGNAL); addRecSignal(GSN_DEBUG_SIG, &Dblqh::execDEBUG_SIG); addRecSignal(GSN_ATTRINFO, &Dblqh::execATTRINFO); addRecSignal(GSN_KEYINFO, &Dblqh::execKEYINFO); addRecSignal(GSN_LQHKEYREQ, &Dblqh::execLQHKEYREQ); addRecSignal(GSN_LQHKEYREF, &Dblqh::execLQHKEYREF); addRecSignal(GSN_COMMIT, &Dblqh::execCOMMIT); addRecSignal(GSN_COMPLETE, &Dblqh::execCOMPLETE); addRecSignal(GSN_LQHKEYCONF, &Dblqh::execLQHKEYCONF);#ifdef VM_TRACE addRecSignal(GSN_TESTSIG, &Dblqh::execTESTSIG);#endif addRecSignal(GSN_LQH_RESTART_OP, &Dblqh::execLQH_RESTART_OP); addRecSignal(GSN_CONTINUEB, &Dblqh::execCONTINUEB); addRecSignal(GSN_START_RECREQ, &Dblqh::execSTART_RECREQ); addRecSignal(GSN_START_RECCONF, &Dblqh::execSTART_RECCONF); addRecSignal(GSN_EXEC_FRAGREQ, &Dblqh::execEXEC_FRAGREQ); addRecSignal(GSN_EXEC_FRAGCONF, &Dblqh::execEXEC_FRAGCONF); addRecSignal(GSN_EXEC_FRAGREF, &Dblqh::execEXEC_FRAGREF); addRecSignal(GSN_START_EXEC_SR, &Dblqh::execSTART_EXEC_SR); addRecSignal(GSN_EXEC_SRREQ, &Dblqh::execEXEC_SRREQ); addRecSignal(GSN_EXEC_SRCONF, &Dblqh::execEXEC_SRCONF); addRecSignal(GSN_SCAN_HBREP, &Dblqh::execSCAN_HBREP); addRecSignal(GSN_ALTER_TAB_REQ, &Dblqh::execALTER_TAB_REQ); // Trigger signals, transit to from TUP addRecSignal(GSN_CREATE_TRIG_REQ, &Dblqh::execCREATE_TRIG_REQ); addRecSignal(GSN_CREATE_TRIG_CONF, &Dblqh::execCREATE_TRIG_CONF); addRecSignal(GSN_CREATE_TRIG_REF, &Dblqh::execCREATE_TRIG_REF);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -