Warning, /sdk/codevis/thirdparty/soci/CHANGES is written in an unsupported language. File is not indexed.

0001 This file contains the history of changes in the SOCI library.
0002 
0003 Latest version is v4.0.3 released on 2022-02-14.
0004 
0005 ---
0006 Version 4.0.3 differs from 4.0.2 in the following ways:
0007 
0008 Changes affecting all or multiple backends:
0009  - Fix opening sessions from pool (#891).
0010  - Fix default backend search path (#928).
0011  - Fix build with latest glibc versions where SIGSTKSZ is not constant (#886).
0012  - Document using SOCI as a CMake subdirectory (#925).
0013  - Document using SOCI with Conan (#877).
0014 
0015 Backend-specific changes:
0016 
0017 - MySQL
0018  - Implement get_table_names() for MySQL (#927).
0019  - Fix MySQL backend build with MySQL >= 8 (#884).
0020  - Fix mysql_library_end() in multithreaded environment (#909).
0021  - Make mysql_soci_error::get_error_category() more useful (#902).
0022 
0023 - ODBC
0024  - Fix several bugs in vector into code (#888, #892).
0025  - Fix memory leaks in case of SQLNumResultCols() failure.
0026  - Export odbc_session_backend::get_database_product() from DLL.
0027 
0028 - Oracle
0029  - Add support for detecting Oracle 20 and 21 to CMake (#896).
0030 
0031 - PostgreSQL
0032  - Fix compilation when "free" is redefined somewhere else.
0033 
0034 - SQLite3
0035  - Fix bulk operations with vectors of size 1 in SQLite3 backend (#908).
0036 
0037 - Firebird
0038  - Suppress FB memory leaks
0039 
0040 
0041 ---
0042 Version 4.0.2 differs from 4.0.1 in the following ways:
0043 
0044 Changes affecting all or multiple backends:
0045 
0046  - Fix using SOCI from CMake projects using find_package() (#854, #867, #868).
0047  - Always set indicator to i_null when no data is read from the database (#28).
0048  - Add support for building SOCI with LTO (#846).
0049  - Enable ELF visibility support (#848).
0050  - Fix building tests under macOS on ARM 64 (#852).
0051  - Fix using custom types with an explicitly null indicator (#807).
0052  - Fix using vectors of custom types for DB/2, ODBC and Oracle (#856).
0053  - Fix vectors of XML and CLOB values for DB/2, Firebird, ODBC and Oracle (#869).
0054  - Don't return i_truncated for empty strings in a vector for DB/2, ODBC.
0055  - Make unloading dynamic backends safer by delaying it if necessary (#862).
0056  - Migrate most Linux CI builds to GitHub Actions from Travis CI (#863, #865).
0057  - Fix rare deadlock in session::reconnect() (#630).
0058  - Fix all warnings in MSVS build (#858).
0059 
0060 Backend-specific changes:
0061 
0062 - MySQL
0063  - Add "reconnect" option (#692).
0064 
0065 - ODBC
0066  - Don't show interactive ODBC dialogs when reconnecting.
0067  - Fix session::get_last_insert_id() for empty tables with SQL Server.
0068 
0069 - Oracle
0070  - Implement session::get_next_sequence_value().
0071  - Fix using default NUMBER type with rowset API (#872).
0072  - Handle reading from CLOBs that can't be read all at once.
0073  - Fix another memory leak in CLOB handling code.
0074 
0075 - PostgreSQL
0076  - Fix use of quoted identifiers with colons (#840).
0077  - Fix tests compilation under macOS (#841, #864).
0078  - Fix tests with PostgreSQL 12 or later.
0079 
0080 - SQLite3
0081  - Fix getting doubles from non-numeric columns.
0082  - Fix using uninitialized sqlite3_column member (#677).
0083 
0084 
0085 ---
0086 Version 4.0.1 differs from 4.0.0 in the following ways:
0087 
0088 - Add session::is_connected() (#828).
0089 - Fix DST adjustment when reading dates from the database (#723, #799).
0090 - Make dynamic_backends::search_paths() actually available (#829).
0091 - Fix using std::vector<boost::optional<>> in query arguments (#797).
0092 - Allow using dt_blob and dt_xml with rowset API too (#786).
0093 - Fix or work around many compilation warnings with newer compilers.
0094 
0095 - DB2
0096  - Fix memory leak.
0097 
0098 - ODBC
0099  - Fix bug with handling of strings of exactly ODBC_MAX_COL_SIZE length (#819).
0100  - Fix opening connections when using connection pooling.
0101 
0102 - Oracle
0103  - Improve detection for newer Oracle versions (#788).
0104  - Use bigger buffer for Oracle connection string length (#666).
0105  - Fix memory leak in Oracle backend when using CLOBs (XML or long strings).
0106 
0107 - PostgreSQL
0108  - Fix reconnect() to use the correct connection parameters (#793).
0109  - Improve error message returned on connection loss (#828).
0110  - Fix use of uninitialized connection variable on connection failure (#822).
0111  - Fix inadvertently broken use of single row mode (#571).
0112  - Fix handling of identifiers with colons (#782).
0113 
0114 - SQLite
0115  - Add support for "vfs" and "readonly" connection options (#816, #784).
0116  - Fix std::tm handling (#770).
0117  - Fix "big int" detection (#783, #785).
0118 
0119 ---
0120 Version 4.0.0 differs from 3.2.3 in the following ways:
0121 
0122 NOTICE: This is probably the last release compatible with C++98.
0123 
0124 - Added support for C++11 and C++17 compilation modes.
0125 - Added RELEASING.md how-to and scripts/release.sh helper for release managers.
0126 - Added context of the failure in soci_error::what() which now returns a
0127   longer and more useful message. Use the new get_error_message() method to get
0128   just the brief error message which used to be returned by what().
0129 - Added logger class to allow customizing SOCI logging operations (#245).
0130 - Added helper for generating portable DDL and DML statements (#484).
0131 - Added portable column info and other metadata queries (#480).
0132 - Added helper exchange_type_cast<>() template function as better static_cast (#301).
0133 - Added values::get_number_of_columns() as convenient accessor.
0134 - Added public macro SOCI_NORETURN and use it in declaration.
0135 - Added handling of dt_unsigned_long_long to the simple interface.
0136 - Added new data type dt_blob with accompanying simple-interface support (#361).
0137 - Added basic support for error categories.
0138 - Added failover_callback interface (#486).
0139 - Added bulk iterators interface (#487).
0140 - Added basic package exporting to CMake configuration (#503).
0141 - Added bigstring (XML and CLOB) support (#509).
0142 - Added CMake option SOCI_POSTGRESQL_NOSINLGEROWMODE with default value OFF (#594).
0143 - Adopted new layout of the source tree (#151).
0144 - Although the build configuration is based on CMake 2.8,
0145   numerous improvements have been applied to the CMake scripts.
0146 - Converted all tests to use the Catch framework.
0147 - Fixed issues with throwing from soci_error copy constructor and assignment operator (#302).
0148 - Fixed backends loading in case SOCI is built with CMAKE_DEBUG_POSTFIX set (#368).
0149 - Fixed deadlock in soci::connection_pool::try_lease function.
0150 - Fixed numerous compilation warnings using various compilers.
0151 - Fixed non-copyability of connection_pool (#478).
0152 - Fixed uniform offset for BLOB read/write operations (#508).
0153 - Fixed memory leak when reusing into and use elements.
0154 - Fixed deduction of reference in boost::fusion::for_each (#728).
0155 - Added empty_blob() and nvl() to portable utilities.
0156 - Improved handling and conversions of time and timezone information values (#316).
0157 - Improved diagnostics with included query parameter names in error messages (#318).
0158 - Improve CMake configuration for integrating SOCI as subproject (#380).
0159 - Improved locale-independent conversions of floating-point numbers to string.
0160 - Include all public headers using soci/ prefix inside SOCI itself (#239).
0161 - Migrated documentation content from HTML to Markdown (#344).
0162 - Provided error context in exceptions and richer diagnostics (#302).
0163 - Replaced assertion with raising exception in case of connection_pool::lease() failure.
0164 - Remove use of std::unary_function and std::ptr_fun deprecated in C++11/17 (#650, #751).
0165 - Split statement::clean_up into two operations bind_clean_up and clean_up (#358).
0166 - Updated the backend documentation.
0167 - Use 64-bit integer for next sequence and last insert ID values (#720).
0168 
0169 - DB2
0170 -- Fixed ambiguous error handling during statement execution (#431).
0171 -- Fixed handling of NULL for strings during bulk querying (#581).
0172 -- Replaced SQLConnect with SQLDriverConnect to establish database session (#438).
0173 
0174 - Firebird
0175 -- Added SOCI_FIREBIRD_EMBEDDED option to allow building with embedded library.
0176 -- Added possibility to build the backend using embedded library (libfbembed).
0177 -- Added CLOB and XML support (#578).
0178 -- Fixed too eager start of implicit transaction (#292).
0179 -- Fixed bug with writing BLOB values (#524).
0180 -- Replaced truncation of too long VARCHAR columns values with throwing exception.
0181 
0182 - MySQL
0183 -- Added MySQL 8 to tested versions.
0184 -- Added get_last_insert_id function (#216).
0185 -- Added timeout support (#691).
0186 -- Fixed bug whe nusing get_affected_rows() and user defined types (#221).
0187 -- Replace throwing generic soci_error with mysql_soci_error (#613).
0188 
0189 - ODBC
0190 -- Added support for ODBC driver for DB2 which is not compliant to ODBC spec (#663).
0191 -- Fixed inserting strings of length greater than 8000 bytes into database (#383, #681).
0192 -- Fixed get_affected_rows() when using FreeTDS driver.
0193 -- Fixed reading from unallocated memory (driver bug?) in ODBC with MySQL (#555).
0194 -- Fixed handling of NULL for strings during bulk querying (#581).
0195 -- Fixed memory leak of internal odbc_standard_use_type_backend buffer (#627).
0196 
0197 - Oracle
0198 -- Added oraocci12 name to Oracle client look-up by CMake.
0199 -- Added NLS support for connection parameters.
0200 -- Added Oracle wallet authentication.
0201 -- Added (partial) handling of OCI_SUCCESS_WITH_INFO.
0202 -- Added handling of more error codes for error categories.
0203 -- Added failover_callback interface implementation (#486).
0204 -- Added bulk iterators interface implementation (#487).
0205 -- Added bigstring (XML and CLOB) support (#509).
0206 -- Added lazy initialization of the temporary LOB objects for Oracle.
0207 -- Fixed uniform offset for BLOB read/write operations (#508).
0208 -- Fixed connection parameters parsing to allow spaces in values (#213).
0209 -- Fixed handling of BINARY_DOUBLE in dynamic row.
0210 -- Use SQLT_BDOUBLE for floating point values instead of SQLT_FLT.
0211 
0212 - PostgreSQL
0213 -- Added singlerows mode for PostgreSQL (#482).
0214 -- Added failover_callback interface implementation (#486).
0215 -- Added bulk iterators interface implementation (#487).
0216 -- Added test for the uuid data type (#420).
0217 -- Added bigstring (XML and CLOB) support (#509).
0218 -- Dropped support for PostgreSQL 7.x (#623).
0219 -- Fixed defining SOCI_POSTGRESQL_NOSINLGEROWMODE for PostgreSQL < 9 (#571).
0220 -- Fixed string to floating-point number conversions assuming "C" locale (#238).
0221 -- Fixed support for bytea across PostgreSQL versions older than 9 (#242).
0222 -- Fixed timestamp handling in UTC (#190).
0223 -- Fixed uniform offset for BLOB read/write operations (#508).
0224 -- Explicitly set extra_float_digits to 3 when using PostgreSQL >=9 in ODBC for consistency.
0225 -- Improve string to floating-point number conversion to be exact.
0226 
0227 - SQLite3
0228 -- Added get_last_insert_id function (#216).
0229 -- Fixed clean up on error to enable getting detailed diagnostics (#318).
0230 -- Fixed issue numerous calls to fetch by better control when backend calls sqlite3_step (#375).
0231 -- Fixed memory leak in sqlite3_session_backend (#378).
0232 -- Fixed closing connection after obtaining error diagnostics (#381).
0233 -- Fixed affected rows count when reusing prepared statements (#428).
0234 
0235 ---
0236 Version 3.2.3 differs from 3.2.2 in the following ways:
0237 
0238 - Improved Boost Tuple & Fusion integration by using boost::fusion::foreach
0239   to reference each member of a sequence. Breaks compatibility with Boost 1.35 (2008).
0240 - Fixed linker error when building 64-bit target with Visual Studio.
0241 - Fixed several issues with building using Cygwin and MinGW.
0242 - Clarified documentation and examples on bulk operations.
0243 
0244 - MySQL
0245 -- Fixed building against MySQL 3.23.
0246 
0247 - ODBC
0248 - Improve readability of ODBC error messages.
0249 - Fixed CMake configuration of ODBC backend for Visual Studio 64-bit targets.
0250 
0251 - Oracle
0252 -- We've had to disable Oracle target in the Travis CI configuration until we
0253    figure out how to setup Oracle on Travis CI directly.
0254    Therefore, this release hasn't been extensively tested against Oracle.
0255 
0256 - PostgreSQL
0257 -- Added support for UUID column type (tests and docs updated).
0258 
0259 - SQLite3
0260 -- Added sqlite3_soci_error exception as subclass of soci_error to provide useful
0261    exposure of specific SQLite3 error codes (tests and docs updated).
0262 
0263 ---
0264 Version 3.2.2 differs from 3.2.1 in the following ways:
0265 
0266 - Fixed once_temp_type destructor with noexcept(false) specifier for C++11
0267 - Fix uninitialized indicators in conversion_into_type and conversion_use_type specialisations
0268 - Fixed placeholder matching for PostgreSQL-style casts with ORM
0269 - Fixed memory leaking in use binding in case of bind/unbind sequence
0270 - Fixed sscanf formatter for MinGW/MSVC in backends
0271 - Fixed partial placeholder name matching for ORM cases
0272 - Added test for use of indicators with rowset<row>
0273 - Added test for get_affected_rows after bulk operations
0274 
0275 - DB2
0276 -- Enable build and testing on Travis CI
0277 -- Fixed use type size calculation during bind/pre_use
0278 
0279 - Firebird
0280 -- Enable memory cleanup to avoid leaks after binding
0281 -- Added missing C++ library headers
0282 -- Added get_affected_rows() support for bulk operations
0283 -- Fixed compilation with VS2008
0284 -- Fixed building tests with the backend built as DLL.
0285 
0286 - MySQL
0287 -- Added get_affected_rows() support for bulk operations
0288 
0289 - ODBC
0290 -- Always call ASCII version of ODBC function SQLGetDiagRec
0291 -- Fixed invalid condition test in assertions
0292 -- Added get_affected_rows() support for bulk operations
0293 -- Added support for (unsigned) long long vectors
0294 -- Changed mapping of SQL_BIGINT to dt_long_long in ODBC backend
0295 -- Added some trivial optimizations in statement preparation code
0296 
0297 - Oracle
0298 -- Fixed missing noData_ reported in particular case when OCIStmtExecute returns success
0299 -- Improved Oracle testing setup on Travis CI
0300 
0301 - PostgreSQL
0302 -- Added session::get_next_sequence_value() for PostgreSQL backend
0303 -- Added get_affected_rows() support for bulk operations
0304 -- Applied RAII and simplified error handling logic
0305 -- Fixed issue with exceptions escaping postgresql_statement_backend destructor
0306 
0307 - SQLite3
0308 -- Replaced sqlite3_prepare with sqlite3_prepare_v2
0309 -- Added missing <cstdarg> header
0310 -- Fixed wrong size used in memcpy() during bulk processing
0311 -- Added get_affected_rows() support for bulk operations
0312 -- Added shared_cache=true propery to control SQLITE_OPEN_SHAREDCACHE flag
0313 
0314 - Documentation
0315 -- Corrected usage examples
0316 
0317 - Building
0318 -- Updated CMake for Oracle 12g
0319 -- Restructured and improved Travis CI setup to do single build per backend
0320 -- Fixed wrong GCC_VERSION used in CMake config for commandline-overriden GCC
0321 -- Allows CMake to find 32-bit DB2 on Windows x64
0322 -- Removed redundant Oracle libclntsh library lookup
0323 -- Fixed SQLITE3_LIBRARIES handling by find_package_handle_standard_args
0324 
0325 ---
0326 Version 3.2.1 differs from 3.2.0 in the following ways:
0327 
0328 - Fixed binding of Oracle type NUMBER(9,0) to C++ int, by Tomasz Olszewski
0329 - Fixed Oracle client library detection on Windows, by Tomasz Olszewski
0330 - Fixed PostgreSQL issue with deallocate_prepared_statement called for non-existing statement
0331 - Fixed prepared insert statements with custom data types support, by Tomasz Olszewski
0332 - Fixed recent improvements in x:=y name binding, by Poul Bondo
0333 - Fixed query transformation assignment in pooled sessions, by Stefan Chrobot
0334 - Cleaned up SOCI_POSTGRESQL_NOPARAMS and related options in code and documentation
0335 - Dropped patch (micro) version number from documentation URLs on the website
0336 
0337 ---
0338 Version 3.2.0 differs from 3.1.0 in the following ways:
0339 
0340 - SOCI is now organization at GitHub
0341 -- Git repository moved to https://github.com/SOCI/soci
0342 -- Opened new bug tracker (SF.net tracker is read-only)
0343 -- Opened Wiki for FAQ and development articles
0344 -- Website, mailing lists and downloads remain on SourceForge.net
0345 -- Applied GitFlow branching model
0346 -- Added package maintenance repository https://github.com/SOCI/soci-pkg
0347 
0348 - Core
0349 -- Added connection_parameters to enable support for session options used by core, backends or low-level API.
0350 -- Added user-defined query transformation support based on function, functor and lambda
0351 -- Fixed missing connection check and backend setup ensured for session
0352 -- Fixed backend initialization when used with connection pool (Core)
0353 -- Fixed memory leaks on exception thrown during statement preparation stage
0354 
0355 - DB2
0356 -- Added new backend for IBM DB2
0357 
0358 - Firebird
0359 -- Fixed bug in repeated statement execution
0360 -- Fixed issues with input parameter binding
0361 -- Fixed connection string parsing to handle possible white-spaces
0362 -- Fixed issues with C++ type unsigned long
0363 -- Fixed reading negative values into C++ type double
0364 -- Added option to fetch numeric/decimal data into string of characters
0365 -- Added CMake configuration
0366 -- Updated tests
0367 -- Continued regular testing on Windows and Unix platforms
0368 
0369 - MySQL
0370 -- Replaced use of type=InnoDB with engine=InnoDB
0371 -- Improved CMake configuration
0372 
0373 - ODBC
0374 -- Added connection_parameters option ODBC_OPTION_DRIVER_COMPLETE
0375 -- Fixed issues in handling C++ types int and long on 64-bit architectures
0376 -- Added missing CMake configuration for tests
0377 -- Continued regular testing on Windows and Unix platforms
0378 
0379 - Oracle
0380 -- Implemented statement::get_affected_rows() operation
0381 -- Use OCI_THREADED and OCI_ENV_NO_MUTEX with OCIEnvCreate
0382 -- Added numerous fixes and improvements in tests
0383 -- Added option to fetch numeric/decimal data into string of characters
0384 -- Fixed issues in binding procedure IN/OUT parameters
0385 
0386 - PostgreSQL
0387 -- Add reading of BYTEA data into std::string (not fully-featured binary data support yet)
0388 -- Add JSON data type support available in PostgreSQL 9.2+
0389 -- Fixed incorrect assertion in postgresql::get_error_details
0390 -- Fixed premature deallocation of prepared statements
0391 -- Fixed servers-side memory leak in prepared statements
0392 -- Fixed memory leak of PGresult on exception thrown
0393 -- Fixed isues in parsing complex PL/PSQL functions
0394 
0395 - SQLite3
0396 -- Implemented statement::get_affected_rows() operation
0397 -- Fixed handling of database file path with spaces
0398 
0399 - Building, testing and installation
0400 -- Marked Makefile.basic as deprecated (maintainer wanted)
0401 -- Cleaned numerous compilation warnings reported by various compilers
0402 -- Improved compilation using latest version of clang
0403 -- Added numerous improvements in CMake configuration
0404 -- Added SOCI_STATIC option to enable/disable static libraries build
0405 -- Fixed issues with ignored -DWITH_<dependency> options
0406 -- Fixed FindMySQL.cmake to allow use of mysqlclient from custom location
0407 -- Added support of SQLITE_ROOT_DIR variable to FindSQLite3.cmake module
0408 -- Fixed and tested CMake configuration on OSX
0409 -- Fixed and tested CMake configuration on FreeBSD
0410 -- Fixed and tested CMake configuration to use with Ninja
0411 -- Fixed building using Visual Studio 2010
0412 -- Added support for building using Visual Studio 2012
0413 -- Set up SOCI continuous integration at travis-ci.org
0414 -- Added Debian packaging support to soci-pkg repository
0415 -- Added Fedora/CentOS/RedHat packaging support to soci-pkg repository
0416 
0417 - Documentation
0418 -- Review and update to catch up with current status quo
0419 -- Updated code examples
0420 -- Start maintenance and hosting of SOCI documentation per released version
0421 
0422 ---
0423 Version 3.1.0 differs from 3.0.0 in the following ways:
0424 
0425 - Added Ada language binding
0426 
0427 - Migraded build system from GNU Autotools and Visual Studio projects to CMake
0428 
0429 - CMake build tested with Visual Studio, GCC and clang
0430 
0431 - Incorporated a compromise for naming versioned shared libraries
0432 
0433 - Enhanced and improved integration with Boost libraries:
0434 -- Boost.DateTime
0435 -- Boost.Fusion
0436 -- Boost.Optional
0437 -- Boost.Tuple
0438 
0439 - Bug fixes and improvements in core and backends:
0440 -- Added soci::values::get_properties accessor useful for composing soci::type_conversion
0441 -- Export advanced API of backend loader from DLL.
0442 -- Added static factory registration functions for backends
0443 -- Added get_affected_rows operation
0444 -- Fixed thread-safety of connection pool under Windows
0445 -- Fixed bug with droping const qualifiers when binding to std::vector<soci::indicator>
0446 -- Fixed bug in default initialization of an object of const backend_factory wihch requires user-provided default constructor (see C++03/C++0x)
0447 -- Fixes for 64-bit builds
0448 -- Removed redundant exchange_traits breaking ODR on LP64
0449 -- Better ODBC support
0450 -- Type conversion support for unsigned integer types
0451 -- Bug ID:1971436 - incorrect rowset copy operations
0452 -- Bug ID:2010367 - memory leak (ODBC)
0453 -- Bug ID:2010409 - invalid memory allocaton in define by position (ODBC)
0454 -- Bug ID:2021243 - long long type support in Visual C++
0455 -- Patch ID:2483066 - 64bit Linux and 64bit integer submitted
0456 -- Patch ID:2809809 - Fix build with GCC 4.4
0457 -- Patch ID:2809810 - Fix SQLite3 build with GCC 4.3
0458 -- Patch ID:2581206 - Windows unicode application
0459 -- Patch ID:3058275 - install target for cmake build submitted
0460 -- Patch ID:3069375 - use $(prefix)/lib64 on AMD64 platforms.
0461 -- Improved performance while accessing query results (MySQL)
0462 -- Bug fixes for PROCEDURE support (MySQL)
0463 -- Removed throw statements from mysql_rowid_backend and mysql_blob_backend destructors (MySQL)
0464 -- Verify that prepared statements survive session::reconnect() operatoin (MySQL)
0465 -- Improved support for time and date (MySQL, PostgreSQL)
0466 -- Fixed bug with strings of length exceeding 255 characters (ODBC)
0467 -- Improved interpretation of the connect string (Oracle)
0468 -- Added handling of unsigned long long (Oracle, SQLite3, PostgreSQL)
0469 -- Fixes in integral types support (PostgreSQL)
0470 -- Support for colon-casts (PostgreSQL)
0471 -- Added possibility for use BLOB (PostgreSQL)
0472 -- Added support for connection property "synchronous=on|off" (SQLite3)
0473 -- Improved BLOB data handling (SQLite3)
0474 -- Improved boolean type suppport (SQLite3)
0475 -- Session timeout support (SQLite3)
0476 -- Improved tests clean-up (SQLite3)
0477 -- Added missing typedef of sqlite3_destructor_type which has been defined in sqlite3.h but since 3.3.10 (see comment for reference to SQLite ticket)
0478 
0479 - Updated tests for various backends and SQL data types
0480 
0481 - Migrated from CVS to Git repository
0482 
0483 - Changed naming convensions and style across all the source code
0484 
0485 - Firebird backend removed from official release as not actively maintained. Available in the Git repository.
0486 
0487 ---
0488 Version 3.0.0 differs from 2.2.0 in the following ways:
0489 
0490 - Exposed the session's locale object.
0491 
0492 - Moved the "no data" flag from indicators to statement.
0493 
0494 - Allowed const objects as "use" elements.
0495 
0496 - Added connection mode for Oracle.
0497 
0498 - Added RAII support for transactions.
0499 
0500 - Added the open/close/reconnect functionality.
0501 
0502 - Added support for long long as a fundamental data type.
0503 
0504 - Unified column names for dynamic rowset description, to overcome
0505   differences between database servers.
0506 
0507 - Added the "simple" interface for interfacing from other languages.
0508 
0509 - Added thread-safe connection pool.
0510 
0511 - Added integrated support for Boost data types: gregorian_date,
0512   fusion and tuple.
0513 
0514 - Added dynamic backend loading.
0515 
0516 - Changed the naming convention to comply with Boost recommendations.
0517 
0518 ---
0519 Version 2.2.0 differs from 2.1.0 in the following ways:
0520 
0521 - Added true support for statement preparation with PostgreSQL.
0522 
0523 - Added support for the stream-like extraction from Row.
0524 
0525 - Added STL-compatible iterator interface for select statements.
0526 
0527 - Refactored the set of common tests to validate core library functionality
0528   independently on the target database server.
0529 
0530 - Introduced new backends for MS SQL Server (via ODBC) and Firebird.
0531 
0532 - Provided complete build system for both Unix (autotools) and
0533   Windows (solution and project files for MSVC++).
0534 
0535 ---
0536 Version 2.1.0 differs from 2.0.1 in the following ways:
0537 
0538 - Added two additional backends: MySQL and SQLite3
0539 
0540 - Restructured the source code layout so that the whole library was broken
0541   into the "core" part and independent "backends", each in its own
0542   directory together with appropriate tests.
0543 
0544 - Provided basic Makefiles for static and shared libraries on
0545   Linux-compatible systems.
0546 
0547 - Added the general class and function reference to the documentation.
0548 
0549 ---
0550 Version 2.0.1 differs from 2.0.0 in the following ways:
0551 
0552 - Corrected some typos in documentation.
0553 
0554 - Corrected handling of dynamic rowset description for those backends
0555   which do not have dedicated description functionality.
0556 
0557 - A bug fix to correctly handle std::tm in the Oracle backend.
0558 
0559 - A bug fix to correctly handle object relational mapping when
0560   Values::set<T>() and Values::get<T>() are called where T is a
0561   TypeConversion-based type.
0562 
0563 ---
0564 Version 2.0.0 differs from 1.2.1 in the following ways:
0565 
0566 - The whole library was internally re-architectured to allow operation
0567   with many different backends. The top-level part of the library
0568   (the syntax layer) provides essentially the same interface as in previous
0569   versions of the library, but it can work with independent (and dynamically
0570   selected) backends, possibly targeting different database engines.
0571   As a prove of concept (and to encourage developments of new backends),
0572   the PostgreSQL backend was provided in addition to the Oracle one.
0573   During this re-architecturing, some minor bugs were fixed as well.
0574 
0575 - The old Boost-style license was changed to the new (v. 1.0) Boost license.
0576 
0577 ---
0578 The version 1.2.1 differs from 1.2.0 in the following ways:
0579 
0580 - A bug was fixed that caused compile errors on MS VC++ compiler.
0581 
0582 ---
0583 The version 1.2.0 differs from 1.1.0 in the following ways:
0584 
0585 - A memory leak when reading into Row objects was fixed.
0586 
0587 - Bulk (array) operations were introduced for high-performance
0588   applications, where the number of network round-trips can be
0589   significantly reduced by operating on whole arrays (vectors).
0590 
0591 ---
0592 The version 1.1.0 differs from 1.0.1 in the following ways:
0593 
0594 - Explicit support for calling stored procedures was added.
0595 
0596 - Dynamic row recognition (type discovery) was added.
0597 
0598 - Support for user-defined data types was added.