Accuracer: History of changes
===============================

- version 4.03 (08/05/2005)
  New features added: 
    1. New events (analogs of SQL triggers) were added to TACRServer:
       BeforeInsertRecord, AfterInsertRecord, 
       BeforeUpdateRecord, AfterUpdaterRecord,
       BeforeDeleteRecord, AfterDeleteRecord, 
       BeforeExecuteSQL, AfterExecuteSQL. 
       Use these events on server side as analogs of similar events in TACRDatabase.
    2. Compiled utilities are now removed from distributive and move to download page.
    3. Client-server connection stability improved.
       
  Bugs fixed:
    1. Some minor bugs with Union, Except, Intersect SQL operators were fixed.
    2. Bug in TACRServer with loading encryption settings from configuration file fixed.
    3. Bug with invalid property in dfm files of most of the Accuracer utilities was fixed.   
    4. Bug with ToString function and formats with milliseconds ('zzz','zz') was fixed.
    5. Bug with closing tables in some cases was fixed.
    6. Bug with DY format in TODATE and TOSTRING was fixed. 
       SQL Reference updated - DY returns 3 symobols.
    7. Bug with too much CPU usage by the TACRServer was fixed.
    8. Bug in UNION sql statement was fixed.
    9. Minor bug with foreign key types mismatch was fixed.
   10. Bug in ACRManager utility with Create Table for (Required column values of TDBGrid)
       was fixed.

- version 4.02 (07/16/2005)
  New features added: 
    1. Milliseconds ('ZZZ','Z') are now supported TO_DATE and TO_STRING SQL functions.
    2. ClientDataset compatibility was improved.
    3. OnError event was added to TACRDatabase and TACRServer. 
    4. NetworkSettings property was added to TACRDatabase.ConnectParams and TACRServer.
       Server configuration file format was changed.
       It is recommended to delete old configruation file for Accuracer server 
       before first start.
    5. UseConfigFile property was added to TACRServer.
    6. BeforeConnectionLost, AfterConnectionLost events were added to TACRDatabase.
       This event occurs on network errors that forces automatic closing current 
       connetion to the database server. 
    7. Client-server connection stability was significantly improved (especially in WAN),
       better error checking was implemented, automatic disconnect on network erros added.
    8. Method AddForeignKey was added to TACRTable. ALTER TABLE ADD FOREIGN KEY was optimized.
    9. ACRManager utility was enhanced: 
       - Foreign keys tab was added to Create table / Restructure Table page
       - Automatic detection of client-server connection lost and 
         server shut down was added - now ACRManager automatically closes database.
   10. New events (analogs of SQL triggers) were added to TACRDatabase:
       BeforeInsertRecord, AfterInsertRecord, 
       BeforeUpdateRecord, AfterUpdaterRecord,
       BeforeDeleteRecord, AfterDeleteRecord, 
       BeforeExecuteSQL, AfterExecuteSQL.
       Logging demo (sample of use of these events) was added.
       Note: SQL statements will not trigger mentioned above events in
             case if database is remote (client-server mode, LocalDatabase = False).
             Use OnSQL event of TACRServer instead.

  Bugs fixed:
    1. Bug with case insensitive string comparison was fixed.
    2. Problems with opening in-memory tables at design-time were solved.
    3. Bug with conversion of some data types was fixed.
    4. Some problems with connection in client-server version were solved.
    5. Bug with table renaming was fixed. ALTER TABLE ADD FOREIGN KEY now works fine.    
    6. Bug with executing DELETE SQL statement on memory table was fixed.
    7. Problem with loosing foreign keys in RepairTable, RestructureTable, RepairDatabase, 
       CompactDatabase is solved now.    
    8. Bug with SELECT executing in case when it returns empty result set 
       in client-server mode was fixed.
    9. Problems in RestructureTable, CreateTable, RenameTable when multiple foreign keys 
       referencing same table exists were solved.
   10. Bug with updating memo fields using UPDATE SQL statement was fixed.
   11. Bug with DROP INDEX in ExportTableTOSQL and ExportDatabaseToSQL was fixed.
   12. Bug with unlocking tables in case when some operation with locking failed was fixed.
   13. Bug with SELECT executing (table locking error) in multi-threaded applications was fixed.
   14. Minor bug with filter setting was fixed.
   15. Some problems with not existing tables and databases at design time were solved.

