⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbtup.hpp

📁 mysql-5.0.22.tar.gz源码包
💻 HPP
📖 第 1 页 / 共 5 页
字号:
#define ZLCPR_ABORT_UPDATE 4               /* UNDO AN UPDATE OPERATION THAT WAS ACTIVE IN LCP */#define ZLCPR_ABORT_INSERT 5               /* UNDO AN INSERT OPERATION THAT WAS ACTIVE IN LCP */#define ZTABLE_DESCRIPTOR 6                /* TABLE DESCRIPTOR                                */#define ZINDICATE_NO_OP_ACTIVE 7           /* ENSURE THAT NO OPERATION ACTIVE AFTER RESTART   */#define ZLCPR_UNDO_LOG_PAGE_HEADER 8       /* CHANGE IN PAGE HEADER IS UNDO LOGGED            */#define ZLCPR_TYPE_UPDATE_GCI 9            /* Update GCI at commit time                       */#define ZNO_CHECKPOINT_RECORDS 10          /* NUMBER OF CHECKPOINTRECORD TYPES                */          /* RESULT CODES            */          /* ELEMENT POSITIONS IN SYSTEM RESTART INFO PAGE OF THE DATA FILE */#define ZSRI_NO_OF_FRAG_PAGES_POS 10       /* NUMBER OF FRAGMENT PAGES WHEN CHECKPOINT STARTED   */#define ZSRI_TUP_RESERVED_SIZE_POS 11      /* RESERVED SIZE OF THE TUPLE WHEN CP STARTED         */#define ZSRI_TUP_FIXED_AREA_POS 12         /* SIZE OF THE TUPLE FIXED AREA WHEN CP STARTED       */#define ZSRI_TAB_DESCR_SIZE 13             /* SIZE OF THE TABLE DESCRIPTOR WHEN CP STARTED       */#define ZSRI_NO_OF_ATTRIBUTES_POS 14       /* NUMBER OF ATTRIBUTES                               */#define ZSRI_UNDO_LOG_END_REC_ID 15        /* LAST UNDO LOG RECORD ID FOR THIS CHECKPOINT        */#define ZSRI_UNDO_LOG_END_PAGE_ID 16       /* LAST USED LOG PAGE ID FOR THIS CHECKPOINT          */#define ZSRI_TH_FREE_FIRST 17              /* FIRST FREE PAGE OF TUPLE HEADERS                   */#define ZSRI_TH_FREE_COPY_FIRST 18         /* FIRST FREE PAGE OF TUPLE HEADER COPIES             */#define ZSRI_EMPTY_PRIM_PAGE 27            /* FIRST EMPTY PAGE                                   */#define ZSRI_NO_COPY_PAGES_ALLOC 28        /* NO COPY PAGES IN FRAGMENT AT LOCAL CHECKPOINT      */#define ZSRI_UNDO_FILE_VER 29              /* CHECK POINT ID OF THE UNDO FILE                    */#define ZSRI_NO_OF_INDEX_ATTR 30           /* No of index attributes                             */#define ZNO_OF_PAGES_CLUSTER_REC 0//------------------------------------------------------------// TUP_CONTINUEB codes//------------------------------------------------------------#define ZSTART_EXEC_UNDO_LOG 0#define ZCONT_START_SAVE_CL 1#define ZCONT_SAVE_DP 2#define ZCONT_EXECUTE_LC 3#define ZCONT_LOAD_DP 4#define ZLOAD_BAL_LCP_TIMER 5#define ZINITIALISE_RECORDS 6#define ZREL_FRAG 7#define ZREPORT_MEMORY_USAGE 8#define ZBUILD_INDEX 9#define ZINDEX_STORAGE 0#define ZDATA_WORD_AT_DISK_PAGE 2030#define ZALLOC_DISK_PAGE_LAST_INDEX 2047#define ZWORD_IN_BLOCK 127                 /* NO OF WORD IN A BLOCK */#define ZNO_DISK_PAGES_FILE_REC 100#define ZMASK_PAGE_INDEX 0x7ff#define ZBIT_PAGE_INDEX 11                 /* 8 KBYT PAGE = 2048 WORDS */#define ZSCAN_PROCEDURE 0#define ZCOPY_PROCEDURE 2#define ZSTORED_PROCEDURE_DELETE 3#define ZSTORED_PROCEDURE_FREE 0xffff#define ZMIN_PAGE_LIMIT_TUP_COMMITREQ 2#define ZUNDO_PAGE_HEADER_SIZE 2           /* SIZE OF UNDO PAGE HEADER     */#endifclass Dbtup: public SimulatedBlock {public:  typedef bool (Dbtup::* ReadFunction)(Uint32*,                                       AttributeHeader*,                                       Uint32,                                       Uint32);  typedef bool (Dbtup::* UpdateFunction)(Uint32*,                                         Uint32,                                         Uint32);// State valuesenum State {  NOT_INITIALIZED = 0,  COMMON_AREA_PAGES = 1,  UNDO_RESTART_PAGES = 2,  UNDO_PAGES = 3,  READ_ONE_PAGE = 4,  CHECKPOINT_DATA_READ = 7,  CHECKPOINT_DATA_READ_PAGE_ZERO = 8,  CHECKPOINT_DATA_WRITE = 9,  CHECKPOINT_DATA_WRITE_LAST = 10,  CHECKPOINT_DATA_WRITE_FLUSH = 11,  CHECKPOINT_UNDO_READ = 12,  CHECKPOINT_UNDO_READ_FIRST = 13,  CHECKPOINT_UNDO_WRITE = 14,  CHECKPOINT_UNDO_WRITE_FLUSH = 15,  CHECKPOINT_TD_READ = 16,  IDLE = 17,  ACTIVE = 18,  SYSTEM_RESTART = 19,  NO_OTHER_OP = 20,  COMMIT_DELETE = 21,  TO_BE_COMMITTED = 22,  ABORTED = 23,  ALREADY_ABORTED_INSERT = 24,  ALREADY_ABORTED = 25,  ABORT_INSERT = 26,  ABORT_UPDATE = 27,  INIT = 28,  INITIAL_READ = 29,  INTERPRETED_EXECUTION = 30,  FINAL_READ = 31,  FINAL_UPDATE = 32,  DISCONNECTED = 33,  DEFINED = 34,  ERROR_WAIT_TUPKEYREQ = 35,  STARTED = 36,  NOT_DEFINED = 37,  COMPLETED = 38,  WAIT_ABORT = 39,  NORMAL_PAGE = 40,  COPY_PAGE = 41,  DELETE_BLOCK = 42,  WAIT_STORED_PROCEDURE_ATTR_INFO = 43,  DATA_FILE_READ = 45,  DATA_FILE_WRITE = 46,  LCP_DATA_FILE_READ = 47,  LCP_DATA_FILE_WRITE = 48,  LCP_DATA_FILE_WRITE_WITH_UNDO = 49,  LCP_DATA_FILE_CLOSE = 50,  LCP_UNDO_FILE_READ = 51,  LCP_UNDO_FILE_CLOSE = 52,  LCP_UNDO_FILE_WRITE = 53,  OPENING_DATA_FILE = 54,  INITIATING_RESTART_INFO = 55,  INITIATING_FRAGMENT = 56,  OPENING_UNDO_FILE = 57,  READING_RESTART_INFO = 58,  INIT_UNDO_SEGMENTS = 59,  READING_TAB_DESCR = 60,  READING_DATA_PAGES = 61,  WAIT_COPY_PROCEDURE = 62,  TOO_MUCH_AI = 63,  SAME_PAGE = 64,  DEFINING = 65,  TUPLE_BLOCKED = 66,  ERROR_WAIT_STORED_PROCREQ = 67};// Records/* ************** ATTRIBUTE INFO BUFFER RECORD ****************** *//* THIS RECORD IS USED AS A BUFFER FOR INCOMING AND OUTGOING DATA *//* ************************************************************** */struct Attrbufrec {  Uint32 attrbuf[ZATTRBUF_SIZE];}; /* p2c: size = 128 bytes */typedef Ptr<Attrbufrec> AttrbufrecPtr;/* ********** CHECKPOINT INFORMATION ************ *//* THIS RECORD HOLDS INFORMATION NEEDED TO        *//* PERFORM A CHECKPOINT. IT'S POSSIBLE TO RUN     *//* MULTIPLE CHECKPOINTS AT A TIME. THIS RECORD    *//* MAKES IT POSSIBLE TO DISTINGER BETWEEN THE     *//* DIFFERENT CHECKPOINTS.                         *//* ********************************************** */struct CheckpointInfo {  Uint32 lcpNextRec;                           /* NEXT RECORD IN FREELIST                          */  Uint32 lcpCheckpointVersion;                 /* VERSION OF THE CHECKPOINT                        */  Uint32 lcpLocalLogInfoP;                     /* POINTER TO A LOCAL LOG INFO RECORD               */  Uint32 lcpUserptr;                           /* USERPOINTER TO THE BLOCK REQUESTING THE CP       */  Uint32 lcpFragmentP;                         /* FRAGMENT POINTER TO WHICH THE CHECKPOINT APPLIES */  Uint32 lcpFragmentId;                        /* FRAGMENT ID                                      */  Uint32 lcpTabPtr;                            /* TABLE POINTER                                    */  Uint32 lcpDataBufferSegmentP;                /* POINTER TO A DISK BUFFER SEGMENT POINTER (DATA)  */  Uint32 lcpDataFileHandle;   /* FILE HANDLES FOR DATA FILE. LOG FILE HANDLE IN LOCAL_LOG_INFO_RECORD */                                              /* FILE HANDLE TO THE OPEN DATA FILE                */  Uint32 lcpNoOfPages;  Uint32 lcpThFreeFirst;  Uint32 lcpThFreeCopyFirst;  Uint32 lcpEmptyPrimPage;  Uint32 lcpNoCopyPagesAlloc;  Uint32 lcpTmpOperPtr;                        /* TEMPORARY STORAGE OF OPER_PTR DURING SAVE        */  BlockReference lcpBlockref;                       /* BLOCKREFERENCE TO THE BLOCK REQUESTING THE CP    */};typedef Ptr<CheckpointInfo> CheckpointInfoPtr;/* *********** DISK BUFFER SEGMENT INFO ********* *//* THIS RECORD HOLDS INFORMATION NEEDED DURING    *//* A WRITE OF THE DATA BUFFER TO DISK. WHEN THE   *//* WRITE SIGNAL IS SENT A POINTER TO THIS RECORD  *//* IS INCLUDED. WHEN THE WRITE IS COMPLETED AND   *//* CONFIRMED THE PTR TO THIS RECORD IS RETURNED   *//* AND THE BUFFER PAGES COULD EASILY BE LOCATED   *//* AND DEALLOCATED. THE CHECKPOINT_INFO_VERSION   *//* KEEPS TRACK OF THE CHECPOINT_INFO_RECORD THAT  *//* INITIATED THE WRITE AND THE CP_PAGE_TO_DISK    *//* ELEMENT COULD BE INCREASED BY THE NUMBER OF    *//* PAGES WRITTEN.                                 *//* ********************************************** */struct DiskBufferSegmentInfo {  Uint32 pdxDataPage[16];                     /* ARRAY OF DATA BUFFER PAGES */  Uint32 pdxUndoBufferSet[2];  Uint32 pdxNextRec;  State pdxBuffertype;  State pdxOperation;             /*---------------------------------------------------------------------------*/             /* PDX_FLAGS BITS AND THEIR USAGE:                                           */             /* BIT    0                    1                      COMMENT                */             /*---------------------------------------------------------------------------*/             /* 0      SEGMENT INVALID      SEGMENT VALID          USED DURING READS      */             /* 1-15                                               NOT USED               */             /*---------------------------------------------------------------------------*/  Uint32 pdxCheckpointInfoP;                  /* USED DURING LOCAL CHKP     */  Uint32 pdxRestartInfoP;                     /* USED DURING RESTART        */  Uint32 pdxLocalLogInfoP;                    /* POINTS TO A LOCAL LOG INFO */  Uint32 pdxFilePage;                         /* START PAGE IN FILE         */  Uint32 pdxNumDataPages;                     /* NUMBER OF DATA PAGES       */};typedef Ptr<DiskBufferSegmentInfo> DiskBufferSegmentInfoPtr;struct Fragoperrec {  bool   definingFragment;  Uint32 nextFragoprec;  Uint32 lqhPtrFrag;  Uint32 fragidFrag;  Uint32 tableidFrag;  Uint32 fragPointer;  Uint32 attributeCount;  Uint32 currNullBit;  Uint32 noOfNullBits;  Uint32 noOfNewAttrCount;  Uint32 charsetIndex;  BlockReference lqhBlockrefFrag;  bool inUse;};typedef Ptr<Fragoperrec> FragoperrecPtr;  // Position for use by scan  struct PagePos {    Uint32 m_fragId;            // "base" fragment id    Uint32 m_fragBit;           // two fragments in 5.0    Uint32 m_pageId;    Uint32 m_tupleNo;    bool m_match;  };  // Tup scan op (compare Dbtux::ScanOp)  struct ScanOp {    enum {      Undef = 0,      First = 1,                // before first entry      Locked = 4,               // at current entry (no lock needed)      Next = 5,                 // looking for next extry      Last = 6,                 // after last entry      Invalid = 9               // cannot return REF to LQH currently    };    Uint16 m_state;    Uint16 m_lockwait;          // unused    Uint32 m_userPtr;           // scanptr.i in LQH    Uint32 m_userRef;    Uint32 m_tableId;    Uint32 m_fragId;            // "base" fragment id    Uint32 m_fragPtrI[2];    Uint32 m_transId1;    Uint32 m_transId2;    PagePos m_scanPos;    union {    Uint32 nextPool;    Uint32 nextList;    };    Uint32 prevList;  };  typedef Ptr<ScanOp> ScanOpPtr;  ArrayPool<ScanOp> c_scanOpPool;  void scanFirst(Signal* signal, ScanOpPtr scanPtr);  void scanNext(Signal* signal, ScanOpPtr scanPtr);  void scanClose(Signal* signal, ScanOpPtr scanPtr);  void releaseScanOp(ScanOpPtr& scanPtr);struct Fragrecord {  Uint32 nextStartRange;  Uint32 currentPageRange;  Uint32 rootPageRange;  Uint32 noOfPages;  Uint32 emptyPrimPage;  Uint32 firstusedOprec;  Uint32 lastusedOprec;  Uint32 thFreeFirst;  Uint32 thFreeCopyFirst;  Uint32 noCopyPagesAlloc;  Uint32 checkpointVersion;  Uint32 minPageNotWrittenInCheckpoint;  Uint32 maxPageWrittenInCheckpoint;  State fragStatus;  Uint32 fragTableId;  Uint32 fragmentId;  Uint32 nextfreefrag;  DLList<ScanOp> m_scanList;  Fragrecord(ArrayPool<ScanOp> & scanOpPool) : m_scanList(scanOpPool) {}};typedef Ptr<Fragrecord> FragrecordPtr;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -