ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/branches/udr/changelog
Revision: 390
Committed: Sat Jan 22 16:15:12 2022 UTC (2 years, 10 months ago) by tony
File size: 34695 byte(s)
Log Message:
In Firebird 3 and later API: the status vector is now a thread var

File Contents

# User Rev Content
1 tony 387 FBINTF Change Log version (1.4-0 Build 13107) Wed, 19 Jan 2022 12:08:21 +0000
2 tony 363
3 tony 381 1. Support package fbudr added for support of User Defined Routines (UDRs), and package
4     fbudrtestbed for client side debugging of UDR libraries.
5    
6     2. Package layout changed with introduction of udr support. IB*.pas files moved from
7     root directory to "client". IBHeader move to "Client".
8    
9     3. Delphi packages: all packages now compile .dcp and .bpi files to either
10     fbintf\Win32\Debug or fbintf\Win64\Debug by default. Please remove any pre-existing
11     fbintf.dcp and fbintf.bpi files from other locations.
12    
13     4. Client side journaling support added. Interface changes
14 tony 363 IAttachment
15     function JournalingActive: boolean;
16     function GetJournalOptions: TJournalOptions;
17     function StartJournaling(aJournalLogFile: AnsiString): integer; overload;
18     function StartJournaling(aJournalLogFile: AnsiString; Options: TJournalOptions): integer; overload;
19 tony 371 function StartJournaling(S: TStream; Options: TJournalOptions): integer; overload;
20 tony 363 procedure StopJournaling(RetainJournal: boolean);
21    
22 tony 381 5. Transactions may now be given a local transaction name:
23 tony 363 IFirebirdAPI
24     function StartTransaction(Attachments: array of IAttachment;
25     TPB: array of byte; DefaultCompletion: TTransactionCompletion=taCommit): ITransaction; overload;
26     TPB: array of byte; DefaultCompletion: TTransactionCompletion=taCommit;
27     aName: AnsiString=''): ITransaction; overload;
28     function StartTransaction(Attachments: array of IAttachment;
29     TPB: ITPB; DefaultCompletion: TTransactionCompletion=taCommit): ITransaction; overload;
30     TPB: ITPB; DefaultCompletion: TTransactionCompletion=taCommit;
31     aName: AnsiString=''): ITransaction; overload;
32    
33     IAttachment
34     function StartTransaction(TPB: array of byte; DefaultCompletion: TTransactionCompletion=taCommit): ITransaction; overload;
35     function StartTransaction(TPB: ITPB; DefaultCompletion: TTransactionCompletion=taCommit): ITransaction; overload;
36     function StartTransaction(TPB: array of byte;
37     DefaultCompletion: TTransactionCompletion=taCommit;
38     aName: AnsiString=''): ITransaction; overload;
39     function StartTransaction(TPB: ITPB;
40     DefaultCompletion: TTransactionCompletion=taCommit;
41     aName: AnsiString=''): ITransaction; overload;
42    
43     ITransaction
44     function GetTransactionName: AnsiString;
45     procedure SetTransactionName(aValue: AnsiString);
46    
47 tony 381 6. Additional Transaction information
48 tony 363 ITPB.function AsText: AnsiString; {Returns TPB as a text string}
49    
50     ITransaction
51     function GetDefaultCompletion: TTransactionCompletion;
52     function GetJournalingActive(attachment: IAttachment): boolean; {attachment must be specified when multi-database transaction}
53    
54 tony 381 7. New IAttachment helper functions
55 tony 363 function HasTable(aTableName: AnsiString): boolean;
56 tony 371 function HasFunction(aFunctionName: AnsiString): boolean;
57     function HasProcedure(aProcName: AnsiString): boolean;
58 tony 363 function GetAttachmentID: integer;
59 tony 371 function GetCharSetID: integer;
60 tony 363
61 tony 381 8. IStatement: if the BatchRowLimit is set to maxint, the maximum possible buffer size
62 tony 371 will be allocted for batch operations.
63    
64 tony 381 9. IStatement, IColumnMetaData and ISQLParam all now consistently provide:
65 tony 371 function GetStatement: IStatement;
66     function GetTransaction: ITransaction;
67     function GetAttachment: IAttachment;
68    
69 tony 381 10. Internal: a more disciplined approach to the handling of Firebird.IReferenceCounted
70     interfaces.
71 tony 371
72 tony 381 11. New interface type: IFBNumeric. IFBNumeric is implemented in the unit FBNumeric
73     and concentrates all handling of Fixed Point numbers. New ISQLItem and ISQLParam
74     functions getAsNumeric and setAsNumeric allow for direct retrival and manipulation
75     of numerics without loss of precision.
76 tony 371
77 tony 381 12. TryStrToNumeric and NumericToDouble moved from IBUtils to FBNumeric.
78 tony 371
79 tony 381 13. ISQLParams new method "Clear"
80 tony 371
81 tony 381 14. Connection Info (e.g. ODS Version, Remote Protocol) now retrieved on first
82 tony 375 request rather than on attachment connect.
83 tony 371
84 tony 385 15. IStatus.IBDataBaseErrorMessages now defaults to [ShowIBMessage]. This reflects the
85     fact that SQLCodes are soon to be deprecated. In the future, the other options
86     will be silently ignored if SQLCode support is not present in the Firebird
87     Client library.
88 tony 375
89 tony 387 16. ITransaction changes Rollback and Commit from procedures to functions:
90     function Commit(Force: boolean=false): TTrCompletionState;
91     function Rollback(Force: boolean=false): TTrCompletionState;
92 tony 385
93 tony 387 Specifically, this is to allow the functions to report back a failed commit or
94     rollback when Force = true. In the case, the transaction handle has been
95     released, while the transaction remains in limbo.
96    
97 tony 390 17. IAttachment ExecImmediate.
98 tony 387 When the transaction parameters are provided as an array of const and the
99     statement fails, the transaction is rolledback (forced) before the exception
100     is raised.
101    
102 tony 390 18. In Firebird 3 and later API: the status vector is now a thread var, as was
103     already the case with the legacy API. Avoids problems when calling underlying
104     Firebird API in multiple threads.
105 tony 387
106    
107 tony 390
108 tony 359 FBINTF Change Log version (1.3-3 Build 12935) Mon, 06 Dec 2021 23:17:13 +0000
109    
110     1. Fix compile error with fpc trunk (3.3.1 and later), due to type change to tzname in "unix" unit.
111    
112     2. Remove constraint in IAttachment.HasScollableCursors that returned false when
113     using remote protocol. Scrollable cursors with remote database expected to
114     be support for Firebird 4.0.1 onwards. Note: Firebird 4.0.0 will return
115     a not supported error.
116    
117     3. IStatement: new function;
118     TStatementFlag = (stHasCursor,stRepeatExecute,stScrollable);
119     TStatementFlags = set of TStatementFlag;
120     function GetFlags: TStatementFlags;
121    
122     4. Revised behaviour for IStatement.ExecuteQuery in order to preserve backwards
123     compatibility.
124     In Firebird 5, Update..Returning may returns multiple rows and hence the statemen
125     type changes from ExecProcedure to Select. So that ExecuteQuery can continue
126     to be used with Update...Retruning statements that return a singleton row,
127     instead of raising an exception when ExecuteQuery is used with a (SELECT) statement,
128     it will open the cursor and return the first row only.
129    
130     5. ITransaction: new functions:
131     function GetIsReadOnly: boolean;
132     function GetTransactionID: integer;
133     function GetTrInformation(Requests: array of byte): ITrInformation; overload;
134     function GetTrInformation(Request: byte): ITrInformation; overload;
135    
136     The latter two return the Transaction Information block. The first two extract
137     information the Transaction Information block
138    
139     6. New function TSQLTokeniser.ReadCharacters
140     Used internally.
141    
142     7. IStatement: GetProcessedSQL bug fix. No longer raises and error if SQL contains
143     parameter placeholders instead of named parameters.
144    
145     8. ITransaction (Firebird 3 and later): An exception raised when freeing an underlying
146     transaction handle is now ignored if Rollback/Commit is called with Force=true
147    
148 tony 371 9. Tidy up of exception handling code. Under the legacy API, fb_interpret is now
149     used to get an IBError Message instead of isc_interprete.
150    
151     10. Internal tidyup. Native code now used for decoding integers and the events
152     buffer. Avoids dependencies on fbclient functions isc_portable_integer,
153     isc_event_block and isc_event_counts.
154    
155     11. New IAttachment function
156     function GetAttachmentID: integer;
157    
158     12. Internal changes to TFBClientAPI, TFBAttachment and TFBTransaction and TFB30
159     subclasses to enable UDR support.
160    
161 tony 356 FBINTF Change Log version (1.3-2 Build 12889) Sun, 24 Oct 2021 13:49:28 +0100
162 tony 347
163     1. TFBClientAPI.GetProcAddr. Add check for nil reference.
164    
165     2. IStatement: new methods:
166     procedure SetStaleReferenceChecks(Enable:boolean); {default true}
167     function GetStaleReferenceChecks: boolean;
168    
169     In previous versions, stale reference checks were always enabled. This allows the
170     user to disable them on a per statement basis. Note this can risk out-of-date
171     statement BLR. See User Guide.
172    
173 tony 348 3. IBUtils: TSQLwithNamedParamsTokeniser now recognises a CASE...END block within a
174     stored procedure and hence avoids replacing named parameters within a containing
175     BEGIN..END block.
176    
177 tony 349 4. ISQLParam: using a string value to set an integer field with a scale factor of
178     zero is now treated as a special case to avoid the risk of floating point
179     rounding errors affecting pure integers.
180    
181     5. ISQLParam: Review and tidy-up of SetAsString for numeric types.
182    
183     6. ISQLParam is now subclassed from IParamMetaData, which provides access to the mutable
184     SQL Parameter metadata (methods moved from ISQLParam).
185    
186     7. ISQLParam: new method
187     function getColMetadata: IParamMetaData;
188     This instance of IParamMetaData returns the original column metadata which is unmutable.
189     Note: ISQLParam metadata can change after a parameter value has been set e.g when
190     setting a VARCHAR column to an integer value.
191    
192 tony 350 8. IStatement: can now set cursor name when opening a cursor. New overloaded method:
193     procedure Prepare(CursorName: AnsiString; aTransaction: ITransaction=nil); overload;
194     also IAttachment:
195     function Prepare(transaction: ITransaction; sql: AnsiString; aSQLDialect: integer; CursorName: AnsiString=''): IStatement; overload;
196     function Prepare(transaction: ITransaction; sql: AnsiString; CursorName: AnsiString=''): IStatement; overload;
197     function PrepareWithNamedParameters(transaction: ITransaction; sql: AnsiString;
198     aSQLDialect: integer; GenerateParamNames: boolean=false;
199     CaseSensitiveParams: boolean = false; CursorName: AnsiString=''): IStatement; overload;
200     function PrepareWithNamedParameters(transaction: ITransaction; sql: AnsiString;
201     GenerateParamNames: boolean=false;
202     CaseSensitiveParams: boolean = false; CursorName: AnsiString=''): IStatement; overload;
203 tony 349
204 tony 350 9. Support for scrollable cursors added. New/updated methods:
205     IAttachment:
206 tony 352 function HasScollableCursors: boolean;
207 tony 350 function OpenCursor(transaction: ITransaction; sql: AnsiString; aSQLDialect: integer;
208     Scrollable: boolean=false): IResultSet; overload;
209     function OpenCursor(transaction: ITransaction; sql: AnsiString; Scrollable: boolean=false): IResultSet; overload;
210     function OpenCursor(transaction: ITransaction; sql: AnsiString; aSQLDialect: integer; Scrollable: boolean;
211     params: array of const): IResultSet; overload;
212     function OpenCursor(transaction: ITransaction; sql: AnsiString; Scrollable: boolean=false;
213     params: array of const): IResultSet; overload;
214     function OpenCursorAtStart(transaction: ITransaction; sql: AnsiString; aSQLDialect: integer; Scrollable: boolean;
215     params: array of const): IResultSet; overload;
216     function OpenCursorAtStart(transaction: ITransaction; sql: AnsiString; aSQLDialect: integer;
217     Scrollable: boolean=false): IResultSet; overload;
218     function OpenCursorAtStart(transaction: ITransaction; sql: AnsiString; Scrollable: boolean=false): IResultSet; overload;
219     function OpenCursorAtStart(transaction: ITransaction; sql: AnsiString; Scrollable: boolean;
220     params: array of const): IResultSet; overload;
221     function OpenCursorAtStart(sql: AnsiString; Scrollable: boolean=false): IResultSet; overload;
222     function OpenCursorAtStart(sql: AnsiString; Scrollable: boolean;
223     params: array of const): IResultSet; overload;
224     IStatement:
225     function OpenCursor(Scrollable: boolean; CursorName: AnsiString =''; aTransaction: ITransaction=nil): IResultSet; overload;
226     IResultSet:
227     function FetchPrior: boolean; {fetch previous record}
228     function FetchFirst:boolean; {fetch first record}
229     function FetchLast: boolean; {fetch last record}
230     function FetchAbsolute(position: Integer): boolean; {fetch record by its absolute position in result set}
231     function FetchRelative(offset: Integer): boolean; {fetch record by position relative to current}
232     function IsBof: boolean;
233    
234 tony 353 10. IArray: tidyup of SetAsString method to ensure correct handling of fixed point numbers.
235 tony 350
236 tony 353 11. IBUtils: TSQLTokeniser. CRLF now combined by low level parser into sqltEOL token. This
237     may be noticeable when a line separator occurs inside quoted text. The quoted text
238     output by the tokeniser will now use the platform specific lineEnding regardless
239     of whether the input uses the CRLF or LF as a line separator.
240 tony 350
241 tony 353 12. IStatement, IResultsSet: Support for scrollable cursors added (note: local databases only)
242    
243    
244 tony 345 FBINTF Change Log version (1.3-1 Build 12776) Mon, 23 Aug 2021 11:09:33 +0100
245    
246     1. Integer decodes in information blocks (e.g. IDBInfoItem) widened from 32 bit to 64-bit integers.
247    
248     2. Support for inline blob encoding. Blob values pass using the "SetAsString" method
249     will now be encoded inline (i.e. as part of the parameter buffer) if they are
250     shorter than a pre-set limit. Longer values continue to be saved as blobs as a
251     separate server interaction. This is intended as a performance optimisation.
252    
253     The pre-set limit defaults to 8192 bytes and can be inspected/modified using the new
254     IAttachment interface functions:
255    
256     function GetInlineBlobLimit: integer;
257     procedure SetInlineBlobLimit(limit: integer);
258    
259     3. Support for Firebird 4 IBatch interface added. This is largely transparent to the API
260     user as the functionality is embedded in the implementation of the IStatement
261     interface. Three new functions are defined:
262    
263     procedure AddToBatch;
264     function ExecuteBatch(aTransaction: ITransaction=nil): IBatchCompletion;
265     procedure CancelBatch;
266     function GetBatchCompletion: IBatchCompletion;
267     function GetBatchRowLimit: integer;
268     procedure SetBatchRowLimit(aLimit: integer);
269    
270     Also
271    
272     function IsInBatchMode: boolean; {true after call to execute(eaDefer)}
273     function HasBatchMode: boolean; {true if and only if IBatch Supported}
274    
275     For more information see the User Guide.
276    
277     4. Default error message contents. Now aligned with User Guide section 10.2 i.e. error messages
278     provided with the EIBInterBaseError now include all three parts.
279    
280     5. Firebird.pas and include files updated to Firebird 4.0.0
281    
282     6. New IStatement method: function GetSQLStatementTypeName: AnsiString;
283     Returns SQL Statement type as a text string;
284    
285     7. ISQLData.AsInteger and AsInt64 now use "Round" to convert a float field to
286     an integer instead of "trunc". This is for compatibility with TFloatField.AsInteger.
287    
288 tony 340 FBINTF Change Log version (1.2-1 Build 12552) Wed, 09 Jun 2021 13:05:40 +0100
289 tony 338
290     1. Big fix for Firebird 4.0. A internal change in Firebird 4.0.0 from RC1 flushed out a
291     typo in FB30Statement.pas that caused an unknown parameter error.
292    
293 tony 319 FBINTF Change Log version (1.2-0 Build 12520) Fri, 19 Feb 2021 13:27:23 +0000
294 tony 308
295 tony 315 1. Imported (Firebird) constants updated for Firebird 4.
296    
297     2. Firebird.pas from Firebird 4 integrated into source code tree.
298    
299     3. Added Support for TIMETAMP WITH TIME ZONE and TIME WITH TIME ZONE data types.
300    
301     4. Added Support for SQL_DEC16, SQL_DEC34 and extended NUMERIC precision.
302    
303     5. New unit 'FBClientLib.pas' added and provides new interface IFBIMasterProvider.
304     QueryInterface may be used to coerce this interface from IFirebirdAPI. The
305     interface provides a single method "function GetIMasterIntf: IMaster". This provides
306     type safe access to the Firebird IMaster interface and avoids the need to turn
307     off object checks when coercing "function GetIMaster: TObject" to IMaster.
308    
309     6. New IFirebirdAPI Calls:
310     function HasLocalTZDB: boolean;
311     function HasTimeZoneSupport: boolean;
312     function HasExtendedTZSupport: boolean;
313     procedure SQLDecFloatEncode(aValue: tBCD; SQLType: cardinal; bufptr: PByte);
314     function SQLDecFloatDecode(SQLType: cardinal; scale: integer; bufptr: PByte): tBCD;
315    
316     7. New IAttachment Calls:
317     function HasDecFloatSupport: boolean;
318     function GetTimeZoneServices: ITimeZoneServices;
319     function HasTimeZoneSupport: boolean;
320    
321     8. New Interface ITimeZoneServices.
322    
323     9. New ISQLData API Calls:
324     procedure GetAsDateTime(var aDateTime: TDateTime; var dstOffset: smallint; var aTimezoneID: TFBTimeZoneID); overload;
325     procedure GetAsDateTime(var aDateTime: TDateTime; var dstOffset: smallint; var aTimezone: AnsiString); overload;
326     procedure GetAsTime(var aTime: TDateTime; var dstOffset: smallint; var aTimezoneID: TFBTimeZoneID; OnDate: TDateTime); overload;
327     procedure GetAsTime(var aTime: TDateTime; var dstOffset: smallint; var aTimezone: AnsiString; OnDate: TDateTime); overload;
328     function GetAsUTCDateTime: TDateTime;
329     function GetAsBCD: tBCD;
330    
331     10. New ISQLParam API Calls
332     procedure GetAsDateTime(var aDateTime: TDateTime; var dstOffset: smallint; var aTimezoneID: TFBTimeZoneID); overload;
333     procedure GetAsDateTime(var aDateTime: TDateTime; var dstOffset: smallint; var aTimezone: AnsiString); overload;
334     procedure GetAsTime(var aTime: TDateTime; var dstOffset: smallint; var aTimezoneID: TFBTimeZoneID; OnDate: TDateTime); overload;
335     procedure GetAsTime(var aTime: TDateTime; var dstOffset: smallint; var aTimezone: AnsiString; OnDate: TDateTime); overload;
336     function GetAsUTCDateTime: TDateTime;
337     function GetAsBCD: tBCD;
338     function GetStatement: IStatement;
339     function GetTransaction: ITransaction;
340     procedure SetAsTime(aValue: TDateTime; OnDate: TDateTime; aTimeZoneID: TFBTimeZoneID); overload;
341     procedure SetAsTime(aValue: TDateTime; OnDate: TDateTime; aTimeZone: AnsiString); overload;
342     procedure SetAsDateTime(aValue: TDateTime; aTimeZoneID: TFBTimeZoneID); overload;
343     procedure SetAsDateTime(aValue: TDateTime; aTimeZone: AnsiString); overload;
344     procedure SetAsUTCDateTime(aUTCTime: TDateTime);
345     procedure SetAsBcd(aValue: tBCD);
346    
347     11. New IArray API Calls
348     procedure GetAsDateTime(index: array of integer; var aDateTime: TDateTime; var dstOffset: smallint; var aTimezoneID: TFBTimeZoneID); overload;
349     procedure GetAsDateTime(index: array of integer; var aDateTime: TDateTime; var dstOffset: smallint; var aTimezone: AnsiString); overload;
350     procedure GetAsTime(index: array of integer; var aTime: TDateTime; var dstOffset: smallint; var aTimezoneID: TFBTimeZoneID; OnDate: TDateTime); overload;
351     procedure GetAsTime(index: array of integer; var aTime: TDateTime; var dstOffset: smallint; var aTimezone: AnsiString; OnDate: TDateTime); overload;
352     function GetAsUTCDateTime(index: array of integer): TDateTime;
353     procedure SetAsDateTime(index: array of integer; aValue: TDateTime; aTimeZoneID: TFBTimeZoneID); overload;
354     procedure SetAsDateTime(index: array of integer; aValue: TDateTime; aTimeZone: AnsiString); overload;
355     procedure SetAsTime(index: array of integer; aValue: TDateTime; OnDate: TDateTime; aTimeZoneID: TFBTimeZoneID); overload;
356     procedure SetAsTime(index: array of integer; aValue: TDateTime; OnDate: TDateTime; aTimeZone: AnsiString); overload;
357    
358     12. Utility functions in IBUtils
359     function ParseDateTimeTZString(aDateTimeStr: Ansistring; var aDateTime: TDateTime;
360     var aTimezone: AnsiString; aFormatSettings: TFormatSettings; TimeOnly: boolean=false): boolean;
361     procedure FBDecodeTime(aTime: TDateTime; var Hour, Minute, Second: word; var DeciMillisecond: cardinal);
362     function FBEncodeTime(Hour, Minute, Second, DeciMillisecond: cardinal): TDateTime;
363     function FBFormatDateTime(fmt: AnsiString; aDateTime: TDateTime): AnsiString;
364     function FormatTimeZoneOffset(EffectiveTimeOffsetMins: integer): AnsiString;
365     function DecodeTimeZoneOffset(TZOffset: AnsiString; var dstOffset: integer): boolean;
366    
367     13. IDPB, ITPB and ISPB: new interface method
368     function AddByTypeName(ParamTypeName: AnsiString): IDPBItem/ITPBItem/ISPBItem;
369     This is used to add a parameter block item by the string equivalent of its
370     symbolic type name. e.g. DPB.AddByTypeName('isc_dpb_user_name').AsString := '...'
371    
372     14. IDPBItem/ITPBItem/ISPBItem: new interface method:
373     function getParamTypeName: AnsiString;
374    
375     15. fb_shutdown now called before unloading Firebird library. This can avoid a
376     SIGEVENT error when a programme using the embeded server is unloaded.
377    
378     FBINTF Change Log version (1.1-6 Build 12237) Tue, 21 Jul 2020 08:54:21 +0100
379    
380 tony 308 1. GetImplementationVersion now correctly returns '3.0' for Firebird 3 API
381     with a Firebrid 3 client library.
382    
383     2. Linux Only: FIREBIRD environment variable is now checked when loading the client library.
384     If a client library path is not explicitly provided and the FIREBIRD environment
385     variable is set then the directory given by this variable and any 'lib' subdirectory
386     are searched for the Firebird client library. Only if none is found, is the default
387     client library used.
388    
389     3. IUtil.FormatStatus now used to format error messages when using new API
390    
391     4. Fixed Array SDL: array_desc_scale now correctly encoded as a signed integer.
392    
393     5. SQL_TEXT handling changed. When the value of an SQL_TEXT (i.e. fixed width string) column is
394     returned using GetAsString and the string codepage is UTF8, the string is truncated so
395     that the byte length corresponds to the number of characters specified for the column.
396     SQL_TEXT strings are no longer automatically trimmed to remove all trailing white space. This is
397     correct behaviour but may affect some implementations that relied upon automatic
398     trimming of trailing white space.
399    
400     6. New IFirebirdAPI Calls:
401     function GetClientMajor: integer;
402     function GetClientMinor: integer;
403    
404 tony 309 7. IColumnMetaData and IArrayMetaData: new method
405     function GetCharSetWidth: integer;
406 tony 308
407 tony 315 FBINTF Change Log version (1.1-5 Build 12022) Fri, 17 Apr 2020 10:35:55 +0100
408 tony 309
409 tony 287 1. ISQLParams.GetHasCaseSensitiveParams added. Returns true if param names are
410     case sensitive
411    
412     2. Single line SQL comments starting with '--' are now recognised by SQL Parser.
413    
414 tony 291 3. New API Calls:
415     IColumnMetaData.GetStatement
416     IColumnMetaData.GetTransaction
417 tony 315 ISQLData.GetStrDataLength
418 tony 291 IResults.GetStatement
419     IAttachment.OpenBlob (using Blob metadata)
420     IAttachment.OpenArray (using array metadata)
421    
422     4. FBMessages: removal of unused messages
423    
424     5. TFBArray.Create (2nd case): ensure that FFirebirdClientAPI is correctly set.
425    
426     6. TIBSQLStatementType: SQLSavePoint added to end of enumeration.
427    
428 tony 280 FBINTF Change Log version (1.1-4 Build 11515) Fri, 28 Dec 2018 10:04:19 +0000
429 tony 265
430     1. Fix a problem with the SQL parameter parser that failed to recognise parameters
431     where the second character of the parameter name is a numeric.
432    
433 tony 266 2. New method for IAttachment: procedure getFBVersion(version: TStrings);
434     This returns the isc_version connection information as one or more lines.
435     This is the same information as returned by isql with the -z option.
436 tony 265
437 tony 270 3. If -dFIREBIRD3APIONLY is used as a compiler option then the legacy Firebird API
438     is no longer compiled in. Likewise, if -dLEGACYFIREBIRDAPIONLY is used as a
439     compiler option then the Firebird 3 API is no longer compiled in.
440 tony 266
441 tony 270 4. IColumnMetaData: new method.
442    
443     TIBDateTimeFormats = (dfTimestamp, {SQL TIMESTAMP}
444     dfDateTime, {SQL DATETIME}
445     dfTime);
446    
447     function GetDateTimeStrLength(DateTimeFormat: TIBDateTimeFormats): integer;
448    
449     This returns the max. number of characters returned by the "AsString" method
450     when the SQL type of the column is respectively TIMESTAMP, DATETIME or TIME.
451    
452     5. Additional argument for IAttachment.PrepareWithNamedParameters -
453     CaseSensitiveParams: boolean = false
454    
455     If this argument is set to true then SQL parameter names are assumed to be case
456     sensitive and must be referenced (using ISQLParams.ByName) using the case
457     sensitive name.
458    
459     6. Bug fix: when setting a query parameter, it is now possible, when the parameter
460     is of type VarChar or Char to set the parameter to a numeric value (e.g. using
461     .AsCurrency) and then subsequently to update the value to a non-numeric string
462     using .AsString.
463    
464    
465    
466 tony 263 FBINTF Change Log version (1.1-3) Wed, 05 Dec 2018 14:28:10 +0000
467 tony 238
468     1. DARWIN only syntax error: fix missing semi-colon in TFBClientAPI.LoadIBLibrary
469    
470 tony 263 2. Restrict IsMultiThread check to Unix only for compatibility with
471     https://bugs.freepascal.org/view.php?id=30535
472    
473     3. New SQL Tokeniser added to IBUtils. This is used to pre-process SQL with
474     named parameters and is intended to avoid problems with (e.g.) Execute Block
475     and processing internal parameters as statement parameters.
476    
477     4. New interface IFirebirdLibrary provides access to the underlying firebird DLL
478     or shared object. Available via a new member (GetFBLibrary) of IFirebirdAPI.
479    
480     5. New function added to IB.pas
481    
482     function LoadFBLibrary(aLibPathName: string): IFirebirdLibrary
483    
484     This allows a Firebird Library to be loaded from an explicit path. use the
485     IFirebirdLibrary.GetFirebirdAPI member function to get the Firebird API using
486     the library. It is possible to load Firebird libraries from different locations
487     simultaneously, each with a distinct IFirebirdAPI.
488    
489 tony 233 FBINTF Change Log version (1.1-2) Mon, 16 Apr 2018 09:30:32 +0100
490 tony 59
491 tony 209 1. Firebird.pas: {$OBJECTCHECKS OFF} added to file to avoid runtime error when
492     program compiled with -CR command line switch.
493    
494     2. IServiceManager additions (informational):
495     function getProtocol: TProtocol;
496     function getPortNo: AnsiString;
497    
498     3. IServiceManager improved error handling. Interfaces changed:
499     function Start(Request: ISRB; RaiseExceptionOnError: boolean=true): boolean;
500     function Query(SQPB: ISQPB; Request: ISRB; RaiseExceptionOnError: boolean=true) :IServiceQueryResults; overload;
501     function Query(Request: ISRB; RaiseExceptionOnError: boolean=true) :IServiceQueryResults; overload;
502    
503     4. IAttachment addition (informational)
504     function GetSecurityDatabase: AnsiString;
505    
506     5. IStatement: performance counters now updated after each Fetch. GetPerfStatistics
507     thus now returns accumulated stats for a select statement from opening a cursor
508     up to the last fetch.
509    
510     6. DARWIN: uloadlibrary.inc bug fix. Many thanks to Luigi Naimi for correcting
511     the problem.
512    
513     7. Type change: "TPerfCounters = array[TPerfStats] of Int64". Note "Int64"
514     replaces deprecated "comp" type.
515    
516 tony 217 10. Testsuite Test10 updated to include thread synchronisation for event reporting.
517 tony 209
518 tony 231 11. URL Connection Strings: inet4 and inet6 now recognised.
519 tony 217
520 tony 231 12. IBUtils: Parse and Make Connect String now recognise URL style loopback syntax.
521    
522 tony 233 13. IAttachment.CharSetName2CharSetID is now performed case insensitive.
523 tony 231
524 tony 233
525 tony 209 FBINTF Change Log version (1.1-1) Tue, 27 Feb 2018 16:51:16 +0000
526    
527 tony 107 1. IBUtils.QuoteIdentifierIfNeeded: Add check for space character.
528    
529 tony 109 2. IAttachment: add two new methods
530     function HasDefaultCharSet: boolean;
531     function GetDefaultCharSetID: integer;
532    
533     These return, respectively, true if a connection default character set was
534 tony 117 specified and the character set id of the connection default character set.
535     The DefaultCharSetID is cached when the connection is opened and hence does not
536     require a database lookup.
537 tony 109
538 tony 110 3. Avoid exception when a text blob is a stored procedure parameter.
539 tony 109
540 tony 111 4. Update test suite to include a test for a stored proc returning a text blob.
541    
542 tony 117 5. IAttachment: add
543     function GetRemoteProtocol: AnsiString;
544     function GetODSMajorVersion: integer;
545     function GetODSMinorVersion: integer;
546 tony 143 function GetAuthenticationMethod: AnsiString;
547 tony 117
548     These results are cached when the connection is opened and hence do not
549     require a database lookup.
550    
551     6. IAttachment: add "function GetConnectString: AnsiString;" This returns the
552     connect string used to create/connect to the database.
553    
554     7. IAttachment: Create Database using SQL statement. The username and password
555     are now extracted and used to populate a DPB made available via IAttachment.getDPB.
556     It is now possible to use IAttachment disconnect/connect to reconnect to
557     a database for which the initial connection was established by a create
558 tony 120 database sql statement. Available in FPC only.
559 tony 117
560     8. Update Test 1 to test 5, 6 and 7 above.
561    
562     9. IBUtils code tidy up.
563    
564 tony 143 10. Parameter Block interfaces "find" method. As documented, this should have
565     returned a nil interface when the item could not be found. Instead, an empty
566     interface item was returned. "Find" now works as documented and will return
567     a nil interface if the item cannot be found.
568    
569     11. DBInformation: support added for isc_info_active_tran_count and isc_info_creation_date.
570    
571     12. DBInformation: New interfaces: IDIRB and IDIRBItem added to support DB Information
572     requests with additional parameters. This is to enable support for fb_info_page_contents
573     (return of page contents). Response to fb_info_page_contents returned as
574     a string with code page CP_NONE.
575    
576     13. DBInformation: Support for fb_info_pages_used and fb_info_pages_free added, plus
577     test suite updated.
578    
579     14. DBInformation: Support for fb_info_crypt_key (Firebird 3.0.3 onwards) added as
580     a string type, and fb_info_conn_flags (Firebird 3.0.3 onwards) added as an integer type.
581    
582     15. Service Manager: List of protocols supported expanded to include inet, wnet and xnet.
583     An overloaded version of IIFirebirdAPI.GetServiceManager also allows a non
584     default connection port to be specified.
585    
586 tony 107 FBINTF Change Log version (1.1-0) Sun, 07 Jan 2018 15:20:02 +0000
587    
588 tony 59 1. Fix issues with setting SQL Param values using SetAsString with Numeric types.
589     Scale is no longer ignored.
590    
591     2. Fix issues with setting SQL Param values using SetAsString with Date values
592     not in locale format but which are recognised by Firebird. Date values that
593     cannot be converted to a string using Pascal library are now passed through
594     to Firebird as Text Strings.
595    
596 tony 60 3. Lookup character set name by codepage amended to ensure that CP_UTF8 returns
597     UTF8 and not UNICODE_FSS.
598    
599     4. Charset ID problem. When using Firebird 3, with no default database character set
600     and a column has a non-default collation specified, an incorrect character set
601     id was being reported that could result in a 'division by zero' error when
602     used by IBX. This has now been fixed.
603    
604     5. Move GetCharsetName, CharSetID2CodePage, CodePage2CharSetID, CharSetName2CharSetID,
605     CharSetWidth from IFirebirdAPI to IAttachment. This is a better data model as
606     the character sets supported can be updated on a per database basis. That is
607     it is possible to add a (Firebird) user defined character set to a database.
608    
609     6. Add RegisterCharSet to IAttachment. This is used to register a user defined character
610     set supported by Firebird with the API.
611    
612 tony 61 7. Add missing isc_info_db_read_only to list of decoded Database Information items
613     in FBOutputBlock.pas and update test suite to include this item.
614 tony 60
615 tony 63 8. FB30Client: avoid always using "StartMultiple" when only a single database attachment.
616 tony 61
617 tony 68 9. Loading Windows fbclient.dll: when using the FIREBIRD variable to locate the client
618     library or finding it by disk location, the PATH environment variable is now also set to
619     include the FIREBIRD directory. This is to ensure that the correct dlls in the
620     firebird client library dependencies are loaded.
621 tony 63
622 tony 68 10. Testsuite: Ensure consistent UTF-8 output on Windows console.
623    
624     11. Testsuite: Update Windows script to include FPC 3.0.4 in search path.
625    
626     12. FB30Statement: Protect call to "Move" and avoid calling with a nil pointer
627    
628     13. FB30Statement: A check has been added to ensure that all SQL Parameters
629     have been given a value (including NULL). Previously, failing to set the
630     value of an SQL Parameter could give rise to unpredictable results or
631     an SQLDA error.
632    
633     14. FB30Statement/FB25Statement: Set SQLParam "modified" when string value set.
634    
635 tony 70 15. FBAttachment: Avoid string reference count error when processing an Ansistring
636     parameter in an array of const passed to IAttachment.OpenCursor, etc.
637 tony 68
638 tony 70 16. FBAttachment: Allow for WideString and UnicodeString parameters in an array
639     of const passed to IAttachment.OpenCursor, etc.
640    
641    
642 tony 56 FBINTF Change Log version (1.0-2) Sat, 04 Mar 2017 14:43:56 +0000
643 tony 47
644 tony 56 1. Change syntax to Mode Delphi
645    
646     2. Change all uses of string type to explicit AnsiString in order to ensure
647     compatibility between Delphi and FPC.
648    
649     3. Various syntax changes to ensure Delphi and FPC compilation including GUIDs
650     defined for each interface.
651    
652     4. Generics syntax variations for Delphi added
653    
654     5. PChar replaced with PByte expect where an actual string is being referenced,
655     where PAnsiChar is used instead.
656    
657     6. Review of type definitions in IBExternals to ensure Delphi compatibility
658    
659     7. Testsuite updated for Delphi
660    
661     FBINTF Change Log version (1.0-1) Fri, 24 Feb 2017 12:17:57 +0000
662    
663 tony 47 1. Limit maximum Blob segment read/write to MaxuShort. Avoids data loss with
664     large blobs and the FB3 API.
665    
666     2. Update Event Handling algorithm to avoid looping due to recreation of the
667     event block.
668    
669     3. Avoid invalid XSQLDA error when the only parameter is updated to null
670    
671     4. Array Handling: fix problem with text arrays with character set none. When the
672     DB connection has a default character set (e.g. UTF8), an error is raised by
673     Firebird if the space allocated is not enough to allow for transliteration, even
674     though it is not required for character set none.
675    
676     5. IBUtils: List of reserved words brought up-to-date
677    
678     6. Add ISQL style performance statistics collection to IStatement
679    
680     7. Add IFirebirdAPI.CreateDatabase variant to allow execution of user provided
681     CREATE DATABASE statement.
682    
683     8. Update SQL Statement parsing to allow for Array Dimensions. That is so that the ':' in
684     an array dimension is not mistaken for a named parameter prefix.
685    
686     9. Trim function no longer applied to result of GetAsString for SQL_TEXT
687     when Character set is octets. Avoids loss of non printable characters at start of string.
688    
689     10. Add function GetPerfStatistics to IStatement. This returns ISQL like performance
690     statistics for the last action. Requires use of procedure IStatement.EnableStatistics
691     to enable stats gathering.
692    
693     11. API Version information added as constants to IB.pas
694    
695     12. BlobMetaData character set id should now be the same as that given by IColumnMetaData.GetCharSetID
696    
697     13. Firebird Character set "NONE" now interpreted as codepage CP_ACP.
698    
699 tony 45 FBINTF Change Log version (1.0-0) Tue, 06 Dec 2016 10:33:47 +0000
700    
701     1. Initial Release
702    

Properties

Name Value
svn:eol-style native