From: Nando D. <na...@us...> - 2005-06-17 19:21:19
|
Update of /cvsroot/instantobjects/Source/Brokers/DBX In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23876/Brokers/DBX Modified Files: InstantDBX.pas Log Message: support for IB/Fb database evolution Index: InstantDBX.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Brokers/DBX/InstantDBX.pas,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** InstantDBX.pas 22 Feb 2005 10:54:23 -0000 1.4 --- InstantDBX.pas 17 Jun 2005 19:21:10 -0000 1.5 *************** *** 25,33 **** * * Contributor(s): ! * Carlo Barazzetta, Adrea Petrelli: porting Kylix ! * Carlo Barazzetta: ! * - blob streaming in XML format (Part, Parts, References) ! * - Prepared queries support ! * Carlo Barazzetta: Currency and LoginPrompt support * ***** END LICENSE BLOCK ***** *) --- 25,30 ---- * * Contributor(s): ! * Carlo Barazzetta, Adrea Petrelli, Nando Dessena ! * * ***** END LICENSE BLOCK ***** *) *************** *** 105,108 **** --- 102,107 ---- procedure AssignDataSetParams(DataSet : TDataSet; AParams: TParams); override; public + function CreateDBBuildCommand( + const CommandType: TInstantDBBuildCommandType): TInstantDBBuildCommand; override; function CreateDataSet(const AStatement: string; AParams: TParams = nil): TDataSet; override; function DataTypeToColumnType(DataType: TInstantDataType; Size: Integer): string; override; *************** *** 126,138 **** end; ! { InterBase } ! TInstantDBXInterBaseBroker = class(TInstantDBXBroker) private function GetDialect: Integer; protected function ColumnTypeByDataType(DataType: TInstantDataType): string; override; ! function GetDBMSName: string; override; ! function GetSQLDelimiters: string; override; function GetSQLQuote: Char; override; public --- 125,136 ---- end; ! { InterBase / Firebird (abstract) } ! TInstantDBXInterBaseFirebirdBroker = class(TInstantDBXBroker) private function GetDialect: Integer; protected function ColumnTypeByDataType(DataType: TInstantDataType): string; override; ! function CreateCatalog(const AScheme: TInstantScheme): TInstantCatalog; override; function GetSQLQuote: Char; override; public *************** *** 140,143 **** --- 138,155 ---- end; + { InterBase } + + TInstantDBXInterBaseBroker = class(TInstantDBXInterBaseFirebirdBroker) + protected + function GetDBMSName: string; override; + end; + + { Firebird through the UIB dbX driver } + + TInstantDBXFirebirdUIBBroker = class(TInstantDBXInterBaseFirebirdBroker) + protected + function GetDBMSName: string; override; + end; + { MS SQL Server } *************** *** 187,201 **** end; - procedure Register; - implementation uses ! SysUtils, InstantDBXConnectionDefEdit, InstantUtils, InstantConsts, Math; ! ! procedure Register; ! begin ! RegisterComponents('InstantObjects', [TInstantDBXConnector]); ! end; { TInstantDBXConnector } --- 199,207 ---- end; implementation uses ! SysUtils, InstantDBXConnectionDefEdit, InstantUtils, InstantConsts, Math, ! InstantDBBuild, InstantIBFbCatalog; { TInstantDBXConnector } *************** *** 230,233 **** --- 236,241 ---- else if SameText(Connection.DriverName, 'MySQL') then Result := TInstantDBXMySQLBroker.Create(Self) + else if SameText(Connection.DriverName, 'FirebirdUIB') then + Result := TInstantDBXFirebirdUIBBroker.Create(Self) else raise Exception.CreateFmt('dbExpress driver "%s" not supported', *************** *** 393,396 **** --- 401,425 ---- end; + function TInstantDBXBroker.CreateDBBuildCommand( + const CommandType: TInstantDBBuildCommandType): TInstantDBBuildCommand; + begin + if CommandType = ctAddTable then + Result := TInstantDBBuildAddTableSQLCommand.Create(CommandType) + else if CommandType = ctDropTable then + Result := TInstantDBBuildDropTableSQLCommand.Create(CommandType) + else if CommandType = ctAddField then + Result := TInstantDBBuildAddFieldSQLCommand.Create(CommandType) + else if CommandType = ctAlterField then + Result := TInstantDBBuildAlterFieldSQLCommand.Create(CommandType) + else if CommandType = ctDropField then + Result := TInstantDBBuildDropFieldSQLCommand.Create(CommandType) + else if CommandType = ctAddIndex then + Result := TInstantDBBuildAddIndexSQLCommand.Create(CommandType) + else if CommandType = ctDropIndex then + Result := TInstantDBBuildDropIndexSQLCommand.Create(CommandType) + else + Result := inherited CreateDBBuildCommand(CommandType); + end; + function TInstantDBXBroker.CreateResolver( Map: TInstantAttributeMap): TInstantSQLResolver; *************** *** 465,471 **** end; ! { TInstantDBXInterBaseBroker } ! function TInstantDBXInterBaseBroker.ColumnTypeByDataType( DataType: TInstantDataType): string; const --- 494,500 ---- end; ! { TInstantDBXInterBaseFirebirdBroker } ! function TInstantDBXInterBaseFirebirdBroker.ColumnTypeByDataType( DataType: TInstantDataType): string; const *************** *** 483,507 **** end; ! function TInstantDBXInterBaseBroker.GetDBMSName: string; begin ! Result := 'InterBase'; end; ! function TInstantDBXInterBaseBroker.GetDialect: Integer; begin Result := StrToIntDef(Connector.ParamByName('SQLDialect'), 3); end; ! function TInstantDBXInterBaseBroker.GetSQLDelimiters: string; ! begin ! // if Dialect >= 3 then ! // Result := '""' ! // else ! Result := inherited GetSQLDelimiters; ! end; ! ! function TInstantDBXInterBaseBroker.GetSQLQuote: Char; begin ! Result := '''' end; --- 512,529 ---- end; ! function TInstantDBXInterBaseFirebirdBroker.CreateCatalog( ! const AScheme: TInstantScheme): TInstantCatalog; begin ! Result := TInstantIBFbCatalog.Create(AScheme, Self); end; ! function TInstantDBXInterBaseFirebirdBroker.GetDialect: Integer; begin Result := StrToIntDef(Connector.ParamByName('SQLDialect'), 3); end; ! function TInstantDBXInterBaseFirebirdBroker.GetSQLQuote: Char; begin ! Result := ''''; end; *************** *** 664,667 **** --- 686,703 ---- end; + { TInstantDBXInterBaseBroker } + + function TInstantDBXInterBaseBroker.GetDBMSName: string; + begin + Result := 'InterBase'; + end; + + { TInstantDBXFirebirdUIBBroker } + + function TInstantDBXFirebirdUIBBroker.GetDBMSName: string; + begin + Result := 'Firebird'; + end; + initialization RegisterClass(TInstantDBXConnectionDef); |