?? myldbconst.pas
字號:
unit MYLDBConst;
interface
{$I MYLDBVer.inc}
uses SysUtils, MYLDBSecurity;
{$I MYLDBErrorL.inc}
{$I MYLDBErrorA.inc}
{$I MYLDBErrorG.inc}
const MYLDBVersion = 5.18;
MYLDBVersionText = '';
MYLDBSignature = 'MYLDB1';
MYLDBDiskSignature2 = 'DATABASE'; // 8 chars
MYLDBDiskSignature1 = 'MYLDB0LE'; // 8 chars
MYLDBDiskPageSignature = 'MYLDBP';
MYLDBMemoryDatabaseName = 'MEMORY';
MYLDBTemporaryDatabaseName = 'TEMP';
MYLDBTemporaryIndexName = 'TEMPORARY_INDEX_';
MYLDBTemporaryTableName = 'TEMPORARY_TABLE_';
MYLDBExpressionFieldName = 'Expr';
MYLDBDatabaseFileExtension = '.dat';
const
SOnNeedRepair = 'Database file was not correctly closed last time. Do you want to repair it?';
SOnNeedConvert = 'Database file you are opening is of old format. It will be converted to the current MYLDBolute Database format now. It is recommended to make a backup of the database before continuing.';
SRepairDialogMessage = 'Repairing Database...';
SCompactingDialogMessage = 'Compacting Database...';
SChangePasswordDialogMessage = 'Changing Database Password...';
SChangeDatabaseSettingsDialogMessage = 'Changing Database Settings...';
SCopyTableDialogMessage = 'Copy Table...';
SImportTableDialogMessage = 'Import Table...';
SExportTableDialogMessage = 'Export Table...';
SRestructureTableDialogMessage = 'Restructure Table...';
SBatchMoveDialogMessage = 'Batch Moving...';
SAborted = 'Terminated by User.';
SBatchMove = 'Batch Move...';
SMYLDBFuncStart = '%s start';
SMYLDBFuncEnd = '%s end';
//------------------------------------------------------------------------------
// disk consts
//------------------------------------------------------------------------------
const DefaultPageSize = 4096;
const DefaultExtentPageCount = 8;
const DefaultCryptoAgorithm = craRijndael_128;
const DefaultMaxSessionCount = 500;
//const DefaultDBHeaderReserved = 0;
//const DefaultLockedBytesReserved = 0;
//const DefaultLockedBytesCount = 2;
const DefaultRetryCount = 20;
const DefaultDelayMS = 50;
const OffsetToFreeSpaceManagerLockByte = 2;
const OffsetToTablesLockByte = 3;
const OffsetToDBHeaderLockByte = 4;
const WriteChangesStarted = 1;
const WriteChangesFinished = 2;
// Maximum number of LockTypes
const MYLDBMaxLockTypes = 6;
// locking retries, delays
const LockTablesRetries = 4500;
const LockTablesDelay = 20;
const DBHeaderLockRetries = 4500;
const DBHeaderLockDelay = 20;
const LockLastObjectIDRetries = 4500;
const LockLastObjectIDDelay = 20;
const ConnectSessionLockRetries = 4500;
const ConnectSessionLockDelay = 20;
const DisconnectSessionLockRetries = 4500;
const DisconnectSessionLockDelay = 20;
const OpenTableLockRetries = 50;
const OpenTableLockDelay = 100;
const RecordLockRetries = 15;
const RecordLockDelay = 100;
const EditRecordTableLockRetries = 900;
const EditRecordTableLockDelay = 100;
const DeleteRecordTableLockRetries = 900;
const DeleteRecordTableLockDelay = 100;
const PostRecordTableLockRetries = 2250;
const PostRecordTableLockDelay = 40;
const GetRecordTableLockRetries = 2250;
const GetRecordTableLockDelay = 40;
const CreateBlobStreamTableLockRetries = 2250;
const CreateBlobStreamTableLockDelay = 40;
const SearchTableLockRetries = 2250;
const SearchTableLockDelay = 40;
const BatchUpdateTableLockRetries = 1125;
const BatchUpdateTableLockDelay = 80;
const BatchUpdateTableIfFailedRetries = 15;
const BatchUpdateTableIfFailedDelay = 100;
const SelectTrialTableLockRetries = 2;
const SelectTrialTableLockDelay = 20;
const SelectTablesLockRetries = 900;
const SelectTablesLockDelay = 100;
const CommitTablesLockRetries = 900;
const CommitTablesLockDelay = 100;
const RangeTablesLockRetries = 900;
const RangeTablesLockDelay = 100;
// unlocking retries, delays
const TableUnlockRetries = 4500;
const TableUnlockDelay = 20;
const RecordUnlockRetries = 4500;
const RecordUnlockDelay = 20;
// reopen file on lost connection retries, delays
const ReopenDatabaseFileRetries = 3;
const ReopenDatabaseFileDelay = 1000;
// System First Pages
const
//MYLDBFirstPageNoEAM = 0;
//MYLDBFirstPageNoPFS = 1;
MYLDBFirstPageNoSystemDirectory = 2;
// Page Types
const
ptUnknown = 0;
ptEmpty = 1;
ptEAM = 2;
ptPFS = 3;
ptFileSystemDirectory = 4;
ptActiveSessionList = 5;
ptTableList = 6;
ptTableLocksFile = 7;
ptTableMetaDataFile = 8;
ptTableMostUpdatedFile = 9;
ptTableRecord = 10;
ptTableBlob = 11;
ptTableIndex = 12;
ptLastType = 12;
ptAnyPage = $FF;
MYLDBPageTypeNames: array [0..ptLastType] of String = (
'Unknown Page',
'Empty Page',
'EAM Page',
'PFS Page',
'FileSystemDirectory Page',
'ActiveSessionList Page',
'TableList Page',
'TableLocks Page',
'TableMetaData Page',
'TableMostUpdated Page',
'TableRecord Page',
'TableBlob Page',
'TableIndex Page'
);
MYLDB_PAGE_IS_FREE = 0;
MYLDB_PAGE_IS_FULL = 1;
MYLDB_EXTENT_IS_FREE = 0; // 00
MYLDB_EXTENT_IS_PARTIAL_USED = 1; // 01
MYLDB_EXTENT_IS_FULL = 3; // 11
// Invalid ID - returned by find methods in case if object was not found
const MAX_NAME_LENGTH = 255;
const INVALID_ID8 = Int64(-1);
const INVALID_ID4 = Integer(-1);
const OBJECTID_IS_NULL = Integer(-1);
const INVALID_PAGE_NO = Integer(-1);
const INVALID_OBJECT_ID = INVALID_ID4;
const INVALID_PAGE_RECORD_NO = $FFFF;
const INVALID_PAGE_ITEM_NO = $FFFF;
// DateTime Const
const TIME_IS_NULL = 0;//MaxInt;
{$WARNINGS OFF}
const DATE_IS_NULL: Integer = $80000000;
{$WARNINGS ON}
const MILSECS_IN_DAY = 24*60*60*1000;
// indexed only first 20 chars in string fields
DEFAULT_MAX_INDEXED_SIZE = 20;
DEFAULT_BLOB_TO_STRING_FIELD_SIZE = 4096;
DEFAULT_TABLE_MEMORY_BLOB_FILE_SIZE = 1024*1024;
// BTree
const BTreeNullFlagSize = 1;
const BTreeKeyIsNull = #1;
const BTreeKeyIsNotNull = #0;
const INVALID_SESSION_ID = Integer(-1);
const SYSTEM_SESSION_ID = Integer(-2);
const MIN_SESSION_ID = Integer(-2);
// error codes
const MYLDB_ERR_OK = 0;
const MYLDB_ERR_INSERT_RECORD = -1;
const MYLDB_ERR_UPDATE_RECORD = -2;
const MYLDB_ERR_DELETE_RECORD = -3;
const MYLDB_ERR_UPDATE_RECORD_MODIFIED = -4;
const MYLDB_ERR_DELETE_RECORD_MODIFIED = -5;
const MYLDB_ERR_UPDATE_RECORD_DELETED = -6;
const MYLDB_ERR_DELETE_RECORD_DELETED = -7;
const MYLDB_ERR_CONSTRAINT_VIOLATED = -8;
const MYLDB_ERR_UPDATE_RECORD_PROHIBITED = -9;
const MYLDB_ERR_DELETE_RECORD_PROHIBITED = -10;
const MYLDB_ERR_CANCEL_PROHIBITED = -11;
const MYLDB_ERR_RECORD_LOCKED = -12;
const MYLDB_ERR_TABLE_LOCKED = -13;
// ASC, DESC, CASE INSENSITIVITY constants
const MYLDB_ASC = 'ASC';
MYLDB_DESC = 'DESC';
MYLDB_NO_CASE = 'NO_CASE';
MYLDB_CASE = 'CASE';
// Auto generation object names
const
AutoNameSymbol = '$';
AutoNameSequenceAutoIncPrefix = 'Autoinc';
AutoNameConstraintNotNullPrefix = 'C_NotNull';
AutoNameConstraintCheckPrefix = 'C_Check';
AutoNameConstraintPKPreffix = 'C_PK';
AutoNameConstraintUniquePreffix = 'C_Unique';
// encryption
const MYLDB_CONTROL_BLOCK_SIZE = 256;
// page.state
const DELETED_PAGE_STATE = MaxInt;
const INVALID_PAGE_STATE = MaxInt-1;
const LAST_VALID_PAGE_STATE = MaxInt-2;
type
TReservedWord =
(
rwMYLDBOLUTE
,rwACTION
,rwADD
,rwALL
,rwALLOCATE
,rwALTER
,rwAND
,rwANY
,rwARE
,rwAS
,rwASC
,rwASSERTION
,rwAT
,rwAUTHORIZATION
,rwAVG
,rwBEGIN
,rwBETWEEN
,rwBIT
,rwBIT_LENGTH
,rwBOTH
,rwBY
,rwCASCADE
,rwCASCADED
,rwCASE
,rwCAST
,rwCATALOG
,rwCHAR
,rwCHARACTER
,rwCHAR_LENGTH
,rwCHARACTER_LENGTH
,rwCHECK
,rwCLOSE
,rwCOALESCE
,rwCOLLATE
,rwCOLLATION
,rwCOLUMN
,rwCOMMIT
,rwCONNECT
,rwCONNECTION
,rwCONSTRAINT
,rwCONSTRAINTS
,rwCONTINUE
,rwCONVERT
,rwCORRESPONDING
,rwCOUNT
,rwCREATE
,rwCROSS
,rwCURRENT
,rwCURRENT_DATE
,rwCURRENT_TIME
,rwCURRENT_TIMESTAMP
,rwCURRENT_USER
,rwCURSOR
,rwDATE
,rwDAY
,rwDEALLOCATE
,rwDEC
,rwDECIMAL
,rwDECLARE
,rwDEFAULT
,rwDEFERRABLE
,rwDEFERRED
,rwDELETE
,rwDESC
,rwDESCRIBE
,rwDESCRIPTOR
,rwDIAGNOSTICS
,rwDISCONNECT
,rwDISTINCT
,rwDOMAIN
,rwDOUBLE
,rwDROP
,rwELSE
,rwEND
,rwEND_EXEC
,rwESCAPE
,rwEXCEPT
,rwEXCEPTION
,rwEXEC
,rwEXECUTE
,rwEXISTS
,rwEXTERNAL
,rwEXTRACT
,rwFALSE
,rwFETCH
,rwFIRST
,rwFLOAT
,rwFOR
,rwFOREIGN
,rwFOUND
,rwFROM
,rwFULL
,rwGET
,rwGLOBAL
,rwGO
,rwGOTO
,rwGRANT
,rwGROUP
,rwHAVING
,rwHOUR
,rwIDENTITY
,rwIMMEDIATE
,rwIN
,rwINDICATOR
,rwINITIALLY
,rwINNER
,rwINPUT
,rwINSENSITIVE
,rwINSERT
,rwINT
,rwINTEGER
,rwINTERSECT
,rwINTERVAL
,rwINTO
,rwIS
,rwISOLATION
,rwJOIN
,rwKEY
,rwLANGUAGE
,rwLAST
,rwLEADING
,rwLEFT
,rwLEVEL
,rwLIKE
,rwLOCAL
,rwLOWER
,rwMATCH
,rwMAX
,rwMEMORY
,rwMIN
,rwMINUS
,rwMINUTE
,rwMODULE
,rwMONTH
,rwNAMES
,rwNATIONAL
,rwNATURAL
,rwNCHAR
,rwNEXT
,rwNO
,rwNOT
,rwNULL
,rwNULLIF
,rwNUMERIC
,rwOCTET_LENGTH
,rwOF
,rwON
,rwONLY
,rwOPEN
,rwOPTION
,rwOR
,rwORDER
,rwOUTER
,rwOUTPUT
,rwOVERLAPS
,rwPAD
,rwPARTIAL
,rwPOSITION
,rwPRECISION
,rwPREPARE
,rwPRESERVE
,rwPRIMARY
,rwPRIOR
,rwPRIVILEGES
,rwPROCEDURE
,rwPUBLIC
,rwREAD
,rwREAL
,rwREFERENCES
,rwRELATIVE
,rwRESTRICT
,rwREVOKE
,rwRIGHT
,rwROLLBACK
,rwROWS
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -