void Dbtux::readTablePk(const Frag& frag, TreeEnt ent, Uint32* pkData, unsigned& pkSize) { const Uint32 tableFragPtrI = frag.m_tupTableFragPtrI; const TupLoc tupLoc = ent.m_tupLoc; int ret = c_tup->tuxReadPk(tableFragPtrI, tupLoc.getPageId(), tupLoc.getPageOffset(), pkData, true); jamEntry(); ndbrequire(ret > 0); pkSize = ret; }
/* * Set handle to point to existing node. */ void Dbtux::selectNode(NodeHandle& node, TupLoc loc) { Frag& frag = node.m_frag; ndbrequire(loc != NullTupLoc); Uint32 pageId = loc.getPageId(); Uint32 pageOffset = loc.getPageOffset(); Uint32* node32 = 0; c_tup->tuxGetNode(frag.m_tupIndexFragPtrI, pageId, pageOffset, node32); node.m_loc = loc; node.m_node = reinterpret_cast<TreeNode*>(node32); ndbrequire(node.m_loc != NullTupLoc && node.m_node != 0); }
void Dbtux::readKeyAttrs(TuxCtx& ctx, const Frag& frag, TreeEnt ent, KeyData& keyData, Uint32 count) { const Index& index = *c_indexPool.getPtr(frag.m_indexId); const DescHead& descHead = getDescHead(index); const AttributeHeader* keyAttrs = getKeyAttrs(descHead); Uint32* const outputBuffer = ctx.c_dataBuffer; #ifdef VM_TRACE ndbrequire(&keyData.get_spec() == &index.m_keySpec); ndbrequire(keyData.get_spec().validate() == 0); ndbrequire(count <= index.m_numAttrs); #endif const TupLoc tupLoc = ent.m_tupLoc; const Uint32 pageId = tupLoc.getPageId(); const Uint32 pageOffset = tupLoc.getPageOffset(); const Uint32 tupVersion = ent.m_tupVersion; const Uint32 tableFragPtrI = frag.m_tupTableFragPtrI; const Uint32* keyAttrs32 = (const Uint32*)&keyAttrs[0]; int ret; ret = c_tup->tuxReadAttrs(ctx.jamBuffer, tableFragPtrI, pageId, pageOffset, tupVersion, keyAttrs32, count, outputBuffer, false); jamEntry(); ndbrequire(ret > 0); keyData.reset(); Uint32 len; ret = keyData.add_poai(outputBuffer, count, &len); ndbrequire(ret == 0); ret = keyData.finalize(); ndbrequire(ret == 0); #ifdef VM_TRACE if (debugFlags & (DebugMaint | DebugScan)) { debugOut << "readKeyAttrs: "; debugOut << " ent:" << ent << " count:" << count; debugOut << " data:" << keyData.print(ctx.c_debugBuffer, DebugBufferBytes); debugOut << endl; } #endif }