ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/changelog
Revision: 221
Committed: Mon Mar 19 09:48:37 2018 UTC (6 years ago) by tony
File size: 54920 byte(s)
Log Message:
Fixes merged

File Contents

# User Rev Content
1 tony 221 IBX Change Log version (2.3-0) Mon, 19 Mar 2018 09:45:35 +0000
2 tony 101
3 tony 209 IMPORTANT: the source code tree has been re-organised for IBX 2.3. Please remove
4     all previous copies of the IBX source code tree before installing this release.
5    
6     The IBX packages used by most users have not changed, with one exception. The
7     IBServices unit has been moved to the package iblegacyServices.lpk. To continue
8     to use the IBServices unit in your applications, please add the iblegacyServices
9     to the list of dependencies. To do this, open the Project Inspector and select
10     Add->New Requirement and select "ibLegacyServices" from the list of available
11     packages.
12    
13     1. New unit IBXServices. The IBXServices unit is a re-architectured update of
14     the IBServices unit providing what is intended to be a clearer and easier to
15     use set of IB Services components. See Chapter 10 of the IBX User Guide for
16     more information and the guide to "Firebird Service Management Using IBX".
17     As indicated above, the legacy services components are still available and
18     provided in a separate package. There is no need to update working applications
19     using the older versions except for an additional package dependency.
20    
21     2. The IBX packages and source code tree have been re-organised in an attempt to
22     finally get rid of the "duplicate ppu" warnings. This re-organisation should
23     not affect existing users. Section 2.3 of the IBX User Guide describes the
24     new set of IBX packages.
25    
26     3. The ibx/examples/DBAdmin and the ibx/examples/services example have been
27     updated to use the new Services API components.
28    
29     4. The iblocal package has been updated to use the new Services API components.
30    
31     5. procedure SetAutoAdmin; in the new IBX Services this method is now a member of
32     TIBXSecurityService. It had been wrongly classified in the previous version
33     as a per database configuration item. It is global to a server and hence
34     correctly positioned as part of the Security Package. In the DBAdmin example,
35     the setting has moved to the mappings page.
36    
37     6. TIBXScript: IgnoreCreateDatabase added. If true then CREATE DATABASE statements
38     are ignored.
39    
40     7. TIBDatabase: DropDatabase now ensures that all transactions have been properly
41     closed before the database is dropped. Before and After Disconnect event handlers
42     are also fired.
43    
44     8. TIBTransaction: OnStartTransaction event now fires every time the transaction
45     is started and not just the first time.
46    
47     9. IBDataOutput: Use FormatFloat for all performance statistics to avoid platform
48     depenendency with comp type.
49    
50     10. IBDataOutput: select query data output is now sent to stdout instead of stderr.
51    
52     11. TIBDatabase: Remove regression. If a user login dialog changes the DatabaseName
53     then this is recognised and not ignored.
54    
55     12. TIBDataSet, TIBQuery, TIBTable: additions:
56     function GetRowsAffected(var SelectCount, InsertCount, UpdateCount, DeleteCount: integer): boolean;
57     function GetPerfStatistics(var stats: TPerfCounters): boolean;
58     property EnableStatistics: boolean read FEnableStatistics write SetEnableStatistics;
59    
60     GetRowsAffected returns the affected row counts from the last insert/update/delete
61     if EnableStatistics = true then GetPerfStatistics returns the current stats
62     counters for the select query. Note: stats accumulate after each fetch from
63     the database. To get total query cost after open, call the "Last" method
64     and then GetPerfStatistics.
65    
66     See ibx/examples/consolemode for an example of the use of GetPerfStatistics
67    
68     13. TIBExtract: Identity columns DDL. "Start with clause" now correctly encapsulated
69     in parenthesises.
70    
71     14. TIBExtract: new published property "AlwaysQuoteIdentifiers". If true then in dialect 3
72     SQL identifiers are always delimited by double quotes. If false, then they are
73     only delimited if the identifier is a reserved word, contains lower case or special
74     characters. Set this property to true to retain previous behaviour.
75    
76     15. Insert SQL Property Editor. In Insert Returning Clause, Identity column names
77     are now inserted in double quotes if not Reserved Words or valid SQL Identifiers.
78    
79     16. TIBDataSet, TIBQuery, TIBTable: addition:
80     property MasterDetailDelay: integer {defaults to zero}
81    
82     When non-zero and the dataset is a detail table referencing a master table
83     through either a MasterSource (TIBTable) or a DataSource (TIBDataSet, TIBQuery)
84     then a synchronisation delay is added (in milliseconds) between the master
85     row changing and the detail dataset being re-opened. If the master dataset
86     is scrolled before the delay expires then the delay is reset. This can be used
87     to avoid performance overheads when scrolling through a large master dataset.
88    
89     Note: uses fptimer and hence requires a thread manager. Under Linux the
90     chreads unit must be included in your project. TTimer is not used in order
91 tony 213 to avoid an LCL dependency. Requires FPC 3.0.2 or later.
92 tony 209
93     17. TIBExtract: User role grants now excluded when etGrantsToUser not specified
94     with Extract Option eoDatabase.
95    
96     18. TIBLookupComboEditBox: Workaround added for https://bugs.freepascal.org/view.php?id=33428
97     When a deLaoutChanged event is reported on the ListSource dataset, the
98     combobox text is updated. This allows a listsource (detail) to be in a Master/Detail
99     relationship with the control's datasource (master).
100    
101 tony 221 19. TIBExtract: Full BigInt value range now supported for Generators/Sequences.
102    
103     20. Select Procedures (Procedure type 1) now include "SUSPEND;" clause in their
104     stubs. Pedantic fix really, as procedures output in dependency order anyway.
105    
106     21. TIBExtact: Package Headers and Package Bodies are now included in the extracted
107     DDL (Firebird 3 and later only).
108    
109 tony 209 IBX Change Log version (2.2-0) Wed, 28 Feb 2018 10:57:45 +0000
110    
111 tony 151 NOTE: THE LOCATIONS OF SOME OF THE UNIT DIRECTORIES HAS CHANGED FROM IBX 2.1. THIS IS TO
112 tony 152 AVOID DUPLICATE PPU WARNINGS. PLEASE REMOVE EARLIER VERSIONS OF IBX BEFORE INSTALLING THIS
113 tony 151 RELEASE.
114    
115     NOTE: THE DBADMIN DEMO REQUIRES THAT THE MemDSLaz PACKAGE IS INSTALLED IN THE LAZARUS IDE.
116    
117 tony 107 1. IBExtract: Identity columns - add additional check for null column for generator name.
118 tony 101
119     2. IBCustomDataSet: Insert and Modify (Update) queries now recognise and process SQL RETURNING clauses.
120     The main use for this is for Firebird 3 Identity columns (see IBXDocumentation 6.6.8 for further
121 tony 107 information). However, this is also a very useful mechanism for returning updated computed by
122     column values. Values returned as a result of executing an Insert or Update statement
123     replace existing values in the current row for each corresponding column.
124 tony 101
125 tony 107 Previously, if a dataset's select query included read only (computed by) fields then
126     an automatic row refresh was performed after an insert or update query had been processed,
127     irrespective of the setting of the "ForcedUpdates" property. This has changed such
128     that an automatic refresh is no longer performed if an insert or update query contains
129     a returning clause that updates one or more fields on the current row. A full row
130     refresh is only performed if (a) ForcedRefresh is true or (b) the query does not return any
131     field values and the select query contains read only fields. Use of Insert/update
132 tony 123 returning should be significantly more efficient than executing a refresh query.
133 tony 107
134     This behaviour change is intended to be backwards compatible and there should be no need to change
135     existing programs, other than to improve performance by using the new capability.
136    
137 tony 118 3. IBCustomDataSet: DELETE...RETURNING queries are now also recognised. However, as
138     they are called when the dataset row is being deleted, there is no value in
139     updating the current record from the query result. Instead, a new event handler
140     "OnDeleteReturning" is provided. If a DELETE...RETURNING query is execute and
141     an OnDeleteReturning event handler is provided then it is called with the IResults returned
142     by the query. The event handler can then interrogate the query results and
143     perform whatever action is necessary. For example to confirm, to the user,
144     the deletion of a row with the returned values.
145    
146     4. TIBTable: generated Insert and Update SQL now include a RETURNING clause for
147 tony 107 any Computed By or Identity Columns. The IBTables example has been updated to
148     illustrate the computation of the employee Full Name on update.
149    
150 tony 118 5. TIBTable: The GeneratorField property is now published.
151 tony 107
152 tony 118 6. The InsertSQL property editor now shows Firebird 3 Identity columns separate from the Field List.
153 tony 101 When InsertSQL is generated, the Identity columns are not included in the list of values to
154     be inserted. A RETURNING clause is added to the insert statement to return the value of
155     each Identity column after the insert is executed.
156    
157 tony 118 7. The Modify Property Editor now generates Update SQL with Computed By fields in Update..Returning clause.
158 tony 107 Similarly Insert Property Editor now generates Insert SQL with Computed By fields in
159     Insert..Returning clause.
160 tony 104
161 tony 118 8. TIBGenerator: small performance improvement by not preparing query each time
162 tony 107 a new value is generated.
163 tony 104
164 tony 118 9. TIBSQL: Free resources when transaction changed - ensures new transaction is used.
165 tony 107
166 tony 118 10. Property editors will now sync table name to a System Table when "Include System
167     Tables" is selected and the query is for a System Table.
168 tony 105
169 tony 118 11. Minor Performance improvement to handling of Date/Time types in IBX datasets. Field
170 tony 107 values are no longer converted to milliseconds from TDateTime and then back again
171     to TDateTime (the conversion to milliseconds is the default TDataset approach).
172 tony 105
173 tony 118 12. Property Editors handling of Stored Procedures.
174 tony 107 * Select and Refresh: only show a list of stored procedures that return multiple rows (proc type 1) and
175     which have a non-empty list of output parameters (i.e. stored procedures that may be used in a select
176     query).
177     * Modify and Insert: only show a list of stored procedures that return at most a singleton row (proc type 2).
178 tony 106
179 tony 118 13. IBStoredProc: Now supports Firebird 3 Package Names. A new published property PackageName
180 tony 107 can be used to select a package. If non-empty, the stored procedure name is
181     expected to be a stored procedure defined in the specified package and the
182     generated SQL will be as required for a stored procedure located in a package.
183    
184 tony 118 14. Select, Refresh, Insert, Modify, Delete and TIBSQL SQL Property Editors now include
185 tony 107 a "Package Name" drop down box to allow selection of a Firebird 3 Package from
186     which a stored procedure can be selected. With no package name selected, non-package
187     stored procedures are listed.
188    
189 tony 118 15. TIBXScript: turn off database login prompt when reconnecting - this avoids prompting
190 tony 109 for password on reconnect.
191 tony 107
192 tony 143 16. TIBDatabase: use IAttachment for connection default character set id, code page
193 tony 118 and character set name.
194 tony 109
195 tony 118 17. TIBDatabaseInfo: cache ODS Version information on first request in order to minimise
196     DB info lookups"
197    
198 tony 143 18. IBExtract: now supports DDL Triggers and Grants to DDL objects.
199 tony 118
200 tony 127 19. Add a property Editor for TIBUpdate.RefreshSQL.
201 tony 118
202 tony 139 20. IBUpdate: Ignore non-data (e.g. calculated) fields when assembling list of input
203     parameters. This stops an exception being raised when the field cannot be
204     located in the record buffer.
205 tony 127
206 tony 141 21. Property Editors now automatically include System Tables when opened and when the query table
207     is a System Table.
208 tony 139
209 tony 150 22. IBServices: SQRB and SRB buffers are now reset when service query throws an exception.
210 tony 143 This avoids errors due to a stale SQRB or SRB being used for the next query.
211 tony 141
212 tony 143 23. IBServices: Service attach parameters now include "expected_db". This is used to
213     add the SPB item isc_spb_expected_db. This names a database using
214     an alternative Security Database (FB3 onwards) and allows (e.g. backup/restore) using such a
215     database. examples/services re-written to illustrate use of "expected_db".
216 tony 141
217 tony 143 24. IBServices: TIBControlAndQueryService.WriteNextChunk no longer ignores isc_info_svc_timeout.
218     This avoids truncated backups when the server returns a timeout (busy) response.
219    
220     25. TIBDatabase: isc_dpb_page_size now supported as a database parameter when using TIBDatabase.CreateDatabase.
221    
222     26. TIBDatabase: DatabaseName property may now be prefixed by $TEMP$ or $DATADIR$ for local
223     databasenames. These are respectively expanded to the local system's temp directory
224 tony 150 (including trailing delimiter) or to a prescribed data directory (including
225 tony 143 trailing delimiter). Under Unix systems the data directory is a hidden directory
226     in the user's home directory. The hidden directory name is either the string returned
227     from the SysUtils "Vendor Name" or "IBX" if empty. In either case prefixed by a '.'.
228     Under Windows, the directory is the same as the Data Directory as decribed
229     above but instead prefixed by the User's application data path. These may be
230 tony 150 used to improve application portability for Personal Databases.
231 tony 143
232     27. TIBTable: FieldDefs property is no longer published. Due to the use of TIBFieldDef
233     this has not worked for a long time and is not useful either. FieldDefs should be
234     managed using the Fields Editor as with any other dataset. To access the fields
235     editor for a TIBTable component, double click on the component. The fields editor
236     is then displayed.
237    
238     28. TIBDatabaseInfo: new properties/function
239     * DateDBCreated (returns date/time database created)
240     * TransactionCount (returns no. of active transactions)
241     * GetDatabasePage(PageNo: integer) (returns contents of specified database page - SYSDBA only).
242     * PagesFree (Firebird 3 or later)
243     * PagesUsed (Firebird 3 or later)
244     * Encrypted (returns true if database encrypted. (Firebird 3.0.3 or later only)
245     * EncryptionKeyName (returns the name of the encryption key if any (Firebird 3.0.3 or later only)
246    
247     29. IBServices classes now provided the decoded release number in the (array) property ServerVersionNo.
248    
249     30. TIBSecurityService now supports display/modification of the User Admin Role (Firebird 2.5 and later).
250    
251     31. TIBConfigService now has a procedure SetAutoAdmin(Value: boolean) to enable/disable
252     the automtic mapping of privileged OS users to the RDB$ADMIN role (Firebird 2.5 and later).
253    
254     32. TIBBackupService: New Option - NoDBTriggers equivalent to -nodbtriggers switch introduced
255     in the gbak utility at V.2.1 to prevent database-level and transaction-level triggers from
256     firing during backup and restore.
257    
258     33. Both TIBBackupService and TIBRestoreService now support backup/restore statistics options
259     for verbose output using the new property "StatisticsRequested".
260     see https://firebirdsql.org/file/documentation/release_notes/html/en/2_5/rnfb25-util-gbak.html#rnfb25-util-gbakstats
261    
262     34. TIBRestoreService: now supports new options RestoreMetaDataOnly (Firebird 2.5 and later).
263    
264     35. TIBOnlineValidationService component added to the IBServices and the "Firebird Admin"
265     palette. This uses the online validation feature added in Firebird 2.5. The
266     services's properties enable inclusion/exclusion of tables and indexes using
267     regular expressions. See.
268     https://firebirdsql.org/file/documentation/release_notes/html/en/2_5/rnfb25-apiods-api.html#rnfb25-apiods-api-onlinevalidation
269    
270     36. IBServices: procedure TIBConfigService.SetNoLinger added to set no linger
271     option on a database.
272    
273     37. TIBCustomService: Assign method implemented to allow copying of service login
274     context between service API components. "Detach" method now only detaches
275     service when last reference to the service interface detaches. Tidy up of
276     code for SetActive and Attach methods including password hiding.
277    
278 tony 150 38. TIBDatabase: new properties: AuthenticationMethod and RemoteProtocol. Read only
279 tony 143 and used to determine the auth method and protocol used for the connection.
280    
281     39. TIBDatabase: ensure that SQLDialect setting is used when creating a database using
282     a Create Database Statement generated by IBX.
283    
284     40. All IBServices now have an additional published property "PortNo". This may
285     be set to a non-standard port number when necessary. If zero then the default
286     port number is used.
287    
288     41: TIBLookupComboeditBox: Ensure dataset updated when change selected with the keyboard
289     and not just the mouse.
290    
291     42. TIBCustomDataset: reopen query if already active when a TIBControlLink is added.
292    
293     43. TIBTreeview: new ImageIndexField and SelectedIndexField Property allows the
294     image index and selected image index for each node to be set from a database field.
295    
296     44. TIBExtract: new extract type (etGrantsToUser) for use with eoDatabase. If included
297     then database schema includes grants to all users. If not present then the
298     only user grants included are those to User PUBLIC.
299    
300     45. TIBTreeView: performance improvement. When expanding include both expanded node
301     and child nodes in dataset.
302    
303    
304 tony 90 IBX Change Log version (2.1-0) Fri, 15 Dec 2017 12:20:11 +0000
305 tony 56
306     1. IBCustomDataset: Minor change of PChar to PByte for compatibility with fbintf
307     changes.
308    
309 tony 58 2. IBCustomDataset: Fixed use of incorrect datasize in TIBStringField.SetAsString.
310     Bug could result in truncated multi-byte character set values.
311    
312 tony 60 3. Changes consequential on moving fbintf character set utility functions from
313     IFirebirdAPI to IAttachment.
314    
315 tony 62 4. Avoid "Object is nil" error when opening a database with DefaultSystemCodePage = true
316    
317 tony 64 5. IBLookupComboEditBox: avoid race condition when autocompleting text that occasionally
318     results in autocomplete ignoring prefix text.
319    
320 tony 65 6. IBLookupComboEditBox: Ensure that cursor is not reset to start of text when
321     entering a new name into the text box.
322    
323 tony 66 7. IBCustomDataset: ensure that TIBStringField uses the field size reported by
324     Firebird rather than recomputing it.
325    
326 tony 67 8. Property Editor positioning tidy up: All IBX Property editors should now be
327     screen centre. Previously some were "poDesigned" which may be inappropriate
328     for multi monitor desktops.
329    
330 tony 80 10. TIBTreeView.FindNode: protect against error if zero length path or empty tree node.
331    
332     11. TIBTransaction: On Force Disconnect do not raise an exception when problem ending
333     a transaction and always reset the object.
334    
335     12. TIBQuery tidyup: remove unnecessary call to GetAffectedRows.
336    
337     13. TIBXScript: Allow for override of database filename in Create Database statements.
338    
339     14. IBLocaldb: Support initialisation of the database from an SQL script in addition
340     to a gbak format archive.
341    
342     15. IBLocaldb: fix problem that stopped the OnSharedDataDir event from being recognised.
343    
344     16. IBLocaldb: Drop database if error creating an empty database.
345    
346     17. TIBTreeView: improve performance when selecting node - avoid refreshing dataset
347     unless selected node not in current dataset.
348    
349     18. IBServices: SetDBParams method moved from TCustomIBLocalDBSupport (in IBLocalDB package)
350     to TIBCustomService, and IBlocalDB code tidy up.
351    
352     19. IBTreeView: Initialise TIBTreeNode KeyValue to null to avoid unpredictable
353     behaviour due to uninitialised variable.
354    
355     20. IBServices: Correct encoding of isc_spb_prp_write_mode in TIBConfigService from
356     integer to byte. Ditto isc_spb_prp_reserve_space and isc_spb_prp_access_mode.
357    
358     21. IBSQL: When Database changed ensure that all resources are freed.
359    
360     22. IBCustomDataset: When database changed ensure that queries an unprepared.
361    
362 tony 84 23. SQL Property Editors now use SynEdit with SQL Highlighter. New features include:
363     * Line Wrap on SQL Token boundaries (on user command)
364     * auto-complete table names in drop down list of table names
365     * Double click on tablename or field name adds to SQL text
366 tony 80
367     24. IBDataOutput: print statistics using float (%f) format instead of decimal (%d).
368    
369     25. IBTreeView: Call to FindNode: param type change from "array of Variant" to
370     TVariantArray. Seems to avoid memory corruption in Windows (probably a
371     workaround for a problem in fpc 3.0.4 win64).
372    
373     26. IBDatabaseInfo: Code tidy up. Add check for database not assigned or not open.
374    
375 tony 83 27. IBDatabaseInfo: Remove memory leak when accessing database operation counts.
376    
377 tony 51 IBX Change Log version (2.0-2) Fri, 24 Feb 2017 12:17:53 +0000
378 tony 49
379 tony 51 1. TIBDatabase.CreateDatabase: extract full DB Name from SQL using reg ex in order to
380 tony 49 include remote system name.
381    
382     2. TIBExtract: No longer include comment header and COMMIT statement for empty
383     tables when data included in output.
384    
385     3. Profiling: IBSQL now has conditional compilation flags to enable query performance
386     and timing information to be written to stdout. This may be used to locate
387     performance bottlenecks.
388    
389     4. SQLParser: only call "OnChanging" event handler when value is different.
390    
391     5. IBDynamicGrid: Update handling of navigation keys for a TDateEdit
392    
393 tony 50 6. IBCustomDataset: Set internalunprepared flag when transaction ends. This ensures
394     that BindFields is called when the query is next activated. Avoids FieldName
395     not found error.
396    
397 tony 80 7. IBUpdate: This is a new IBX component similar to TIBUpdateSQL. It is more general
398     purpose and allows the programmer to define any action they want for Update, Insert
399     or Delete. This may be complex SQL (similar to a Trigger), application specific
400     filtering of updates, or use of statements such as Grant or Revoke instead of
401     normal DML. See User Manual for more information.
402    
403 tony 47 IBX Change Log version (2.0-1) Mon, 09 Jan 2017 15:31:49 +0000
404 tony 45
405 tony 47 1. TIBEvents: Fix uninitialised variable that could result in lost events.
406 tony 45
407 tony 47 2. TIBExtract: Added support for FB3 "USAGE" privilege.
408    
409     3. TIBExtract: data formatted as Charset set "octets" is now output using
410     hexadecimal notation.
411    
412     4. TIBExtract: Binary Blobs and array data can now be embedded in INSERT statements
413     using a simple XML format.
414    
415     5. TIBExtract: extract of individual Triggers and Stored Procedures can now include
416     grants to these objects.
417    
418     6. TIBExtract: Stored Procedures and Views output in dependency order to avoid
419     dependency problems restoring complex databases.
420    
421     7. TIBXScript: This component has been restructured to allow for the processing of
422     embedded XML in INSERT statements and to support interactive sources in addition
423     to non-interactive data sources such as files.
424    
425     8. TIBXScript: CREATE DATABASE, DROP DATABASE, CONNECT statements are now supported.
426    
427     9. TIBXScript: ISQL compatiable Set statements are now supported:
428     SET SQL DIALECT
429     SET TERM
430     SET AUTODDL
431     SET BAIL
432     SET ECHO
433     SET COUNT
434     SET STATS
435     SET NAMES <character set>
436    
437     10. IBVersion unit added to hold current IBX Version Number information.
438    
439     11. TIBExtract: Use character rather than byte length for VarChar procedure arguments.,
440     and domain definitions.
441    
442     12. TIBExtract: Triggers now use SQL2003 syntax and database and transaction triggers
443     fully supported.
444    
445     13. TIBExtract: when a database dump includes data, the generator values are now also set.
446    
447     14: IBSQLEdit: Unit LCLPlatformDef added to uses clauses for lazarus 1.7 and later.
448    
449     IBX Change Log version (2.0-0) Tue, 06 Dec 2016 10:33:44 +0000
450    
451 tony 50 See also doc/IBX4LazarusGuide.pdf for important information on
452 tony 45 upgrading to IBX2.
453    
454     1. Size property of TIBStringField is now the width in characters of the field
455     and not the byte length. This applies only to multi-byte character sets such
456     as UTF8. The original approach aligned with TStringField. However, the TStringField
457     code is not recognised as a bug and hence this change to align the behaviour.
458     The TStringField change is expected in fpc 3.2.0.
459    
460     2. A new property AutoFieldSize: boolean has been added to TIBStringField. When
461     true (default) then Size property value saved in the lfm is ignored. Size is
462     always set from the dynamic information read from the database. It is unclear
463     why anyone would want to override this and set Size to false.
464    
465     3. ibxscript: should now handle correctly a Case..End statement within a procedure
466     block.
467    
468     4. IBDatabase: new property - CreateIfNotExists. If true and database does not
469     exist when an attempt is made to connect to it (run time only) then an attempt
470     is made to create the database.
471    
472     5. IBDatabase: new event - OnCreateDatabase. This event is called after a database
473     has been successfully created as a result of a call to CreateDatabase or when
474     creating a database after it was found not to exist.
475    
476     6. DBControlGrid: a race condition could result in the wrong row image being
477     written to the cache. This has been avoided by a trip round the message
478     loop before rendering the row image.
479    
480     7. DBControlGrid: It is strongly recommended not to open the source DataSet for
481     a DBControlGrid during a Form's "OnShow" event handler. Under GTK2 this is
482     known to risk corrupt rendering of row images when the control is first
483     displayed. If necessary use "Application.QueueAsyncCall" to delay opening
484     of the dataset (see DBControlGrid examples) until the Form's Window has been created.
485    
486     8. DBControlGrid & IBDynamicGrid: Navigation keys should now work correctly with
487     a TDateEdit control located on an editor panel.
488    
489     9. TIBExtract: brought up-to-date plus many bug fixes.
490    
491     10. DBControlGrid: Removed memory leak when updating rows.
492    
493     11. TIBCMLocalDBSupport: fixed invalid free on upgrade.
494    
495 tony 43 IBX Change Log version (1.4-3) Thu, 22 Sep 2016 18:10:15 +0100
496    
497     1. IBCustomDataset: When calling SetCodePage, no longer request transliteration
498     when target codepage is CP_NONE. This is a workaround for
499     http://bugs.freepascal.org/view.php?id=30622.
500    
501     2. DBLog option removed from TIBStatisticalService - not supported by server
502     since Firebird 1.5.
503    
504     3. ibxscript: An error is no longer generated for "on commit preserve rows" or
505     similar.
506    
507     4. IBCodePage: updated mapping between codepages and character id.
508    
509     5. ftWideString and ftWideMemo withdrawn. There is no UTF16 character set in
510     Firebird. Character sets with a char width of two are not UTF16.
511    
512     6. Strings received from the database are now always transliterated into UTF8
513     regardless of the database character set or connection character set. This
514     is for compatibility with the LCL.
515    
516 tony 45 IBX Change Log version (1.4-2) Thu, 22 Sep 2016 15:25:27 +0100
517 tony 41
518     1. IBBlob: Defer reading of blob until read method called. This avoids having to
519     read in an entire blob just to get the size of the blob. General performance
520     improvement when opening datasets containing blobs.
521    
522     2. Clearing a Blob now sets the corresponding field's modified flag.
523    
524     3. IBLookupCombo: When not performing auto-complete, original query sort order
525     is now used.
526    
527     4. IBDynamicGrid: Add OnSelectEditor event. Allows editor panel to be dynamically
528     determined.
529    
530     5. IBDynamicGrid: Recompute column widths after dataset closed and re-opened.
531    
532     6. IBLookupCombo: LazUTF8 added to uses clause to avoid compilation problems post
533     lazarus 1.6.0
534    
535     7. IBControls. Removed "runtime" from list of paths to avoid "multiple packages"
536     compilation error.
537    
538 tony 39 IBX Change Log version (1.4-1) Tue, 17 May 2016 09:14:51 +0100
539    
540     1. No character set specified for connection: when a text blob is retrieved, the
541     character set is determined by looking up the native character set using then
542     Firebird API. Otherwise a text mode blob is assumed to have the same character
543     set as the connection.
544    
545     2. TIBGUIInterface: this is an internal interface. Minor type changes to allow
546     for Login Dialog returing a change to the database path.
547    
548     3. Design Time Database and Server login Dialogs now allow the Database Name/Server Name
549     to be changed from that given in the TIBDatabase/TIBServer component and for the
550     entered value to be saved on a project specific basis (design time only).
551    
552     4. IBDynamicGrid: TDBLookupCellEditor now compares its DataFieldName with the
553     column fieldname. If they are the same then it is acts as a look up for the KeyValue
554     Otherwise, it sets the column text to the selected ListField Value.
555    
556     5. IBDynamicGrid: Only visible columns are now taken into account When recalculating
557     column width.
558    
559     6. IBLookupComboEditBox: Fix error with autocomplete query when a RelationName is given
560     and a case insensitive search is requested.
561    
562     7. IBDynamicGrid: No longer ignores notifications removing Column Totals controls
563     or column ListSource.
564    
565     8. IBQuery: no longer performs unnecessary refresh of SQL Text (and hence avoids an
566     unprepare) when closing and the text has not changed.
567    
568     9. IBSQL: Base the cursor name on a GUID instead of a hexstr version of the class pointer.
569     Less likely to cause a cursor re-use error on Windows.
570    
571     10.SV5IPC: include workaround for OSX. FPC 3.0.0 has broken ipc module for darwin.
572     Expected to be fixed in 3.0.2. Hence workaround only applies to 3.0.0.
573    
574     11. TIBTreeView: Guard against nil destination on record changed
575    
576     12. AnsiString Code page support: TIBStringField.AsString and TIBMemoField.AsString now return a
577     string type with the code page set to reflect the returned field encoding after
578     Firebird driver transliteration, if any. FPC 3.0.0 onwards only. Behaviour unchanged for
579     earlier versions.
580    
581     13. AnsiString Code page support: Assigning to TIBStringField.AsString and TIBMemoField.AsString
582     will now result in transliteration to the code page specified for the Firebird driver
583     if the assigned string has a different code page. FPC 3.0.0 onwards only.
584    
585     14. TIBDatabase: new property UseDefaultSystemCodePage. When set any lc_ctype parameter
586     is ignored and the lc_ctype value, when the database is opened, is set to align with
587     the DefaultSystemCodePage (FPC 3.0.0 onwards). Normally, this is what you want and should ensure
588     platform independence. Note: this applies to FPC 3.0.0 and earlier versions. Pre FPC
589     3.0.0, when this property is true, the lc_ctype is UTF8 except under windows when
590     the GETACP is used to determine the Windows code page.
591    
592     15. TIBDatabase: new property DefaultCharSetName. This is the Firebird character set
593     name used as the lc_ctype when the database was opened. Only valid while the
594     Database is connected.
595    
596     16. TIBDatabase: new property DefaultCodePage (FPC >=3.0.0 only). This is the codepage
597     id that corresponds to the DefaultCharSetName.
598    
599 tony 37 IBX Change Log version (1.4-0) Mon, 15 Feb 2016 14:44:24 +0000
600    
601     1. Unix: If Firebird Embedded Server shared object is loaded and a local database
602     path is given and database attach fails due to access permission issues on the
603     temp directory or security database, then the attach is retried with "localhost:"
604     prefixing the databasename. This should avoid problems when the database has to
605     be accessed by a local (e.g. classic) server and libfbembed is used.
606    
607     2. Windows: revised search order for Firebird DLL:
608     i. The Firebird Embedded Server in the application Directory.
609     ii. If the FIREBIRD environment variable is set then the directory this
610     points to is searched for the FB Client DLL and then then underlying
611     "bin" directory.
612     iii. Registry Key HKEY_LOCAL_MACHINE\SOFTWARE\Firebird Project\Firebird Server\Instances
613     is used to locate the Firebird installation directory and the underlying
614     "bin" directory is searched for the FB Client DLL.
615     iv. The Default installation directories C:\Program Files\Firebird\Firebird_2_x
616     are searched for the FB Client DLL.
617     v. The PATH Environment variable is used to search for the FB Client DLL.
618     vi. Finally the PATH Environment variable is used to search for IBASE.DLL.
619    
620     3. New Component: TIBXScript. This is an ISQL compatible SQL script execution engine.
621     See doc/readme.scriptengine and example applications.
622    
623     4. New Component: TIBlocalDBSupport. This is a TIBDatabase support component intended to
624     simplify the use of the embedded firebird server on both Linux and Windows platforms.
625     See dpc/readme.localdatabase and example applications.
626    
627     5. IBDynamicGrid: Reordering on column header click should now also work for
628     dynamic columns.
629    
630     6. ISQLMonitor: (Windows only). Mutex added to TMultilockGate to avoid race condition
631     between incrementing/decrementing the lock count and signalling the event.
632    
633 tony 35 IBX Change Log version (1.3-2) Tue, 26 Jan 2016 14:39:54 +0000
634    
635 tony 37 1.3.2 was never formally released and only made available as beta copies.
636    
637 tony 35 1. DBControlGrid,IBDynamicGrid: Ignore down arrow and up arrow in TCustomMemo
638    
639     2. IBDynamicGrid: Now deals correctly with a single column grid which has no indicator and autosize column
640    
641     3. IBLookupComboEditBox: reset timer on each key press - avoids timer going off too early
642    
643     4. IBDynamicGrid: Call event OnUpdateSortOrder even when aliasname not found in dataset
644     i.e. when it is a calculated field
645    
646     5. IBDynamicGrid: Fix problem selecting a different row when expanded row at end of grid.
647     This problem was due to a race condition between recalculating row heights and
648     determining which row was selected by the mouse click. The row height calculation
649     is now deferred by an extra trip round the message loop allowing the row to
650     be always calculated on the current grid layout rather than risking it being
651     calculated on the grid layout after the expanded row has been shrunk.
652    
653     6. IBLookupComboEditBox: avoid race condition between cm_killfocus and cm_exit on
654     Windows.
655    
656     7. TIBStringField: Now has two new public properties: CharacterSetName: string and CharacterSetSize: integer;
657     These properties allow the (Firebird) character set name for the field and the max number of bytes per character
658 tony 37 to be determined at runtime. See doc/readme.charactersets.html.
659 tony 35
660     8. TIBWideStringField: This is a new field type with the same additional public properties as above and subclassed from
661 tony 37 TWideStringField. This field type is used with the character size reported by Firebird is two. See doc/readme.charactersets.html.
662 tony 35
663     9. TIBMemoField and TIBWideMemoField: new field types with the same additional public properties as above and subclassed from
664     TMemoField and TWideMemoField respectively. These field types are used with Blob subtype 1 and a characterset size of
665 tony 37 1, 3 or 4 (TIBMemoField) or 2 (TIBWideMemoField). See doc/readme.charactersets.html.
666 tony 35
667     Both also have a new published property "DisplayTextAsClassName". If false (default) the displaytext is generated
668     from the blob text by truncating the string to the displaywidth (in characters not bytes). A displaywidth of zero
669     implies no truncation.
670    
671     10. IBLookupComboEditBox: Force autocomplete when EditingDone called and timer active.
672    
673     11. IBDynamicGrid: Call DataSet.Append when entering edit mode and dataset empty and not in insert state
674     (avoids "Not in Edit Mode" error).
675    
676     12. IBDynamicGrid: Correctly resize grid when one column width plus indicator.
677    
678     13. IBDynamicGrid: Ensure Editor Panel has focus when shown - avoids Windows API calling
679     DBGrid.DoExit on subsequent mouse click (e.g. on child control such as a tabbed page control.
680    
681     14. IBDynamicGrid: ignore up, down tab and return when editorpanel open and focus in a TCustomGrid descendent.
682    
683     15. DBControlGrid: Stop flashing grid when dataset closed and then re-opened while DisabledControls
684    
685     16. IBQuery: Bug fixed that prevented SQL being set programmatically once the Parser had been invoked.
686    
687     17. IBCustomDataSet: On close, parser is now freed and Select SQL reverts to value before DataSet Opened.
688    
689 tony 33 IBX Change Log version (1.3-1) Sat, 18 Jul 2015 13:30:50 +0100
690 tony 31
691     1. OnCloseUp Event Handler added to TDBLookupProperties
692    
693     2. IBDynamicGrid: Call to OnEditorPanelHide is now last editor hide action - avoids
694     problem with row size when exception is called.
695    
696     3. IBLookupComboEditBox: Force pending autocomplete on combobox exit.
697    
698     4. IBDynamicGrid and DBControlGrid: Keyhandler now ignores up, down, escape and return keys if
699     in a TCustomComboBox and ignores return key if in a TCustomMemo
700    
701     5. IBLookupComboEditBox: Ensure that KeyValue is set correctly when full text
702     keyed in i.e. when autocomplete not performed
703    
704 tony 33 6. Cleanup of "Uses" clauses and add console mode support. IBX should now support
705     console mode applications with all LCL required functions (builtin dialogs and
706     cursor management) centralised in the IBDialogs unit. As long as "IBDialogs" is
707     not included in your project, IBX should compile and link with a console mode program.
708     See consolemode example and its "readme"for further guidence. DO NOT add the ibexpress package to a
709     console mode application or the IDE will automatically assume that your
710     application is GUI based. Instead, you should include the ibexpressconsolemode package.
711 tony 31
712     IMPORTANT NOTE: IBDialogs must be included in GUI applications in order
713     to use the built in dialogs and cursor management. IBDialogs is
714 tony 33 included by default if "ibexpress" is in your project source's "uses" clause.
715 tony 31 This should be the case for all projects created through the IDE. This is why
716     you do not want to add the ibexpress package to console mode applications. The
717     ibexpressconsolemode package has been created to allow console mode programs
718     to avoid adding LCL dependencies when using IBX, while still having the
719     unit search paths set up correctly.
720    
721 tony 33 Existing users should check to ensure that the "ibexpress" unit is included in
722     each project's source file (*.lpr).
723    
724 tony 31 You may find that in order for the IDE to recognise that ibexpressconsolemode
725     exists, you have to first open the package in the IDE and then close it. This
726     adds it to the most recently accessed packages list. To make it permanently
727     available, add the package name to lazarus' staticpackages.inc file.
728    
729 tony 33 Thanks to Julio Jiménez for suggesting support of console mode.
730 tony 31
731     7. SQL Parser can now accept quoted strings that include new lines
732    
733     8. IBDynamicGrid: Lookup Cell Editor - the cursor is now positioned at end
734     of text on start of edit. This is particularly useful when tabbing to a
735     column and then inserting text.
736    
737     9. New Examples provided for IB Services and ISQLMonitor.
738    
739     10. Fix error when writing to blob streams that recorded only the last buffer
740     write in the blob stream. In most cases, this did not cause a problem as the
741     IB Blob Stream is written in a single write. However, with the TDBImage, write
742     of a graphic type prefix was lost which caused a problem when the image could
743     not be automatically recognised.
744    
745     11. Improve generation of random cursor names in TIBSQL - avoid risk of "cursor
746 tony 33 already open" errors due to random numbers used for the cursor name being identical.
747 tony 31
748     12. IBTable: corrected error that could result in an "Index out of bounds" error
749     when opening the table and the Primary Key is the last or only column in the
750     table. Thanks to Rick Hoover for the fix.
751    
752 tony 33 13. Fix TIBDatabase initialisation of lc_ctype under unix. Set to "UTF8" instead
753     of "UTF-8", and update list of available database character sets. Existing
754     users should check the current lc_ctype setting in their applications.
755 tony 29
756 tony 33 IBX Change Log version (1.2-4) Sat, 09 May 2015 12:38:29 +0100
757    
758 tony 29 1. Firebird Services: avoid List Index error when opening a service with an
759     empty Params property.
760    
761     2. IBControls: Fix problem with new link mechanism introduced in 1.2.3.
762     Link now set up in Loaded method - avoids occasional failure to apply
763     SQL markup on initial open.
764    
765     3. "Employees" example performance improvements when scrolling.
766    
767     4. DBControlGrid: Correctly handle edit panel removal when panel is child control of a
768     TFrame. Force recaching of selected frame to avoid GTK race (results in a
769     random image cached).
770    
771     5. DBControlGrid: Should now react to changes in panel height at run time.
772    
773     6. IBDynamicGrid: Redraws rows below on panel editor hide - avoids blank space at end of grid
774     even when further rows exist.
775    
776     7. DBControlGrid: DefaultRowHeight is no longer a published property as it should
777     always be derived from panel height and setting this property can cause confusion.
778     Note for existing projects: to avoid a missing property error at run time,
779     each form using the DBControlGrid must be opened, updated and saved in the IDE
780     in order to remove the property value from the lfm.
781    
782    
783 tony 33 IBX Change Log version (1.2-3) Tue, 14 Apr 2015 14:11:17 +0100
784 tony 27
785     1. TIBStoredProc. Prepare now called by ParamByName to avoid need to always
786     call Prepare before setting parameter values.
787    
788     2. Error message on ParamByName (all cases) not found now includes name of missing parameter.
789    
790     3. Code tidyup and more robust handling of dsql information result vector.
791    
792     4. Support for centralised handling of transaction status changes. TIBTransaction
793     has been given additional events "AfterEdit", "AfterInsert", "AfterDelete", "AfterPost"
794     and "AfterExecQuery". The first three are called after the same event is called
795     for an IBCustomDataSet descendent using the Transaction. The fourth is called
796     after a call to TIBSQL.ExecQuery, again using this transaction. These new events
797     enable monitoring of transaction status changes for a given transaction to be
798     handled in a single place. For example, when a change to the dataset occurs
799     an indicator can be set that shows the user that in order to save changes,
800     the transaction should be committed. Rather than doing this per dataset, this
801     can now be done per transaction.
802    
803     5. TDataSet.CheckBrowseMode automatically posts changes to the current row when
804     the dataset is scrolled. However, any changes to the current row are, by default,
805     discarded when the dataset is closed. TIBDataSet, TIBQuery and TIBTable now
806     have a new property "DataSetCloseAction" that adds automatic posting of changes
807     on dataset close. If this property is set to dcDiscardChanges (default) then the
808     behaviour is unchanged from previous versions. if the value is set to dcSaveChanges
809     then IBX will attempt to post any unsaved changes before the dataset is closed
810     (and after the BeforeClose event handler is called). The exception is when the
811     dataset is being closed as a result of a transaction rollback. In this case,
812     no action is taken and any unsaved changes are discarded. This avoids both
813     unnecessary overhead and the risk that a validation error may occur in the Post
814     raising an exception and thereby preventing a rollback.
815    
816     6. String Field sizes and Display Widths should now be correct for multi-byte character sets.
817     In earlier versions, the Display Width was set to the maximum byte width rather than the character
818     width. Display Widths are now corrected by dividing by the max byte width per character.
819     For UTF8 character sets, the byte width is four and hence the Display Width will be
820     the byte width divided by 4. The byte width of each character set is determined
821     dynamically when the database connection is estabished from the RDB$CHARACTER_SETS
822     system table. (see also http://bugs.freepascal.org/view.php?id=27766).
823    
824     7. SQLParser will now correctly parse SQL Text which contains ':' within quoted string.
825    
826     8. IBLookupComboEditBox: List should now always be restored to full list when the
827     control loses focus. Default Key press default interval reduced to 200ms.
828    
829     9. DBControlGrid: Ensure that selection is changed to newly appended row, even
830     when dataset rows are less than visible rows.
831    
832     10. IBDynamicGrid: Editor Panel is not shown on indicator click if Datasource
833     does not exist or DataSet is empty. More responsive on dataset open. New event
834     OnRestorePosition. Column sort disabled if no header row.
835    
836     11. IBTreeView: improved handling of response to "Add Node". Avoid scrolling dataset
837     while dataset state is dsInsert. Avoids posting errors.
838    
839     12. IBControls: New mechanism for distributing UpdateSQL and UpdateParams events. This is to
840     avoid conflict with DisableControls/EnableControls with Master/Detail linked tables.
841    
842     13. IBLookupComboEditBox: Now avoids SQL Errors when combo box text contains single quotes.
843    
844     14. TIBDataSet and TIBQuery: new Event - OnValidatePost. This event has been introduced
845     to solve a specific problem. That is when the dataset cursor is moved (e.g. by
846     a grid mouse click and the current row is being edited or inserted. In this case, TDataset
847     always "posts" the current record regardless or whether or not it may be more appropriate
848     to cancel any changes; the post occurs before the "BeforeScroll" event fires due to the way the
849     "MoveBy" function is implemented by TDataSet. The OnValidatePost event is called
850     as the first action of the "Post" method and allows the handler to convert the Post
851     into a Cancel if that is the appropriate action on moving to a different row. This is
852     achieved by returning with "CancelPost" argument set to true. Note that an exception could be
853     raised here, but it may still be more appropriate to validate a post and signal
854     a problem in the "BeforePost" event handler. See readme.automaticposts.xhtml)
855    
856     15. On Unix derived systems, the Firebird library name can now be given as a colon
857     separated list. Each library name on the list is tried in turn, in left to right
858     order with the first found being used as the firebird library. By default, on Linux,
859     the library name list is 'libfbembed.so.2.5:libfbembed.so.2.1:libfbclient.so.2'. This can be
860     overidden by the FBLIB environment variable or the OnGetLibraryName function.
861    
862     Note: when using the libfbembed.so, if you prefix the database name with "localhost:"
863     then it will still attempt to access the database via the Firebird Server and will
864     require a username and password. If only the pathname is given, then the username
865     and password should be omitted and the unix file permissions are used to grant
866     access.
867    
868 tony 33 IBX Change Log version (1.2-2) Sat, 14 Mar 2015 11:35:04 +0000
869 tony 23
870     1. A new IBControl - TDBControlGrid has been added. TDBControlGrid a lookalike
871     rather than a clone for the Delphi TDBCrtlGrid. TDBControlGrid is a single column grid
872     that replicates a TWinControl - typically a TPanel or a TFrame in each row. Each row
873 tony 27 corresponds to a row of the linked DataSource. Any data aware control on the
874 tony 23 replicated (e.g.) TPanel will then appear to have the appropriate value for the row.
875    
876     2. As suggested by Julio Jiménez, a new property "SQLHourGlass" has been added to TIBDatabase.
877 tony 25 When set to false (default true), the Hour Glass cursor is supcpressed and no cursor change
878 tony 23 takes place during database access. This may be useful when there are performance issues with
879     the change of cursor. Setting the property to false suppresses the change of cursor.
880    
881     3. As suggested by Julio Jiménez, a new property "AutoCommit" has been added to TIBDataSet, TIBQuery
882     and TIBTable. When set to acCommitRetaining (Default: acDisabled), a call is made to
883     Transaction.CommitRetaining immediately after every Post or Delete. This has the effect of
884     making all changes permanent immediately rather than when the transaction is explicitly
885     committed.
886    
887 tony 25 4. Experimental support for the Firebird 3 SQL_BOOLEAN type has been added while still
888 tony 27 using the legacy Firebird API. Thanks to Gabor Boros for helping to test this feature.
889 tony 23
890 tony 33 IBX Change Log version (1.2-1) Fri, 13 Mar 2015 11:14:15 +0000
891 tony 25
892     Development version only.
893    
894 tony 33 IBX Change Log version (1.2-0) Thu, 26 Feb 2015 10:34:04 +0000
895 tony 21
896     1. An internal select SQL Parser is now available for TIBCustomDataset descendents.
897     This is typically used during an "OnBeforeOpen" event handler to manipulate the
898     "Where" and "Having" clauses to implement user specified filters of arbitrary
899     complexity.
900    
901     2. A new Component Palette entry "Firebird Data Controls" is now available. This has
902     three new data aware controls dependent on IBX and which make use of the SQL Parser.
903     These are:
904    
905     - TIBLookupComboEditBox
906     - TIBDynamicGrid
907     - TIBTreeview
908    
909     TIBLookupComboEditBox is a TDBLookupComboBox descendent that implements "autocomplete"
910     of typed in text and "autoinsert" of new entries. Autocomplete uses SQL manipulation
911     to revise the available list and restrict it to items that are prefixed by the
912 tony 25 typed text (either case sensitive or case insensitive). Autoinsert allows a
913 tony 21 newly typed entry to be added to the list dataset and included in the available
914     list items.
915    
916     TIBDynamicGrid is a TDBGrid descendent that provides for:
917     - automatic resizing of selected columns to fill the available row length
918     - automatic positioning and sizing of a "totals" control, typically at the
919     column footer, on a per column basis.
920     - DataSet resorting on header row click, sorting the dataset by the selected column.
921     A second click on the same header cell reversed the sort order.
922     - Support for a "Panel Editor". That is on clicking the indicator column, the row
923     is automatically expanded and a panel superimposed on it. The panel can have any
924     number of child controls, typically data aware controls with the same datasource
925     as the grid allowing for editing of additional fields and more complex editors.
926     - Reselection of the same row following resorting.
927     - A new cell editor that provides the same functionality as TIBLookupComboEditBox.
928     Its properties are specified on a per column basis and allows for one or more
929     columns to have their values selected from a list provided by a dataset.
930     Autocomplete and autoinsert are also available. The existing picklist editor
931     is unaffected by the extension.
932    
933     TIBTreeView is a data aware TCustomTreeView.
934    
935     3. When getting a field value using FieldByName.AsVariant, an SQL_INT64 with a
936     zero scale will no longer return an error. An Int64 will be returned instead.
937    
938     4. TIBTransaction now has events for Before and After Transaction End and a new function
939     "GetEndAction" allowing the EndAction to be accessed by these event handlers.
940    
941     5. TIBQuery can now handle correctly queries which contain the same keyword parameter
942     repeated multiple times.
943    
944     6. TIBUpdateSQL will no longer return an error when "RowsAffected" is <> 1. This error
945     check used to get in the way of using Stored Procedures, and "Update or Insert"
946     statements.
947    
948     7. Insert, Modify and Delete property Editors now support Query Generation from
949     Stored Procedures.
950    
951     8. Three new examples illustrate the use of the new IB Controls
952    
953    
954 tony 33 IBX Change Log version (1.1-0) Mon, 07 Jul 2014 14:01:07 +0100
955 tony 19
956     1. TIBXSQLVAR code clean up and optimisation to improve client side "prepare" and parameter
957     setting performance. See "readme.field+param.names in the doc folder.(Thanks to
958     Gabor Boros for reporting this problem and for testing the improvements).
959    
960     2. IBX can now support dialect 3 quoted column names that contain spaces and which differ only in their case.
961     See readme.field+param.names in the doc folder.
962    
963     3. IBX SQL Editors will now automatically add double quotes around column names when the database
964     dialect is "3" and the column name contains spaces or is a Firebird 2.5 SQL Reserved Word.
965    
966     4. Param Type LargeInt now supported in TIBQuery and TIBStoredProc
967    
968     5. TIBSQL.ExecQuery retry on failure removed to avoid problems with "at most once"
969     actions.
970    
971     6. TIBTransaction.SetDefaultDatabase uses SetObjectProp instead of mis-using SetOrdProp (with
972     thanks to Yuriy Kopnin for pointing this out).
973    
974     7. GenerateParamName is now a published property of TIBSQL, TIBQuery and TIBDataSet.
975    
976     8. varWord, varShortInt and varInt64 added to TIBXSQLVAR.SetAsVariant and hence now available as variant types
977     for both fields and parameter setting.
978    
979     9. Changes to the Select SQL in an IBCustomDataset descendent should now be
980     visible in the Fields Editor immediately afterwards - rather than only after cycling the "active" property.
981    
982     10. TIBSQL SQL editor will operate correctly and not report an SQL syntax error on SQL test,
983     when DSQL ('?') parameter placeholders are used and the TIBSQL.GenerateParamNames property is set to true.
984    
985     11. TIBTable now has a property editor for "MasterFields"
986    
987     12. SQL Property Editors now include a checkbox "Allow DSQL Placeholder". This corresponds to the
988     GenerateParamNames property and should be set when using DSQL (i.e. '?') style parameters.
989    
990     13. The IBTransaction editor now has a radio button ("Unspecified") which is set when the combination
991     of settings is unrecognised. Selecting this radio button has no effect on the settings.
992    
993    
994 tony 17 IBX Change Log version (1.0-5) Sat, 28 Dec 2013 19:22:23 +0000
995    
996     1. TBookmark change conditional compile changed to >= 2.7.0 to match revised availability of change.
997    
998 tony 15 IBX Change Log version (1.0-4) Thu, 28 Feb 2013 16:56:13 +0000
999    
1000     1. In a TIBCustomDataset descendent, a generator now only sets the value when
1001     it is null. This allows for alternative user defined setting of the generator
1002    
1003     Many thanks to Julio Jiménez for this fix
1004    
1005     2. An Error Dialog is now displayed in the Lazarus IDE if IBX cannot find the Firebird Library
1006     and suggests that the user may have forgotten to install it.
1007    
1008 tony 13 IBX Change Log version (1.0-3) Thu, 22 Nov 2012 22:53:39 +0000
1009    
1010     1. Conditional compilation used to limit registration of TIntegerField to
1011     Lazarus versions less than 1.1
1012    
1013     2. When a database connection is created, character set is now by default set
1014     to UTF8 (Unix) or to the current Windows code page (Windows) if in the range
1015     1250 to 1254.
1016    
1017    
1018 tony 11 IBX Change Log version (1.0-2) Tue, 09 Oct 2012 09:10:30 +0100
1019    
1020     1. TBookmark change conditional compile changed to > 2.6.2 to match expected availability of change.
1021    
1022    
1023 tony 9 IBX Change Log version (1.0-1) Sun, 05 Aug 2012 20:00:04 +0100
1024 tony 7
1025     1. In IBCustomDataset. Changed CurBookmark from string to TBookmark for compiler versions > 2.6.0
1026     Necessary because of TBookmark type and TDataSet.Bookmark property change in fpc 2.7.1
1027    
1028     2. IBX now registers TIntegerField as a "No Icon" component. This may be removed if the fpc DB
1029     package is changed to do this (which it should do).
1030    
1031     IBX Change Log version (1.0-0) Sat, 28 Apr 2012 16:43:00 +0100
1032    
1033     1. Add "if active then active := false" to TIBCustomDataset destructor. (Avoid error on database close).
1034    
1035     2. Make use of $STATIC conditional in IBSQLMonitor (Needed for FPC 2.6.0 compliance)
1036    
1037     3. Database Property Editor: Character Set drop down box now uses "OnChange" rather than "OnCloseUp" to react to changes
1038    
1039     4. Property editors should now correctly resize.
1040    
1041     5. In IBDatabaseEdit.TestClick, the LoginPrompt is now set to the state of the LoginPrompt Checkbox
1042     (restored original functionality)
1043    
1044     6. Under OSX, if IBX fails to load libfbclient.dylib, it will now try and load the firebird
1045     library using the absolute path /Library/Frameworks/Firebird.framework/Firebird.