📄 dbtup.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 DBTUP_H#define DBTUP_H#include <pc.hpp>#include <SimulatedBlock.hpp>#include <ndb_limits.h>#include <trigger_definitions.h>#include <ArrayList.hpp>#include <AttributeHeader.hpp>#include <Bitmask.hpp>#include <signaldata/TupKey.hpp>#include <signaldata/CreateTrig.hpp>#include <signaldata/DropTrig.hpp>#include <signaldata/TrigAttrInfo.hpp>#include <signaldata/BuildIndx.hpp>#define ZWORDS_ON_PAGE 8192 /* NUMBER OF WORDS ON A PAGE. */#define ZATTRBUF_SIZE 32 /* SIZE OF ATTRIBUTE RECORD BUFFER */#define ZMIN_PAGE_LIMIT_TUPKEYREQ 5#define ZTUP_VERSION_BITS 15#ifdef DBTUP_C//------------------------------------------------------------------// Jam Handling://// When DBTUP reports lines through jam in the trace files it has to// be interpreted. 4024 means as an example line 24 in DbtupCommit.cpp// Thus 4000 is added to the line number beacuse it is located in the// file DbtupCommit.cpp. The following is the exhaustive list of the// added value in the various files. ndbrequire, ptrCheckGuard still// only reports the line number in the file it currently is located in.// // DbtupExecQuery.cpp 0// DbtupBuffer.cpp 2000// DbtupRoutines.cpp 3000// DbtupCommit.cpp 5000// DbtupFixAlloc.cpp 6000// DbtupTrigger.cpp 7000// DbtupAbort.cpp 9000// DbtupLCP.cpp 10000// DbtupUndoLog.cpp 12000// DbtupPageMap.cpp 14000// DbtupPagMan.cpp 16000// DbtupStoredProcDef.cpp 18000// DbtupMeta.cpp 20000// DbtupTabDesMan.cpp 22000// DbtupGen.cpp 24000// DbtupSystemRestart.cpp 26000// DbtupIndex.cpp 28000// DbtupDebug.cpp 30000// DbtupScan.cpp 32000//------------------------------------------------------------------/*2.2 LOCAL SYMBOLS-----------------*//* ---------------------------------------------------------------- *//* S I Z E O F R E C O R D S *//* ---------------------------------------------------------------- */#define ZNO_OF_ATTRBUFREC 10000 /* SIZE OF ATTRIBUTE INFO FILE */#define ZNO_OF_CONCURRENT_OPEN_OP 40 /* NUMBER OF CONCURRENT OPENS */#define ZNO_OF_CONCURRENT_WRITE_OP 80 /* NUMBER OF CONCURRENT DISK WRITES*/#define ZNO_OF_FRAGOPREC 20 /* NUMBER OF CONCURRENT ADD FRAG. */#define ZNO_OF_LCP_REC 10 /* NUMBER OF CONCURRENT CHECKPOINTS*/#define TOT_PAGE_RECORD_SPACE 262144 /* SIZE OF PAGE RECORD FILE. */#define ZNO_OF_PAGE TOT_PAGE_RECORD_SPACE/ZWORDS_ON_PAGE #define ZNO_OF_PAGE_RANGE_REC 128 /* SIZE OF PAGE RANGE FILE */#define ZNO_OF_PARALLELL_UNDO_FILES 16 /* NUMBER OF PARALLEL UNDO FILES */#define ZNO_OF_RESTART_INFO_REC 10 /* MAXIMUM PARALLELL RESTART INFOS */ /* 24 SEGMENTS WITH 8 PAGES IN EACH*/ /* PLUS ONE UNDO BUFFER CACHE */// Undo record identifiers are 32-bits with page index 13-bits#define ZUNDO_RECORD_ID_PAGE_INDEX 13 /* 13 BITS = 8192 WORDS/PAGE */#define ZUNDO_RECORD_ID_PAGE_INDEX_MASK (ZWORDS_ON_PAGE - 1) /* 1111111111111 */// Trigger constants#define ZDEFAULT_MAX_NO_TRIGGERS_PER_TABLE 16/* ---------------------------------------------------------------- */// VARIABLE NUMBERS OF PAGE_WORD, UNDO_WORD AND LOGIC_WORD FOR// COMMUNICATION WITH FILE SYSTEM/* ---------------------------------------------------------------- */#define ZBASE_ADDR_PAGE_WORD 1 /* BASE ADDRESS OF PAGE_WORD VAR */#define ZBASE_ADDR_UNDO_WORD 2 /* BASE ADDRESS OF UNDO_WORD VAR */#define ZBASE_ADDR_LOGIC_WORD 3 /* BASE ADDRESS OF LOGIC_WORD VAR *//* ---------------------------------------------------------------- */// NUMBER OF PAGES SENT TO DISK IN DATA BUFFER AND UNDO BUFFER WHEN// OPTIMUM PERFORMANCE IS ACHIEVED./* ---------------------------------------------------------------- */#define ZUB_SEGMENT_SIZE 8 /* SEGMENT SIZE OF UNDO BUFFER */#define ZDB_SEGMENT_SIZE 8 /* SEGMENT SIZE OF DATA BUFFER *//* ---------------------------------------------------------------- *//* A ATTRIBUTE MAY BE NULL, DYNAMIC OR NORMAL. A NORMAL ATTRIBUTE *//* IS A ATTRIBUTE THAT IS NOT NULL OR DYNAMIC. A NULL ATTRIBUTE *//* MAY HAVE NO VALUE. A DYNAMIC ATTRIBUTE IS A NULL ATTRIBUTE THAT *//* DOES NOT HAVE TO BE A MEMBER OF EVERY TUPLE I A CERTAIN TABLE. *//* ---------------------------------------------------------------- *//** * #defines moved into include/kernel/Interpreter.hpp */#define ZMAX_REGISTER 21#define ZINSERT_DELETE 0/* ---------------------------------------------------------------- *//* THE MINIMUM SIZE OF AN 'EMPTY' TUPLE HEADER IN R-WORDS *//* ---------------------------------------------------------------- */#define ZTUP_HEAD_MINIMUM_SIZE 2 /* THE TUPLE HEADER FIELD 'SIZE OF NULL ATTR. FIELD' SPECIFYES */ /* THE SIZE OF THE TUPLE HEADER FIELD 'NULL ATTR. FIELD'. */ /* THE TUPLE HEADER FIELD 'TYPE' SPECIFYES THE TYPE OF THE TUPLE */ /* HEADER. */ /* TUPLE ATTRIBUTE INDEX CLUSTERS, ATTRIBUTE */ /* CLUSTERS AND A DYNAMIC ATTRIBUTE HEADER. */ /* IT MAY ALSO CONTAIN SHORT ATTRIBUTES AND */ /* POINTERS TO LONG ATTRIBUTE HEADERS. */ /* TUPLE ATTRIBUTE INDEX CLUSTERS, ATTRIBUTE */ /* CLUSTERS AND A DYNAMIC ATTRIBUTE HEADER. */#define ZTH_TYPE3 2 /* TUPLE HEADER THAT MAY HAVE A POINTER TO */ /* A DYNAMIC ATTRIBUTE HEADER. IT MAY ALSO */ /* CONTAIN SHORT ATTRIBUTES AND POINTERS */ /* TO LONG ATTRIBUTE HEADERS. */ /* DATA STRUCTURE TYPES */ /* WHEN ATTRIBUTE INFO IS SENT WITH A ATTRINFO-SIGNAL THE */ /* VARIABLE TYPE IS SPECIFYED. THIS MUST BE DONE TO BE ABLE TO */ /* NOW HOW MUCH DATA OF A ATTRIBUTE TO READ FROM ATTRINFO. */#define ZFIXED_ARRAY 2 /* ZFIXED ARRAY FIELD. */#define ZNON_ARRAY 1 /* NORMAL FIELD. */#define ZVAR_ARRAY 0 /* VARIABLE ARRAY FIELD */#define ZNOT_STORE 3 /* THE ATTR IS STORED IN THE INDEX BLOCK */#define ZMAX_SMALL_VAR_ARRAY 256 /* PLEASE OBSERVE THAT THEESE CONSTANTS CORRESPONDS TO THE NUMBER */ /* OF BITS NEEDED TO REPRESENT THEM D O N O T C H A N G E */#define Z1BIT_VAR 0 /* 1 BIT VARIABLE. */#define Z2BIT_VAR 1 /* 2 BIT VARIABLE. */#define Z4BIT_VAR 2 /* 4 BIT VARIABLE. */#define Z8BIT_VAR 3 /* 8 BIT VARIABLE. */#define Z16BIT_VAR 4 /* 16 BIT VARIABLE. */#define Z32BIT_VAR 5 /* 32 BIT VARIABLE. */#define Z64BIT_VAR 6 /* 64 BIT VARIABLE. */#define Z128BIT_VAR 7 /* 128 BIT VARIABLE. */ /* WHEN A REQUEST CAN NOT BE EXECUTED BECAUSE OF A ERROR THE */ /* ERROR MUST BE IDENTIFYED BY MEANS OF A ERROR CODE AND SENT TO */ /* THE REQUESTER. */#define ZGET_OPREC_ERROR 804 // TUP_SEIZEREF#define ZEXIST_FRAG_ERROR 816 // Add fragment#define ZFULL_FRAGRECORD_ERROR 817 // Add fragment#define ZNO_FREE_PAGE_RANGE_ERROR 818 // Add fragment#define ZNOFREE_FRAGOP_ERROR 830 // Add fragment#define ZTOO_LARGE_TUPLE_ERROR 851 // Add fragment#define ZNO_FREE_TAB_ENTRY_ERROR 852 // Add fragment#define ZNO_PAGES_ALLOCATED_ERROR 881 // Add fragment#define ZGET_REALPID_ERROR 809#define ZNOT_IMPLEMENTED_ERROR 812#define ZSEIZE_ATTRINBUFREC_ERROR 805#define ZTOO_MUCH_ATTRINFO_ERROR 823#define ZMEM_NOTABDESCR_ERROR 826#define ZMEM_NOMEM_ERROR 827#define ZAI_INCONSISTENCY_ERROR 829#define ZNO_ILLEGAL_NULL_ATTR 839#define ZNOT_NULL_ATTR 840#define ZNO_INSTRUCTION_ERROR 871#define ZOUTSIDE_OF_PROGRAM_ERROR 876#define ZSTORED_PROC_ID_ERROR 877#define ZREGISTER_INIT_ERROR 878#define ZATTRIBUTE_ID_ERROR 879#define ZTRY_TO_READ_TOO_MUCH_ERROR 880#define ZTOTAL_LEN_ERROR 882#define ZATTR_INTERPRETER_ERROR 883#define ZSTACK_OVERFLOW_ERROR 884#define ZSTACK_UNDERFLOW_ERROR 885#define ZTOO_MANY_INSTRUCTIONS_ERROR 886#define ZTRY_TO_UPDATE_ERROR 888#define ZCALL_ERROR 890#define ZTEMPORARY_RESOURCE_FAILURE 891#define ZSTORED_SEIZE_ATTRINBUFREC_ERROR 873 // Part of Scan#define ZREAD_ONLY_CONSTRAINT_VIOLATION 893#define ZVAR_SIZED_NOT_SUPPORTED 894#define ZINCONSISTENT_NULL_ATTRIBUTE_COUNT 895#define ZTUPLE_CORRUPTED_ERROR 896#define ZTRY_UPDATE_PRIMARY_KEY 897#define ZMUST_BE_ABORTED_ERROR 898#define ZTUPLE_DELETED_ERROR 626#define ZINSERT_ERROR 630#define ZINVALID_CHAR_FORMAT 744 /* SOME WORD POSITIONS OF FIELDS IN SOME HEADERS */#define ZPAGE_STATE_POS 0 /* POSITION OF PAGE STATE */#define ZPAGE_NEXT_POS 1 /* POSITION OF THE NEXT POINTER WHEN IN FREELIST */#define ZPAGE_PREV_POS 2 /* POSITION OF THE PREVIOUS POINTER WHEN IN FREELIST */#define ZFREELIST_HEADER_POS 3 /* POSITION OF THE FIRST FREELIST */#define ZPAGE_FRAG_PAGE_ID_POS 4 /* POSITION OF FRAG PAGE ID WHEN USED*/#define ZPAGE_NEXT_CLUST_POS 5 /* POSITION OF NEXT FREE SET OF PAGES */#define ZPAGE_FIRST_CLUST_POS 2 /* POSITION OF THE POINTER TO THE FIRST PAGE IN A CLUSTER */#define ZPAGE_LAST_CLUST_POS 6 /* POSITION OF THE POINTER TO THE LAST PAGE IN A CLUSTER */#define ZPAGE_PREV_CLUST_POS 7 /* POSITION OF THE PREVIOUS POINTER */#define ZPAGE_HEADER_SIZE 32 /* NUMBER OF WORDS IN MEM PAGEHEADER */#define ZDISK_PAGE_HEADER_SIZE 32 /* NUMBER OF WORDS IN DISK PAGEHEADER */#define ZNO_OF_FREE_BLOCKS 3 /* NO OF FREE BLOCK IN THE DISK PAGE */#define ZDISK_PAGE_ID 8 /* ID OF THE PAGE ON THE DISK */#define ZBLOCK_LIST 9#define ZCOPY_OF_PAGE 10#define ZPAGE_PHYSICAL_INDEX 11#define ZNEXT_IN_PAGE_USED_LIST 12#define ZPREV_IN_PAGE_USED_LIST 13#define ZDISK_USED_TYPE 14#define ZFREE_COMMON 1 /* PAGE STATE, PAGE IN COMMON AREA */#define ZEMPTY_MM 2 /* PAGE STATE, PAGE IN EMPTY LIST */#define ZTH_MM_FREE 3 /* PAGE STATE, TUPLE HEADER PAGE WITH FREE AREA */#define ZTH_MM_FULL 4 /* PAGE STATE, TUPLE HEADER PAGE WHICH IS FULL */#define ZAC_MM_FREE 5 /* PAGE STATE, ATTRIBUTE CLUSTER PAGE WITH FREE AREA */#define ZTH_MM_FREE_COPY 7 /* PAGE STATE, TH COPY PAGE WITH FREE AREA */#define ZTH_MM_FULL_COPY 8 /* PAGE STATE, TH COPY PAGE WHICH IS FULL */#define ZAC_MM_FREE_COPY 9 /* PAGE STATE, AC COPY PAGE WITH FREE AREA */#define ZMAX_NO_COPY_PAGES 4 /* THE MAXIMUM NUMBER OF COPY PAGES ALLOWED PER FRAGMENT */ /* CONSTANTS USED TO HANDLE TABLE DESCRIPTOR RECORDS */ /* ALL POSITIONS AND SIZES IS BASED ON R-WORDS (32-BIT ON APZ 212) */#define ZTD_HEADER 0 /* HEADER POSITION */#define ZTD_DATASIZE 1 /* SIZE OF THE DATA IN THIS CHUNK */#define ZTD_SIZE 2 /* TOTAL SIZE OF TABLE DESCRIPTOR */ /* TRAILER POSITIONS FROM END OF TABLE DESCRIPTOR RECORD */#define ZTD_TR_SIZE 1 /* SIZE DESCRIPTOR POS FROM END+1 */#define ZTD_TR_TYPE 2#define ZTD_TRAILER_SIZE 2 /* TOTAL SIZE OF TABLE TRAILER */#define ZAD_SIZE 2 /* TOTAL SIZE OF ATTR DESCRIPTOR */#define ZAD_LOG_SIZE 1 /* TWO LOG OF TOTAL SIZE OF ATTR DESCRIPTOR */ /* CONSTANTS USED TO HANDLE TABLE DESCRIPTOR AS A FREELIST */#define ZTD_FL_HEADER 0 /* HEADER POSITION */#define ZTD_FL_SIZE 1 /* TOTAL SIZE OF THIS FREELIST ENTRY */#define ZTD_FL_PREV 2 /* PREVIOUS RECORD IN FREELIST */#define ZTD_FL_NEXT 3 /* NEXT RECORD IN FREELIST */#define ZTD_FREE_SIZE 16 /* SIZE NEEDED TO HOLD ONE FL ENTRY */ /* CONSTANTS USED IN LSB OF TABLE DESCRIPTOR HEADER DESCRIBING USAGE */#define ZTD_TYPE_FREE 0 /* RECORD LINKED INTO FREELIST */#define ZTD_TYPE_NORMAL 1 /* RECORD USED AS TABLE DESCRIPTOR */ /* ATTRIBUTE OPERATION CONSTANTS */#define ZLEAF 1#define ZNON_LEAF 2 /* ATTRINBUFREC VARIABLE POSITIONS. */#define ZBUF_PREV 29 /* POSITION OF 'PREV'-VARIABLE (USED BY INTERPRETED EXEC) */#define ZBUF_DATA_LEN 30 /* POSITION OF 'DATA LENGTH'-VARIABLE. */#define ZBUF_NEXT 31 /* POSITION OF 'NEXT'-VARIABLE. */#define ZSAVE_BUF_NEXT 28#define ZSAVE_BUF_DATA_LEN 27 /* RETURN POINTS. */ /* RESTART PHASES */#define ZSTARTPHASE1 1#define ZSTARTPHASE2 2#define ZSTARTPHASE3 3#define ZSTARTPHASE4 4#define ZSTARTPHASE6 6#define ZADDFRAG 0 /* CHECKPOINT RECORD TYPES */#define ZLCPR_TYPE_INSERT_TH 0 /* INSERT TUPLE HEADER */#define ZLCPR_TYPE_DELETE_TH 1 /* DELETE TUPLE HEADER */#define ZLCPR_TYPE_UPDATE_TH 2 /* DON'T CREATE IT, JUST UPDETE */#define ZLCPR_TYPE_INSERT_TH_NO_DATA 3 /* INSERT TUPLE HEADER */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -