ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/fbintf/changelog
Revision: 340
Committed: Wed Jul 7 11:53:54 2021 UTC (3 years, 4 months ago) by tony
File size: 19915 byte(s)
Log Message:
Fixes Merged

File Contents

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