[odb-announcements] ODB 2.4.0 released

Boris Kolpackov boris at codesynthesis.com
Wed Feb 11 06:59:41 EST 2015


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

 * Support for bulk operations in Oracle and SQL Server. Bulk operations
   persist, update, or erase a range of objects using a single database
   statement execution which often translates to a significantly better
   performance. For details, refer to Section 15.3, "Bulk Database
   Operations" in the ODB manual.

 * Support for object loading views. Object loading views allow loading of
   one or more complete objects instead of, or in addition to, a subset of
   data members and with a single SELECT statement execution. For details,
   refer to Section 10.2, "Object Loading Views" in the ODB manual.

 * New database class functions, query_one() and query_value(), provide
   convenient shortcuts for situations where the query is known to return
   at most one element (query_one) or exactly one element (query_value).
   Corresponding execute_one() and execute_value() functions for prepared
   queries are also provided. For details, refer to Sections 4.3, "Executing
   a Query" and 4.5, "Prepared Queries" in the ODB manual.

 * Support for defining persistent objects as instantiations of C++ class
   templates, similar to composite value types. For details, refer to
   Section 15.2, "Persistent Class Template Instantiations" in the ODB

 * Support for object and table join types in views. Supported join type
   are left, right, full, inner, and cross with left being the default.
   For details, refer to Sections 10.1, "Object Views" and 10.3, "Table
   Views" in the ODB manual.

 * Support for result modifiers in view query conditions. Currently
   supported result modifiers are 'distinct' (which is translated to
   SELECT DISTINCT) and 'for_update' (which is translated to FOR UPDATE or
   equivalent for database systems that support it). For details, refer to
   Section 10.5, "View Query Conditions" in the ODB manual.

 * Support for persisting std::deque containers.

 * New pragma, on_delete, allows the specification of an on-delete semantics
   (translated to the ON DELETE SQL clause) for an object pointer. For more
   information, refer to Section 14.4.15, "on_delete" in the ODB manual.

 * Besides odb::stderr_tracer there is now odb::stderr_full_tracer that
   traces statement preparations and deallocations in addition to their
   executions. This new implementation can be useful when you want to see
   the text of a statement that contains a syntax error and therefore
   will not actually be executed. For more information, refer to Section
   3.13, "Tracing SQL Statement Execution" in the ODB manual.

 * ODB can now compile headers that use #pragma once instead of include

 * User-supplied prologues and epilogues are now generated outside the
   pre.hxx/post.hxx includes. This allows the use of precompiled headers
   with the generated files.

 * Support for calling MySQL stored procedures. For details and limitations
   refer to Section 17.7, "MySQL Stored Procedures" in the ODB manual.

 * Support for calling SQL Server stored procedures. For details and
   limitations refer to Section 21.7, "SQL Server Stored Procedures" in
   the ODB manual.

 * New option, --oracle-warn-truncation, makes ODB warn about SQL names
   that are longer than 30 characters and are therefore truncated. ODB
   now also detects when such truncations lead to Oracle name conflicts
   and issues diagnostics even without this option specified.

 * For MySQL, PostgreSQL, and SQL Server, ODB now warns when an SQL name
   exceeds the database limit (64, 63, and 128 characters, respectively).
   SQLite has no limitation on name lengths. For Oracle, which has a limit
   that is much more likely to be reached in normal circumstances (30
   characters), a more comprehensive detection is implemented (see the item

 * New option, --statement-regex, can be used to process prepared statement
   names that are used by PostgreSQL. This can be useful, for example, to
   shorten names that exceed the PostgreSQL name limit.

 * The --std option now accepts the 'c++14' value.

This release also adds support for Visual Studio 2013 (VC++ 12.0), including
project/solution files for all the runtimes, tests, and examples.

We have also upgraded the private copy of GCC that is used by the ODB
compiler binary packages to 4.9.2 (actually, 4.9.3 pre-release) on all
the platforms except Solaris (there it remains at 4.7.3). In particular,
this should make a difference to projects wishing to use more C++11/C++14

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-5.0  C++98,11	 x86 32/64    4,5  Y   All
GNU/Linux     Clang   3.5      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
Mac OS X      Clang   3.5      C++11     x86 32/64    -    -   All ex MS SQL

Windows       VC++    8.0      C++98     x86 32/64    -    Y   All
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
Windows       VC++    12.0     C++11     x86 32/64    5    Y   All
MinGW-W64     GCC     4.9      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, a big thanks goes to Dave Johansen who is maintaining ODB
packages for RHEL/CentOS and Timo Rothenpieler who is doing the same
for Gentoo. If you are packaging ODB for another distribution, please
speak up so that I can announce/acknowledge your work.

If you plan to use ODB on Mac OS X or MinGW/MinGW64, there are new
installation guides with additional information for these platforms:



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:

42bd2a8023e338e004711e755eb30bd122b844a6  libodb-2.4.0.tar.bz2
10ecc193b883e198e4b4c678f1561f280784d629  libodb-2.4.0.tar.gz
c6b0486ed4168668e1691dec34d61bddccafa1dc  libodb-2.4.0.zip
f813702b2856732e199ae34e3393b8cecff878ef  libodb-boost-2.4.0.tar.bz2
9fd462c3dc9f0529d78b6301223a28e3b805799c  libodb-boost-2.4.0.tar.gz
e58b7295ec2319e03afb67d8fa0ac0d16b6eff8d  libodb-boost-2.4.0.zip
e10174185222e102d63b48eed0d632aad1608512  libodb-mssql-2.4.0.tar.bz2
e5dada5228971cc3eb4ce21a8208e973bb73f2a2  libodb-mssql-2.4.0.tar.gz
a476d7fff656792c9e00b2253cc3733086cb6f30  libodb-mssql-2.4.0.zip
2021a67577354f1d6bed50c0b257c1920760eda7  libodb-mysql-2.4.0.tar.bz2
ff146deb9d31158688146ef2be4efa2d567c0574  libodb-mysql-2.4.0.tar.gz
50de4e581d61185ed230255959732617a6f97b08  libodb-mysql-2.4.0.zip
dd22ae9f3606e37a25ed8f9a3e9eec81c163fadd  libodb-oracle-2.4.0.tar.bz2
56691751e1960b5290fa4c3453fec66ce34b21fe  libodb-oracle-2.4.0.tar.gz
a8beaa5c0f506f413d3d9fb09a87cbaece870874  libodb-oracle-2.4.0.zip
4628d5e296da01dbaf8658fd402b4f709f30ea2d  libodb-pgsql-2.4.0.tar.bz2
3a4414958de7f6d862b444a9895605d501452978  libodb-pgsql-2.4.0.tar.gz
a5741062322ad63b9f80c433bb601de6bb705eb9  libodb-pgsql-2.4.0.zip
e68b6614cf4f471792979f7f97a8279fdba77527  libodb-qt-2.4.0.tar.bz2
0e5c8f007810285d54df67c6251f5c28fd83c955  libodb-qt-2.4.0.tar.gz
0d9bebf911ca8761b8b3647015398741bed68ee6  libodb-qt-2.4.0.zip
3be07e7702abf8adcbe7736f372ef9980cec1003  libodb-sqlite-2.4.0.tar.bz2
c5cdb8a63dc1b395f03be9551beb4e58733a4b83  libodb-sqlite-2.4.0.tar.gz
c95ab4d9f4c7e2828ab2786d9f29e6c55d52f77d  libodb-sqlite-2.4.0.zip
d000bf71e86dc4d84b56ac40e76f2152acc8e164  odb_2.4.0-1_amd64.deb
68ff71b2e3e7f9dfe3e7426058d5f8b57c6070d3  odb_2.4.0-1_i386.deb
57e7db623ea8c5d43a7fcfdb92e0a58e6adcae96  odb-2.4.0-1.i686.rpm
bcba62632c382fd082d41b8366a4578421cb3b4d  odb-2.4.0-1.x86_64.rpm
f8b5797af1ce185db6adfa1d91ba5c90584d220f  odb-2.4.0-i686-linux-gnu.tar.bz2
14d4972b43278b12479950b4a12affe4e4e500c1  odb-2.4.0-i686-macosx.tar.bz2
eca6c124ba4c90d3478049d0b5b43ef5375612fd  odb-2.4.0-i686-solaris.tar.bz2
386ae3dd284c20acfcb5a49ed42c2ff5c598e401  odb-2.4.0-i686-windows.zip
83ff71ec663b318cdb95ef0ebd7feefff3123a21  odb-2.4.0-sparc-solaris.tar.bz2
810fc02e591429ed19f5a2699d144fb611fb121b  odb-2.4.0.tar.bz2
ad39f381cd2ebc07fa08e3464a44a6ef31ccd2d1  odb-2.4.0.tar.gz
630882a3461a8aa6349fd5b4e5ef20ec9afae09d  odb-2.4.0-x86_64-linux-gnu.tar.bz2
22d565fcafa0bd8ff20e11dfd394d3efb52fd8a5  odb-2.4.0.zip
3a9c7c3bee71c069e621c3b14b46dc48e5e1b3c9  odb-examples-2.4.0.tar.bz2
2e9e9629db99311e088e252940e6f604f0646710  odb-examples-2.4.0.tar.gz
b0b0b03a8bd274d1bd1aa3c1cb6b177f6b650490  odb-examples-2.4.0.zip
6b8959e58001e165d972ef2057321d6f1ab215f4  odb-tests-2.4.0.tar.bz2
7e6b66a28e70964426b94221c2a324bf2bfa0112  odb-tests-2.4.0.tar.gz
aa08204cc0de44f9e502eb9ee3f59818b661808d  odb-tests-2.4.0.zip


More information about the odb-announcements mailing list