ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/branches/udr/changelog
Revision: 371
Committed: Wed Jan 5 15:21:22 2022 UTC (2 years, 10 months ago) by tony
File size: 33144 byte(s)
Log Message:
Beta Release 0.1

File Contents

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