- version 4.01 (03/16/2005)
  Bugs fixed:
    1. Bug in searching and filtering on date, time and datetime fields was fixed.
    2. Problem with foreign key checking was solved.

- version 4.00 (12/28/2004)
  New features added: 
    1. Referential Integrity support (SQL'99 compliance) was added.
    2. ForeignKeyDefs, RestructureForeignKeyDefs properties were added to TACRTable.
    3. FOREIGN KEY support was added to SQL CREATE TABLE and ALTER TABLE statements.
    4. DROP CONSTRAINT support was added to SQL statement ALTER TABLE.
    5. CASCADE option was added to SQL statement DELETE TABLE.
    6. Cascade parameter was added to DeleteTable method TACRTable.
    7. Referential Integrity demo was added.
    8. DeleteConstraint method was added to TACRTable.
    9. Performance of insert, update and delete operations was improved.
   10. Default client and server port numbers in client-server mode were changed.
  Bugs fixed:
    1. Some bugs with SELECT from single table were fixed.

- version 3.50 (12/10/2004)
  New features added: 
    1. SQL performance was essentially increased on most types of queries.
    2. ORDER BY clause now supports column numbers.
    3. ImportTable speed from some databases was increased.
    4. DBTransfer utility was updated. Now it can import indexes.
    5. Parameters are now supported in sub-queries.
    6. FindIndex method was added to TACRMemTable component.
    7. Backup and Restore related methods and properties of TACRDatabase have been added 
       to Component Reference.
  Bugs fixed:
    1. Bug with closing queries at design time in some cases was fixed.
    2. Some bugs in SQL engine were fixed.
    3. Problem with exporting float values in ExportToSQL was solved.
    4. Bug with loading in-memory table was fixed.


- version 3.40 (09/29/2004)

  New features added: 
    1. Export to SQL was implemented. 
       ExportDatabaseToSQL method was added to TACRDatabase component.
       ExportTableToSQL method was added to TACRTable component.
       New demo ExportToSQL was added.
    2. TOBLOB SQL function was added.
    3. ACRManager utility was enhanced. Now it can export tables or whole database to SQL script.
    4. RetryCount now can be set to the minimum value of 1 instead of 10.
    5. ReadOnly database file detection was implemented.
    6. SQL, filter and navigation performance was essentially increased.
    7. DBTransfer utility was updated - creating new database option was added.
    8. Backup and Restore database were implemented. 
       BackupParams property was added to TACRDatabase.
       Backup, Restore, GetBackupInfo, IsAccuracerBackupFile, 
       IsAccuracerBackupFileCryptoParamsValid methods were added to TACRDatabase.
    9. New utilities AccuracerBackup and AccuracerRestore were added.

  Bugs fixed:
    1. Bug in Refresh was fixed.    
    2. Bug with filters on empty wide strings was fixed.
    3. Bug with refreshing DBGrid after insert was fixed.
    4. Bug with deleting records from memory table using SQL DELETE statement was fixed.
    5. Bug with updating empty blob field in memory table was fixed.
    6. Bug with inserting record after deleting record in memory table was fixed.
    7. Bug with running SQL queries on read-only databases was fixed.
    8. Some bugs with field names in SQL engine were fixed.
    9. Bugs in Component Reference index were fixed (TACRDatabase and TACRServer).


- version 3.30 (08/12/2004)

  New features added: 
    1. Network performance and reliability were essentially improved.
    2. SQL, filters and navigation performance was essentially increased.
    3. Compression and encryption of network traffic was implemented. 
       CryptoParams property was added to TACRServer and TACRDatabase.ConnectionParams.
       CompressionMode and CompressionAlgorithm properties were added to TACRDatabase.ConnectionParams.
    4. Events OnServerStart and OnServerStop of TACRServer were renamed to 
       AfterServerStart and AfterServerStop.
    5. Events BeforeServerStart and BeforeServerStop were added to TACRServer.
    6. Events BeforeConnect, AfterConnect, BeforeDisconnect, AfterDisconnect,
       BeforeServerShutdown, AfterServerShutdown were added to TACRDatabase component.
    7. Now server forces all connected clients to close databases when server is being stopped.
    8. Aggregate functions COUNT, SUM and AVG now can be used with DISTINCT option.
    9. Compatibility with third party DB-aware controls was improved.
   10. All memory tables now can be saved to file or to stream by single call. 
       Methods SaveAllTablesToStream, LoadAllTablesFromStream, SaveAllTablesToFile, LoadAllTablesFromFile 
       were added to TACRTable component.
 
  Bugs fixed:
    1. Problem with autoinc values setting in Compact/Repair was solved.
    2. Some bugs with SQL field naming were fixed.
    3. Problem with temporary indexes uniquness was solved.
    4. Some bugs in network layer (client-server edition) were fixed.
       Now it works stable under IDE.
    5. Problems with opening database with invalid settings at design-time were solved.
    6. Problem with adding new field in Fields Editor on empty field list was solved.
    7. Bug in AddIndex on closed table was fixed.
    8. Bugs with filters on date, time or datetime fields were fixed.
    9. Bug in CAST to string type implementation was fixed.
   10. Bug in SELECT DISTINCT implementation was fixed. 

- version 3.20 (06/29/2004)

  New features added: 
    1. Automatic reducing of the database file size in case of deleting data from the end of file.
    2. Creating executable database files is now supported. 
       Methods MakeExeDatabase, IsAccuracerDatabaseFile and 
       RemoveDatabaseFromExe were added to TACRDatabase.
    3. CopyDatabase method was added to TACRDatabase component.
    4. New demos added: BlobsSQL, ExeDatabase, MergeDBExe, SQL, WebApp.
    5. ACRManager utility was significantly enhanced.
    6. SQL queries and filters now supports memo fields. MemoSearch demo was added.
    7. SQL DDL performance was improved.
    8. MemoryTableAllocBy property was added to TACRTable component.

  Bugs fixed:
    1. Problem with using live queries in transactions was solved. 
    2. Bugs in ALTER TABLe and CREATE TABLe implementation were fixed.
    3. Bug in CREATE INDEX on memory table was fixed.
    4. Left, right and full outer joins now works corectly.   
 
- version 3.10 (06/03/2004)

  New features added: 
    1. SetWideMemoField and GetWideMemoField methods were added to TACRDataset.
    2. FlushFileBuffers method was added to TACRDatabase component.
    3. IF NOT EXISTS option was added to CREATE INDEX SQL statement.
    4. IF EXISTS option was added to DROP INDEX SQL statement.
    5. NOCASE option was added to ORDER BY clause of SELECT SQL statement.
    6. INDEX option was added to ORDER BY clause of SELECT SQL statement.
    7. SQL performance was essentially increased.
    8. Filters were optimized.
    9. LockTable / UnlockTable methods were added to TACRDataset.
   10. OnSQL event was added to TACRServer component. Now it is possible to change SQL queries on 
       server side before executing and discard them if necessary.
   11. Method SendMessage and events OnReceiveTextMessage, OnReceiveBinaryMessage and 
       OnReceiveStreamMessage were added to TACRDatabase and TACRServer components. Now clients and 
       server can send and receive custom messages.
   12. Methods GetClients and IsClientConnected were added to TACRServer component. Now server can 
       get information about all clients connected.


  Bugs fixed:
    1. SELECT statements now works correctly in trial version.
    2. ClientDataset demo was fixed to be compatible with trial version.    
    3. Filters on wide string fields now works correctly.
    4. Now update records with indexes and filters works correctly.
    5. Bug in TACRQuery.SetParamsFromCursor was fixed.
    6. Some porblems with compatibility with third-party treeviews and grids were solved.


- version 3.01 (04/28/2004)

  New features added: 
    1. SQL queries are now supported in Client-Server mode.
    2. Network connection routines now have better compaitiblity with different versions of Delphi / C++ Builder.
    3. Client-Server version now works under Delphi and C++ Builder 4, 5.
    4. Network performance and reliability were essentially improved.
    5. BLOB and Memo fields are now supported in Client-Server mode.


- version 2.20 (03/31/2004)

  New features added: 
    1. New component TACRBatchMove (TBatchMove analog) was added. 
    2. New method BatchMove was added to TACRTable component.
    3. New demo BatchMove was added.
    4. New method RepairTable was added to TACRTable component.
    5. Alternative method of repairng table was implemented - 
       UseLowLevelTableAccess option was added to RepairDatabase and RepairTable methods.
    6. Filters performance was increased due to better choise of filtering algorithm.


  Bugs fixed:
    1. Bugs with using transactions via SQL were fixed.
    2. Bug with insert empty strings to memo fields via parametrized queries was fixed.
    3. Repair now fixes autoinc fields values on none-cycled autoinc fields.
    4. Bug with checking for record locks was fixed (Edit method in TACRTable). 
    5. LargeInt fields now can be accessed via SQL and in Master/Detail tables.
    6. Problem with updating use counter on closing database in multi-thread mode was fixed.
    7. Bug with range check error on database files > 2 Gb was fixed.
    8. SQL function POS now returns 0 if one of its arguments is NULL.
    9. Bug with not optimal choosing of the search algorithm was fixed.
   10. Bug with reading from locked byte in the page header was fixed 
       (Error 10474 during the modification of same table by multiple applications).
   11. Bug with deleting record on filtered and indexed in-memory table was fixed.
   12. Problems with live queries and table modification using transactions in single-user mode 
       were fixed.
   13. Bug with setting IndexName property of TACRTable to empty string was fixed.
   14. OnFilterRecord now have True as a default value for Accept parameter.
   15. Problems with record positioning after refreshing filtered dataset were solved. 


- version 3.00 Alpha (03/12/2004)

  New features added: 
    1.  Client-Server support was added. Read ClientServer.txt for more information.
    2.  New component TACRServer was added.
    3.  New utility AccuracerDatabaseServer was added. 
    4.  New properties ConnectionParams and LocalDatabase were added to 
        TACRDatabase component.


- version 2.10 (02/11/2004)

  New features added: 
    1.  Uncorrelated subqueries is now supported. 
        See scripts in Utils\Bin\SQLConsole\SQL\SubQuery folder for examples.
        Also read SELECT Statement topic in Developer's Guide to learn more about it.
    2.  SQL operator IN now can be used with subquery.
    3.  SQL operator EXISTS was added.
    4.  The speed of loading memory tables from file was essentially increased.
    5.  Properties FormatVersion, TotalPageCount, FreePageCount, UsedPageCount,
        Density were added to TACRDatabase component.
    6.  ACRManager was enchanced. Now it provides some statistic about opened database file,
        like size empty space, size of used pages, format version.
    7.  Demos AuotInc, DefaultMinMax, Compression, CSVImport and RaveReport were added.
    8.  SELECT DISTINCT performance on queries from single table was essentially increased.
    9.  Filter and searching speed was essentially increased. 
    10. Developer's Guide was enhanced. 



  Bugs fixed:
    1. Bug with loosing some of database options during 
       RepairDatabase / CompactDatabase was fixed.
    2. Bug with not saving compression parameters for varchar fields was fixed.
       Repair your old database files to convert them to new format if there was 
       varchar or wide varchar fields in at least one of the tables. 
    3. Problem with not using a default values on tables without autoincrement fields 
       was solved.
    4. Bug with reading large compressed varchar values was fixed.
    

- version 2.00 (02/02/2004)

  New features added: 
    1. Transactions support was added. See Transactions topic in Developer's Guide and 
       Transactions demo.
    2. SQL statements START TRANSACTION, COMMIT, ROLLBACK was implemented.
    3. Performance was greatly increased (in 2-10 times), 
       especially in excluisve mode and in transactions.
    4. Trial limitations was changed - see Trial Limitations topic in Developer's Guide.
    5. ChangeDatabaseSettings method was added to TACRDatabase component.
    6. ACRManager utility was improved - autoinc settings added, borrow structure 
       was implemented. CopyTables now works with ecnrypted databases. 
       Now ACRManager can change settings of existing database file.
    7. SQLConsole now can create and open encrypted databases.
    8. Developer's Guide was essentially enchanced, new topics about
       multi-user and multi-thread support, transactions, varchar fields were added.
   
  Bugs fixed:
    1. Bug in adding and deleting pages with small page size (< 4096 bytes) was fixed.
    2. Bug with opening a database file at design time via TACRDatabase component placed on
       text form was fixed.
    3. Problem with removing temporary files is solved. Now you can set also 
       path to temporary directory using variable ACRDefaultTempDir in unit ACRConst.
    4. Bug in SetRecNo method of TACRDataset was fixed. Now RecNo is set correctly when 
       some DB controls are connected to the table.
    

- version 1.40 (01/14/2004)

  New features added: 
    1. New locking mechanism was implemented. Performance was greatly increased, 
       especially in multi-user and  multi-thread environments. 
       New mechanism is much more stable than its ancestor.
    2. Insert and edit record now works much faster.

  Bugs fixed:
    1. Bug with invalid memo and blob fields settings in 
       SELECT statement was fixed.
    2. Bug with invalid filling of the FAdvIndexDefs property was fixed. 
       Now RepairDatabase works perfectly on tables with indexes.
    3. Bug with closing queries with ORDER BY statement was fixed.
    4. Bug with invalid record position after Insert and Edit on
       filtered dataset was fixed.
    5. Bug with invalid TACRQuery.RowsAffected value after executing UPDATE statement
       with WHERE cluase on one of the fields specified in SET clause was fixed.
    6. Bug with loosing encryption parameters of the database file during the repair 
       process was fixed.    
    7. Bug with encrypted database containing indexed tables was fixed.
    8. Problem with unique temporary index names was solved.
    9. Bug with edit after cancel on the fields table in ACRManager utility was solved.
   10. Problem with storing current record position in TACRDataset.BookmarkValid method 
       was solved.
   11. Bug with parameters implementation in TACRQuery was fixed.
   12. Bug in JPEG demo was fixed.
   13. Bug in filters and SELECT statements with multiple AND operators was fixed.

- version 1.34 (12/11/2003)

  New features added: 
    1. CompactDatabase and RepairDatabase methods were added to TACRDatabase component.
    2. OnProgress and OnTableProgress event was added to TACRDatabase component.
    3. ACRManager utility was essentially enhanced. New features:
       - PageSize, MaxSessionCount and Encryption settings for the database file;
       - Default, Minimum and Maximum values for the fields in create table or restructure table;
       - BLOB and Varchar compression settings in create table or restructure table;
       - progress indication in all long operations;
       - CompactDatabase and RepairDatabase added;
    4. SQL scripts parsing and executing was optimized, 
       memory usage was essentially decreased.
    5. OnProgress event was added to TACRTable component.
    6. ImportTable method now converts all string fields from none-Accuracer tables 
as fixed length char fields, while previous version made a varchar fields for them.

  Bugs fixed:
    1. Bug in queries with WHERE clause and specified field list was fixed.
    2. Bug in ACRManager with creating a table after restructuring was fixed.

- version 1.33 (11/29/2003)

  New features added: 
    1. New methods in TACRDatabase component IsDatabaseEncyrpted, IsDatabaseEncyrptedByPassword, 
       IsCryptoParamsValid was added. Now you can use them for safe detection of database encryption.

  Bugs fixed:
    1. Bug with inserting Unicode string values > 8 Kb length was fixed.
   

- version 1.32 (11/27/2003)

  Bugs fixed:
    1. Bug with time, date and datetime fields access by ClientDataset was fixed.
    2. Some bugs with table locks were fixed.
    3. Bug with opening database file that has been opened in IDE was fixed.

- version 1.31 (11/22/2003)

  Bugs fixed:
    1. Bug with executing SELECT statements in Single-User mode (SU Std version) was fixed.
    2. Bug with AutoIncLargeInt field type implementation was fixed.

- version 1.30 (11/12/2003)

  New features added: 
    1. Performance was greatly increased both in single-user and multi-user modes.
    2. Multi-Thread, ClientDataset and EncryptedDB demos were added.
    3. IProvider interface support was implemented. Now you can access TACRTable and 
       TACRQuery components via TClientDataset.
    4. Database file format has been changed.
    5. Database encryption was implemented. 
    6. Documentation was improved.

  Bugs fixed:
    1. Bugs with editing / deleting records in multi-user mode was fixed.
    2. Multi-Thread access is now working correctly.
    3. Some bugs in indexes were fixed.
    4. Some bugs in SQL implementation were fixed.


- version 1.20 Beta (10/23/2003)

