📄 dblqh.hpp
字号:
/* Copyright (C) 2003 MySQL AB This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */#ifndef DBLQH_H#define DBLQH_H#include <pc.hpp>#include <ndb_limits.h>#include <SimulatedBlock.hpp>#include <DLList.hpp>#include <DLFifoList.hpp>#include <DLHashTable.hpp>#include <NodeBitmask.hpp>#include <signaldata/LCP.hpp>#include <signaldata/LqhTransConf.hpp>#include <signaldata/LqhFrag.hpp>// primary key is stored in TUP#include <../dbtup/Dbtup.hpp>#ifdef DBLQH_C// Constants/* ------------------------------------------------------------------------- *//* CONSTANTS USED WHEN MASTER REQUESTS STATE OF COPY FRAGMENTS. *//* ------------------------------------------------------------------------- */#define ZCOPY_CLOSING 0#define ZCOPY_ONGOING 1#define ZCOPY_ACTIVATION 2/* ------------------------------------------------------------------------- *//* STATES FOR THE VARIABLE GCP_LOG_PART_STATE *//* ------------------------------------------------------------------------- */#define ZIDLE 0#define ZWAIT_DISK 1#define ZON_DISK 2#define ZACTIVE 1/* ------------------------------------------------------------------------- *//* STATES FOR THE VARIABLE CSR_PHASES_STARTED *//* ------------------------------------------------------------------------- */#define ZSR_NO_PHASE_STARTED 0#define ZSR_PHASE1_COMPLETED 1#define ZSR_PHASE2_COMPLETED 2#define ZSR_BOTH_PHASES_STARTED 3/* ------------------------------------------------------------------------- *//* THE NUMBER OF PAGES IN A MBYTE, THE TWO LOGARITHM OF THIS. *//* THE NUMBER OF MBYTES IN A LOG FILE. *//* THE MAX NUMBER OF PAGES READ/WRITTEN FROM/TO DISK DURING *//* A WRITE OR READ. *//* ------------------------------------------------------------------------- */#define ZNOT_DIRTY 0#define ZDIRTY 1#define ZREAD_AHEAD_SIZE 8/* ------------------------------------------------------------------------- *//* CONSTANTS OF THE LOG PAGES *//* ------------------------------------------------------------------------- */#define ZPAGE_HEADER_SIZE 32#define ZNO_MBYTES_IN_FILE 16#define ZPAGE_SIZE 8192#define ZPAGES_IN_MBYTE 32#define ZTWOLOG_NO_PAGES_IN_MBYTE 5#define ZTWOLOG_PAGE_SIZE 13#define ZMAX_MM_BUFFER_SIZE 32 // Main memory window during log execution#define ZMAX_PAGES_WRITTEN 8 // Max pages before writing to disk (=> config)#define ZMIN_READ_BUFFER_SIZE 2 // Minimum number of pages to execute log#define ZMIN_LOG_PAGES_OPERATION 10 // Minimum no of pages before stopping#define ZPOS_CHECKSUM 0#define ZPOS_LOG_LAP 1#define ZPOS_MAX_GCI_COMPLETED 2#define ZPOS_MAX_GCI_STARTED 3#define ZNEXT_PAGE 4#define ZPREV_PAGE 5#define ZPOS_VERSION 6#define ZPOS_NO_LOG_FILES 7#define ZCURR_PAGE_INDEX 8#define ZLAST_LOG_PREP_REF 10#define ZPOS_DIRTY 11/* A number of debug items written in the page header of all log files */#define ZPOS_LOG_TIMER 12#define ZPOS_PAGE_I 13#define ZPOS_PLACE_WRITTEN_FROM 14#define ZPOS_PAGE_NO 15#define ZPOS_PAGE_FILE_NO 16#define ZPOS_WORD_WRITTEN 17#define ZPOS_IN_WRITING 18#define ZPOS_PREV_PAGE_NO 19#define ZPOS_IN_FREE_LIST 20/* ------------------------------------------------------------------------- *//* CONSTANTS FOR THE VARIOUS REPLICA AND NODE TYPES. *//* ------------------------------------------------------------------------- */#define ZPRIMARY_NODE 0#define ZBACKUP_NODE 1#define ZSTANDBY_NODE 2#define ZTC_NODE 3#define ZLOG_NODE 3/* ------------------------------------------------------------------------- *//* VARIOUS CONSTANTS USED AS FLAGS TO THE FILE MANAGER. *//* ------------------------------------------------------------------------- */#define ZOPEN_READ 0#define ZOPEN_WRITE 1#define ZOPEN_READ_WRITE 2#define ZVAR_NO_LOG_PAGE_WORD 1#define ZLIST_OF_PAIRS 0#define ZLIST_OF_PAIRS_SYNCH 16#define ZARRAY_OF_PAGES 1#define ZLIST_OF_MEM_PAGES 2#define ZLIST_OF_MEM_PAGES_SYNCH 18#define ZCLOSE_NO_DELETE 0#define ZCLOSE_DELETE 1#define ZPAGE_ZERO 0/* ------------------------------------------------------------------------- *//* THE FOLLOWING CONSTANTS ARE USED TO DESCRIBE THE TYPES OF *//* LOG RECORDS, THE SIZE OF THE VARIOUS LOG RECORD TYPES AND *//* THE POSITIONS WITHIN THOSE LOG RECORDS. *//* ------------------------------------------------------------------------- *//* ------------------------------------------------------------------------- *//* THESE CONSTANTS DESCRIBE THE SIZES OF VARIOUS TYPES OF LOG REORDS. *//* NEXT_LOG_SIZE IS ACTUALLY ONE. THE REASON WE SET IT TO 2 IS TO *//* SIMPLIFY THE CODE SINCE OTHERWISE HAVE TO USE A SPECIAL VERSION *//* OF READ_LOGWORD WHEN READING LOG RECORD TYPE *//* SINCE NEXT MBYTE TYPE COULD BE THE VERY LAST WORD IN THE MBYTE. *//* BY SETTING IT TO 2 WE ENSURE IT IS NEVER THE VERY LAST WORD *//* IN THE MBYTE. *//* ------------------------------------------------------------------------- */#define ZFD_HEADER_SIZE 3#define ZFD_PART_SIZE 48#define ZLOG_HEAD_SIZE 6#define ZNEXT_LOG_SIZE 2#define ZABORT_LOG_SIZE 3#define ZCOMMIT_LOG_SIZE 9#define ZCOMPLETED_GCI_LOG_SIZE 2/* ------------------------------------------------------------------------- *//* THESE CONSTANTS DESCRIBE THE TYPE OF A LOG RECORD. *//* THIS IS THE FIRST WORD OF A LOG RECORD. *//* ------------------------------------------------------------------------- */#define ZNEW_PREP_OP_TYPE 0#define ZPREP_OP_TYPE 1#define ZCOMMIT_TYPE 2#define ZABORT_TYPE 3#define ZFD_TYPE 4#define ZFRAG_SPLIT_TYPE 5#define ZNEXT_LOG_RECORD_TYPE 6#define ZNEXT_MBYTE_TYPE 7#define ZCOMPLETED_GCI_TYPE 8#define ZINVALID_COMMIT_TYPE 9/* ------------------------------------------------------------------------- *//* THE POSITIONS OF LOGGED DATA IN A FILE DESCRIPTOR LOG RECORD HEADER.*//* ALSO THE MAXIMUM NUMBER OF FILE DESCRIPTORS IN A LOG RECORD. *//* ------------------------------------------------------------------------- */#define ZPOS_LOG_TYPE 0#define ZPOS_NO_FD 1#define ZPOS_FILE_NO 2#define ZMAX_LOG_FILES_IN_PAGE_ZERO 40/* ------------------------------------------------------------------------- *//* THE POSITIONS WITHIN A PREPARE LOG RECORD AND A NEW PREPARE *//* LOG RECORD. *//* ------------------------------------------------------------------------- */#define ZPOS_HASH_VALUE 2#define ZPOS_SCHEMA_VERSION 3#define ZPOS_TRANS_TICKET 4#define ZPOS_OP_TYPE 5#define ZPOS_NO_ATTRINFO 6#define ZPOS_NO_KEYINFO 7/* ------------------------------------------------------------------------- *//* THE POSITIONS WITHIN A COMMIT LOG RECORD. *//* ------------------------------------------------------------------------- */#define ZPOS_COMMIT_TRANSID1 1#define ZPOS_COMMIT_TRANSID2 2#define ZPOS_COMMIT_GCI 3#define ZPOS_COMMIT_TABLE_REF 4#define ZPOS_COMMIT_FRAGID 5#define ZPOS_COMMIT_FILE_NO 6#define ZPOS_COMMIT_START_PAGE_NO 7#define ZPOS_COMMIT_START_PAGE_INDEX 8#define ZPOS_COMMIT_STOP_PAGE_NO 9/* ------------------------------------------------------------------------- *//* THE POSITIONS WITHIN A ABORT LOG RECORD. *//* ------------------------------------------------------------------------- */#define ZPOS_ABORT_TRANSID1 1#define ZPOS_ABORT_TRANSID2 2/* ------------------------------------------------------------------------- *//* THE POSITION WITHIN A COMPLETED GCI LOG RECORD. *//* ------------------------------------------------------------------------- */#define ZPOS_COMPLETED_GCI 1/* ------------------------------------------------------------------------- *//* THE POSITIONS WITHIN A NEW PREPARE LOG RECORD. *//* ------------------------------------------------------------------------- */#define ZPOS_NEW_PREP_FILE_NO 8#define ZPOS_NEW_PREP_PAGE_REF 9#define ZLAST_WRITE_IN_FILE 1#define ZENFORCE_WRITE 2/* ------------------------------------------------------------------------- *//* CONSTANTS USED AS INPUT TO SUBROUTINE WRITE_LOG_PAGES AMONG OTHERS. *//* ------------------------------------------------------------------------- */#define ZNORMAL 0#define ZINIT 1/* ------------------------------------------------------------------------- *//* CONSTANTS USED BY CONTINUEB TO DEDUCE WHICH CONTINUE SIGNAL IS TO *//* BE EXECUTED AS A RESULT OF THIS CONTINUEB SIGNAL. *//* ------------------------------------------------------------------------- */#define ZLOG_LQHKEYREQ 0#define ZPACK_LQHKEYREQ 1#define ZSEND_ATTRINFO 2#define ZSR_GCI_LIMITS 3#define ZSR_LOG_LIMITS 4#define ZSEND_EXEC_CONF 5#define ZEXEC_SR 6#define ZSR_FOURTH_COMP 7#define ZINIT_FOURTH 8#define ZTIME_SUPERVISION 9#define ZSR_PHASE3_START 10#define ZLQH_TRANS_NEXT 11#define ZLQH_RELEASE_AT_NODE_FAILURE 12#define ZSCAN_TC_CONNECT 13#define ZINITIALISE_RECORDS 14#define ZINIT_GCP_REC 15#define ZRESTART_OPERATIONS_AFTER_STOP 16#define ZCHECK_LCP_STOP_BLOCKED 17#define ZSCAN_MARKERS 18#define ZOPERATION_EVENT_REP 19#define ZPREP_DROP_TABLE 20/* ------------------------------------------------------------------------- *//* NODE STATE DURING SYSTEM RESTART, VARIABLES CNODES_SR_STATE *//* AND CNODES_EXEC_SR_STATE. *//* ------------------------------------------------------------------------- */#define ZSTART_SR 1#define ZEXEC_SR_COMPLETED 2/* ------------------------------------------------------------------------- *//* CONSTANTS USED BY NODE STATUS TO DEDUCE THE STATUS OF A NODE. *//* ------------------------------------------------------------------------- */#define ZNODE_UP 0#define ZNODE_DOWN 1/* ------------------------------------------------------------------------- *//* START PHASES *//* ------------------------------------------------------------------------- */#define ZLAST_START_PHASE 255#define ZSTART_PHASE1 1#define ZSTART_PHASE2 2#define ZSTART_PHASE3 3#define ZSTART_PHASE4 4#define ZSTART_PHASE6 6/* ------------------------------------------------------------------------- *//* CONSTANTS USED BY SCAN AND COPY FRAGMENT PROCEDURES *//* ------------------------------------------------------------------------- */#define ZSTORED_PROC_SCAN 0#define ZSTORED_PROC_COPY 2#define ZDELETE_STORED_PROC_ID 3//#define ZSCAN_NEXT 1//#define ZSCAN_NEXT_COMMIT 2//#define ZSCAN_NEXT_ABORT 12#define ZCOPY_COMMIT 3#define ZCOPY_REPEAT 4#define ZCOPY_ABORT 5#define ZCOPY_CLOSE 6//#define ZSCAN_CLOSE 6//#define ZEMPTY_FRAGMENT 0#define ZWRITE_LOCK 1#define ZSCAN_FRAG_CLOSED 2/* ------------------------------------------------------------------------- *//* ERROR CODES ADDED IN VERSION 0.1 AND 0.2 *//* ------------------------------------------------------------------------- */#define ZNOT_FOUND 1 // Not an error code, a return value#define ZNO_FREE_LQH_CONNECTION 414#define ZGET_DATAREC_ERROR 418#define ZGET_ATTRINBUF_ERROR 419#define ZNO_FREE_FRAGMENTREC 460 // Insert new fragment error code#define ZTAB_FILE_SIZE 464 // Insert new fragment error code + Start kernel#define ZNO_ADD_FRAGREC 465 // Insert new fragment error code/* ------------------------------------------------------------------------- *//* ERROR CODES ADDED IN VERSION 0.3 *//* ------------------------------------------------------------------------- */#define ZTAIL_PROBLEM_IN_LOG_ERROR 410#define ZGCI_TOO_LOW_ERROR 429 // GCP_SAVEREF error code#define ZTAB_STATE_ERROR 474 // Insert new fragment error code#define ZTOO_NEW_GCI_ERROR 479 // LCP Start error/* ------------------------------------------------------------------------- *//* ERROR CODES ADDED IN VERSION 0.4 *//* ------------------------------------------------------------------------- */#define ZNO_FREE_FRAG_SCAN_REC_ERROR 490 // SCAN_FRAGREF error code#define ZCOPY_NO_FRAGMENT_ERROR 491 // COPY_FRAGREF error code#define ZTAKE_OVER_ERROR 499#define ZCOPY_NODE_ERROR 1204#define ZTOO_MANY_COPY_ACTIVE_ERROR 1208 // COPY_FRAG and COPY_ACTIVEREF code#define ZCOPY_ACTIVE_ERROR 1210 // COPY_ACTIVEREF error code#define ZNO_TC_CONNECT_ERROR 1217 // Simple Read + SCAN/* ------------------------------------------------------------------------- *//* ERROR CODES ADDED IN VERSION 1.X *//* ------------------------------------------------------------------------- *///#define ZSCAN_BOOK_ACC_OP_ERROR 1219 // SCAN_FRAGREF error code#define ZFILE_CHANGE_PROBLEM_IN_LOG_ERROR 1220#define ZTEMPORARY_REDO_LOG_FAILURE 1221#define ZNO_FREE_MARKER_RECORDS_ERROR 1222#define ZNODE_SHUTDOWN_IN_PROGESS 1223#define ZTOO_MANY_FRAGMENTS 1224#define ZTABLE_NOT_DEFINED 1225#define ZDROP_TABLE_IN_PROGRESS 1226#define ZINVALID_SCHEMA_VERSION 1227/* ------------------------------------------------------------------------- *//* ERROR CODES ADDED IN VERSION 2.X *//* ------------------------------------------------------------------------- */#define ZNODE_FAILURE_ERROR 400/* ------------------------------------------------------------------------- *//* ERROR CODES FROM ACC *//* ------------------------------------------------------------------------- */#define ZNO_TUPLE_FOUND 626#define ZTUPLE_ALREADY_EXIST 630/* ------------------------------------------------------------------------- *//* ERROR CODES FROM TUP *//* ------------------------------------------------------------------------- */#define ZSEARCH_CONDITION_FALSE 899#define ZUSER_ERROR_CODE_LIMIT 6000#endif/** * @class dblqh * * @section secIntro Introduction * * Dblqh is the coordinator of the LDM. Dblqh is responsible for * performing operations on tuples. It does this job with help of * Dbacc block (that manages the index structures) and Dbtup
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -