📄 dbtux.hpp
字号:
inline Uint32Dbtux::TupLoc::getPageOffset() const{ return (Uint32)m_pageOffset;}inline voidDbtux::TupLoc::setPageOffset(Uint32 pageOffset){ m_pageOffset = (Uint16)pageOffset;}inline boolDbtux::TupLoc::operator==(const TupLoc& loc) const{ return m_pageId1 == loc.m_pageId1 && m_pageId2 == loc.m_pageId2 && m_pageOffset == loc.m_pageOffset;}inline boolDbtux::TupLoc::operator!=(const TupLoc& loc) const{ return ! (*this == loc);}// Dbtux::TreeEntinlineDbtux::TreeEnt::TreeEnt() : m_tupLoc(), m_tupVersion(0), m_fragBit(0){}inline boolDbtux::TreeEnt::eq(const TreeEnt ent) const{ return m_tupLoc == ent.m_tupLoc && m_tupVersion == ent.m_tupVersion && m_fragBit == ent.m_fragBit;}inline intDbtux::TreeEnt::cmp(const TreeEnt ent) const{ if (m_tupLoc.getPageId() < ent.m_tupLoc.getPageId()) return -1; if (m_tupLoc.getPageId() > ent.m_tupLoc.getPageId()) return +1; if (m_tupLoc.getPageOffset() < ent.m_tupLoc.getPageOffset()) return -1; if (m_tupLoc.getPageOffset() > ent.m_tupLoc.getPageOffset()) return +1; if (m_tupVersion < ent.m_tupVersion) return -1; if (m_tupVersion > ent.m_tupVersion) return +1; if (m_fragBit < ent.m_fragBit) return -1; if (m_fragBit > ent.m_fragBit) return +1; return 0;}// Dbtux::TreeNodeinlineDbtux::TreeNode::TreeNode() : m_side(2), m_balance(0 + 1), pad1(0), m_occup(0), m_nodeScan(RNIL){ m_link[0] = NullTupLoc; m_link[1] = NullTupLoc; m_link[2] = NullTupLoc;}// Dbtux::TreeHeadinlineDbtux::TreeHead::TreeHead() : m_nodeSize(0), m_prefSize(0), m_minOccup(0), m_maxOccup(0), m_root(){}inline unsignedDbtux::TreeHead::getSize(AccSize acc) const{ switch (acc) { case AccNone: return 0; case AccHead: return NodeHeadSize; case AccPref: return NodeHeadSize + m_prefSize + 2 * TreeEntSize; case AccFull: return m_nodeSize; } return 0;}inline Dbtux::DataDbtux::TreeHead::getPref(TreeNode* node) const{ Uint32* ptr = (Uint32*)node + NodeHeadSize; return ptr;}inline Dbtux::TreeEnt*Dbtux::TreeHead::getEntList(TreeNode* node) const{ Uint32* ptr = (Uint32*)node + NodeHeadSize + m_prefSize; return (TreeEnt*)ptr;}// Dbtux::TreePosinlineDbtux::TreePos::TreePos() : m_loc(), m_pos(ZNIL), m_match(false), m_dir(255){}// Dbtux::DescPageinlineDbtux::DescPage::DescPage() : m_nextPage(RNIL), m_numFree(ZNIL){ for (unsigned i = 0; i < DescPageSize; i++) {#ifdef VM_TRACE m_data[i] = 0x13571357;#else m_data[i] = 0;#endif }}// Dbtux::ScanOpinlineDbtux::ScanOp::ScanOp(ScanBoundPool& scanBoundPool) : m_state(Undef), m_lockwait(false), m_userPtr(RNIL), m_userRef(RNIL), m_tableId(RNIL), m_indexId(RNIL), m_fragPtrI(RNIL), m_transId1(0), m_transId2(0), m_savePointId(0), m_accLockOp(RNIL), m_readCommitted(0), m_lockMode(0), m_descending(0), m_boundMin(scanBoundPool), m_boundMax(scanBoundPool), m_scanPos(), m_scanEnt(), m_nodeScan(RNIL), m_maxAccLockOps(0){ m_bound[0] = &m_boundMin; m_bound[1] = &m_boundMax; m_boundCnt[0] = 0; m_boundCnt[1] = 0;#ifdef VM_TRACE for (unsigned i = 0; i < MaxAccLockOps; i++) { m_accLockOps[i] = 0x1f1f1f1f; }#endif}// Dbtux::IndexinlineDbtux::Index::Index() : m_state(NotDefined), m_tableType(DictTabInfo::UndefTableType), m_tableId(RNIL), m_numFrags(0), m_descPage(RNIL), m_descOff(0), m_numAttrs(0), m_storeNullKey(false){ for (unsigned i = 0; i < MaxIndexFragments; i++) { m_fragId[i] = ZNIL; m_fragPtrI[i] = RNIL; };}// Dbtux::FraginlineDbtux::Frag::Frag(ArrayPool<ScanOp>& scanOpPool) : m_tableId(RNIL), m_indexId(RNIL), m_fragId(ZNIL), m_descPage(RNIL), m_descOff(0), m_numAttrs(ZNIL), m_storeNullKey(false), m_tree(), m_freeLoc(), m_scanList(scanOpPool), m_tupIndexFragPtrI(RNIL){ m_tupTableFragPtrI[0] = RNIL; m_tupTableFragPtrI[1] = RNIL; m_accTableFragPtrI[0] = RNIL; m_accTableFragPtrI[1] = RNIL;}// Dbtux::FragOpinlineDbtux::FragOp::FragOp() : m_userPtr(RNIL), m_userRef(RNIL), m_indexId(RNIL), m_fragId(ZNIL), m_fragPtrI(RNIL), m_fragNo(ZNIL), m_numAttrsRecvd(ZNIL){}// Dbtux::NodeHandleinlineDbtux::NodeHandle::NodeHandle(Frag& frag) : m_frag(frag), m_loc(), m_node(0){}inlineDbtux::NodeHandle::NodeHandle(const NodeHandle& node) : m_frag(node.m_frag), m_loc(node.m_loc), m_node(node.m_node){}inline Dbtux::NodeHandle&Dbtux::NodeHandle::operator=(const NodeHandle& node){ ndbassert(&m_frag == &node.m_frag); m_loc = node.m_loc; m_node = node.m_node; return *this;}inline boolDbtux::NodeHandle::isNull(){ return m_node == 0;}inline Dbtux::TupLocDbtux::NodeHandle::getLink(unsigned i){ ndbrequire(i <= 2); return m_node->m_link[i];}inline unsignedDbtux::NodeHandle::getChilds(){ return (m_node->m_link[0] != NullTupLoc) + (m_node->m_link[1] != NullTupLoc);}inline unsignedDbtux::NodeHandle::getSide(){ return m_node->m_side;}inline unsignedDbtux::NodeHandle::getOccup(){ return m_node->m_occup;}inline intDbtux::NodeHandle::getBalance(){ return (int)m_node->m_balance - 1;}inline Uint32Dbtux::NodeHandle::getNodeScan(){ return m_node->m_nodeScan;}inline voidDbtux::NodeHandle::setLink(unsigned i, TupLoc loc){ ndbrequire(i <= 2); m_node->m_link[i] = loc;}inline voidDbtux::NodeHandle::setSide(unsigned i){ ndbrequire(i <= 2); m_node->m_side = i;}inline voidDbtux::NodeHandle::setOccup(unsigned n){ TreeHead& tree = m_frag.m_tree; ndbrequire(n <= tree.m_maxOccup); m_node->m_occup = n;}inline voidDbtux::NodeHandle::setBalance(int b){ ndbrequire(abs(b) <= 1); m_node->m_balance = (unsigned)(b + 1);}inline voidDbtux::NodeHandle::setNodeScan(Uint32 scanPtrI){ m_node->m_nodeScan = scanPtrI;}inline Dbtux::DataDbtux::NodeHandle::getPref(){ TreeHead& tree = m_frag.m_tree; return tree.getPref(m_node);}inline Dbtux::TreeEntDbtux::NodeHandle::getEnt(unsigned pos){ TreeHead& tree = m_frag.m_tree; TreeEnt* entList = tree.getEntList(m_node); const unsigned occup = m_node->m_occup; ndbrequire(pos < occup); return entList[(1 + pos) % occup];}inline Dbtux::TreeEntDbtux::NodeHandle::getMinMax(unsigned i){ const unsigned occup = m_node->m_occup; ndbrequire(i <= 1 && occup != 0); return getEnt(i == 0 ? 0 : occup - 1);}// parameters for methods#ifdef VM_TRACEinlineDbtux::PrintPar::PrintPar() : // caller fills in m_path(), m_side(255), m_parent(), // default return values m_depth(0), m_occup(0), m_ok(true){}#endif// utilsinline Dbtux::DescEnt&Dbtux::getDescEnt(Uint32 descPage, Uint32 descOff){ DescPagePtr pagePtr; pagePtr.i = descPage; c_descPagePool.getPtr(pagePtr); ndbrequire(descOff < DescPageSize); DescEnt* descEnt = (DescEnt*)&pagePtr.p->m_data[descOff]; return *descEnt;}inline Uint32Dbtux::getTupAddr(const Frag& frag, TreeEnt ent){ const Uint32 tableFragPtrI = frag.m_tupTableFragPtrI[ent.m_fragBit]; const TupLoc tupLoc = ent.m_tupLoc; Uint32 tupAddr = NullTupAddr; c_tup->tuxGetTupAddr(tableFragPtrI, tupLoc.getPageId(), tupLoc.getPageOffset(), tupAddr); jamEntry(); return tupAddr;}inline unsignedDbtux::min(unsigned x, unsigned y){ return x < y ? x : y;}inline unsignedDbtux::max(unsigned x, unsigned y){ return x > y ? x : y;}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -