ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/branches/journaling/fbintf/client/2.5/FB25Attachment.pas
(Generate patch)

Comparing:
ibx/trunk/fbintf/client/2.5/FB25Attachment.pas (file contents), Revision 263 by tony, Thu Dec 6 15:55:01 2018 UTC vs.
ibx/branches/journaling/fbintf/client/2.5/FB25Attachment.pas (file contents), Revision 363 by tony, Tue Dec 7 13:30:05 2021 UTC

# Line 49 | Line 49 | type
49      FFirebird25ClientAPI: TFB25ClientAPI;
50    protected
51      procedure CheckHandle; override;
52 +    function GetAttachment: IAttachment; override;
53    public
54      constructor Create(api: TFB25ClientAPI; DatabaseName: AnsiString; aDPB: IDPB;
55        RaiseExceptionOnConnectError: boolean);
# Line 65 | Line 66 | type
66      procedure Disconnect(Force: boolean=false); override;
67      function IsConnected: boolean; override;
68      procedure DropDatabase;
69 <    function StartTransaction(TPB: array of byte; DefaultCompletion: TTransactionCompletion): ITransaction; override;
70 <    function StartTransaction(TPB: ITPB; DefaultCompletion: TTransactionCompletion): ITransaction; override;
69 >    function StartTransaction(TPB: array of byte; DefaultCompletion: TTransactionCompletion; aName: AnsiString): ITransaction; override;
70 >    function StartTransaction(TPB: ITPB; DefaultCompletion: TTransactionCompletion; aName: AnsiString): ITransaction; override;
71      procedure ExecImmediate(transaction: ITransaction; sql: AnsiString; aSQLDialect: integer); override;
72 <    function Prepare(transaction: ITransaction; sql: AnsiString; aSQLDialect: integer): IStatement; override;
72 >    function Prepare(transaction: ITransaction; sql: AnsiString; aSQLDialect: integer; CursorName: AnsiString=''): IStatement; override;
73      function PrepareWithNamedParameters(transaction: ITransaction; sql: AnsiString;
74 <                       aSQLDialect: integer; GenerateParamNames: boolean=false): IStatement; override;
74 >                       aSQLDialect: integer; GenerateParamNames: boolean=false;
75 >                       CaseSensitiveParams: boolean=false; CursorName: AnsiString=''): IStatement; override;
76      function GetEventHandler(Events: TStrings): IEvents; override;
77 <    function CreateBlob(transaction: ITransaction; RelationName, ColumnName: AnsiString; BPB: IBPB=nil): IBlob; overload;
76 <    function CreateBlob(transaction: ITransaction; BlobMetaData: IBlobMetaData; BPB: IBPB=nil): IBlob; overload;
77 >    function CreateBlob(transaction: ITransaction; BlobMetaData: IBlobMetaData; BPB: IBPB=nil): IBlob; overload; override;
78      function CreateBlob(transaction: ITransaction; SubType: integer; aCharSetID: cardinal=0; BPB: IBPB=nil): IBlob; overload;
78    function OpenBlob(transaction: ITransaction; RelationName, ColumnName: AnsiString; BlobID: TISC_QUAD; BPB: IBPB=nil): IBlob; overload;
79      function OpenBlob(transaction: ITransaction; BlobMetaData: IBlobMetaData; BlobID: TISC_QUAD; BPB: IBPB=nil): IBlob; overload; override;
80  
81 <    function OpenArray(transaction: ITransaction; RelationName, ColumnName: AnsiString;
82 <      ArrayID: TISC_QUAD): IArray;
83 <    function CreateArray(transaction: ITransaction; RelationName, ColumnName: AnsiString
84 <      ): IArray; overload;
85 <    function CreateArray(transaction: ITransaction; ArrayMetaData: IArrayMetaData): IArray; overload;
81 >    function OpenArray(transaction: ITransaction; ArrayMetaData: IArrayMetaData; ArrayID: TISC_QUAD): IArray; overload; override;
82 >    function CreateArray(transaction: ITransaction; ArrayMetaData: IArrayMetaData): IArray; overload; override;
83      function CreateArrayMetaData(SQLType: cardinal; tableName: AnsiString; columnName: AnsiString;
84        Scale: integer; size: cardinal;
85        acharSetID: cardinal; dimensions: cardinal; bounds: TArrayBounds
# Line 90 | Line 87 | type
87  
88      {Database Information}
89  
90 <    function GetBlobMetaData(Transaction: ITransaction; tableName, columnName: AnsiString): IBlobMetaData;
91 <    function GetArrayMetaData(Transaction: ITransaction; tableName, columnName: AnsiString): IArrayMetaData;
90 >    function GetBlobMetaData(Transaction: ITransaction; tableName, columnName: AnsiString): IBlobMetaData; override;
91 >    function GetArrayMetaData(Transaction: ITransaction; tableName, columnName: AnsiString): IArrayMetaData; override;
92 >    procedure getFBVersion(version: TStrings);
93 >    function HasScollableCursors: boolean;
94    end;
95  
96   implementation
97  
98   uses FB25Events,FB25Transaction, FBMessages, FB25Blob,
99 <  FB25Statement, FB25Array, IBUtils;
99 >  FB25Statement, FB25Array, IBUtils, IBExternals;
100  
101    { TFB25Attachment }
102  
# Line 107 | Line 106 | begin
106      IBError(ibxeDatabaseClosed,[nil]);
107   end;
108  
109 + function TFB25Attachment.GetAttachment: IAttachment;
110 + begin
111 +  Result := self;
112 + end;
113 +
114   constructor TFB25Attachment.Create(api: TFB25ClientAPI; DatabaseName: AnsiString; aDPB: IDPB;
115    RaiseExceptionOnConnectError: boolean);
116   begin
# Line 199 | Line 203 | end;
203  
204   procedure TFB25Attachment.Disconnect(Force: boolean);
205   begin
206 +  inherited Disconnect(Force);
207    if FHandle = nil then
208      Exit;
209  
# Line 220 | Line 225 | end;
225  
226   procedure TFB25Attachment.DropDatabase;
227   begin
228 <  CheckHandle;
229 <  EndAllTransactions;
230 <  with FFirebird25ClientAPI do
231 <    if isc_drop_database(StatusVector, @FHandle) > 0 then
232 <      IBDatabaseError;
233 <  FHandle := nil;
228 >  if IsConnected then
229 >  begin
230 >    EndAllTransactions;
231 >    EndSession(false);
232 >    with FFirebird25ClientAPI do
233 >      if isc_drop_database(StatusVector, @FHandle) > 0 then
234 >        IBDatabaseError;
235 >    FHandle := nil;
236 >  end;
237   end;
238  
239   function TFB25Attachment.StartTransaction(TPB: array of byte;
240 <  DefaultCompletion: TTransactionCompletion): ITransaction;
240 >  DefaultCompletion: TTransactionCompletion; aName: AnsiString): ITransaction;
241   begin
242    CheckHandle;
243 <  Result := TFB25Transaction.Create(FFirebird25ClientAPI,self,TPB,DefaultCompletion);
243 >  Result := TFB25Transaction.Create(FFirebird25ClientAPI,self,TPB,DefaultCompletion,aName);
244   end;
245  
246   function TFB25Attachment.StartTransaction(TPB: ITPB;
247 <  DefaultCompletion: TTransactionCompletion): ITransaction;
240 < begin
241 <  CheckHandle;
242 <  Result := TFB25Transaction.Create(FFirebird25ClientAPI,self,TPB,DefaultCompletion);
243 < end;
244 <
245 < function TFB25Attachment.CreateBlob(transaction: ITransaction; RelationName,
246 <  ColumnName: AnsiString; BPB: IBPB): IBlob;
247 >  DefaultCompletion: TTransactionCompletion; aName: AnsiString): ITransaction;
248   begin
249    CheckHandle;
250 <  Result := TFB25Blob.Create(self,transaction as TFB25transaction,
250 <                TFB25BlobMetaData.Create(self,Transaction as TFB25Transaction,RelationName,ColumnName),BPB);
250 >  Result := TFB25Transaction.Create(FFirebird25ClientAPI,self,TPB,DefaultCompletion,aName);
251   end;
252  
253   function TFB25Attachment.CreateBlob(transaction: ITransaction;
# Line 264 | Line 264 | begin
264    Result := TFB25Blob.Create(self,transaction as TFB25transaction,SubType,aCharSetID,BPB);
265   end;
266  
267 function TFB25Attachment.OpenBlob(transaction: ITransaction; RelationName,
268  ColumnName: AnsiString; BlobID: TISC_QUAD; BPB: IBPB=nil): IBlob;
269 begin
270  CheckHandle;
271  Result := TFB25Blob.Create(self,transaction as TFB25transaction,
272                TFB25BlobMetaData.Create(self,Transaction as TFB25Transaction,RelationName,ColumnName),
273                BlobID,BPB);
274 end;
275
267   function TFB25Attachment.OpenBlob(transaction: ITransaction;
268    BlobMetaData: IBlobMetaData; BlobID: TISC_QUAD; BPB: IBPB=nil): IBlob;
269   begin
# Line 293 | Line 284 | begin
284   end;
285  
286   function TFB25Attachment.Prepare(transaction: ITransaction; sql: AnsiString;
287 <  aSQLDialect: integer): IStatement;
287 >  aSQLDialect: integer; CursorName: AnsiString): IStatement;
288   begin
289    CheckHandle;
290    Result := TFB25Statement.Create(self,transaction,sql,aSQLDialect);
291   end;
292  
293   function TFB25Attachment.PrepareWithNamedParameters(transaction: ITransaction;
294 <  sql: AnsiString; aSQLDialect: integer; GenerateParamNames: boolean): IStatement;
294 >  sql: AnsiString; aSQLDialect: integer; GenerateParamNames: boolean;
295 >  CaseSensitiveParams: boolean; CursorName: AnsiString): IStatement;
296   begin
297    CheckHandle;
298    Result := TFB25Statement.CreateWithParameterNames(self,transaction,sql,aSQLDialect,
299 <         GenerateParamNames);
299 >         GenerateParamNames,CaseSensitiveParams,CursorName);
300   end;
301  
302   function TFB25Attachment.GetEventHandler(Events: TStrings): IEvents;
# Line 313 | Line 305 | begin
305    Result := TFB25Events.Create(self,Events);
306   end;
307  
308 < function TFB25Attachment.OpenArray(transaction: ITransaction; RelationName, ColumnName: AnsiString;
308 > function TFB25Attachment.OpenArray(transaction: ITransaction; ArrayMetaData: IArrayMetaData;
309    ArrayID: TISC_QUAD): IArray;
310   begin
311    CheckHandle;
312    Result := TFB25Array.Create(self,transaction as TFB25Transaction,
313 <                    GetArrayMetaData(transaction,RelationName,ColumnName),ArrayID);
322 < end;
323 <
324 < function TFB25Attachment.CreateArray(transaction: ITransaction; RelationName, ColumnName: AnsiString): IArray;
325 < begin
326 <  CheckHandle;
327 <  Result := TFB25Array.Create(self,transaction as TFB25Transaction,
328 <                    GetArrayMetaData(transaction,RelationName,ColumnName));
313 >                    ArrayMetaData,ArrayID);
314   end;
315  
316   function TFB25Attachment.CreateArray(transaction: ITransaction;
# Line 357 | Line 342 | begin
342    Result := TFB25ArrayMetaData.Create(self,Transaction as TFB25Transaction,tableName,columnName);
343   end;
344  
345 + procedure ISCVersionCallback(userArg: pointer; text: PAnsiChar); cdecl;
346 + begin
347 +  TStrings(userArg).Add(text);
348 + end;
349 +
350 + procedure TFB25Attachment.getFBVersion(version: TStrings);
351 + var callback: pointer;
352 + begin
353 +  callback := @ISCVersionCallback;
354 +  version.Clear;
355 +  with FFirebird25ClientAPI do
356 +    if isc_version(@FHandle,TISC_CALLBACK(callback),PVoid(version)) > 0 then
357 +       IBDataBaseError;
358 + end;
359 +
360 + function TFB25Attachment.HasScollableCursors: boolean;
361 + begin
362 +  Result := false;
363 + end;
364 +
365   end.
366  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines