?? myldbbase.pas
字號:
unit MYLDBBase;
interface
uses SysUtils, Classes,
// MYLDBoluteDatabase units
{$I MYLDBVer.inc}
{$IFDEF DEBUG_LOG}
MYLDBDebug,
{$ENDIF}
MYLDBMemory,
MYLDBCompression,
MYLDBSecurity,
MYLDBTypes,
MYLDBConverts,
MYLDBTypesRoutines,
MYLDBVariant,
MYLDBLexer,
MYLDBExcept,
MYLDBConst;
type
// Events
TMYLDBFilterRecord = Pointer;
type
TMYLDBBaseSession = class;
TMYLDBCursor = class;
TMYLDBIndexDef = class;
TMYLDBFieldDef = class;
TMYLDBFieldDefs = class;
TMYLDBIndexDefs = class;
TMYLDBCursorPos = record
FirstPosition: Boolean;
LastPosition: Boolean;
RecordID: TMYLDBRecordID;
end;
PMYLDBCursorPos = ^TMYLDBCursorPos;
////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBMetaObjectDef
//
////////////////////////////////////////////////////////////////////////////////
TMYLDBMetaObjectDef = class (TObject)
private
FName: TMYLDBObjectName;
FObjectID: TMYLDBObjectID;
FSchemaName: String;
FSchemaID: TMYLDBObjectID;
public
constructor Create;
procedure Assign(Source: TMYLDBMetaObjectDef); virtual;
procedure LoadFromStream(Stream: TStream); virtual;
procedure SaveToStream(Stream: TStream); virtual;
public
property Name: TMYLDBObjectName read FName write FName;
property ObjectID: TMYLDBObjectID read FObjectID write FObjectID;
property SchemaName: String read FSchemaName write FSchemaName;
property SchemaID: TMYLDBObjectID read FSchemaID write FSchemaID;
end; // TMYLDBMetaObjectDef
////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBFieldDef
//
////////////////////////////////////////////////////////////////////////////////
TMYLDBFieldDef = class (TMYLDBMetaObjectDef)
private
FBaseFieldType: TMYLDBBaseFieldType;
FAdvancedFieldType: TMYLDBAdvancedFieldType;
FFieldSize: Integer;
FDiskDataSize: Integer; // size of binary data in disk page or table file
FMemoryDataSize: Integer; // size of binary data in record buffer
FDiskOffset: Integer; // offset to binary data in disk page or table file
FMemoryOffset: Integer; // offset to binary data in record buffer
FFieldNoReference: Integer; // index of this field in TableData.FieldManager.FieldDefs
// Default Value
FDefaultValue: TMYLDBVariant;
FDefaultValueExpr: TObject;
// Blob data
FBLOBCompressionAlgorithm: TMYLDBCompressionAlgorithm;
FBLOBCompressionMode: TMYLDBCompressionMode;
FBLOBBlockSize: Integer;
// Autoinc settings
FAutoincIncrement: Int64;
FAutoincInitialValue: Int64;
FAutoincMinValue: Int64;
FAutoincMaxValue: Int64;
FAutoincCycled: ByteBool;
private
procedure RecalcInternalSizes;
procedure CreateDefaultValueExprIfNeeded;
public
constructor Create;
destructor Destroy; override;
procedure Assign(Source: TMYLDBMetaObjectDef); override;
procedure SetFieldDefDataType(
AdvancedFieldType: TMYLDBAdvancedFieldType;
FieldSize: Integer = 0
); overload;
procedure SetFieldDefDataType(
BaseFieldType: TMYLDBBaseFieldType;
FieldSize: Integer = 0
); overload;
procedure LoadFromStream(Stream: TStream); override;
procedure SaveToStream(Stream: TStream); override;
public
property BaseFieldType: TMYLDBBaseFieldType read FBaseFieldType write FBaseFieldType;
property AdvancedFieldType: TMYLDBAdvancedFieldType read FAdvancedFieldType write FAdvancedFieldType;
property FieldSize: Integer read FFieldSize write FFieldSize;
property DiskOffset: Integer read FDiskOffset write FDiskOffset;
property MemoryOffset: Integer read FMemoryOffset write FMemoryOffset;
property DiskDataSize: Integer read FDiskDataSize write FDiskDataSize;
property MemoryDataSize: Integer read FMemoryDataSize write FMemoryDataSize;
property FieldNoReference: Integer read FFieldNoReference write FFieldNoReference;
//property DefaultValueType: TMYLDBDefaultValueType read FDefaultValueType write FDefaultValueType;
property DefaultValue: TMYLDBVariant read FDefaultValue write FDefaultValue;
property DefaultValueExpr: TObject read FDefaultValueExpr;
property AutoincIncrement: Int64 read FAutoincIncrement write FAutoincIncrement;
property AutoincInitialValue: Int64 read FAutoincInitialValue write FAutoincInitialValue;
property AutoincMinValue: Int64 read FAutoincMinValue write FAutoincMinValue;
property AutoincMaxValue: Int64 read FAutoincMaxValue write FAutoincMaxValue;
property AutoincCycled: ByteBool read FAutoincCycled write FAutoincCycled;
property BLOBCompressionAlgorithm: TMYLDBCompressionAlgorithm read FBLOBCompressionAlgorithm write FBLOBCompressionAlgorithm;
property BLOBCompressionMode: TMYLDBCompressionMode read FBLOBCompressionMode write FBLOBCompressionMode;
property BLOBBlockSize: Integer read FBLOBBlockSize write FBLOBBlockSize;
end; // TMYLDBFieldDef
////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBIndexDef
//
////////////////////////////////////////////////////////////////////////////////
TMYLDBIndexType = (itBTree,itAnotherOne);
TMYLDBIndexColumn = class (TObject)
private
FFieldName: String;
FDescending: ByteBool;
FCaseInsensitive: ByteBool;
FMaxIndexedSize: Integer;
public
procedure LoadFromStream(Stream: TStream);
procedure SaveToStream(Stream: TStream);
public
property FieldName: String read FFieldName write FFieldName;
property Descending: ByteBool read FDescending write FDescending;
property CaseInsensitive: ByteBool read FCaseInsensitive write FCaseInsensitive;
property MaxIndexedSize: Integer read FMaxIndexedSize write FMaxIndexedSize;
end;
////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBIndexDef
//
////////////////////////////////////////////////////////////////////////////////
TMYLDBIndexDef = class (TMYLDBMetaObjectDef)
private
FIndexType: TMYLDBIndexType; // BTree or other
FIndexColumns: array of TMYLDBIndexColumn;
FUnique: ByteBool;
FPrimary: ByteBool;
FRootPageNo: TMYLDBPageNo;
FTemporary: ByteBool;
FSessionID: TMYLDBSessionID; // for temp index
FTableState: Integer; // for temp index
FNeedRebuild: ByteBool; // for temp index
function GetIndexColumn(Index: Integer): TMYLDBIndexColumn;
function GetColumnCount: Integer;
procedure SetColumnCount(Value: Integer);
public
constructor Create;
destructor Destroy; override;
procedure Assign(Source: TMYLDBMetaObjectDef); override;
procedure AssignByNames(FieldNames, AscDescList, CaseSensitivityList: TStringList);
procedure LoadFromStream(Stream: TStream); override;
procedure SaveToStream(Stream: TStream); override;
public
property IndexType: TMYLDBIndexType read FIndexType write FIndexType;
property Columns[Index: Integer]: TMYLDBIndexColumn read GetIndexColumn;
property ColumnCount: Integer read GetColumnCount write SetColumnCount;
property Unique: ByteBool read FUnique write FUnique;
property Primary: ByteBool read FPrimary write FPrimary;
property RootPageNo: TMYLDBPageNo read FRootPageNo write FRootPageNo;
property Temporary: ByteBool read FTemporary write FTemporary;
property SessionID: TMYLDBSessionID read FSessionID write FSessionID;
property TableState: Integer read FTableState write FTableState;
property NeedRebuild: ByteBool read FNeedRebuild write FNeedRebuild;
end; // TMYLDBIndexDef
////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBConstraintDef
//
////////////////////////////////////////////////////////////////////////////////
TMYLDBConstraintDef = class (TMYLDBMetaObjectDef)
private
FConstraintType: TMYLDBConstraintType;
public
procedure Assign(Source: TMYLDBMetaObjectDef); override;
public
property ConstraintType: TMYLDBConstraintType read FConstraintType write FConstraintType;
end;
TMYLDBConstraintDefNotNull = class (TMYLDBConstraintDef)
private
FTableSchemaName: TMYLDBObjectName; // Shema
FTableSchemaObjectID: TMYLDBObjectID;
FTableName: TMYLDBObjectName; // Table
FTableObjectID: TMYLDBObjectID;
FColumnName: TMYLDBObjectName; // Column
FColumnObjectID: TMYLDBObjectID;
public
constructor Create;
procedure Assign(Source: TMYLDBMetaObjectDef); override;
procedure SetNames(
ColumnName: String;
TableName: String = '';
SchemaName: String = ''
);
procedure LoadFromStream(Stream: TStream); override;
procedure SaveToStream(Stream: TStream); override;
public
property TableSchemaName: TMYLDBObjectName read FTableSchemaName write FTableSchemaName;
property TableSchemaObjectID: TMYLDBObjectID read FTableSchemaObjectID write FTableSchemaObjectID;
property TableName: TMYLDBObjectName read FTableName write FTableName;
property TableObjectID: TMYLDBObjectID read FTableObjectID write FTableObjectID;
property ColumnName: TMYLDBObjectName read FColumnName write FColumnName;
property ColumnObjectID: TMYLDBObjectID read FColumnObjectID write FColumnObjectID;
end;// TMYLDBConstraintDef
TMYLDBConstraintDefCheck = class (TMYLDBConstraintDef)
private
FTableSchemaName: TMYLDBObjectName; // Shema
FTableSchemaObjectID: TMYLDBObjectID;
FTableName: TMYLDBObjectName; // Table
FTableObjectID: TMYLDBObjectID;
FColumnName: TMYLDBObjectName; // Column
FColumnObjectID: TMYLDBObjectID;
FMinValue: TMYLDBVariant;
FMaxValue: TMYLDBVariant;
public
constructor Create;
destructor Destroy; override;
procedure Assign(Source: TMYLDBMetaObjectDef); override;
procedure SetNames(
ColumnName: String;
TableName: String = '';
SchemaName: String = ''
);
procedure LoadFromStream(Stream: TStream); override;
procedure SaveToStream(Stream: TStream); override;
public
property MinValue: TMYLDBVariant read FMinValue;
property MaxValue: TMYLDBVariant read FMaxValue;
property TableSchemaName: TMYLDBObjectName read FTableSchemaName write FTableSchemaName;
property TableSchemaObjectID: TMYLDBObjectID read FTableSchemaObjectID write FTableSchemaObjectID;
property TableName: TMYLDBObjectName read FTableName write FTableName;
property TableObjectID: TMYLDBObjectID read FTableObjectID write FTableObjectID;
property ColumnName: TMYLDBObjectName read FColumnName write FColumnName;
property ColumnObjectID: TMYLDBObjectID read FColumnObjectID write FColumnObjectID;
end;//TMYLDBConstraintDefCheck
TMYLDBConstraintColumn = record
ColumnName: TMYLDBObjectName; // Column
ColumnObjectID: TMYLDBObjectID;
end;
TMYLDBConstraintDefUnique = class (TMYLDBConstraintDef)
private
FTableSchemaName: TMYLDBObjectName; // Shema
FTableSchemaObjectID: TMYLDBObjectID;
FTableName: TMYLDBObjectName; // Table
FTableObjectID: TMYLDBObjectID;
FIndexName: TMYLDBObjectName; // Index ID
FIndexObjectID: TMYLDBObjectID;
public
Columns: array of TMYLDBConstraintColumn; // Columns
public
constructor Create;
destructor Destroy; override;
procedure Assign(Source: TMYLDBMetaObjectDef); override;
procedure LoadFromStream(Stream: TStream); override;
procedure SaveToStream(Stream: TStream); override;
public
property TableSchemaName: TMYLDBObjectName read FTableSchemaName write FTableSchemaName;
property TableSchemaObjectID: TMYLDBObjectID read FTableSchemaObjectID write FTableSchemaObjectID;
property TableName: TMYLDBObjectName read FTableName write FTableName;
property TableObjectID: TMYLDBObjectID read FTableObjectID write FTableObjectID;
property IndexName: TMYLDBObjectName read FIndexName write FIndexName;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -