[odb-announcements] ODB 2.1.0 released

Boris Kolpackov boris at codesynthesis.com
Tue Sep 18 05:39:11 EDT 2012


Hi,

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

 * The ODB compiler is now capable of automatically discovering accessor and
   modifier functions for inaccessible data members in persistent classes,
   composite value types, and views. It will then use these accessors and
   modifiers in the generated code instead of trying to access such data
   members directly. The names of these functions are derived from the
   data member names and, by default, the ODB compiler will look for names
   in the form: get_foo/set_foo, getFoo/setFoo, getfoo/setfoo, and just
   foo. You can also add custom name derivations with the --accessor-regex
   and --modifier-regex ODB compiler options. For more information, refer
   to Section 3.2, "Declaring Persistent Objects and Values" in the ODB
   manual.

 * New pragmas, get, set, and access, allow the specification of custom
   accessor and modifier expressions for data members in persistent classes,
   composite value types, and views. For more information, refer to Section
   12.4.5, "get/set/access" in the ODB manual as well as the 'access' example
   in the odb-examples package.

 * New pragma, virtual, allows the declaration of virtual data members. A
   virtual data member is an imaginary data member that is only used for
   the purpose of database persistence. This mechanism can be useful to
   aggregate or dis-aggregate real data members, implement the pimpl idiom,
   and to handle third-party types for which names of real data members may
   not be known. For more information, refer to Section 12.4.13, "virtual"
   in the ODB manual as well as the 'access' and 'pimpl' examples in the
   odb-examples package.

 * Support for defining database indexes. Both simple and composite indexes
   can be defined with support for database-specific index types, methods,
   and options. For more information, refer to Section 12.6, "Index
   Definition Pragmas" as well as Sections [13-17].16, "<Database> Index
   Definition" in the ODB manual.

 * Support for mapping extended database types, such as geospatial types,
   user-defined types, and collections. This mechanism allows you to map
   any database type to one of the types for which ODB provides built-in
   support (normally string or binary). The text or binary representation
   of the data can then be extracted into a C++ data type of your choice.
   For more information, refer to Section 12.7, "Database Type Mapping
   Pragmas" in the ODB manual.

 * The Boost profile now provides persistence support for the Boost Multi-
   Index container (boost::multi_index_container). For more information,
   refer to Section 19.3, "Multi-Index Container Library" in the ODB manual.

 * The Boost profile now provides persistence support for the Boost uuid type
   (boost::uuids::uuid). For more information, refer to Section 19.6, "Uuid
   Library" in the ODB manual as well as the 'boost' example in the odb-
   examples package.

 * The Qt profile now provides persistence support for the QUuid type. For
   more information, refer to Section 20.1, "Basic Types" in the ODB manual
   as well as the 'qt' example in the odb-examples package.

 * SQLite improvements: Persistence support for std::wstring on Windows
   (Section 14.1, "SQLite Type Mapping"). Ability to pass the database
   name as std::wstring on Windows (Section 14.2, "SQLite Database Class").
   Ability to specify the virtual filesystem (vfs) module in the database
   constructors (Section 14.2, "SQLite Database Class").

 * Support for mapping C++11 std::array<char, N> and std::array<unsigned
   char, N> types to BLOB/BINARY database types. For more information,
   refer to Sections [13-17].1, "<Database> Type Mapping" in the ODB manual.

 * Support for mapping the char[16] array to PostgreSQL UUID and SQL Server
   UNIQUEIDENTIFIER types. For more information, refer to Sections 15.1,
   "PostgreSQL Type Mapping" and 17.1, "SQL Server Type Mapping" in the
   ODB manual.

 * New option, --output-name, specifies the alternative base name used to
   construct the names of the generated files. Refer to the ODB compiler
   command line interface documentation (man pages) for details.

 * New option, --generate-schema-only, instructs the ODB compiler to
   generate the database schema only. Refer to the ODB compiler command
   line interface documentation (man pages) for details.

 * New option, --at-once, triggers the generation of code for all the input
   files as well as for all the files that they include at once. Refer to
   the ODB compiler command line interface documentation (man pages) for
   details.

 * New options, --sql-interlude and --sql-interlude-file, allow the insertion
   of custom SQL between the DROP and CREATE statements in the generated
   database schema file.

 * New options, --omit-drop and --omit-create, trigger the omission of DROP
   and CREATE statements, respectively, from the generated database schema.

 * New ODB manual Section, 6.3 "Circular Relationships", explains how to
   handle persistent classes with circular dependencies that are defined
   in separate headers.

 * The id() pragma that was used to declare a persistent class without an
   object id has been renamed to no_id.

 * New pragma, definition, allows the specification of an alternative code
   generation point for persistent classes, views, and composite value
   types. This mechanism is primarily useful for converting third-party
   types to ODB composite value types. For more information, refer to
   Section 12.3.7, "Definition" in the ODB manual.

 * The session constructor now accepts an optional bool argument (true by
   default) which indicates whether to make this session current for this
   thread. For more information, refer to Chapter 10, "Session" in the ODB
   manual.

 * Simplified Oracle automatically-assigned object id implementation that
   does not rely on triggers.

 * Support for mapping boost::posix_time::ptime and QDateTime to the DATE
   Oracle type. For more information, refer to Sections 19.4.4 (Boost) and
   20.4.4 (Qt) in the ODB manual.

 * Default SQLite mapping for float and double now allows NULL since SQLite
   treats NaN FLOAT values as NULL. For more information, refer to Section
   14.1, "SQLite Type Mapping" in the ODB manual.

We have also added Visual Studio 2012 and Clang 3.1 to the list of compilers
that we use for testing each release. Specifically, all the runtime libraries,
examples, and tests now come with project/solution files for Visual Studio
2012 in addition to 2010 and 2008. For the complete list of compilers that
were used to test this release, refer to the ODB Platforms and Compilers
page:

http://www.codesynthesis.com/products/odb/platforms.xhtml

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

http://www.codesynthesis.com/~boris/blog/2012/09/18/odb-2-1-0-released/

We would also like to thank everyone who reported bugs, suggested fixes
or new features, as well as tested early versions of this release.

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:

87d58649f5c0f405e8453e02d270da2f87a4ccbb  libodb-2.1.0.tar.bz2
338f800db1d7d1b4cd78851a6421dcbc9b3d0996  libodb-2.1.0.tar.gz
cc510d90c7333c3ee779ed21eff6bc8101fb4b9b  libodb-2.1.0.zip
5c3eb40b834b385e7ac4b3c20f6cd82651abb66d  libodb-boost-2.1.0.tar.bz2
bf0aaf000bf4ae5f29109fb213bec01b626c5331  libodb-boost-2.1.0.tar.gz
20cd82d6d7605c569f023e07a91ad666a9dac5d4  libodb-boost-2.1.0.zip
1bf4e89a16693948b31af2f250ab1fbd5b3615c8  libodb-mssql-2.1.0.tar.bz2
8f14c156d02db9669c15e6a21beb239c83586113  libodb-mssql-2.1.0.tar.gz
7beb4b7462a5a884095ca944c101265d2068f2d3  libodb-mssql-2.1.0.zip
e58eca3465a6c9b278113bc3faa26455a94d040c  libodb-mysql-2.1.0.tar.bz2
529a8a3141de27494107d0c9a210dd0698cbfb55  libodb-mysql-2.1.0.tar.gz
580cef317c20f199ae3098faa57c4d4c80564381  libodb-mysql-2.1.0.zip
f2c92818e89fa06f90d20c48e63c64775f75375c  libodb-oracle-2.1.0.tar.bz2
96022e1e8b7fbac4a72b8302019710b9607f760c  libodb-oracle-2.1.0.tar.gz
18198da3a867e2208affcc38370668cc6747e93c  libodb-oracle-2.1.0.zip
464a970ee1cfef88e7a53ab6f4cd0ae95320cce9  libodb-pgsql-2.1.0.tar.bz2
26c4ac2db75951b93f5a6b6c7aa917e3f7f4bef6  libodb-pgsql-2.1.0.tar.gz
8fd686ab87b52b144e6976a47c1db3745d483d62  libodb-pgsql-2.1.0.zip
ba04acd724ad7253ce7b6d534ee3354c3fcd0951  libodb-qt-2.1.0.tar.bz2
a89dbfc22b85f5efb2788b8c08c7280159caf032  libodb-qt-2.1.0.tar.gz
0dd1c1cb7672b6b1eec57f1e670d67dcc6ac1cbf  libodb-qt-2.1.0.zip
58085bdb5d890cc952594cc288d28db9c93d3349  libodb-sqlite-2.1.0.tar.bz2
f8c16947ec322d989d9526a0f250b132e1bfae64  libodb-sqlite-2.1.0.tar.gz
874e0bfdf740053e6e5bdc3cf134cb954dfdbd2c  libodb-sqlite-2.1.0.zip
4556ab5a60a19170eb0f7376756a07829d87418b  odb-2.1.0-i686-linux-gnu.tar.bz2
2bd23a560579b3ab5f9d66de223d8875f8356a2d  odb-2.1.0-i686-macosx.tar.bz2
9e5be40268ee0650b1f8cb61f92dff06c851ede0  odb-2.1.0-i686-solaris.tar.bz2
15b550ab80b48598aadd84e2dd4f1b4960854c38  odb-2.1.0-i686-windows.zip
82021b5c393d50206d0ba73e9d3a78258dbeb2c9  odb-2.1.0-sparc-solaris.tar.bz2
5e435d952e5262b5de49df0392e375e0d4440515  odb-2.1.0.tar.bz2
cd4cb4d039e184a3d221bb75bd3c4c400fdf2cd5  odb-2.1.0.tar.gz
f5f1c62b8eeaa03b0646d7bb1f43aeac3e6378bb  odb-2.1.0-x86_64-linux-gnu.tar.bz2
d8daf4a2be8c055a39f139f0986fa151fe8b3342  odb-2.1.0.zip
0994d39cc7ab3607b5c6e88f7c16edf32e0d6336  odb-examples-2.1.0.tar.bz2
e097d5771f9cb9e636c1a293ca9e3f6f407d22eb  odb-examples-2.1.0.tar.gz
8d0cf9419c445e92c5e5cc991dd314b4410d2c39  odb-examples-2.1.0.zip
3c5ecd517fc72764ae4ecfca28fba75c2a22454f  odb-tests-2.1.0.tar.bz2
06ebaea3383264ceec9ff9ff05668cf80f461014  odb-tests-2.1.0.tar.gz
3cd8ca94d885d81ffb92dd631b9ba2d2cd50aa25  odb-tests-2.1.0.zip

Enjoy,
	Boris



More information about the odb-announcements mailing list