[odb-announcements] ODB 2.2.0 released

Boris Kolpackov boris at codesynthesis.com
Wed Feb 13 06:54:15 EST 2013


We have released ODB 2.2.0. The NEWS file entries for this release are
as follows:

 * Multi-database support. This mechanism allows an application to
   simultaneously work with multiple database systems and comes in two
   flavors: static and dynamic. With static support the application uses
   the static database interfaces (that is, odb::<db>::database instead
   of odb::database). With dynamic support the same application code can
   access multiple databases via a common interface. Dynamic multi-database
   supports also allows the application to dynamically load the database
   support code for individual database systems if and when necessary. For
   more information, refer to Chapter 14, "Multi-Database Support" in the
   ODB manual.

 * Support for prepared queries. Prepared queries are a thin wrapper around
   the underlying database system's prepared statements functionality. They
   provide a way to perform potentially expensive query preparation tasks
   only once and then execute the query multiple times. For more information,
   refer to Section 4.5, "Prepared Queries" in the ODB manual as well as the
   'prepared' example in the odb-examples package.

 * Mapping for char[N] and std::array<char, N> to database VARCHAR(N-1) (or
   similar) as well as for char to database CHAR(1) (or similar). For SQL
   Server and SQLite on Windows equivalent mappings for wchar_t are also
   provided. Also the query support for arrays has been improved to allow
   passing a value of the decayed type (pointer) as a query parameter.
   For more information, refer to the ODB manual "Type Mapping" sections
   for each database system.

 * Support for change-tracking std::vector and QList container equivalents.
   Change-tracking containers minimize the number of database operations
   necessary to synchronize the container state with the database. For
   more information, refer to Sections 5.4, "Change-Tracking Containers",
   5.4.1 "Change-Tracking vector", and 22.3.1, "Change-Tracking QList"
   in the ODB manual.

 * Support for automatically-derived SQL name transformations (table, column,
   index, etc). At the higher level, it is possible to assign prefixes and
   suffixes (--table-prefix, --{index,fkey,sequence}--suffix options) as
   well as to convert to upper or lower case (--sql-name-case option). At
   the lower level, it is possible to specify transformations as regular
   expressions (--{table,column,index,fkey,sequence,sql-name}-regex options).
   For more information, refer to the SQL NAME TRANSFORMATIONS section in
   the ODB compiler command line interface documentation (man pages).

 * New options, --export-symbol and --extern-symbol, allow DLL-exporting of
   the generated database support code.

 * Support for transaction post- commit/rollback callbacks. For more
   information, refer to Section 13.1, "Transaction Callbacks" in the ODB

 * Support for custom session implementations. For more information, refer
   to Section 10.2, "Custom Sessions" in the ODB manual.

 * Support for early connection release. Now the database connection is
   released when commit()/rollback() is called rather than when the
   transaction instance goes out of scope.

 * New odb::schema_catalog function, exists(), can be used to check whether
   a schema with the specified name exists in the catalog.

 * Support for SQL Server ROWVERSION-based optimistic concurrency. For more
   information, refer to Section 19.1.1, "ROWVERSION Support" in the ODB

 * Support for specifying the SQL Server transaction isolation level. For
   more information, refer to Section 19.2, "SQL Server Database Class" in
   the ODB manual.

 * Support for "smart" containers. A smart container is provided with
   additional functions which allow it to insert, update, and delete
   individual elements in the database. Change-tracking containers are
   examples of smart containers that utilizes this new functionality.
   Currently only ordered smart containers are supported. Note also that
   with this addition the names of the database functions provided by the
   ODB compiler (see libodb/odb/container-traits.hxx) have changed. This
   will only affect you if you have added ODB persistence support for a
   custom container.

This release also adds support for Qt5 in addition to Qt4, including VC++
project/solution files as well as the autotools build system update.

We have also upgraded the private copy of GCC that is used by the ODB
compiler binary packages to 4.7.2 (actually, 4.7.3 pre-release) on all
the platforms. In particular, this should make a difference to projects
wishing to use C++11 features.

Another notable addition is support for mobile/embedded systems. With
this release we have added Raspberry Pi ARM GNU/Linux computer as one
of the test targets and written a guide on using ODB on Mobile and
Embedded Systems:


A more detailed discussion of the major new features can be found in the
following blog post:


This release has been tested with a large number of platform/compiler/
architecture/library combinations. Specifically:

Platform     Compiler Version  C++ Std     Arch       Qt Boost Databases
GNU/Linux     GCC     4.4-4.8  C++98,11	 x86 32/64    4,5  Y   All
GNU/Linux     Clang   3.2      C++98,11	 x86 64       4    Y   All
Raspberry Pi  GCC     4.7      C++98     arm          -    -   SQLite

Solaris	      Sun CC  12u2     Cstd      x86 32/64    -    -   All ex MS SQL
Solaris	      Sun CC  12u2     STLPort   x86 32/64    -    -   All ex MS SQL
Solaris       Sun CC  12u2     Cstd      SPARC 32/64  -    -   All ex MS SQL

Mac OS X      GCC     4.2      C++98     x86 32       4    Y   All ex MS SQL

Windows       VC++    9.0      C++98     x86 32/64    4    Y   All
Windows       VC++    10.0     C++11     x86 32/64    4,5  Y   All
Windows       VC++    11.0     C++11     x86 32/64    4    Y   All
MinGW-W64     GCC     4.7      C++98     x86 32       5    Y   All

