[odb-announcements] ODB 2.4.0 released

Hi, 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 manual. * 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 guards. * 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 above). * 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 features. A more detailed discussion of the major new features can be found in the following blog post: http://www.codesynthesis.com/~boris/blog/2015/02/11/odb-2-4-0-released/ 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: http://www.codesynthesis.com/products/odb/doc/install-macosx.xhtml http://www.codesynthesis.com/products/odb/doc/install-mingw.xhtml Source code and pre-compiled binary packages for this release are available from the ODB Download page: http://www.codesynthesis.com/products/odb/download.xhtml 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 Enjoy, Boris