ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/fbintf/changelog
Revision: 347
Committed: Mon Sep 20 22:08:20 2021 UTC (3 years, 2 months ago) by tony
File size: 22370 byte(s)
Log Message:
Updated Merged

File Contents

# Content
1 FBINTF Change Log version (1.3-2 Build 12798) Mon, 20 Sep 2021 12:42:46 +0100
2
3 1. TFBClientAPI.GetProcAddr. Add check for nil reference.
4
5 2. IStatement: new methods:
6 procedure SetStaleReferenceChecks(Enable:boolean); {default true}
7 function GetStaleReferenceChecks: boolean;
8
9 In previous versions, stale reference checks were always enabled. This allows the
10 user to disable them on a per statement basis. Note this can risk out-of-date
11 statement BLR. See User Guide.
12
13 FBINTF Change Log version (1.3-1 Build 12776) Mon, 23 Aug 2021 11:09:33 +0100
14
15 1. Integer decodes in information blocks (e.g. IDBInfoItem) widened from 32 bit to 64-bit integers.
16
17 2. Support for inline blob encoding. Blob values pass using the "SetAsString" method
18 will now be encoded inline (i.e. as part of the parameter buffer) if they are
19 shorter than a pre-set limit. Longer values continue to be saved as blobs as a
20 separate server interaction. This is intended as a performance optimisation.
21
22 The pre-set limit defaults to 8192 bytes and can be inspected/modified using the new
23 IAttachment interface functions:
24
25 function GetInlineBlobLimit: integer;
26 procedure SetInlineBlobLimit(limit: integer);
27
28 3. Support for Firebird 4 IBatch interface added. This is largely transparent to the API
29 user as the functionality is embedded in the implementation of the IStatement
30 interface. Three new functions are defined:
31
32 procedure AddToBatch;
33 function ExecuteBatch(aTransaction: ITransaction=nil): IBatchCompletion;
34 procedure CancelBatch;
35 function GetBatchCompletion: IBatchCompletion;
36 function GetBatchRowLimit: integer;
37 procedure SetBatchRowLimit(aLimit: integer);
38
39 Also
40
41 function IsInBatchMode: boolean; {true after call to execute(eaDefer)}
42 function HasBatchMode: boolean; {true if and only if IBatch Supported}
43
44 For more information see the User Guide.
45
46 4. Default error message contents. Now aligned with User Guide section 10.2 i.e. error messages
47 provided with the EIBInterBaseError now include all three parts.
48
49 5. Firebird.pas and include files updated to Firebird 4.0.0
50
51 6. New IStatement method: function GetSQLStatementTypeName: AnsiString;
52 Returns SQL Statement type as a text string;
53
54 7. ISQLData.AsInteger and AsInt64 now use "Round" to convert a float field to
55 an integer instead of "trunc". This is for compatibility with TFloatField.AsInteger.
56
57 FBINTF Change Log version (1.2-1 Build 12552) Wed, 09 Jun 2021 13:05:40 +0100
58
59 1. Big fix for Firebird 4.0. A internal change in Firebird 4.0.0 from RC1 flushed out a
60 typo in FB30Statement.pas that caused an unknown parameter error.
61
62 FBINTF Change Log version (1.2-0 Build 12520) Fri, 19 Feb 2021 13:27:23 +0000
63
64 1. Imported (Firebird) constants updated for Firebird 4.
65
66 2. Firebird.pas from Firebird 4 integrated into source code tree.
67
68 3. Added Support for TIMETAMP WITH TIME ZONE and TIME WITH TIME ZONE data types.
69
70 4. Added Support for SQL_DEC16, SQL_DEC34 and extended NUMERIC precision.
71
72 5. New unit 'FBClientLib.pas' added and provides new interface IFBIMasterProvider.
73 QueryInterface may be used to coerce this interface from IFirebirdAPI. The
74 interface provides a single method "function GetIMasterIntf: IMaster". This provides
75 type safe access to the Firebird IMaster interface and avoids the need to turn
76 off object checks when coercing "function GetIMaster: TObject" to IMaster.
77
78 6. New IFirebirdAPI Calls:
79 function HasLocalTZDB: boolean;
80 function HasTimeZoneSupport: boolean;
81 function HasExtendedTZSupport: boolean;
82 procedure SQLDecFloatEncode(aValue: tBCD; SQLType: cardinal; bufptr: PByte);
83 function SQLDecFloatDecode(SQLType: cardinal; scale: integer; bufptr: PByte): tBCD;
84
85 7. New IAttachment Calls:
86 function HasDecFloatSupport: boolean;
87 function GetTimeZoneServices: ITimeZoneServices;
88 function HasTimeZoneSupport: boolean;
89
90 8. New Interface ITimeZoneServices.
91
92 9. New ISQLData API Calls:
93 procedure GetAsDateTime(var aDateTime: TDateTime; var dstOffset: smallint; var aTimezoneID: TFBTimeZoneID); overload;
94 procedure GetAsDateTime(var aDateTime: TDateTime; var dstOffset: smallint; var aTimezone: AnsiString); overload;
95 procedure GetAsTime(var aTime: TDateTime; var dstOffset: smallint; var aTimezoneID: TFBTimeZoneID; OnDate: TDateTime); overload;
96 procedure GetAsTime(var aTime: TDateTime; var dstOffset: smallint; var aTimezone: AnsiString; OnDate: TDateTime); overload;
97 function GetAsUTCDateTime: TDateTime;
98 function GetAsBCD: tBCD;
99
100 10. New ISQLParam API Calls
101 procedure GetAsDateTime(var aDateTime: TDateTime; var dstOffset: smallint; var aTimezoneID: TFBTimeZoneID); overload;
102 procedure GetAsDateTime(var aDateTime: TDateTime; var dstOffset: smallint; var aTimezone: AnsiString); overload;
103 procedure GetAsTime(var aTime: TDateTime; var dstOffset: smallint; var aTimezoneID: TFBTimeZoneID; OnDate: TDateTime); overload;
104 procedure GetAsTime(var aTime: TDateTime; var dstOffset: smallint; var aTimezone: AnsiString; OnDate: TDateTime); overload;
105 function GetAsUTCDateTime: TDateTime;
106 function GetAsBCD: tBCD;
107 function GetStatement: IStatement;
108 function GetTransaction: ITransaction;
109 procedure SetAsTime(aValue: TDateTime; OnDate: TDateTime; aTimeZoneID: TFBTimeZoneID); overload;
110 procedure SetAsTime(aValue: TDateTime; OnDate: TDateTime; aTimeZone: AnsiString); overload;
111 procedure SetAsDateTime(aValue: TDateTime; aTimeZoneID: TFBTimeZoneID); overload;
112 procedure SetAsDateTime(aValue: TDateTime; aTimeZone: AnsiString); overload;
113 procedure SetAsUTCDateTime(aUTCTime: TDateTime);
114 procedure SetAsBcd(aValue: tBCD);
115
116 11. New IArray API Calls
117 procedure GetAsDateTime(index: array of integer; var aDateTime: TDateTime; var dstOffset: smallint; var aTimezoneID: TFBTimeZoneID); overload;
118 procedure GetAsDateTime(index: array of integer; var aDateTime: TDateTime; var dstOffset: smallint; var aTimezone: AnsiString); overload;
119 procedure GetAsTime(index: array of integer; var aTime: TDateTime; var dstOffset: smallint; var aTimezoneID: TFBTimeZoneID; OnDate: TDateTime); overload;
120 procedure GetAsTime(index: array of integer; var aTime: TDateTime; var dstOffset: smallint; var aTimezone: AnsiString; OnDate: TDateTime); overload;
121 function GetAsUTCDateTime(index: array of integer): TDateTime;
122 procedure SetAsDateTime(index: array of integer; aValue: TDateTime; aTimeZoneID: TFBTimeZoneID); overload;
123 procedure SetAsDateTime(index: array of integer; aValue: TDateTime; aTimeZone: AnsiString); overload;
124 procedure SetAsTime(index: array of integer; aValue: TDateTime; OnDate: TDateTime; aTimeZoneID: TFBTimeZoneID); overload;
125 procedure SetAsTime(index: array of integer; aValue: TDateTime; OnDate: TDateTime; aTimeZone: AnsiString); overload;
126
127 12. Utility functions in IBUtils
128 function ParseDateTimeTZString(aDateTimeStr: Ansistring; var aDateTime: TDateTime;
129 var aTimezone: AnsiString; aFormatSettings: TFormatSettings; TimeOnly: boolean=false): boolean;
130 procedure FBDecodeTime(aTime: TDateTime; var Hour, Minute, Second: word; var DeciMillisecond: cardinal);
131 function FBEncodeTime(Hour, Minute, Second, DeciMillisecond: cardinal): TDateTime;
132 function FBFormatDateTime(fmt: AnsiString; aDateTime: TDateTime): AnsiString;
133 function FormatTimeZoneOffset(EffectiveTimeOffsetMins: integer): AnsiString;
134 function DecodeTimeZoneOffset(TZOffset: AnsiString; var dstOffset: integer): boolean;
135
136 13. IDPB, ITPB and ISPB: new interface method
137 function AddByTypeName(ParamTypeName: AnsiString): IDPBItem/ITPBItem/ISPBItem;
138 This is used to add a parameter block item by the string equivalent of its
139 symbolic type name. e.g. DPB.AddByTypeName('isc_dpb_user_name').AsString := '...'
140
141 14. IDPBItem/ITPBItem/ISPBItem: new interface method:
142 function getParamTypeName: AnsiString;
143
144 15. fb_shutdown now called before unloading Firebird library. This can avoid a
145 SIGEVENT error when a programme using the embeded server is unloaded.
146
147 FBINTF Change Log version (1.1-6 Build 12237) Tue, 21 Jul 2020 08:54:21 +0100
148
149 1. GetImplementationVersion now correctly returns '3.0' for Firebird 3 API
150 with a Firebrid 3 client library.
151
152 2. Linux Only: FIREBIRD environment variable is now checked when loading the client library.
153 If a client library path is not explicitly provided and the FIREBIRD environment
154 variable is set then the directory given by this variable and any 'lib' subdirectory
155 are searched for the Firebird client library. Only if none is found, is the default
156 client library used.
157
158 3. IUtil.FormatStatus now used to format error messages when using new API
159
160 4. Fixed Array SDL: array_desc_scale now correctly encoded as a signed integer.
161
162 5. SQL_TEXT handling changed. When the value of an SQL_TEXT (i.e. fixed width string) column is
163 returned using GetAsString and the string codepage is UTF8, the string is truncated so
164 that the byte length corresponds to the number of characters specified for the column.
165 SQL_TEXT strings are no longer automatically trimmed to remove all trailing white space. This is
166 correct behaviour but may affect some implementations that relied upon automatic
167 trimming of trailing white space.
168
169 6. New IFirebirdAPI Calls:
170 function GetClientMajor: integer;
171 function GetClientMinor: integer;
172
173 7. IColumnMetaData and IArrayMetaData: new method
174 function GetCharSetWidth: integer;
175
176 FBINTF Change Log version (1.1-5 Build 12022) Fri, 17 Apr 2020 10:35:55 +0100
177
178 1. ISQLParams.GetHasCaseSensitiveParams added. Returns true if param names are
179 case sensitive
180
181 2. Single line SQL comments starting with '--' are now recognised by SQL Parser.
182
183 3. New API Calls:
184 IColumnMetaData.GetStatement
185 IColumnMetaData.GetTransaction
186 ISQLData.GetStrDataLength
187 IResults.GetStatement
188 IAttachment.OpenBlob (using Blob metadata)
189 IAttachment.OpenArray (using array metadata)
190
191 4. FBMessages: removal of unused messages
192
193 5. TFBArray.Create (2nd case): ensure that FFirebirdClientAPI is correctly set.
194
195 6. TIBSQLStatementType: SQLSavePoint added to end of enumeration.
196
197 FBINTF Change Log version (1.1-4 Build 11515) Fri, 28 Dec 2018 10:04:19 +0000
198
199 1. Fix a problem with the SQL parameter parser that failed to recognise parameters
200 where the second character of the parameter name is a numeric.
201
202 2. New method for IAttachment: procedure getFBVersion(version: TStrings);
203 This returns the isc_version connection information as one or more lines.
204 This is the same information as returned by isql with the -z option.
205
206 3. If -dFIREBIRD3APIONLY is used as a compiler option then the legacy Firebird API
207 is no longer compiled in. Likewise, if -dLEGACYFIREBIRDAPIONLY is used as a
208 compiler option then the Firebird 3 API is no longer compiled in.
209
210 4. IColumnMetaData: new method.
211
212 TIBDateTimeFormats = (dfTimestamp, {SQL TIMESTAMP}
213 dfDateTime, {SQL DATETIME}
214 dfTime);
215
216 function GetDateTimeStrLength(DateTimeFormat: TIBDateTimeFormats): integer;
217
218 This returns the max. number of characters returned by the "AsString" method
219 when the SQL type of the column is respectively TIMESTAMP, DATETIME or TIME.
220
221 5. Additional argument for IAttachment.PrepareWithNamedParameters -
222 CaseSensitiveParams: boolean = false
223
224 If this argument is set to true then SQL parameter names are assumed to be case
225 sensitive and must be referenced (using ISQLParams.ByName) using the case
226 sensitive name.
227
228 6. Bug fix: when setting a query parameter, it is now possible, when the parameter
229 is of type VarChar or Char to set the parameter to a numeric value (e.g. using
230 .AsCurrency) and then subsequently to update the value to a non-numeric string
231 using .AsString.
232
233
234
235 FBINTF Change Log version (1.1-3) Wed, 05 Dec 2018 14:28:10 +0000
236
237 1. DARWIN only syntax error: fix missing semi-colon in TFBClientAPI.LoadIBLibrary
238
239 2. Restrict IsMultiThread check to Unix only for compatibility with
240 https://bugs.freepascal.org/view.php?id=30535
241
242 3. New SQL Tokeniser added to IBUtils. This is used to pre-process SQL with
243 named parameters and is intended to avoid problems with (e.g.) Execute Block
244 and processing internal parameters as statement parameters.
245
246 4. New interface IFirebirdLibrary provides access to the underlying firebird DLL
247 or shared object. Available via a new member (GetFBLibrary) of IFirebirdAPI.
248
249 5. New function added to IB.pas
250
251 function LoadFBLibrary(aLibPathName: string): IFirebirdLibrary
252
253 This allows a Firebird Library to be loaded from an explicit path. use the
254 IFirebirdLibrary.GetFirebirdAPI member function to get the Firebird API using
255 the library. It is possible to load Firebird libraries from different locations
256 simultaneously, each with a distinct IFirebirdAPI.
257
258 FBINTF Change Log version (1.1-2) Mon, 16 Apr 2018 09:30:32 +0100
259
260 1. Firebird.pas: {$OBJECTCHECKS OFF} added to file to avoid runtime error when
261 program compiled with -CR command line switch.
262
263 2. IServiceManager additions (informational):
264 function getProtocol: TProtocol;
265 function getPortNo: AnsiString;
266
267 3. IServiceManager improved error handling. Interfaces changed:
268 function Start(Request: ISRB; RaiseExceptionOnError: boolean=true): boolean;
269 function Query(SQPB: ISQPB; Request: ISRB; RaiseExceptionOnError: boolean=true) :IServiceQueryResults; overload;
270 function Query(Request: ISRB; RaiseExceptionOnError: boolean=true) :IServiceQueryResults; overload;
271
272 4. IAttachment addition (informational)
273 function GetSecurityDatabase: AnsiString;
274
275 5. IStatement: performance counters now updated after each Fetch. GetPerfStatistics
276 thus now returns accumulated stats for a select statement from opening a cursor
277 up to the last fetch.
278
279 6. DARWIN: uloadlibrary.inc bug fix. Many thanks to Luigi Naimi for correcting
280 the problem.
281
282 7. Type change: "TPerfCounters = array[TPerfStats] of Int64". Note "Int64"
283 replaces deprecated "comp" type.
284
285 10. Testsuite Test10 updated to include thread synchronisation for event reporting.
286
287 11. URL Connection Strings: inet4 and inet6 now recognised.
288
289 12. IBUtils: Parse and Make Connect String now recognise URL style loopback syntax.
290
291 13. IAttachment.CharSetName2CharSetID is now performed case insensitive.
292
293
294 FBINTF Change Log version (1.1-1) Tue, 27 Feb 2018 16:51:16 +0000
295
296 1. IBUtils.QuoteIdentifierIfNeeded: Add check for space character.
297
298 2. IAttachment: add two new methods
299 function HasDefaultCharSet: boolean;
300 function GetDefaultCharSetID: integer;
301
302 These return, respectively, true if a connection default character set was
303 specified and the character set id of the connection default character set.
304 The DefaultCharSetID is cached when the connection is opened and hence does not
305 require a database lookup.
306
307 3. Avoid exception when a text blob is a stored procedure parameter.
308
309 4. Update test suite to include a test for a stored proc returning a text blob.
310
311 5. IAttachment: add
312 function GetRemoteProtocol: AnsiString;
313 function GetODSMajorVersion: integer;
314 function GetODSMinorVersion: integer;
315 function GetAuthenticationMethod: AnsiString;
316
317 These results are cached when the connection is opened and hence do not
318 require a database lookup.
319
320 6. IAttachment: add "function GetConnectString: AnsiString;" This returns the
321 connect string used to create/connect to the database.
322
323 7. IAttachment: Create Database using SQL statement. The username and password
324 are now extracted and used to populate a DPB made available via IAttachment.getDPB.
325 It is now possible to use IAttachment disconnect/connect to reconnect to
326 a database for which the initial connection was established by a create
327 database sql statement. Available in FPC only.
328
329 8. Update Test 1 to test 5, 6 and 7 above.
330
331 9. IBUtils code tidy up.
332
333 10. Parameter Block interfaces "find" method. As documented, this should have
334 returned a nil interface when the item could not be found. Instead, an empty
335 interface item was returned. "Find" now works as documented and will return
336 a nil interface if the item cannot be found.
337
338 11. DBInformation: support added for isc_info_active_tran_count and isc_info_creation_date.
339
340 12. DBInformation: New interfaces: IDIRB and IDIRBItem added to support DB Information
341 requests with additional parameters. This is to enable support for fb_info_page_contents
342 (return of page contents). Response to fb_info_page_contents returned as
343 a string with code page CP_NONE.
344
345 13. DBInformation: Support for fb_info_pages_used and fb_info_pages_free added, plus
346 test suite updated.
347
348 14. DBInformation: Support for fb_info_crypt_key (Firebird 3.0.3 onwards) added as
349 a string type, and fb_info_conn_flags (Firebird 3.0.3 onwards) added as an integer type.
350
351 15. Service Manager: List of protocols supported expanded to include inet, wnet and xnet.
352 An overloaded version of IIFirebirdAPI.GetServiceManager also allows a non
353 default connection port to be specified.
354
355 FBINTF Change Log version (1.1-0) Sun, 07 Jan 2018 15:20:02 +0000
356
357 1. Fix issues with setting SQL Param values using SetAsString with Numeric types.
358 Scale is no longer ignored.
359
360 2. Fix issues with setting SQL Param values using SetAsString with Date values
361 not in locale format but which are recognised by Firebird. Date values that
362 cannot be converted to a string using Pascal library are now passed through
363 to Firebird as Text Strings.
364
365 3. Lookup character set name by codepage amended to ensure that CP_UTF8 returns
366 UTF8 and not UNICODE_FSS.
367
368 4. Charset ID problem. When using Firebird 3, with no default database character set
369 and a column has a non-default collation specified, an incorrect character set
370 id was being reported that could result in a 'division by zero' error when
371 used by IBX. This has now been fixed.
372
373 5. Move GetCharsetName, CharSetID2CodePage, CodePage2CharSetID, CharSetName2CharSetID,
374 CharSetWidth from IFirebirdAPI to IAttachment. This is a better data model as
375 the character sets supported can be updated on a per database basis. That is
376 it is possible to add a (Firebird) user defined character set to a database.
377
378 6. Add RegisterCharSet to IAttachment. This is used to register a user defined character
379 set supported by Firebird with the API.
380
381 7. Add missing isc_info_db_read_only to list of decoded Database Information items
382 in FBOutputBlock.pas and update test suite to include this item.
383
384 8. FB30Client: avoid always using "StartMultiple" when only a single database attachment.
385
386 9. Loading Windows fbclient.dll: when using the FIREBIRD variable to locate the client
387 library or finding it by disk location, the PATH environment variable is now also set to
388 include the FIREBIRD directory. This is to ensure that the correct dlls in the
389 firebird client library dependencies are loaded.
390
391 10. Testsuite: Ensure consistent UTF-8 output on Windows console.
392
393 11. Testsuite: Update Windows script to include FPC 3.0.4 in search path.
394
395 12. FB30Statement: Protect call to "Move" and avoid calling with a nil pointer
396
397 13. FB30Statement: A check has been added to ensure that all SQL Parameters
398 have been given a value (including NULL). Previously, failing to set the
399 value of an SQL Parameter could give rise to unpredictable results or
400 an SQLDA error.
401
402 14. FB30Statement/FB25Statement: Set SQLParam "modified" when string value set.
403
404 15. FBAttachment: Avoid string reference count error when processing an Ansistring
405 parameter in an array of const passed to IAttachment.OpenCursor, etc.
406
407 16. FBAttachment: Allow for WideString and UnicodeString parameters in an array
408 of const passed to IAttachment.OpenCursor, etc.
409
410
411 FBINTF Change Log version (1.0-2) Sat, 04 Mar 2017 14:43:56 +0000
412
413 1. Change syntax to Mode Delphi
414
415 2. Change all uses of string type to explicit AnsiString in order to ensure
416 compatibility between Delphi and FPC.
417
418 3. Various syntax changes to ensure Delphi and FPC compilation including GUIDs
419 defined for each interface.
420
421 4. Generics syntax variations for Delphi added
422
423 5. PChar replaced with PByte expect where an actual string is being referenced,
424 where PAnsiChar is used instead.
425
426 6. Review of type definitions in IBExternals to ensure Delphi compatibility
427
428 7. Testsuite updated for Delphi
429
430 FBINTF Change Log version (1.0-1) Fri, 24 Feb 2017 12:17:57 +0000
431
432 1. Limit maximum Blob segment read/write to MaxuShort. Avoids data loss with
433 large blobs and the FB3 API.
434
435 2. Update Event Handling algorithm to avoid looping due to recreation of the
436 event block.
437
438 3. Avoid invalid XSQLDA error when the only parameter is updated to null
439
440 4. Array Handling: fix problem with text arrays with character set none. When the
441 DB connection has a default character set (e.g. UTF8), an error is raised by
442 Firebird if the space allocated is not enough to allow for transliteration, even
443 though it is not required for character set none.
444
445 5. IBUtils: List of reserved words brought up-to-date
446
447 6. Add ISQL style performance statistics collection to IStatement
448
449 7. Add IFirebirdAPI.CreateDatabase variant to allow execution of user provided
450 CREATE DATABASE statement.
451
452 8. Update SQL Statement parsing to allow for Array Dimensions. That is so that the ':' in
453 an array dimension is not mistaken for a named parameter prefix.
454
455 9. Trim function no longer applied to result of GetAsString for SQL_TEXT
456 when Character set is octets. Avoids loss of non printable characters at start of string.
457
458 10. Add function GetPerfStatistics to IStatement. This returns ISQL like performance
459 statistics for the last action. Requires use of procedure IStatement.EnableStatistics
460 to enable stats gathering.
461
462 11. API Version information added as constants to IB.pas
463
464 12. BlobMetaData character set id should now be the same as that given by IColumnMetaData.GetCharSetID
465
466 13. Firebird Character set "NONE" now interpreted as codepage CP_ACP.
467
468 FBINTF Change Log version (1.0-0) Tue, 06 Dec 2016 10:33:47 +0000
469
470 1. Initial Release
471