void DblqhProxy::execEXEC_SR_2(Signal* signal, GlobalSignalNumber gsn) { ndbrequire(signal->getLength() == Ss_EXEC_SR_2::Sig::SignalLength); const Ss_EXEC_SR_2::Sig* sig = (const Ss_EXEC_SR_2::Sig*)signal->getDataPtr(); Uint32 ssId = getSsId(sig); bool found = false; Ss_EXEC_SR_2& ss = ssFindSeize<Ss_EXEC_SR_2>(ssId, &found); if (!found) { jam(); setMask(ss); } ndbrequire(sig->nodeId == getOwnNodeId()); if (ss.m_sigcount == 0) { jam(); ss.m_gsn = gsn; ss.m_sig = *sig; } else { jam(); ndbrequire(ss.m_gsn == gsn); ndbrequire(memcmp(&ss.m_sig, sig, sizeof(*sig)) == 0); } ss.m_sigcount++; // reversed roles recvCONF(signal, ss); }
void PgmanProxy::execEND_LCP_REQ(Signal* signal) { const EndLcpReq* req = (const EndLcpReq*)signal->getDataPtr(); Uint32 ssId = getSsId(req); Ss_END_LCP_REQ& ss = ssSeize<Ss_END_LCP_REQ>(ssId); ss.m_req = *req; const Uint32 sb = refToBlock(ss.m_req.senderRef); ndbrequire(sb == DBLQH || sb == LGMAN); if (sb == LGMAN) { jam(); /* * At end of UNDO execution. Extra PGMAN worker was used to * read up TUP pages. Release these pages now. */ ReleasePagesReq* req = (ReleasePagesReq*)signal->getDataPtrSend(); req->senderData = ssId; req->senderRef = reference(); req->requestType = ReleasePagesReq::RT_RELEASE_UNLOCKED; req->requestData = 0; sendSignal(extraWorkerRef(), GSN_RELEASE_PAGES_REQ, signal, ReleasePagesReq::SignalLength, JBB); return; } sendREQ(signal, ss); }
void DblqhProxy::execSTART_RECREQ(Signal* signal) { if (refToMain(signal->getSendersBlockRef()) == DBLQH) { jam(); execSTART_RECREQ_2(signal); return; } const StartRecReq* req = (const StartRecReq*)signal->getDataPtr(); Ss_START_RECREQ& ss = ssSeize<Ss_START_RECREQ>(); ss.m_req = *req; // seize records for sub-ops Uint32 i; for (i = 0; i < ss.m_req2cnt; i++) { Ss_START_RECREQ_2::Req tmp; tmp.proxyBlockNo = ss.m_req2[i].m_blockNo; Uint32 ssId2 = getSsId(&tmp); Ss_START_RECREQ_2& ss2 = ssSeize<Ss_START_RECREQ_2>(ssId2); ss.m_req2[i].m_ssId = ssId2; // set wait-for bitmask in SsParallel setMask(ss2); } ndbrequire(signal->getLength() == StartRecReq::SignalLength); sendREQ(signal, ss); }
void DblqhProxy::execDROP_FRAG_REF(Signal* signal) { const DropFragRef* ref = (const DropFragRef*)signal->getDataPtr(); Uint32 ssId = getSsId(ref); Ss_DROP_FRAG_REQ& ss = ssFind<Ss_DROP_FRAG_REQ>(ssId); recvREF(signal, ss, ref->errCode); }
void DblqhProxy::execDROP_FRAG_CONF(Signal* signal) { const DropFragConf* conf = (const DropFragConf*)signal->getDataPtr(); Uint32 ssId = getSsId(conf); Ss_DROP_FRAG_REQ& ss = ssFind<Ss_DROP_FRAG_REQ>(ssId); recvCONF(signal, ss); }
void DbgdmProxy::execPREP_DROP_TAB_CONF(Signal* signal) { const PrepDropTabConf* conf = (const PrepDropTabConf*)signal->getDataPtr(); Uint32 ssId = getSsId(conf); Ss_PREP_DROP_TAB_REQ& ss = ssFind<Ss_PREP_DROP_TAB_REQ>(ssId); recvCONF(signal, ss); }
void DbgdmProxy::execPREP_DROP_TAB_REF(Signal* signal) { const PrepDropTabRef* ref = (const PrepDropTabRef*)signal->getDataPtr(); Uint32 ssId = getSsId(ref); Ss_PREP_DROP_TAB_REQ& ss = ssFind<Ss_PREP_DROP_TAB_REQ>(ssId); recvREF(signal, ss, ref->errorCode); }
void DbgdmProxy::execALTER_TAB_CONF(Signal* signal) { const AlterTabConf* conf = (const AlterTabConf*)signal->getDataPtr(); Uint32 ssId = getSsId(conf); Ss_ALTER_TAB_REQ& ss = ssFind<Ss_ALTER_TAB_REQ>(ssId); recvCONF(signal, ss); }
void PgmanProxy::execRELEASE_PAGES_CONF(Signal* signal) { const ReleasePagesConf* conf = (const ReleasePagesConf*)signal->getDataPtr(); Uint32 ssId = getSsId(conf); Ss_END_LCP_REQ& ss = ssFind<Ss_END_LCP_REQ>(ssId); sendREQ(signal, ss); }
void DblqhProxy::execGCP_SAVECONF(Signal* signal) { const GCPSaveConf* conf = (const GCPSaveConf*)signal->getDataPtr(); Uint32 ssId = getSsId(conf); Ss_GCP_SAVEREQ& ss = ssFind<Ss_GCP_SAVEREQ>(ssId); recvCONF(signal, ss); }
void DbgdmProxy::execALTER_TAB_REF(Signal* signal) { const AlterTabRef* ref = (const AlterTabRef*)signal->getDataPtr(); Uint32 ssId = getSsId(ref); Ss_ALTER_TAB_REQ& ss = ssFind<Ss_ALTER_TAB_REQ>(ssId); recvREF(signal, ss, ref->errorCode); }
void DblqhProxy::execGCP_SAVEREQ(Signal* signal) { const GCPSaveReq* req = (const GCPSaveReq*)signal->getDataPtr(); Uint32 ssId = getSsId(req); Ss_GCP_SAVEREQ& ss = ssSeize<Ss_GCP_SAVEREQ>(ssId); ss.m_req = *req; sendREQ(signal, ss); }
void PgmanProxy::execLCP_FRAG_ORD(Signal* signal) { const LcpFragOrd* req = (const LcpFragOrd*)signal->getDataPtr(); Uint32 ssId = getSsId(req); Ss_LCP_FRAG_ORD& ss = ssSeize<Ss_LCP_FRAG_ORD>(ssId); ss.m_req = *req; sendREQ(signal, ss); ssRelease<Ss_LCP_FRAG_ORD>(ssId); }
void DbgdmProxy::execDROP_TAB_REQ(Signal* signal) { const DropTabReq* req = (const DropTabReq*)signal->getDataPtr(); Uint32 ssId = getSsId(req); Ss_DROP_TAB_REQ& ss = ssSeize<Ss_DROP_TAB_REQ>(ssId); ss.m_req = *req; ndbrequire(signal->getLength() == DropTabReq::SignalLength); sendREQ(signal, ss); }
void DblqhProxy::execSTART_RECREQ_2(Signal* signal) { ndbrequire(signal->getLength() == Ss_START_RECREQ_2::Req::SignalLength); const Ss_START_RECREQ_2::Req* req = (const Ss_START_RECREQ_2::Req*)signal->getDataPtr(); Uint32 ssId = getSsId(req); Ss_START_RECREQ_2& ss = ssFind<Ss_START_RECREQ_2>(ssId); // reversed roles recvCONF(signal, ss); }
void DblqhProxy::execGCP_SAVEREF(Signal* signal) { const GCPSaveRef* ref = (const GCPSaveRef*)signal->getDataPtr(); Uint32 ssId = getSsId(ref); Ss_GCP_SAVEREQ& ss = ssFind<Ss_GCP_SAVEREQ>(ssId); if (ss.m_error != 0) { // wl4391_todo check ndbrequire(ss.m_error == ref->errorCode); } recvREF(signal, ss, ref->errorCode); }
void DblqhProxy::execSTART_RECCONF_2(Signal* signal) { ndbrequire(signal->getLength() == Ss_START_RECREQ_2::Conf::SignalLength); const Ss_START_RECREQ_2::Conf* conf = (const Ss_START_RECREQ_2::Conf*)signal->getDataPtr(); Uint32 ssId = getSsId(conf); Ss_START_RECREQ_2& ss = ssFind<Ss_START_RECREQ_2>(ssId); ss.m_conf = *conf; // reversed roles sendREQ(signal, ss); }
void DblqhProxy::execDROP_TAB_REQ(Signal* signal) { const DropTabReq* req = (const DropTabReq*)signal->getDataPtr(); Uint32 ssId = getSsId(req); Ss_DROP_TAB_REQ& ss = ssSeize<Ss_DROP_TAB_REQ>(ssId); ss.m_req = *req; ndbrequire(signal->getLength() == DropTabReq::SignalLength); sendREQ(signal, ss); Uint32 tableId = ss.m_req.tableId; ndbrequire(tableId < c_tableRecSize); c_tableRec[tableId] = 0; }
void DblqhProxy::execEXEC_SR_1(Signal* signal, GlobalSignalNumber gsn) { ndbrequire(signal->getLength() == Ss_EXEC_SR_1::Sig::SignalLength); const Ss_EXEC_SR_1::Sig* sig = (const Ss_EXEC_SR_1::Sig*)signal->getDataPtr(); Uint32 ssId = getSsId(sig); Ss_EXEC_SR_1& ss = ssSeize<Ss_EXEC_SR_1>(ssId); ss.m_gsn = gsn; ss.m_sig = *sig; sendREQ(signal, ss); ssRelease<Ss_EXEC_SR_1>(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); }