ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/branches/journaling/fbintf/changelog
Revision: 363
Committed: Tue Dec 7 13:30:05 2021 UTC (2 years, 3 months ago) by tony
File size: 31332 byte(s)
Log Message:
add fbintf

File Contents

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