--- Release version 1.16 (7.10.1999) -------------------------------------

1. Make it possible sort records by length of array fields.

2. Optional reporting database errors through C++ exception mechanism.
   Switched on by defining THROW_EXCEPTION_ON_ERROR name.

--- Release version 1.17 (11.10.1999) -------------------------------------

1. Remove F_SYNC attribute of open() system call for database data file.
   2.2.x Linux kernel works with memory regions mapped to the file opened
   in synchronous mode in very inefficient way (more than 20 times slower
   than 2.0 Linux kernel). As far as synchronization of memory pages with
   disk image is done by msync() function with MS_SYNC flag, usage of F_SYNC
   is not really needed.

--- Release version 1.18 (14.10.1999) -------------------------------------

1. Fix bugs with reseting cursors opened by at() method.

--- Release version 1.19 (20.10.1999) -------------------------------------

1. Add RAW BINARY type.

--- Release version 1.20 (28.10.1999) -------------------------------------

1. Cascade deletes.

--- Release version 1.22 (11.11.1999) -------------------------------------

1. Add get peer name method to the WWWapi.
2. New implementation of cascade deletes.
3. Implementation of queue manager for WWW API.
4. New example of Web database publishing - CLIDB.
   Example of multithreaded server development using queue manager.
5. Add type of cursor parameter to the select statement.
6. Support pointers to arrays as query parameters

--- Release version 1.23 (29.11.1999) -------------------------------------

1. Correctly handle non-persistent connections to HTTP server
2. Fix minor bugs in CLIDB example

--- Release version 1.24 (07.12.1999) -------------------------------------

1. Fix bug with specifying cursor type when at() method is used.
2. Fix bug in cascade delete implementation.

--- Release version 2.00 (20.01.2000) -------------------------------------

1. Handle "create table" in SubSQL.
2. Add CLI (call-level interface).
3. Multithreaded server support.
4. Fix bug with in place update of records with varying components.

--- Release version 2.01 (18.02.2000) -------------------------------------

1. Add copy constructor to dbArray class
2. Supports Sun CC compiler

--- Release version 2.02 (22.02.2000) -------------------------------------

1. Port to FreeBSD
2. Fix typos in array.h

--- Release version 2.03 (03.03.2000) -------------------------------------

1. Check compilation flags in dbDatabase constructor

--- Release version 2.04 (14.03.2000) -------------------------------------

1. Fix bug in copy constructor of dbException class
2. Compile with pthreads at Unix by default

--- Release version 2.05 (27.03.2000) -------------------------------------

1. Indexed joins (see testjoin.cpp example)
2. Fix bug with sorting/comparing field with smallest integer value

--- Release version 2.06 (11.04.2000) -------------------------------------

1. Fix bug with deleting first/last record in the cursor for all records in th table

--- Release version 2.07 (30.04.2000) -------------------------------------

1. Fix bug with packing array of strings
2. Add dbDate class
3. Non blocking online backup
4. Fix bug in clitest.c
5. Makes it possible to allocate array without specifying body

--- Release version 2.08 (06.05.2000) -------------------------------------

1. Fix bug with incorrent beginning of transaction by dbCursor::at method.
2. Add dbDatabase.getAllocatedSize() method

--- Release version 2.09 (12.05.2000) -------------------------------------

1. Common makefile for all Unix platforms
2. "make NO_PTHREADS=1"
3. Cleanup IPC resources after closing database

--- Release version 2.10 (21.07.2000) -------------------------------------

1. Fix bug in local_win_socket::read
2. Fix memory leaks in CLI server
3. Support GNU C library
4. Fix bug in implementation of global critical section for i86/Linux platform
5. Add isLast, isFirst methods to the cursor

--- Release version 2.11 (1.08.2000) -------------------------------------

1. Fix bug in rollback "create table" statement
2. Long-live cursor - freeze/unfreeze

--- Release version 2.12 (4.08.2000) -------------------------------------

1. Correctly set INDEXED flag when load classes from the database

--- Release version 2.14 (17.10.2000) -------------------------------------

1. Support NO_MMAP flag also for windows
2. Fix some bugs in file model not using virtual memory mapping

--- Release version 2.15 (23.11.2000) -------------------------------------

1. Fix bug with file extension in NO_MMAP mode

--- Release version 2.16 (29.11.2000) -------------------------------------

1. Fix operator, problem for MS Visual C++
2. Reduce number of memory leaks caused by "living forever" FastDB objects

--- Release version 2.17 (19.03.2001) -------------------------------------

1. Fix bug with scheme load.
2. Sharing of tables between several databases.

--- Release version 2.18 (05.04.2001) -------------------------------------

1. Compatibility with GCC 2.96

--- Release version 2.19 (13.04.2001) -------------------------------------

1. Fix bug with synchronization between different processes
2. Add online recovery after client process fault

--- Release version 2.20 (15.05.2001) -------------------------------------

1. Revoked lock detection.

--- Release version 2.21 (08.06.2001) -------------------------------------

1. Replace free with deallocate to make it possible to avoid conflict with free macro
2. Fix bug with unassigned tables registration
3. Build DLL for Windows


--- Release version 2.22 (29.06.2001) -------------------------------------

1. Add stricmp implementation
2. Add query dump method

--- Release version 2.23 (14.07.2001) -------------------------------------

1. Fix bug with dealloaction of query elements
2. Do not perform alignment on page boudary in allocator

