odb/2.5.0-b.27

[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.27
license GPL-3.0-only
repository https://pkg.cppget.org/1/beta
download odb-2.5.0-b.27.tar.gz
sha256 68152d24f9d7a66ffb6f842352924d3fab660d1d4567f93221e6e10386739642
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 (3)

libstudxml == 1.1.0-b.10
libcutl ~1.11.0
* cli ^1.2.0 ? (...)

Requires (2)

host
c++11

Reviews

fail 0
pass 1

Builds

toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_ubuntu_22.04-gcc_11-bindist
timestamp 2025-01-13 05:35:38 UTC (02:00:01 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_11-gcc_12.1
timestamp 2025-01-13 05:32:16 UTC (02:03:24 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_11-gcc_10.2-bindist
timestamp 2025-01-13 05:31:52 UTC (02:03:47 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_rhel_9.2-gcc_11-bindist
timestamp 2025-01-13 05:31:39 UTC (02:04:00 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_9-gcc_8.4
timestamp 2025-01-13 05:29:04 UTC (02:06:35 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_11-gcc_11.3
timestamp 2025-01-13 05:26:10 UTC (02:09:29 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_10-gcc_10.2
timestamp 2025-01-13 05:26:07 UTC (02:09:32 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_9-gcc_7.4
timestamp 2025-01-13 05:25:20 UTC (02:10:19 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_10-gcc_9.3
timestamp 2025-01-13 05:21:22 UTC (02:14:18 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-ndebug_O3
timestamp 2025-01-13 02:59:46 UTC (04:35:53 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-O3
timestamp 2025-01-13 02:51:21 UTC (04:44:18 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14
timestamp 2025-01-13 02:41:42 UTC (04:53:58 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_13
timestamp 2025-01-11 11:17:14 UTC (01 20:18:26 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew-O3
timestamp 2025-01-11 02:14:55 UTC (02 05:20:44 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew
timestamp 2025-01-11 02:13:53 UTC (02 05:21:46 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_fedora_39-gcc_13-bindist
timestamp 2025-01-10 23:00:32 UTC (02 08:35:07 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14-ndebug_O3
timestamp 2025-01-10 09:51:36 UTC (02 21:44:03 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14-O3
timestamp 2025-01-10 09:41:51 UTC (02 21:53:49 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_fedora_40-gcc_14-bindist
timestamp 2025-01-10 09:33:56 UTC (02 22:01:43 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-w64-mingw32
tgt config windows_10-gcc_13.2_mingw_w64-O2
timestamp 2025-01-10 09:30:59 UTC (02 22:04:40 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_12-relocatable
timestamp 2025-01-10 09:29:56 UTC (02 22:05:44 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_12-bindist
timestamp 2025-01-10 09:29:08 UTC (02 22:06:31 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-w64-mingw32
tgt config windows_10-gcc_13.2_mingw_w64-relocatable
timestamp 2025-01-10 09:28:18 UTC (02 22:07:21 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-w64-mingw32
tgt config windows_10-gcc_13.2_mingw_w64
timestamp 2025-01-10 09:26:56 UTC (02 22:08:43 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14
timestamp 2025-01-10 09:25:25 UTC (02 22:10:15 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_ubuntu_24.04-gcc_13-bindist
timestamp 2025-01-10 09:23:31 UTC (02 22:12:08 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_13.1
timestamp 2025-01-10 09:18:07 UTC (02 22:17:32 days ago)
result success | log | rebuild
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14-static_O3
result excluded (implementation uses plugins and requires -fPIC)
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-static_O3
result excluded (implementation uses plugins and requires -fPIC)
target x86_64-linux-gnu
tgt config linux_debian_12-clang_17
result excluded (requires GCC with plugin support enabled)
target x86_64-linux-gnu
tgt config linux_debian_12-clang_17_libc++
result excluded (requires GCC with plugin support enabled)
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18
result excluded (requires GCC with plugin support enabled)
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18-O3
result excluded (requires GCC with plugin support enabled)
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18-static_O3
result excluded (requires GCC with plugin support enabled)
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18_libc++
result excluded (requires GCC with plugin support enabled)
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-O3
result excluded (requires GCC with plugin support enabled)
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-static_O3
result excluded (requires GCC with plugin support enabled)
target aarch64-linux-gnu
tgt config linux_debian_12-clang_17
result excluded (requires GCC with plugin support enabled)
target aarch64-linux-gnu
tgt config linux_debian_12-clang_17_libc++
result excluded (requires GCC with plugin support enabled)
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18
result excluded (requires GCC with plugin support enabled)
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18-O3
result excluded (requires GCC with plugin support enabled)
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18-static_O3
result excluded (requires GCC with plugin support enabled)
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++
result excluded (requires GCC with plugin support enabled)
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-O3
result excluded (requires GCC with plugin support enabled)
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-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-darwin23.5.0
tgt config macos_14-clang_15.0
result excluded (requires GCC with plugin support enabled)
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0-O3
result excluded (requires GCC with plugin support enabled)
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0-static_O3
result excluded (requires GCC with plugin support enabled)
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew-static_O3
result excluded (implementation uses plugins and requires -fPIC)
target x86_64-freebsd13.3
tgt config freebsd_13-clang_17
result excluded (requires GCC with plugin support enabled)
target x86_64-freebsd14.1
tgt config freebsd_14-clang_18
result excluded (requires GCC with plugin support enabled)
target x86_64-freebsd14.1
tgt config freebsd_14-clang_18-O3
result excluded (requires GCC with plugin support enabled)
target x86_64-freebsd14.1
tgt config freebsd_14-clang_18-static_O3
result excluded (requires GCC with plugin support enabled)
target x86_64-w64-mingw32
tgt config windows_10-gcc_13.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.8
result excluded (requires MinGW GCC)
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.8-O2
result excluded (requires MinGW GCC)
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.8-static_O2
result excluded (requires MinGW GCC)
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.10
result excluded (requires MinGW GCC)
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.10-O2
result excluded (requires MinGW GCC)
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.10-static_O2
result excluded (requires MinGW GCC)
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_17_msvc_msvc_17.10
result excluded (requires MinGW GCC)
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_18_llvm_msvc_17.10
result excluded (requires MinGW GCC)
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_18_llvm_msvc_17.10-O2
result excluded (requires MinGW GCC)
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_18_llvm_msvc_17.10-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 custom table definition options in addition to column
   definition options. For details, refer to Section 14.1.16, "options" in
   the ODB 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... More