/* ---------------------------------------------------------------- */ void Dbtup::execSTORED_PROCREQ(Signal* signal) { OperationrecPtr regOperPtr; TablerecPtr regTabPtr; jamEntry(); regOperPtr.i = signal->theData[0]; c_operation_pool.getPtr(regOperPtr); regTabPtr.i = signal->theData[1]; ptrCheckGuard(regTabPtr, cnoOfTablerec, tablerec); Uint32 requestInfo = signal->theData[3]; TransState trans_state= get_trans_state(regOperPtr.p); ndbrequire(trans_state == TRANS_IDLE || ((trans_state == TRANS_ERROR_WAIT_STORED_PROCREQ) && (requestInfo == ZSTORED_PROCEDURE_DELETE))); ndbrequire(regTabPtr.p->tableStatus == DEFINED); switch (requestInfo) { case ZSCAN_PROCEDURE: jam(); scanProcedure(signal, regOperPtr.p, signal->theData[4]); break; case ZCOPY_PROCEDURE: jam(); copyProcedure(signal, regTabPtr, regOperPtr.p); break; case ZSTORED_PROCEDURE_DELETE: jam(); deleteScanProcedure(signal, regOperPtr.p); break; default: ndbrequire(false); }//switch }//Dbtup::execSTORED_PROCREQ()
/* ---------------------------------------------------------------- */ void Dbtup::execSTORED_PROCREQ(Signal* signal) { OperationrecPtr regOperPtr; TablerecPtr regTabPtr; jamEntry(); regOperPtr.i = signal->theData[0]; c_operation_pool.getPtr(regOperPtr); regTabPtr.i = signal->theData[1]; ptrCheckGuard(regTabPtr, cnoOfTablerec, tablerec); Uint32 requestInfo = signal->theData[3]; TransState trans_state= get_trans_state(regOperPtr.p); ndbrequire(trans_state == TRANS_IDLE || ((trans_state == TRANS_ERROR_WAIT_STORED_PROCREQ) && (requestInfo == ZSTORED_PROCEDURE_DELETE))); ndbrequire(regTabPtr.p->tableStatus == DEFINED); /* * Also store count of procs called from non-API scans. * It can be done here since seize/release always succeeds. * The count is only used under -DERROR_INSERT via DUMP. */ BlockReference apiBlockref = signal->theData[5]; switch (requestInfo) { case ZSCAN_PROCEDURE: { jam(); #if defined VM_TRACE || defined ERROR_INSERT storedProcCountNonAPI(apiBlockref, +1); #endif SectionHandle handle(this, signal); ndbrequire(handle.m_cnt == 1); scanProcedure(signal, regOperPtr.p, &handle, false); // Not copy break; } case ZCOPY_PROCEDURE: jam(); #if defined VM_TRACE || defined ERROR_INSERT storedProcCountNonAPI(apiBlockref, +1); #endif copyProcedure(signal, regTabPtr, regOperPtr.p); break; case ZSTORED_PROCEDURE_DELETE: jam(); #if defined VM_TRACE || defined ERROR_INSERT storedProcCountNonAPI(apiBlockref, -1); #endif deleteScanProcedure(signal, regOperPtr.p); break; default: ndbrequire(false); }//switch }//Dbtup::execSTORED_PROCREQ()