--- Release version 2.24 (27.07.2001) -------------------------------------

1. Optimized version of memory allocator
2. Fix bug with checkin duplicates in scheme load
3. Fix bug with temporary cursors used by query optimizer

--- Release version 2.25 (09.08.2001) -------------------------------------

1. Fix bugs introduced in 2.24 release
2. Add delayed binding of pararameters (make it possible to eexcute the same query concurrently
by multiple threads.

--- Release version 2.26 (20.08.2001) -------------------------------------

1. Add online backup scheduler
2. Implements delayed commit model
3. Fix bug with sempahore destruction at Unix

--- Release version 2.27 (09.09.2001) -------------------------------------

1. Enable read access to the database during transaction commit
2. Improved support of user defined types: now it is possible to use raw binary type in queries,
indices and sort clause.

--- Release version 2.28 (11.09.2001) -------------------------------------

1. Fix bugs of 2.27 release
2. Introduce UDT raw binary type with user defined compare function

--- Release version 2.29 (17.09.2001) -------------------------------------

1. Add support of std::string type.

--- Release version 2.30 (18.09.2001) -------------------------------------

1. Add autoincrement fields support. To use it you should recompile the system
with -DAUTOINCREMENT_SUPPORT enabled. Attension: FastDB compiled with this option will not be able
to work with databases created without this option and visa versa.


--- Release version 2.31 (25.09.2001) -------------------------------------

1. Fix bug with autoincrement fields update

--- Release version 2.32 (07.10.2001) -------------------------------------

1. Preserve cursor consistency by automatic update of the current record in cursor when the
object is updated (by other cursor or because of inverse reference propagation).
2. Add nextAvaiable method to cursor.

--- Release version 2.33 (26.10.2001) -------------------------------------

1. Add dbDatabase::cleanup method to avoid all memory leaks.
2. Fix SMP bug in my local windows sockets implementation
3. Add missed operator = method to the query

--- Release version 2.34 (1.11.2001) -------------------------------------

1. Fix compilation problems with 2.33 release.

--- Release version 2.35 (27.11.2001) -------------------------------------

1. Fix bug in rollback.
2. Prohibit access to parent directory in GET method in built-in HTTP Server


--- Release version 2.36 (1.12.2001) -------------------------------------

1. Add CLONE_INDENTIFIERS macro which force cloning identifiers. This s needed to prevent
   hanging references if library using GigaBASE was unloaded.
2. Add verion information to the database header
3. Fix bug with delayedCommitStopTimerEvent closing
4. Fix bug with SubSQL method invokation in compiler

--- Release version 2.37 (14.12.2001) -------------------------------------

1. Fix bug with handling pasciiz type at server.
2. Fix bug with rollback
3. Fix problem with opening read-only files
4. Support of disk-less configurations
5. Add forcerecovery utility

--- Release version 2.38 (23.01.2002) -------------------------------------

1. UPDATE statement in SubSQL
2. Port to PharLap
3. User defined functions with more than one argument and user defined operators.
4. Optional use of Posix semaphres instead of SysV IPC mechanism.

--- Release version 2.39 (09.02.2002) -------------------------------------

1. Support "backup compactify" command in SubSQL which makes it possible
to perform database defragmentation.
2. Fix bug in delayed trasnaction mode.

--- Release version 2.40 (20.02.2002) -------------------------------------

1. Fix bug with locking during query destruction in non-recursive mutex at Unixes
(bug was introduced in version 2.39).

--- Release version 2.41 (14.03.2002) -------------------------------------

1. Fix bug with hashed join by reference field.
2. Fix bug in w32sock setting socket parameters
3. Generic search tree support

--- Release version 2.42 (20.03.2002) -------------------------------------

1. Provide iterators for fields in dbTableDescriptor and dbTableField classes
2. Add toArray method in cursor class

--- Release version 2.43 (04.04.2002) -------------------------------------

1. Fix bug in query omptimizer introduced with user defined types (in some cases
indices are not applied).
2. Fix bug with multiprocess access to the database with DISKLESS_CONFIGURATION
3. Fix bug with method descriptors.
4. DOXYGEN generated documentation.

--- Release version 2.44 (26.04.2002) -------------------------------------

1. Fix problems with building DLL under Windows
2. Fix bug with UPDATE in SubSQL utility

--- Release version 2.45 (16.05.2002) -------------------------------------

1. Port to MinGW (makefile.mingw)
2. Fix bug with handling array components in SubSQL

--- Release version 2.46 (01.06.2002) -------------------------------------

1. Fix bug in copyRecordExceptOneField method for class descriptors with methods
2. Fix bug with SubSQL comparision operators for date types
3. Add cli_describe, cli_show_tables and cli_precommit methods to C CLI.
4. Fix bug in dbDate::asString method
5. Make it possible to use SysV shared memory instead of mmap for diskless confiuration.
6. Fix bug in assembler implementation of atomic operations for GCC 3.0 and higher

--- Release version 2.47 (05.07.2002) -------------------------------------

1. Fix bug with comparison and sorting of user defined types
2. Local CLI implementation
3. Support of running FastDB application as Windows service by setting NULL DACL descriptor

--- Release version 2.48 (09.08.2002) -------------------------------------

1. Fix minor bug in backup method.
2. Repalce int8 type with db_int8

--- Release version 2.49 (03.09.2002) -------------------------------------

1. Fault tolerant support: replication model with 1 primary and serveral standby nodes
2. Support of inserting/updating references in SubSQL

--- Release version 2.50 (14.09.2002) -------------------------------------

1. Fix bug in backup restore method.

--- Release version 2.51 (28.10.2002) -------------------------------------

1. Borland C++ Builder/Delphi/Kulix API implemented by "Serge Aleynikov" <serge@hq.idt.net>
2. Make it possible to specify WHERE caluse in DELETE statement in SubSQL.
3. Fix bugs in create_table/show_table methods in local CLI.
4. Fix bug with accessing database by multiple processes.

--- Release version 2.52 (06.11.2002) -------------------------------------

1. Concurrent read/update mode
2. Fix bug with delayed commit
3. Fix problem with compilation under Solaris
4. Add dbContainer class
5. Add pool of threads for parellel requests execution
6. Change profile of set_fnc used in cli_column_array allowing this function to copy data itself.
7. Fix bug in implementation of update method in remote CLI server.

--- Release version 2.53 (15.11.2002) -------------------------------------

1. Fix bug in cli_get_oid in local CLI implementation
2. Add more methods to dbQueryExpression class
3. Make it possible to keep thread context and skip commit of transaction in dbDatabase::detach method
4. Make it possible to specify error handler without redefinition of dbDatabase::handleError method (also using local CLI API)
5. Add support of cli_array_of_string type in remote CLI API

--- Release version 2.54 (29.11.2002) -------------------------------------

1. Updated version of fastdb.spec for preparing RPM for Linux
2. Add cli_create_table, cli_drop_table, cli_alter_index and cli_skip methods to CLI API
3. Add selectByKey, selectByKeyRange and skip methods to dbCursor class
4. Add more parameters to cli_create function
5. Fix bug in dbDatabase::close which can cause incorrect resetting dirty flag in database
6. Make it possible to access standby replication node in read only mode
7. Update all opened cursors when record is deleted
8. Support "select count(*)" in SubSQL

--- Release version 2.55 (24.12.2002) -------------------------------------

1. Add dbDatabase::allowColumnsDeletion method to allow column deletion from non empty table
2. Ignore case of identifiers with IGNORE_CASE options
3. Fix bug in cascade delete
4. Add cli_freeze, cli_unfreeze functions
5. Separate module for Borland C++/Delphi interface to FastDB impelmented by
Serge Aleynikov <serge@hq.idt.net>

--- Release version 2.56 (22.01.2003) -------------------------------------

1. Fix bug in handling query parameters with '_' in local CLI API
2. Fix bug in cli_skip method
3. Add dbCursor::seek and cli_seek methods
4. Fix bug in cli_unfreeze
5. Add cli_attach, cli_detach methods to local CLI API

--- Release version 2.57 (11.02.2003) -------------------------------------

1. Fix memory leak in cli_create ins case of database open failure
2. Synchronize creation/deletion of statements in local CLI
3. Fix bug in cli_create and cli_detach methods
4. Support appending binary data in WWWapi

--- Release version 2.58 (21.02.2003) -------------------------------------

1. Make CLI API compatible with GigaBASE CLI API.
2. Fix comilation bug in NO_PTHREAD mode

--- Release version 2.59 (28.03.2003) -------------------------------------

1. Fix bug with diskless mode under Solaris
2. Fix bug with copying autoincrement counter during schema evaluation
3. Add scattered array and bitmap classes

--- Release version 2.60 (31.03.2003) -------------------------------------

1. Fix bug in harray implementation
2. Avoid useless set of dirty bit in beginTransaction

--- Release version 2.61 (11.03.2003) -------------------------------------

1. Fix bug with handling inverse references in SubSQL
2. Fix bug with incorrect table creation in local CLI
3. Add cli_free_memory function

--- Release version 2.62 (06.05.2003) -------------------------------------

1. Add replication socket which allows CLI client to broadcast requests
to multiple servers and gather+compare responses from them. With replication
socket client can continue work with the database even in case of fault
of one or more servers. Client will just do not notice the server fault.
2. Fix compilation bug in HArray for Visual C++ 6.0 and earlier

--- Release version 2.63 (12.05.2003) -------------------------------------

1. Fix compilation bug in cli.cpp for MS-Visual C++ 6.0
2. Add getNumberOfWriters(), getNumberOfReaders(), getNumberOfBlockedReaders(),
getNumberOfBlockedWriters() and getNumberOfUsers() methods
and cli_get_database_state() function in CLI

--- Release version 2.64 (15.05.2003) -------------------------------------

1. HTML database browser. "start http server URL" command was added to SubSQL.
Once HTTP server is started, you can login to the specified URL from any Web browser,
view database tables and execute queries.

--- Release version 2.65 (28.05.2003) -------------------------------------

1. Suuport arbitrary expression in order-by clause
2. Fix bug with in SubSQL close method introduced in version 2.63
3. Make it possible to output trace messages using OutputDebugString

--- Release version 2.66 (03.06.2003) -------------------------------------

1. Implement XML import/export in SubSQL
2. Fix bug with setting referenced table name in tables created by SubSQL and CLI
3. Make it possible to define trace function and add cli_set_trace_function to CLI API.

--- Release version 2.67 (04.06.2003) -------------------------------------

1. Fix bugs in replication support
2. Make it possible to compare integer constants with references in queries

--- Release version 2.68 (06.06.2003) -------------------------------------

1. Fix bugs in XML import/export

--- Release version 2.69 (18.06.2003) -------------------------------------

1. Fix synchronization bug with accepting connections in CLI server
2. Fix the problem with unligned memory allocation in Borland C++

--- Release version 2.70 (24.06.2003) -------------------------------------

1. Provide more convenient way to access database by local CLI:
   add cli_prepare_query, cli_execute_query and cli_insert_struct functions.

--- Release version 2.71 (03.07.2003) -------------------------------------


1. Make it possible to perform XML export to stdout, XML import - from stdin
2. Bugs fixes in XML export/import

--- Release version 2.72 (11.07.2003) -------------------------------------

1. Support inverse references in SubSQL
2. New sorting algorithm

--- Release version 2.73 (16.07.2003) -------------------------------------

1. Fix bug in handling default page in WWWapi browser (mutating string literal)
2. Fix bug in calculation of dbDirtyPageBitmapSize which can cause database crash when
number of objects exceeds 2**20
3. Fix compilation problem with Borland C++

--- Release version 2.74 (25.07.2003) -------------------------------------

1. Fix bug in replication support at Unix.

--- Release version 2.75 (20.08.2003) -------------------------------------

1. Fix bug in global critical section implementation for Sys-V Unix.
2. Fix bug in SubSQL parameter parsing
3. Fix bug in dbHArray


--- Release version 2.76 (12.09.2003) -------------------------------------
1. Support unsigned integer types for table fields and query parameters.
2. Fix the bug with formating 64-bit integer types at MinGW.
3. Add dbCursor::isInSelection method

--- Release version 2.77 (26.09.2003) -------------------------------------
1. New alignment rule for packing record fields. It should fix
problems with alignment 8-byte fields at systems where malloc doesn't return
address aligned at 8-bytes boundary.
2. Refetch updated record in all openned cursors where this record is current.
3. Eliminate method descriptors memory leak

--- Release version 2.78 (30.09.2003) -------------------------------------
1. Eliminate dbDatabase::cleanup method and perform all necessary cleanup in static destructors

--- Release version 2.79 (17.10.2003) -------------------------------------
1. Fix memory leak in construction of order by statement.
2. Fix compilation problem with some GCC versions.

--- Release version 2.80 (29.10.2003) -------------------------------------
1. Fix bug with static queries deallocation

--- Release version 2.81 (20.11.2003) -------------------------------------
1. Fix bug in delayed transaction commit
2. Fix minor memory leak in field descriptors with methods
3. Project file for MS-Visual C++

--- Release version 2.82 (26.11.2003) -------------------------------------
1. Make it possible to alter table format using CLI and SubSQL
2. Split sync.h into windows and unix specific files

--- Release version 2.83 (29.11.2003) -------------------------------------
1. Introduce USE_POSIX_MMAP and USE_POSIX_SEMAPHORES instead of USE_POSIX_API and USE_SYSV_SHARED_MEMORY macros

--- Release version 2.84 (08.12.2003) -------------------------------------
1. Fix bug in sync_w32.h
2. Fix problems with compilation under FreeBSD 5.0
3. Fix the problem with accessing database from multiple programs in diskless configuration

--- Release version 2.85 14.12.2003 -------------------------------------
1. Fix critical bug in object index relocation algorithm

--- Release version 2.86 18.12.2003 -------------------------------------
1. Fix bug with alignment in dbSmallBuffer
2. Fix problem with incorrect order of destruction in dbDatabase::close (causing crash under Solaris)

--- Release version 2.87 30.12.2003 -------------------------------------
1. Fix bug in "stop server" SubSQL command.
2. Fix bug in XML import
3. Autocommit in SubSQL
4. New version of Delphi API

--- Release version 2.88 07.01.2004 -------------------------------------
1. Improve hash table performance for successive keys
Attention: it will require rebuild of all hash indices
2. Add cli_get_field_offset and cli_get_field_size functions

--- Release version 2.89 15.01.2004 -------------------------------------
1. Fix bug in cursor prefetch mode.
2. Fix problem with redefinition of dbGlobalCriticalSection at sun and osf platforms.

--- Release version 2.90 16.01.2004 -------------------------------------
1. Add time series class

--- Release version 2.91 21.01.2004 -------------------------------------
1. Replace DEFS compilation macro with config.h file
2. Add const qualifier to read-only cursor methods

--- Release version 2.92 12.02.2004 -------------------------------------
1. Fix bug in XML import of structure components

--- Release version 2.93 27.02.2004 -------------------------------------
1. Fix mermory leak in SubSQL
2. Fix problem with backup of large databases under Windows.
3. Refetch cursor record after update
4. Show information about field indices in SubSQL

--- Release version 2.94 07.03.2004 -------------------------------------
1. Fix bug in dbFile::close implmentation for Unix
2. Fix memory leak in SubSQL
3. Port to UP-UX with aCC compiler

--- Release version 2.95 26.03.2004 -------------------------------------
1. Fix memory leak in cli_bind_array function
2. Port to Solaris/Sun Forte compiler
3. Fix memory leaks in SubSQL
4. Make it possible to specify format of printing datetime fields in SubSQL
(SUBSQL_DATE_FORMAT environment variable)
5. Change dbReplicatedDatabase::open method to support recovery from crash of all nodes
6. Automatically detect failure of one or more database clients, revoke locks and recover database in
such case.
7. Fix bug in openning database by multiple clients in Unix.

--- Release version 2.96 16.04.2004 -------------------------------------
1. Fix problem with cli_oid_t definition at 64-bit platforms.
2. Fix bug in recovery after all nodes failure in replication model.
3. Recognize "#xxx" format of OIDs in SubSQL.
4. Change allocate method to leave database in consistent stwate in case of
throwing FileLimitExeeded exception.
5. Add indexed prefix search: locate all records which indexed field is prefix of specified key.
Such query can be written like this: "KEY like field+'%'", where KEY is either string literal,
either parameter and "field" - indexed field.

--- Release version 2.97 26.04.2004 -------------------------------------
1. Fix bug in query parser
2. Fix bug in ttree.cpp for IGNORE_CASE and USE_LOCALE_SETTGINS mode
3. Fix bug in cli_get_field_offset
4. Make dbMethodTrampoline compatible with new C++ template class field lookup rule
5. Remove const qualifier from <code>isInSelection</code> method

--- Release version 2.98 09.05.2004 -------------------------------------
1. Support work with different number of node in replication model
2. Fix bugs in dbContainer class
3. Efficiently execute "current=ICONST" query

--- Release version 2.99 28.05.2004 -------------------------------------
1. Correctly compile IN expression with single list element

--- Release version 3.00 18.06.2004 -------------------------------------
1. Fix critical bug in query deallocation synchronization (which can cause crash in mutithreaded environment)

--- Release version 3.01 24.06.2004 -------------------------------------
1. Fix bug in implementation of backup with compactify option
2. Fix bug with unpacking reference column value at server (remote CLI interface)
3. Fix bug in dbDatabase::findTableByName method
4. Fix bug in cli_update function implementation (local CLI)
5. Add context parameter to cli_set_error_handler and cli_array_column_ex functions

--- Release version 3.02 05.07.2004 -------------------------------------
1. Fix problem with Unix domain sockets under Cygwin
2. Fix build problem undex MacOS X
3. Fix build problem with IGNORE_CASE/USE_LOCALE_SETTINGS configuration under Windows
4. Add DLL configuration to Visual Studio project

--- Release version 3.03 06.08.2004 -------------------------------------
1. Optimized execution of IN operator
2. Add CSharp CLI interface (implemented by Serge Aleynikov <serge@hq.idt.net>)
3. Change dbCursor::remove() method to always move current position forward.
4. Add cleanupsem utility

--- Release version 3.04 21.08.2004 -------------------------------------
1. Fix compilation problem with cleanupsem at some Unix dialect.
2. Make it possible to alter initial value of autoincrement fields before
   database open.

--- Release version 3.05 02.10.2004 -------------------------------------
1. Fix problem with not resetting cursor in cli_fetch method
2. Fix memory leak in order by complex expression

--- Release version 3.06 29.10.2004 -------------------------------------
1. Fix bug in sort by complex expression
2. Fix project files for VC 6.0

--- Release version 3.07 14.11.2004 -------------------------------------
1. Add DTD in exported XML file
2. Optimize LIKE operator
3. Fix bug in XML array import

--- Release version 3.08 28.11.2004 -------------------------------------
1. Fix problem with local CLI at Unix (application is hanged in cli_close if
there are opened statements because of repeated lock of non-reentrant pthread mutex).
2. Fix bug in implementation of indexed inverse reference (inverse reference update doesn't
update index)
3. Optimized version of hash index (more efficient hash function for scalar types)

--- Release version 3.09 06.12.2004 -------------------------------------
1. Enable reader to be started prior to the writer in concurrent update mode.
2. Fix bug in updating array components in local CLI.
3. Fix bug in handling NULL string fields.

--- Release version 3.10 19.12.2004 -------------------------------------
1. Fix bug in local Windows sockets implmentation
2. Change all "char*" in API methods with "char const*"

--- Release version 3.11 17.03.2005 -------------------------------------
1. Fix bug in table creation using CLI
2. Make it possible to specify list of columns in SubSQL select statement
3. Fix bug preventing optimizer use index for boolean fields
4. Fix bug in initializing of autoincrement field in SubSQL

--- Release version 3.12 24.03.2005 -------------------------------------
1. Fix bug in compilation of user defined functions with more than one parameter
2. Fix memory leak in deallocation of query elements in CLI at application exit
3. Fix bug in SubSQL select with specified list of columns
4. Add support of "LIMIT" clause in queries

--- Release version 3.13 18.04.2005 -------------------------------------
1. Fix possible race condition problem for clearing dirty flag when more than one
processes working concurrently with database in dbConcurrentUpdateMode
2. Fix bug in optimization of "like '%xyz%'" operator
3. Add dbDatabase::backup(dbFile* file, bool compactify) method
to allow user defined implementations of backup media.

--- Release version 3.14 30.04.2005 -------------------------------------
1. Optionally place all FastDB classes in fastdb namespace
2. Port to WinCE
3. Restructure FastDB sources

--- Release version 3.15 08.05.2005 -------------------------------------
1. Fix bug in select with specified column list in SubSQL
2. Fix bug in SubSQL update statement

--- Release version 3.16 27.05.2005 -------------------------------------
1. Implement fuzzy checkpoint. When FUZZY_CHECKPOINT is defined in config.h
changes done by transaction are written to the disk asynchronously by separate thread.
It allows to minimize time of exclusive locking of database by update transaction.

--- Release version 3.17 29.06.2005 -------------------------------------
1. Fix bug in XML import of raw binary field
2. Fix problems with supporting fastdb namespace introduced in version 3.16
3. Fix bug with table defintion and altering using CLI
4. Add pad field to database header provide portability of database file desipte to the platofrm alignment rules

--- Release version 3.18 13.07.2005 -------------------------------------
1. Fix build problems with GCC 4.0
2. Make it possible to specify dbArray<int4> and dbArray<int8> parameters
   and use index search for query "x in",arrParam

--- Release version 3.19 01.08.2005 -------------------------------------
1. Fix bug with duplicated autoincremented field values in case of transaction rollback.
2. Add dbDatabase::prepareQuery method
3. Fix problem with dependency on the order of operands calculation which cause crash of
FastDB during database reallocation when FastDB is built with GCC 3.2 or higher.

--- Release version 3.20 28.08.2005 -------------------------------------
1. Fix synchronization problems with watchdog thread (when FastDB is build with AUTO_DETECT_PROCESS_CRASH)

--- Release version 3.21 28.08.2005 -------------------------------------
1. Add RECOVERABLE_CRITICAL_SECTION configuration option. This mode can be used instead of
AUTO_DETECT_PROCESS_CRASH to perform recovery after crash of one of FastDB applications.
Unlike AUTO_DETECT_PROCESS_CRASH it doesn't create watch-dog mutexes and start threads
waiting on this mutexes. Detection of process crash and revoking of the lock hold by this process
is performed by operating system. Recovery of database is possible only for dbConcurrentUpdate mode.
2. Derive exception class from std::exception
3. Add dbAnyCursor::hasNext() method

--- Release version 3.22 30.09.2005 -------------------------------------
1. Add Java native interface (jnicli)
2. Fix bug in SubSQL "alter table" statement
3. Fix problem with USE_LOCALE_SETTINS support

--- Release version 3.23 16.01.2006 -------------------------------------
1. Fix compilation problems with GCC 4.0
2. Fix bug in Java jnicli interface (declaring table with reference fields).
3. Fix compiler warnings when building FastDB with dbDatabaseOidBits > 32
4. Fix bug with non-initialized inverse reference field pointer in table descriptor created using CLI
5. Add dbTraceEnable variable which allows to toggle tracing at runtime.
6. Support classnames with package names in Java JNI CLI constraint parser
7. Correctly handle autoincremented fields in local CLI API.
8. Fix problem with handling compound table names produced from Java class in SubSQL insert and delete statements
9. Fix array component access bug in JNICLI
10. Support inverse reference field declaration in JNICLI table constraints
11. Fix bug with throwing exceptions in JNICLI

--- Release version 3.24 08.02.2006 -------------------------------------
1. Fix bug in Query::reset method (doesn't clear limits)
2. Add "profile" command to SubSQL which show number of instances and total size of records for each table
3. Fix problem with using current record OID in ORDER BY expression
4. Check if range specified in LIMIT clause belongs to the selection.

--- Release version 3.25 24.02.2006 -------------------------------------
1. Fix bug with LIMIT clause introduced in 3.24 version
2. Fix bug in selectByKey method (some fields of cursor are not initialized)
3. Add MATCH operator which uses GNU regex library (to use it you should define USE_REGEX in config.h)
4. Fix bug in CLI server: return codes of some operations were ignored

--- Release version 3.26 21.03.2006 -------------------------------------
1. Support simplified replication model with fixed master node and read-only replicas
2. Perform cleanup of opened semaphores and event in open method when open is failed.

--- Release version 3.27 02.04.2006 -------------------------------------
1. Fix bug in Visual Studio project files for cli.lib
2. Fix memory leaks in CLI library.
3. Fix bug with unlinking query in database in local CLI statement free function

--- Release version 3.28 08.06.2006 -------------------------------------
1. Fix bug in cli_get_next function (fetching array of strings)
2. Catch FastDB exceptions in CLI select function


--- Release version 3.29 15.06.2006 -------------------------------------
1. Support rectangle data type and spatial indices

--- Release version 3.30 23.07.2006 -------------------------------------
1. Fix bug in dbDatabase::getVersion()
2. Check compatibility of database file and library
3. Add cli_remove_current function
4. Fix bug with reallocation of database in dbConcurrentUpdate mode
5. Fix bug in Java JNI API
6. Fix bug in XML import

--- Release version 3.31 12.08.2006 -------------------------------------
1. Fix bug in cli_remove_current record
2. Fix bug in database backup (it didn't save mode)

--- Release version 3.32 08.10.2006 -------------------------------------
1. Fix problems in concurrent update/read replication
2. Fix bug with referenced field type checking for unassigned tables
3. Add getMemoryStatistic() function and "memory" command in SubSQL to show memory usage
4. Fix problem with keyword/identifier conflict resolution
5. Deallocate cursor bitmap in cli_free function
6. Fix problem with cursors reset in case of delayed commit
7. Fix bug in trasnaction commit in case of concurrent update mode

--- Release version 3.33 23.10.2006 -------------------------------------
1. Make it possible to explicitly set transaction context
2. Change implementation of hash function for raw binary types
3. Fix compilation problems for Windows CE
4. Fix build problem with gethostname_r at SunOS
5. Fix bug in concurrent update mode
6. Correctly update 1-N relation when changes are propagated through a  N,1 insert.

--- Release version 3.34 10.12.2006 -------------------------------------
1. Make it possible to specify locale using SUBSQL_LOCALE environment variable for SubSQL
2. Synchronous replication support
3. Choose non-null message in exception constructor when message text is not specified explicitly
4. Make it possible to explicitely disable check for duplicates in query result
5. Add cli_execute_query_ex functions accepting array with parameters
6. Fix CLI bug in building class descriptor containing arrays of structures
7. Add cli_describe_layout function to local CLI extending functionality of cli_describe by providing information about field offset and size

--- Release version 3.35 12.01.2007 -------------------------------------
1. Fix problem with class fields alignment in JniCLI
2. Correctly handle virtual database space exhaustion
3. Use more accurate than standard ftok IPC key generator

--- Release version 3.36 03.03.2007 -------------------------------------
1. Add desctructor to dbUserFunction class (needed for DLLs)
2. Fix bug with cursor bitmap deallocation
3. Add cli_close_cursor function
4. Save and store field flags in CLI

--- Release version 3.37 09.04.2007 -------------------------------------
1. Fix bug with updating cli_autoincrement field
2. Fix bug with non-initialized variable in query parser which can cause errors with compiling expressions started with bracket
3. Add methods for convenient concatenation expressions in query (And/Or)
4. Fix bugs in one way master-slave replication mechanism
5. Fix bug with autoincrement support in CLI

--- Release version 3.38 29.04.2007 -------------------------------------
1. Fix bug in reformating of empty table
2. Fix problems with UNICODE builds under Win32
3. Fix bug in local CLI statement allocator
4. Wrap "pad" field in database header introduced in 3.17 release with (dbDatabaseOffsetBits > 32 && defined(ALIGN_HEADER)) condition

--- Release version 3.39 19.07.2007 -------------------------------------
1. Fix bug in SubSQL autocommit
2. Change block format in time series class
3. Add dbDatabase::isValidOid method
4. Add fixed size allocator

--- Release version 3.40 23.09.2007 -------------------------------------
1. Support index search for "is null" operator
2. Preserve values of autoincremented fields during XML import
3. Make it possible to explicitely set read-only locks
4. Remove dbCursor::nextAvailable and dbCursor::prevAvailable methods, now next() and prev() methods
provides the same behavior

--- Release version 3.41 22.10.2007 -------------------------------------
1. Fix bug in dbSelection::truncate which may cause crash of queries with LIMIT clause
2. Fix bug with uninitialized parser variable while compiling expressions in SubSQL update statement.
3. Use namespace prefix in KEY, TYPE_DESCRIPTOR, REGISTER... macro definitions to make it possible to use
   them without "use namespace" statement.

--- Release version 3.42 08.11.2007 -------------------------------------
1. Fix build problems with Visual C++ 6.0
2. Fix bug in getKeyFromFile() function which may return negative values.


--- Release version 3.43 12.12.2007 -------------------------------------
1. Add online connection recovery mechanism for one-way replication
2. Fix bug in dbLocalSemaphore::signal method
3. Add dbDatabase::formatErrorMessage and dbDatabase::fatalError method for more convenient
   error handling
4. Fix problem in delayed transaction commit (it may commit transactions more frequently than
requested even if database is access by one thread)
5. Support master restart with online replicas

--- Release version 3.44 25.12.2007 -------------------------------------
1. Fix problems with reading large file in diskless mode
2. Fix bug in synchronization primitives based on Posix semaphores
3. Extend cleanupsem utility to clean Posix semaphores
4. Add dbArray::bsearch method
5. Add PAD_HEADER macro to make it possible to preserve compatibility with databases
   created by FastDB versions 3.17-3.38
6. Make it possible to specify "/dev/zero" as database file path at Windows to
   create diskless daatbase without rebuilding FastDB with DISKLESS_MODE defined.
7. Fix bug in configuration with namespaces.


--- Release version 3.45 14.02.2008 -------------------------------------
1. Move XML import/export from SubSQL to dbDatabase class,
   allowing embedded application to use these methods generating/parsing XML.
2. Optimized version of dbDatabase::findTableByName using hash table.
3. Fix memory leak in dbFileWriter used in fuzzy checkpoint mode

--- Release version 3.46 02.03.2008 -------------------------------------
1. Add macros for registered class with namespace prefix
2. Fix bug in dbCursor::removeAllSelected
3. Fix bug in fixed size allocator

--- Release version 3.47 18.03.2008 -------------------------------------
1. Always define dbDescribeField and query operators for long type
2. Ignore database schema reference integrity check errors in SubSQL
3. Protect chain of class descriptors by critical section to avoid race condition in case of concurrent DLL load

--- Release version 3.48 08.05.2008 -------------------------------------
1. Port to VxWorks performed by "Szekely, Itay" <Itay.Szekely@lsi.com>
2. Fix problem with importing std::strings

--- Release version 3.49 26.06.2008 -------------------------------------
1. Add rename field command to SubSQL
2. Fix bug with forward inverse references in SubSQL
3. Fix bug in dbAnyCursor::setCurrent method introduced when asserts were replaced with error handling
4. Replace CPUID with MemoryBarries in local windows sockets implementation
5. Support of cli_any, cli_array_of_string and cli_rectangle type in remote CLI

--- Release version 3.50 29.12.2008 -------------------------------------
1. Add dbDatabase::recoverFreeOidList() method
2. Fix problem with socket_t::get_handle method at Win64

--- Release version 3.51 19.01.2008 -------------------------------------
1. Fix problem with estimating application class size (in some cases warning
that not all fields are described was produced incorrectly)
2. Fix issues with std::string type support

--- Release version 3.52 04.03.2008 -------------------------------------
1. Include server module in fastdb library
2. Support remote CLI interface for .Net

--- Release version 3.53 20.03.2008 -------------------------------------
1. Add fileOpenFlags field to OpenParameters to support different database file open modes
2. Add cli_backup and cli_schedule_backup functions to CLI

--- Release version 3.54 22.04.2009 -------------------------------------
1. Support of wide character strings
2. Fix bug in CSharp local and support byte[] field type in it.
3. Support of Unicode file pathes/object identifiers added by Axel Rietschin <web@fastpictureviewer.com>

--- Release version 3.55 14.05.2009 -------------------------------------
1. Setup an automake/autoconf environment (done by Piergiorgio Beruto <piergiorgio.beruto@ericsson.com>)


--- Release version 3.56 07.07.2009 -------------------------------------
1. Add remote Java interface
2. Fix problems with linking SubSQL with fastdb.dll
3. Fix bug in transaction rollback method
4. Add query profiler
5. Fix bug in query dump
6. Add JniTestRelations example and fix some bugs in jnicli
7. Support of update of fields of array and rectangle type
8. Optimization for queries using more than one dereferences (a.b.c='some value')
9. Fix bug with reference constant parsing in SubSQL


--- Release version 3.57 17.07.2009 -------------------------------------
1. Optimization of sorting in case of indexed join
2. Fix bug in array scan operation (introduced with WString type)
3. Optimized insertion in inverse reference field
4. Compressed file implementation (done by "Szekely, Itay" <Itay.Szekely@lsi.com>)

--- Release version 3.58 14.08.2009 -------------------------------------
1. Ruby CLI interface
2. Win64 fixes

--- Release version 3.59 26.11.2009 -------------------------------------
1. Support case insensitive string fields
2. Support user defined comparators for string and array fields (specified using dbFieldDescriptor::comparator method)
3. Support comparison operations for array types
4. Support indices for array types
5. Debug locks mode (DEBUG_LOCKS in config.h)
6. User defined hash functions

--- Release version 3.60 21.12.2009 -------------------------------------
1. Make it possible to pass in query pointers to rectangle and user defined types
2. Fix ftok collision problems
3. Add dbDatabase::getUsedDatabaseSize() method
4. Catch FastDB C++ exceptions in localcli

--- Release version 3.61 21.03.2010 -------------------------------------
1. Fix DLL building issues in VS project files
2. Correctly handle storage extension attempt failure
3. Use dynamic allocation for string literal in query parser (avoid stack overflow in embedded
   systems)
4. Replace int8 with db_int8

--- Release version 3.62 06.06.2010 -------------------------------------
1. UTF-8 fixes
2. Fix bugs in error reporting

--- Release version 3.63 24.07.2010 -------------------------------------
1. Add dbFile::force_read flag to force sequential reading of the whole database file in memory.
2. Borland C++ compatibility fixes
3. Fix bug in alter schema CLI function

--- Release version 3.64 23.08.2010 -------------------------------------
1. Add support of transaction logging

--- Release version 3.65 11.11.2010 -------------------------------------
1. MacOS incompatibility fixes (patch provded by Clemens Hintze <c.hintze@gmx.net>)

--- Release version 3.66 29.03.2011 -------------------------------------
1. Change return type of select method to be able to select more than 2Gb records
2. Patch of SubSQL HTML dump done by Christen Volker improving visualisation of large arrays
3. Fix problem with doubling database size after backup
4. Visual Studio 10 compatibilty fixes

--- Release version 3.67 06.05.2011 -------------------------------------
1. Fix bug in handling string->wstring field type change.
2. Fix bug with scheduled incremental backup
3. Fix namespace support
4. Fix fuzzy checkpoints

--- Release version 3.68 06.09.2011 -------------------------------------
1. Fix bug in rollback of transaction in delayed commit mode
2. Fix bug in Win64 support

--- Release version 3.69 28.10.2011 -------------------------------------
1. Fix calling convention for delegates in C# CLI
2. Fix problems with GCC 4.6: avoid take address of temporaries
3. Fix overflow 32-bit overflow bug in memory allocator

--- Release version 3.70 10.11.2011 -------------------------------------
1. Eliminate synchronization overhead in beginTransaction for existed transaction

--- Release version 3.71 24.02.2012 -------------------------------------
1. Add dbReplicatedDatabase::stopReplica method

--- Release version 3.72 21.11.2012 -------------------------------------
1. Fix bug in searchArrayOfString
2. Add check for compatibility between headers and library
3. Fix handling of normal termination of master

--- Release version 3.73 20.12.2012 -------------------------------------
1. Limit level of recursion in memory allocator which can cause stack overflow in case of high memory fragmentation
2. Add USE_SHARED_PTHREAD_MUTEX allowing to use pthread mutexes with PROCESS_SHARED attribute instead of Sys-V semaphores for synchornization.


--- Release version 3.74 09.11.2013 -------------------------------------
1. Do not always truncate file in dbFile::create
2. Support passing array parameters in local CLI.
3. Fix problem with initialization of autoincremented field in multiple databases
4. Fix problem with cut of allocator recursion implemented in 3.73


--- Release version 3.75 21.13.2013 -------------------------------------
1. Undo changes in release 3.70.



--- Release version 3.76 04.05.2014 -------------------------------------
1. Add cli_open_force_read and cli_open_no_sync flags
2. Support iteration through neigbors using R-Tree index:
select * from t order by distance(r,(5,5));