We would also like to thank everyone who reported bugs, suggested fixes
or new features, as well as tested early versions of this release. In
particular, big thanks goes to Hugo Mildenberger who is working on
packaging ODB for Gentoo and Dave Johansen who is doing the same for
RHEL/CentOS. Hugo Mildenberger has also tracked down a number of issues
in ODB when using MariaDB in place of MySQL. Thanks to his efforts ODB
tests now run cleanly against MariaDB.

Source code and pre-compiled binary packages for this release are available
from the ODB Download page:


SHA1 checksums for the files in this release are as follows:

c02bc276a48bd8afa3c38b54c1bae790eb061643  libodb-2.2.0.tar.bz2
84adcfdb7cd311ea5cd666a3945713a4ef1f69c5  libodb-2.2.0.tar.gz
f799bb2a3dc4e1eb6c432d5be3fe45cbce56a46d  libodb-2.2.0.zip
54bb977beb5bea52eac958eba7e7b1121d5a347a  libodb-boost-2.2.0.tar.bz2
fdf57dba0618266e7b948c7e40e09ae2b128dbca  libodb-boost-2.2.0.tar.gz
71d5f749264ef64ac2844b6a0f02063accc610ec  libodb-boost-2.2.0.zip
ef1fe4216f7756d101a82bc9b728dd4276ecbf73  libodb-mssql-2.2.0.tar.bz2
1daa0d6eda89477bc2a73be89dca4a55e720ddc7  libodb-mssql-2.2.0.tar.gz
620b801743c04b004c6f237f89e76954596c38cd  libodb-mssql-2.2.0.zip
acb7f12d58d264f2288285ddd6ed3f3df7c98e8c  libodb-mysql-2.2.0.tar.bz2
39a1cdea0cb3e3b6f349c58ce03c4ca237a70e35  libodb-mysql-2.2.0.tar.gz
34cb972170e79fa5f3b3654f5c835dbc0a950097  libodb-mysql-2.2.0.zip
856920bcaf477881d590f4bd5391add18ac6e3e1  libodb-oracle-2.2.0.tar.bz2
916f268778baf5e068497fe5b6d5c50b4cd5e2da  libodb-oracle-2.2.0.tar.gz
0639ae29941b72d091eede855523d13588ea2212  libodb-oracle-2.2.0.zip
0bf21dcc5b319e8c5932fb015340bfcbeff69d80  libodb-pgsql-2.2.0.tar.bz2
10eb2dfa5b9ff6c81fa03b00442661e3da7b664c  libodb-pgsql-2.2.0.tar.gz
6b65f92137dd9f2f93af604ca08050cc51feded5  libodb-pgsql-2.2.0.zip
d0a26521c1747458ca09e85b97fa7036506b54b5  libodb-qt-2.2.0.tar.bz2
c07a54d4cfa786c49acfe3e521877598ddc8a82c  libodb-qt-2.2.0.tar.gz
b78556dd925a1aebcfba3148b8811fe3b1beb228  libodb-qt-2.2.0.zip
a05fee4a452fde7371a78d662e27dd97fbacc14b  libodb-sqlite-2.2.0.tar.bz2
458a605ff5945484cd150d81f0b1a7ea16e3a10c  libodb-sqlite-2.2.0.tar.gz
3bc453b745bc104a8fdbb7a6f054fa49bdc46e67  libodb-sqlite-2.2.0.zip
c58e80e579c4c49fff19055ee2a47064b5fd0805  odb-2.2.0-i686-linux-gnu.tar.bz2
a8764c780244b137369e8a0382cf3025ae661f03  odb-2.2.0-i686-macosx.tar.bz2
2e62dc711c3108d8a35c7466f0eca8e191ed26ed  odb-2.2.0-i686-solaris.tar.bz2
2df92be11f939962f227d8e57e68b7b2f2b64be9  odb-2.2.0-i686-windows.zip
205b40ddb1ba426a348e0007ba262c82a1a11fd1  odb-2.2.0-sparc-solaris.tar.bz2
61657833e119373b4d66f2ccbb1938d7cf57ab1d  odb-2.2.0.tar.bz2
ba204e2f3201caac72ecfc6c1e5e3b68f64583fd  odb-2.2.0.tar.gz
bfaee59d843facc8ce641232b8b00f7ace7c7d22  odb-2.2.0-x86_64-linux-gnu.tar.bz2
560edb6af4798d6846f6182c22b30b2992af9571  odb-2.2.0.zip
8ba9d5303154a40adfb9db5d989cf56ca8c52b74  odb-examples-2.2.0.tar.bz2
d28a00e6580c3ce8d4bef64ad5836028c873f15e  odb-examples-2.2.0.tar.gz
3bd6d2b727997873f326833152914ec8a027820b  odb-examples-2.2.0.zip
3ea7fbd83c9c00806453a4b3fa5aefa3995f5c0a  odb-tests-2.2.0.tar.bz2
4246bd448c1b149abc176375617326157ba48017  odb-tests-2.2.0.tar.gz
3d2fd3afdcbb212cd8419c4e6cf34ddba1836fe8  odb-tests-2.2.0.zip


More information about the odb-announcements mailing list