                         CHANGES version 2.6

              This file summarizes changes made since 1.0

Version 2.6
-----------
* Internal optimizing changes and improvements
* Enable shared cache mode for SQLite >= 3.5
* Added new configure option --enable-sqliteunlock which
  enables SQLite unlock notification. The feature requires
  SQLite >= 3.6.12 compiled with SQLITE_ENABLE_UNLOCK_NOTIFY
  C-preprocessor symbol. This option greately improves upon 
  SQLite concurrency when libzdb and SQLite is used from a 
  multi-threaded program.
* Removed deprecated ResultSet_readData() from API
Bug fixes:
* PostgreSQL: Unescape values retrieved via ResultSet_getBlob()
  and via ResultSet_getBlobByName(). By an incurie, unescape was
  left out of libzdb version 2.5.


Version 2.5
-----------
* Removed GPL license exceptions. The library is now licensed under
  the  GPL version 3 only. 
* Deprecated ResultSet_readData(). This function _was_ useful for 
  MySQL, but not for other drivers where it had some overhead.
* Added GCC __attribute__ printf checks where applicable
* PostgreSQL: Blob retrieval optimized
* PostgreSQL: Added unix-socket parameter to connection URL
* Internal optimizing changes and improvements


Version 2.4
-----------
* The options --with_mysql=<path> and --with_postgresql=<path> to
  configure has a new meaning; If <path> is given it is assumed to be
  the full path to respectively mysql_config and to pg_config. Example:
  ./configure --with_mysql=/usr/local/mysql/bin/mysql_config 
  ./configure --with_postgresql=/usr/local/pgsql/bin/pg_config
* From version 2.4, libzdb places its header files into a zdb
  sub-directory as in, <prefix>/include/zdb. Clients must now use the
  include-dir compiler flag, -I<prefix>/include/zdb.
* Internal optimizing changes and improvements
* Changed two prototypes to 'extern void foo(void)' so the library
  compiles without warning if -Wstrict-prototype is used with gcc.
  Thanks to Paul Stevens
Bug fixes:
* Fixed off-by-one bug in Vector_remove
* PostgreSQL: Fixed PostgresqlResultSet_getColumnSize to report correct
  value.
* PostgreSQL: Improved error reporting and fixed potential allocation
  bugs in prepared statements.
* PostgreSQL: Calling PreparedStatement_setString with a NULL value now
  works

Version 2.3
-----------
* Cleaned up API and changed function return type to void for 
  those functions that can throw exception on error. 
* Support variable arguments in Connection_prepareStatement() 
  to make it easy to build prepared statements in-place

Version 2.2.3
-------------
Bug fixes:
* Make sure connection properties, max rows and query timeout are
  reset on Connection_close(), if changed.
* Ensure that timeout is set for new Connections.
* SQLite: Fixed a bug so the SQLite driver now will retry executing
  on database lock. This should greatly improve concurrent usage of
  SQLite and reduce database locks from occurring 

Version 2.2.2
-------------
Bug fixes:
* Ensure that reaper progress forward and remove all connections it can
* Fixed a va_copy bug on 64 bits systems
                 
Version 2.2.1
-------------
* SQLite: Improved error reporting by using sqlite3_prepare_v2() when 
  available. Thanks to Paul Stevens for suggesting this.
Bug fixes:
* MySQL and PostgreSQL: Fixed off-by-one count when verifying validity
  of parameter and column index. Thanks to Paul Stevens for bug report.
* MySQL: Workaround mysql column truncation bug. Thanks to Paul Stevens
  for bug report.

Version 2.2
-----------
* Detailed error message added to exception. In an exception handler,
  the variable Exception_frame.message, now provides an alternative to 
  Connection_getLastError() for obtaining the latest error message
* From this release, building with exceptions handling is no longer 
  optional but required
* Internal optimizing changes 
Bug fixes:
* Fixed Connection_prepareStatement() error reported on a PostgreSQL
  Connection. Thanks to Paul Stevens for bug report.
* MySQL: Fixed error in ResultSet_getBlob() and ResultSet_getString() 
  which lead to a segfault when trying to obtain "large" strings and 
  blobs. Again thanks to Paul Stevens.
