odb/2.5.0-b.23

[full]

ODB compiler

ODB is an object-relational mapping (ORM) system for C++. It provides
tools, APIs, and library support that allow you to persist C++ objects
to a relational database (RDBMS) without having to deal with tables,
columns, or SQL and without manually writing any of the mapping code.
For more information see:

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

This package contains the ODB compiler and the ODB system documentation.

See the NEWS file for the user-visible changes from the previous release.

See... More
version 2.5.0-b.23
license GPL-3.0-only
repository https://pkg.cppget.org/1/beta
download odb-2.5.0-b.23.tar.gz
sha256 4ae61740227f6c2c642c76cb686bdee2b28f448c24648e9c7135414b2e53fe6f
project odb
url www.codesynthesis.com/products/odb/
doc-url www.codesynthesis.com/products/odb/doc/manual.xhtml
src-url git.codesynthesis.com/cgit/odb/odb/
topics C++ORMsource code generationobject persistencerelational database

Depends (2)

libstudxml == 1.1.0-b.10
libcutl == 1.11.0-b.9

Requires (2)

host
c++11

Builds

toolchain public-0.16.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_13-ndebug_O3
timestamp 2024-02-25 12:50:02 UTC (03:10:02 hours ago)
result warning (update) | warning (install) | log | rebuild
toolchain public-0.16.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_13-O3
timestamp 2024-02-25 12:49:54 UTC (03:10:11 hours ago)
result warning (update) | warning (install) | log | rebuild
toolchain public-0.16.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_13
timestamp 2024-02-25 12:46:40 UTC (03:13:24 hours ago)
result warning (update) | warning (install) | log | rebuild
toolchain public-0.16.0
target aarch64-linux-gnu
tgt config linux_debian_11-gcc_12
timestamp 2024-02-25 09:34:01 UTC (06:26:03 hours ago)
result success | log | rebuild
toolchain public-0.16.0
target x86_64-linux-gnu
tgt config linux_fedora_37-gcc_12.2-bindist
timestamp 2024-02-24 03:04:10 UTC (01 12:55:54 days ago)
result success | log | rebuild
toolchain public-0.16.0
target x86_64-w64-mingw32
tgt config windows_10-gcc_12.2_mingw_w64
timestamp 2024-02-24 02:13:47 UTC (01 13:46:17 days ago)
result success | log | rebuild
toolchain public-0.16.0
target x86_64-w64-mingw32
tgt config windows_10-gcc_12.2_mingw_w64-O2
timestamp 2024-02-24 01:57:44 UTC (01 14:02:20 days ago)
result success | log | rebuild
toolchain public-0.16.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_12-bindist
timestamp 2024-02-24 00:31:38 UTC (01 15:28:27 days ago)
result success | log | rebuild
toolchain public-0.16.0
target x86_64-linux-gnu
tgt config linux_debian_11-gcc_12.1
timestamp 2024-02-24 00:19:36 UTC (01 15:40:28 days ago)
result success | log | rebuild
toolchain public-0.16.0
target x86_64-apple-darwin22.5.0
tgt config macos_13-gcc_13_homebrew
timestamp 2024-02-23 13:00:33 UTC (02 02:59:32 days ago)
result warning (update) | warning (install) | log | rebuild
toolchain public-0.16.0
target x86_64-apple-darwin22.5.0
tgt config macos_13-gcc_13_homebrew-O3
timestamp 2024-02-23 12:26:45 UTC (02 03:33:20 days ago)
result warning (update) | warning (install) | log | rebuild
toolchain public-0.16.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_13.1-ndebug_O3
timestamp 2024-02-23 11:46:47 UTC (02 04:13:17 days ago)
result warning (update) | warning (install) | log | rebuild
toolchain public-0.16.0
target x86_64-linux-gnu
tgt config linux_fedora_38-gcc_13-bindist
timestamp 2024-02-23 11:46:05 UTC (02 04:13:59 days ago)
result warning (update) | warning (install) | log | rebuild
toolchain public-0.16.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_13.1-O3
timestamp 2024-02-23 11:45:56 UTC (02 04:14:08 days ago)
result warning (update) | warning (install) | log | rebuild
toolchain public-0.16.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_13.1
timestamp 2024-02-23 11:44:39 UTC (02 04:15:25 days ago)
result warning (update) | warning (install) | log | rebuild
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_13.1-static_O3
result excluded (implementation uses plugins and requires -fPIC)
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_13-static_O3
result excluded (implementation uses plugins and requires -fPIC)
target x86_64-linux-gnu
tgt config linux_debian_12-clang_15.0
result excluded (requires GCC with plugin support enabled)
target x86_64-linux-gnu
tgt config linux_debian_12-clang_15.0_libc++
result excluded (requires GCC with plugin support enabled)
target x86_64-linux-gnu
tgt config linux_debian_12-clang_16.0
result excluded (requires GCC with plugin support enabled)
target x86_64-linux-gnu
tgt config linux_debian_12-clang_16.0-O3
result excluded (requires GCC with plugin support enabled)
target x86_64-linux-gnu
tgt config linux_debian_12-clang_16.0-static_O3
result excluded (requires GCC with plugin support enabled)
target x86_64-linux-gnu
tgt config linux_debian_12-clang_16.0_libc++
result excluded (requires GCC with plugin support enabled)
target x86_64-linux-gnu
tgt config linux_debian_12-clang_16.0_libc++-O3
result excluded (requires GCC with plugin support enabled)
target x86_64-linux-gnu
tgt config linux_debian_12-clang_16.0_libc++-static_O3
result excluded (requires GCC with plugin support enabled)
target aarch64-linux-gnu
tgt config linux_debian_12-clang_15
result excluded (requires GCC with plugin support enabled)
target aarch64-linux-gnu
tgt config linux_debian_12-clang_15_libc++
result excluded (requires GCC with plugin support enabled)
target aarch64-linux-gnu
tgt config linux_debian_12-clang_16
result excluded (requires GCC with plugin support enabled)
target aarch64-linux-gnu
tgt config linux_debian_12-clang_16-O3
result excluded (requires GCC with plugin support enabled)
target aarch64-linux-gnu
tgt config linux_debian_12-clang_16-static_O3
result excluded (requires GCC with plugin support enabled)
target aarch64-linux-gnu
tgt config linux_debian_12-clang_16_libc++
result excluded (requires GCC with plugin support enabled)
target aarch64-linux-gnu
tgt config linux_debian_12-clang_16_libc++-O3
result excluded (requires GCC with plugin support enabled)
target aarch64-linux-gnu
tgt config linux_debian_12-clang_16_libc++-static_O3
result excluded (requires GCC with plugin support enabled)
target x86_64-apple-darwin22.5.0
tgt config macos_13-clang_14.0
result excluded (requires GCC with plugin support enabled)
target x86_64-apple-darwin22.5.0
tgt config macos_13-clang_14.0-O3
result excluded (requires GCC with plugin support enabled)
target x86_64-apple-darwin22.5.0
tgt config macos_13-clang_14.0-static_O3
result excluded (requires GCC with plugin support enabled)
target x86_64-apple-darwin22.5.0
tgt config macos_13-clang_15.0
result excluded (requires GCC with plugin support enabled)
target x86_64-apple-darwin22.5.0
tgt config macos_13-clang_15.0-O3
result excluded (requires GCC with plugin support enabled)
target x86_64-apple-darwin22.5.0
tgt config macos_13-clang_15.0-static_O3
result excluded (requires GCC with plugin support enabled)
target x86_64-apple-darwin22.5.0
tgt config macos_13-gcc_13_homebrew-static_O3
result excluded (implementation uses plugins and requires -fPIC)
target x86_64-freebsd12.4
tgt config freebsd_12-clang_13.0
result excluded (requires GCC with plugin support enabled)
target x86_64-freebsd13.2
tgt config freebsd_13-clang_14.0
result excluded (requires GCC with plugin support enabled)
target x86_64-freebsd13.2
tgt config freebsd_13-clang_14.0-O3
result excluded (requires GCC with plugin support enabled)
target x86_64-freebsd13.2
tgt config freebsd_13-clang_14.0-static_O3
result excluded (requires GCC with plugin support enabled)
target x86_64-w64-mingw32
tgt config windows_10-gcc_12.2_mingw_w64-static_O2
result excluded (implementation uses plugins and requires -fPIC)
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.5
result excluded (requires MinGW GCC)
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.6
result excluded (requires MinGW GCC)
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.6-O2
result excluded (requires MinGW GCC)
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.6-static_O2
result excluded (requires MinGW GCC)
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_15.0_msvc_msvc_17.6
result excluded (requires MinGW GCC)
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_16.0_llvm_msvc_17.6
result excluded (requires MinGW GCC)
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_16.0_llvm_msvc_17.6-O2
result excluded (requires MinGW GCC)
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_16.0_llvm_msvc_17.6-static_O2
result excluded (requires MinGW GCC)

Changes

Version 2.5.0

 * Support for mapping C++ types as other C++ types. For example:

   #pragma db map type(bool) as(std::string) \
     to((?) ? "true" : "false") from((?) == "true")

   @@ Ref to the manual.

 * Support for nested object ids. Now the 'id' pragma specifier can optionally
   include the data member path to the id inside a composite value. For
   example:

   #pragma db id(first)
   std::pair<int, int> p;

   Note that one somewhat counter-intuitive aspect of this new feature is
   that the whole member marked with id ('p' in the above example) and not
   just the actual id member ('p.first' in the above example) is treated as
   readonly.

   Such nested id also cannot be automatically assigned ('auto' specifier).

 * Support for defining views as instantiations of C++ class templates,
   similar to objects and composite value types.

 * Allow the use of object pointers as map keys. Also remove the restriction
   for map keys and set values to be NOT NULL.

 * New 'points_to' pragma allows the establishment of relationship without
   using object pointers.

 * The 'inverse' pragma now supports nested data members.

 * Helper header (<odb/nested-container.hxx>) for nested container emulation.
   It is still fairly experimental and only supports vector<vector<T>>. For
   example:

   #include <odb/nested-container.hxx>

   #pragma db object
   class package
   {
     using licenses_type = std::vector<std::string>
     using license_alternatives_type = std::vector<licenses_type>

     license_alternatives_type license_alternatives;

     // Database mapping.
     //
     using _license_key = odb::nested_key<licenses_type>;
     using _licenses_type = std::map<_license_key, std::string>;

     #pragma db value(_license_key)
     #pragma db member(_license_key::outer) column("alternative_index")
     #pragma db member(_license_key::inner) column("index")

     #pragma db member(license_alternatives) id_column("") value_column("")
     #pragma db member(licenses)                                       \
       virtual(_licenses_type)                                         \
       after(license_alternatives)                                     \
       get(odb::nested_get (this.license_alternatives))                \
       set(odb::nested_set (this.license_alternatives, std::move (?))) \
       id_column("") key_column("") value_column("license")
   };

 * Database classes are now move-constructible. This means they can be
   returned by value from a function in C++11.

 * Support for bulk operations in PostgreSQL 14 using the new pipeline mode.
   For details on bulk operations see Section 15.3, "Bulk Database Operations"
   in the ODB manual. Note that while this functionality requires libpq
   version 14 or later, it should be usable with PostgreSQL servers version
   7.4 or later. The development of this support was sponsored by Qube
   Research & Technologies Limited.

 * Support for SQLite ATTACH DATABASE. Attached databases are represented as
   special odb::sqlite::database instances. @@ TODO: doc ref.

 * Support for SQLite incremental BLOB/TEXT I/O (the sqlite3_blob_open()
   functionality). For details, refer to Section 18.1.3, "Incremental
   BLOB/TEXT I/O" in the ODB manual.

 * In PostgreSQL a SELECT statement in a view that is prefixed with the
   /*CALL*/ comment is recognized and handled as a stored procedure call.

 * Due to warnings issued by some compiler, std::auto_ptr is no longer mapped
   as an object pointer or wrapper in the C++11 mode. Use std::unique_ptr
   instead.

Version 2.4.0

 * 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.

 * 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.

 * 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.
 ... More