MySQL 5.6.14 Source Code Document
|
Classes | |
struct | Directoryarray |
struct | DirRange |
struct | Fragmentrec |
struct | Operationrec |
struct | OverflowRecord |
struct | Page8 |
struct | ScanRec |
struct | Tabrec |
Public Types | |
enum | State { FREEFRAG = 0, ACTIVEFRAG = 1, WAIT_NOTHING = 10, WAIT_ONE_CONF = 26, FREE_OP = 30, WAIT_EXE_OP = 32, WAIT_IN_QUEUE = 34, EXE_OP = 35, SCAN_ACTIVE = 36, SCAN_WAIT_IN_QUEUE = 37, IDLE = 39, ACTIVE = 40, WAIT_COMMIT_ABORT = 41, ABORT = 42, ABORTADDFRAG = 43, REFUSEADDFRAG = 44, DELETEFRAG = 45, DELETETABLE = 46, UNDEFINEDROOT = 47, ADDFIRSTFRAG = 48, ADDSECONDFRAG = 49, DELETEFIRSTFRAG = 50, DELETESECONDFRAG = 51, ACTIVEROOT = 52 } |
typedef Ptr< DirRange > | DirRangePtr |
typedef Ptr< Directoryarray > | DirectoryarrayPtr |
typedef Ptr< Fragmentrec > | FragmentrecPtr |
typedef Ptr< Operationrec > | OperationrecPtr |
typedef Ptr< OverflowRecord > | OverflowRecordPtr |
typedef Ptr< Page8 > | Page8Ptr |
typedef Ptr< ScanRec > | ScanRecPtr |
typedef Ptr< Tabrec > | TabrecPtr |
Public Types inherited from SimulatedBlock | |
typedef void(SimulatedBlock::* | CallbackFunction )(class Signal *, Uint32 callbackData, Uint32 returnCode) |
Public Member Functions | |
Dbacc (Block_context &, Uint32 instanceNumber=0) | |
void | execACCMINUPDATE (Signal *signal) |
void | removerow (Uint32 op, const Local_key *) |
void | execACCKEY_ORD (Signal *signal, Uint32 opPtrI) |
void | startNext (Signal *signal, OperationrecPtr lastOp) |
Public Member Functions inherited from SimulatedBlock | |
void | executeFunction (GlobalSignalNumber gsn, Signal *signal) |
Uint32 | instance () const |
SimulatedBlock * | getInstance (Uint32 instanceNumber) |
void | addInstance (SimulatedBlock *b, Uint32 theInstanceNo) |
virtual void | loadWorkers () |
void | assignToThread (ThreadContext ctx) |
uint32 | getThreadId () const |
void | assertOwnThread () |
void | synchronize_threads_for_blocks (Signal *, const Uint32 blocks[], const Callback &, JobBufferLevel=JBB) |
void | synchronize_path (Signal *, const Uint32 blocks[], const Callback &, JobBufferLevel=JBB) |
virtual const char * | get_filename (Uint32 fd) const |
EmulatedJamBuffer * | jamBuffer () const |
void | ignoreMutexUnlockCallback (Signal *signal, Uint32 ptrI, Uint32 retVal) |
virtual bool | getParam (const char *param, Uint32 *retVal) |
Public Attributes | |
class Dbtup * | c_tup |
class Dblqh * | c_lqh |
Uint32 | ckeys [2048 *MAX_XFRM_MULTIPLY] |
Uint64 | ckeys_align |
Public Attributes inherited from SimulatedBlock | |
MutexManager | c_mutexMgr |
SafeCounterManager | c_counterMgr |
Friends | |
class | DbaccProxy |
Additional Inherited Members | |
Static Public Member Functions inherited from SimulatedBlock | |
static bool | isMultiThreaded () |
static bool | isNdbMt () |
static bool | isNdbMtLqh () |
static Uint32 | getLqhWorkers () |
static Uint32 | getInstanceKey (Uint32 tabId, Uint32 fragId) |
static Uint32 | getInstanceFromKey (Uint32 instanceKey) |
Protected Types inherited from SimulatedBlock | |
enum | CallbackFlags { CALLBACK_DIRECT = 0x0001, CALLBACK_ACK = 0x0002 } |
enum | { THE_NULL_CALLBACK = 0 } |
typedef void(SimulatedBlock::* | ExecFunction )(Signal *signal) |
Protected Member Functions inherited from SimulatedBlock | |
SimulatedBlock (BlockNumber blockNumber, struct Block_context &ctx, Uint32 instanceNumber=0) | |
void | addRecSignalImpl (GlobalSignalNumber g, ExecFunction fun, bool f=false) |
void | installSimulatedBlockFunctions () |
void | initCommon () |
void | TheNULLCallbackFunction (class Signal *, Uint32, Uint32) |
void | execute (Signal *signal, Callback &c, Uint32 returnCode) |
void | sendSignal (BlockReference ref, GlobalSignalNumber gsn, Signal *signal, Uint32 length, JobBufferLevel jbuf) const |
void | sendSignal (NodeReceiverGroup rg, GlobalSignalNumber gsn, Signal *signal, Uint32 length, JobBufferLevel jbuf) const |
void | sendSignal (BlockReference ref, GlobalSignalNumber gsn, Signal *signal, Uint32 length, JobBufferLevel jbuf, SectionHandle *sections) const |
void | sendSignal (NodeReceiverGroup rg, GlobalSignalNumber gsn, Signal *signal, Uint32 length, JobBufferLevel jbuf, SectionHandle *sections) const |
void | sendSignal (BlockReference ref, GlobalSignalNumber gsn, Signal *signal, Uint32 length, JobBufferLevel jbuf, LinearSectionPtr ptr[3], Uint32 noOfSections) const |
void | sendSignal (NodeReceiverGroup rg, GlobalSignalNumber gsn, Signal *signal, Uint32 length, JobBufferLevel jbuf, LinearSectionPtr ptr[3], Uint32 noOfSections) const |
void | sendSignalNoRelease (BlockReference ref, GlobalSignalNumber gsn, Signal *signal, Uint32 length, JobBufferLevel jbuf, SectionHandle *sections) const |
void | sendSignalNoRelease (NodeReceiverGroup rg, GlobalSignalNumber gsn, Signal *signal, Uint32 length, JobBufferLevel jbuf, SectionHandle *sections) const |
void | sendSignalWithDelay (BlockReference ref, GlobalSignalNumber gsn, Signal *signal, Uint32 delayInMilliSeconds, Uint32 length) const |
void | sendSignalWithDelay (BlockReference ref, GlobalSignalNumber gsn, Signal *signal, Uint32 delayInMilliSeconds, Uint32 length, SectionHandle *sections) const |
void | EXECUTE_DIRECT (Uint32 block, Uint32 gsn, Signal *signal, Uint32 len, Uint32 givenInstanceNo=ZNIL) |
class SectionSegmentPool & | getSectionSegmentPool () |
void | release (SegmentedSectionPtr &ptr) |
void | release (SegmentedSectionPtrPOD &ptr) |
void | releaseSection (Uint32 firstSegmentIVal) |
void | releaseSections (struct SectionHandle &) |
bool | import (Ptr< SectionSegment > &first, const Uint32 *src, Uint32 len) |
bool | import (SegmentedSectionPtr &ptr, const Uint32 *src, Uint32 len) |
bool | appendToSection (Uint32 &firstSegmentIVal, const Uint32 *src, Uint32 len) |
bool | dupSection (Uint32 ©FirstIVal, Uint32 srcFirstIVal) |
bool | writeToSection (Uint32 firstSegmentIVal, Uint32 offset, const Uint32 *src, Uint32 len) |
void | handle_invalid_sections_in_send_signal (Signal *) const |
void | handle_lingering_sections_after_execute (Signal *) const |
void | handle_lingering_sections_after_execute (SectionHandle *) const |
void | handle_invalid_fragmentInfo (Signal *) const |
void | handle_send_failed (SendStatus, Signal *) const |
void | handle_out_of_longsignal_memory (Signal *) const |
void | sendRoutedSignal (RoutePath path[], Uint32 pathcnt, Uint32 dst[], Uint32 dstcnt, Uint32 gsn, Signal *, Uint32 len, JobBufferLevel prio, SectionHandle *handle=0) |
bool | checkNodeFailSequence (Signal *) |
bool | assembleFragments (Signal *signal) |
bool | assembleDroppedFragments (Signal *signal) |
STATIC_CONST (FRAGMENT_WORD_SIZE=240) | |
void | sendFragmentedSignal (BlockReference ref, GlobalSignalNumber gsn, Signal *signal, Uint32 length, JobBufferLevel jbuf, SectionHandle *sections, Callback &=TheEmptyCallback, Uint32 messageSize=FRAGMENT_WORD_SIZE) |
void | sendFragmentedSignal (NodeReceiverGroup rg, GlobalSignalNumber gsn, Signal *signal, Uint32 length, JobBufferLevel jbuf, SectionHandle *sections, Callback &=TheEmptyCallback, Uint32 messageSize=FRAGMENT_WORD_SIZE) |
void | sendFragmentedSignal (BlockReference ref, GlobalSignalNumber gsn, Signal *signal, Uint32 length, JobBufferLevel jbuf, LinearSectionPtr ptr[3], Uint32 noOfSections, Callback &=TheEmptyCallback, Uint32 messageSize=FRAGMENT_WORD_SIZE) |
void | sendFragmentedSignal (NodeReceiverGroup rg, GlobalSignalNumber gsn, Signal *signal, Uint32 length, JobBufferLevel jbuf, LinearSectionPtr ptr[3], Uint32 noOfSections, Callback &=TheEmptyCallback, Uint32 messageSize=FRAGMENT_WORD_SIZE) |
Uint32 | simBlockNodeFailure (Signal *signal, Uint32 failedNodeId, Callback &cb=TheEmptyCallback) |
bool | sendFirstFragment (FragmentSendInfo &info, NodeReceiverGroup rg, GlobalSignalNumber gsn, Signal *signal, Uint32 length, JobBufferLevel jbuf, SectionHandle *sections, bool noRelease, Uint32 messageSize=FRAGMENT_WORD_SIZE) |
bool | sendFirstFragment (FragmentSendInfo &info, NodeReceiverGroup rg, GlobalSignalNumber gsn, Signal *signal, Uint32 length, JobBufferLevel jbuf, LinearSectionPtr ptr[3], Uint32 noOfSections, Uint32 messageSize=FRAGMENT_WORD_SIZE) |
void | sendNextSegmentedFragment (Signal *signal, FragmentSendInfo &info) |
void | sendNextLinearFragment (Signal *signal, FragmentSendInfo &info) |
BlockNumber | number () const |
BlockReference | reference () const |
NodeId | getOwnNodeId () const |
void | refresh_watch_dog (Uint32 place=1) |
void | update_watch_dog_timer (Uint32 interval) |
void | progError (int line, int err_code, const char *extradata=NULL) const ATTRIBUTE_NORETURN |
NewVARIABLE * | allocateBat (int batSize) |
void | freeBat () |
BlockReference | calcInstanceBlockRef (BlockNumber aBlock) |
BlockReference | calcInstanceBlockRef (BlockNumber aBlock, NodeId aNode) |
void * | allocRecord (const char *type, size_t s, size_t n, bool clear=true, Uint32 paramId=0) |
void * | allocRecordAligned (const char *type, size_t s, size_t n, void **unaligned_buffer, Uint32 align=NDB_O_DIRECT_WRITE_ALIGNMENT, bool clear=true, Uint32 paramId=0) |
void | deallocRecord (void **, const char *type, size_t s, size_t n) |
Uint32 | allocChunks (AllocChunk dst[], Uint32arraysize, Uint32rg, Uint32pages, Uint32 paramId) |
void | infoEvent (const char *msg,...) const ATTRIBUTE_FORMAT(printf |
void void | warningEvent (const char *msg,...) const ATTRIBUTE_FORMAT(printf |
void void const NodeState & | getNodeState () const |
const NodeInfo & | getNodeInfo (NodeId nodeId) const |
NodeInfo & | setNodeInfo (NodeId) |
const NodeVersionInfo & | getNodeVersionInfo () const |
NodeVersionInfo & | setNodeVersionInfo () |
Uint32 | xfrm_key (Uint32 tab, const Uint32 *src, Uint32 *dst, Uint32 dstSize, Uint32 keyPartLen[MAX_ATTRIBUTES_IN_INDEX]) const |
Uint32 | xfrm_attr (Uint32 attrDesc, CHARSET_INFO *cs, const Uint32 *src, Uint32 &srcPos, Uint32 *dst, Uint32 &dstPos, Uint32 dstSize) const |
Uint32 | create_distr_key (Uint32 tableId, const Uint32 *src, Uint32 *dst, const Uint32 keyPaLen[MAX_ATTRIBUTES_IN_INDEX]) const |
void | wakeup () |
void | setup_wakeup () |
void | execNDB_TAMPER (Signal *signal) |
void | execNODE_STATE_REP (Signal *signal) |
void | execCHANGE_NODE_STATE_REQ (Signal *signal) |
void | execSIGNAL_DROPPED_REP (Signal *signal) |
void | execCONTINUE_FRAGMENTED (Signal *signal) |
void | execSTOP_FOR_CRASH (Signal *signal) |
void | execAPI_START_REP (Signal *signal) |
void | execNODE_START_REP (Signal *signal) |
void | execSEND_PACKED (Signal *signal) |
void | execLOCAL_ROUTE_ORD (Signal *) |
Uint32 | debugPrintFragmentCounts () |
void | fsRefError (Signal *signal, Uint32 line, const char *msg) |
void | execFSWRITEREF (Signal *signal) |
void | execFSREADREF (Signal *signal) |
void | execFSOPENREF (Signal *signal) |
void | execFSCLOSEREF (Signal *signal) |
void | execFSREMOVEREF (Signal *signal) |
void | execFSSYNCREF (Signal *signal) |
void | execFSAPPENDREF (Signal *signal) |
void | execute (Signal *signal, CallbackPtr &cptr, Uint32 returnCode) |
const CallbackEntry & | getCallbackEntry (Uint32 ci) |
void | sendCallbackConf (Signal *signal, Uint32 fullBlockNo, CallbackPtr &cptr, Uint32 returnCode) |
void | execCALLBACK_CONF (Signal *signal) |
void | ndbinfo_send_row (Signal *signal, const DbinfoScanReq &req, const Ndbinfo::Row &row, Ndbinfo::Ratelimit &rl) const |
void | ndbinfo_send_scan_break (Signal *signal, DbinfoScanReq &req, const Ndbinfo::Ratelimit &rl, Uint32 data1, Uint32 data2=0, Uint32 data3=0, Uint32 data4=0) const |
void | ndbinfo_send_scan_conf (Signal *signal, DbinfoScanReq &req, const Ndbinfo::Ratelimit &rl) const |
Static Protected Member Functions inherited from SimulatedBlock | |
static const NewVARIABLE * | getBat (BlockNumber blockNo, Uint32 instanceNo) |
static Uint16 | getBatSize (BlockNumber blockNo, Uint32 instanceNo) |
static BlockReference | calcTcBlockRef (NodeId aNode) |
static BlockReference | calcLqhBlockRef (NodeId aNode) |
static BlockReference | calcAccBlockRef (NodeId aNode) |
static BlockReference | calcTupBlockRef (NodeId aNode) |
static BlockReference | calcTuxBlockRef (NodeId aNode) |
static BlockReference | calcDihBlockRef (NodeId aNode) |
static BlockReference | calcQmgrBlockRef (NodeId aNode) |
static BlockReference | calcDictBlockRef (NodeId aNode) |
static BlockReference | calcNdbCntrBlockRef (NodeId aNode) |
static BlockReference | calcTrixBlockRef (NodeId aNode) |
static BlockReference | calcBackupBlockRef (NodeId aNode) |
static BlockReference | calcSumaBlockRef (NodeId aNode) |
static BlockReference | calcApiClusterMgrBlockRef (NodeId aNode) |
static int | sortchunks (const void *, const void *) |
Protected Attributes inherited from SimulatedBlock | |
ExecFunction | theExecArray [MAX_GSN+1] |
Block_context | m_ctx |
SafeArrayPool< GlobalPage > & | m_global_page_pool |
ArrayPool< GlobalPage > & | m_shared_page_pool |
CallbackTable * | m_callbackTableAddr |
ERROR_INSERT_VARIABLE | |
Static Protected Attributes inherited from SimulatedBlock | |
static Callback | TheEmptyCallback = {0, 0} |
static Callback | TheNULLCallback |
void Dbacc::startNext | ( | Signal * | signal, |
OperationrecPtr | lastOp | ||
) |
There is an op in serie queue... Check if it can run
Not same transaction and either last had exclusive lock or next had exclusive lock
same trans and X-lock
all shared lock...
There is a shared parallell queue & and exclusive op is first in queue
We must check if there are many transactions in parallel queue...
parallel queue contained another transaction, dont let it run
Move first op in serie queue to end of parallell queue
Currently no grouping of ops in serie queue
Definition at line 1237 of file DbaccMain.cpp.