* PostgreSQL: Fixed the "syntax error at character 12" for prepared
  statement deallocation. Thanks to Paul Stevens for bug report.

Version 2.1
-----------
* API: Connection_ping is promoted to a public method. Clients can use
  this method to test if a Connection is alive.
* API: Connection_clear() is exposed as a public method. Normally it 
  is not necessary to call this method, but in some situations, if you
  use PreparedStatement_executeQuery it is necessary to call this 
  function to close a prepared statement explicit. Basically, if you
  see this SQLite error, "SQL statements in progress", call this 
  function to close any previous opened statements before proceeding.
* Upon returning a Connection, the Connection Pool previously tried to 
  commit a Connection if it was in a non-committed state, while now it
  rollback instead, which is assumed to be more correct. 
* Improved retry when SQLite report database lock, which should reduce
  the chance to meet the infamous SQLite "database is locked" error
* Removed section 3 from "Tildeslash License Exception" so libzdb is 
  licensed clear and permissive.
* Internal optimizing changes 

Version 2.0.2
-----------
* Don't normalize path during URL parsing. If the path needs to be
  normalized it is the responsibility of the caller
* Minor internal changes 
* libzdb is now licensed under GNU General Public License version 3

Version 2.0.1
-----------
* ConnectionPool_version() is now a class method
* Minor internal changes 

Version 2.0
-----------
* Exceptions handling added to the library. This change how clients
  should use the library. Methods in the library that can throw an 
  SQL Exception should now be called from inside a try-catch block.
Bug fixes:
* Fixed a PostgreSQL prepared statement bug. If parts of a statement
  was defined after its last parameter, preparation failed.

Version 1.1.3
-------------
Bug fixes:
* This release fixes a MySQL prepared statement bug. If a prepared
  statement was used with two or more number parameters, the numbers
  were saved with a bogus value in the database. Thanks to José Antonio
  Sánchez

Version 1.1.2
-------------
* ResultSet_next() can be given a NULL value, upon which false is returned.

Version 1.1
-------------
* Added PostgreSQL support
* Using 'mysql_config' when available. Thanks to Paul Stevens paul
* Removed the viral clausal from the exceptions license
* Note, the caller is now responsible for freeing the URL_T object used
  in ConnectionPool_new(), via the URL_free() method.
  
Version 1.0.4
-------------
* Use libtool to set release information for the library.
* Simplified and removed section 4 of the license exception.
* Use new version of auto-tools so library extension is set correct
* Include bootstrap script for recreating configure 
* Minor internal changes

Version 1.0.3
-------------
* Clear any previous resultset when calling Connection_execute() also. This
  allow MySQL implementations to issue a Connection_executeQuery() followed
  by Connection_execute() without having to close the Connection first. 
  Otherwise MySQL may return a 'commands out of sync' error. 
Bug fixes:
* Changed declaration of AbortHandler() so clients are not required to 
  provide this function.

Version 1.0.2
-------------
Bug fixes:
* Refactor and consolidate PreparedStatement clearResultSet
* Do not free prepared statements on Connection_executeQuery(), only the
  ResultSet if any.
* MySQL: Avoid unnecessary re-allocation in
  MysqlResultSet.ensureCapacity() and set the new buffer length
  properly.
* MySQL: Stop MysqlResultSet_next() sooner when maxRows is reached for
  versions < 5.0
* MySQL: Do not try to bind params in PreparedStatement unless in-params
  are present in the statement

Version 1.0.1
-------------
* API: Connection_beginTransaction(), Connection_commit() and 
  Connection_rollback() now returns an int (true of false) instead of void.
Bug fixes:
* MySQL: Removed a debug statement in MySQL prepare statement so a
  potential error message is not lost - MySQL pops last error messages.
* MySQL: Make room for a terminating NUL byte when fetching large strings. 
* configure.ac: Don't link with zlib unless mysql version was confirmed
* configure.ac: Don't print a warning if re2c was not found - Not required

Version 1.0
-----------
* Initial release

