ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/branches/udr/changelog
Revision: 385
Committed: Mon Jan 17 15:56:35 2022 UTC (2 years, 3 months ago) by tony
File size: 33865 byte(s)
Log Message:
Return nil result for UDR procedures when an exception occurs

File Contents

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

Properties

Name Value
svn:eol-style native