void DblqhProxy::execLQHADDATTREQ(Signal* signal) { const LqhAddAttrReq* req = (const LqhAddAttrReq*)signal->getDataPtr(); Uint32 ssId = req->lqhFragPtr; Ss_LQHADDATTREQ& ss = ssSeize<Ss_LQHADDATTREQ>(ssId); const Uint32 reqlength = LqhAddAttrReq::HeaderLength + req->noOfAttributes * LqhAddAttrReq::EntryLength; ndbrequire(signal->getLength() == reqlength); memcpy(&ss.m_req, req, reqlength << 2); ss.m_reqlength = reqlength; /** * Count LQHFRAGREQ, * so that I can release CREATE_TAB_REQ after last attribute has been * processed */ Ss_CREATE_TAB_REQ& ss_main = ssFind<Ss_CREATE_TAB_REQ>(ssId); ndbrequire(ss_main.m_req.noOfAttributes >= req->noOfAttributes); ss_main.m_req.noOfAttributes -= req->noOfAttributes; /* Save long section(s) in ss for forwarding to * workers */ SectionHandle handle(this, signal); saveSections(ss, handle); sendREQ(signal, ss); }
void DbtcProxy::execCREATE_FK_IMPL_REQ(Signal* signal) { jamEntry(); if (!assembleFragments(signal)) { jam(); return; } const CreateFKImplReq* req = (const CreateFKImplReq*)signal->getDataPtr(); Ss_CREATE_FK_IMPL_REQ& ss = ssSeize<Ss_CREATE_FK_IMPL_REQ>(); ss.m_req = *req; SectionHandle handle(this, signal); saveSections(ss, handle); sendREQ(signal, ss); }
void DbgdmProxy::execALTER_TAB_REQ(Signal* signal) { if (!assembleFragments(signal)) { jam(); return; } const AlterTabReq* req = (const AlterTabReq*)signal->getDataPtr(); Uint32 ssId = getSsId(req); Ss_ALTER_TAB_REQ& ss = ssSeize<Ss_ALTER_TAB_REQ>(ssId); ss.m_req = *req; SectionHandle handle(this, signal); saveSections(ss, handle); sendREQ(signal, ss); }