! Need to use SERIALIZABLE isolation level on all databases See private email with subject like "ODB concurrency behavior". ! Add note on PG "transaction terminated after failed statement" [doc] For instance, the schema_catalog::migrate() logic doesn't work in case the schema does not exist (SELECT tries to get the version, fails, and takes down the transaction). Workaround: run schema_version() out of transaction and then decide yourself whether to create or migrate the schema. ! Unsigned C++ to signed database mapping and comparison While ODB can roundtrip the values, comparison at the database level (e.g., in queries will be broken). Probably need to change to use the next signed type. Probably for 3.0.0. ! Still need to update database/factory documentation [doc] This is related to the database return-by-value changes. ! Mac OS excetion/error handling not working (-D in options file) ! Use to_string()/sto*() instead of stringstream [c++11] Those use the "C" locale instead of the default locale. See email from /14-Jul-2015. - Locale issue in Qt Date/Time parsing in SQLite See email from /08-Sep-2015. ! Documentation needed [doc] - points_to pragma - inverse and composite members support/points_to - after/before pragmas (must follow virtual) - (!) database placeholder in modifiers - foreign key in primary key technique - nested container emulation technique - SQL Server only allows CREATE DATABASE in auto-commit mode [mssql] See email from /23-May-2015. - Macro expansion in code fragment pragmas Currently we expand macros in all pragmas. This is probably the wrong semantics for "code fragment" macros like access/get/set. I wonder if there is a way to disable macros expansion for certain parts of the pragma (remember, our pragma can have multiple specifiers). - Document character encoding used to return text for each database [doc] - Add noexcept to move construction and assignment [c++11] Without noexcept some code (e.g., swap()) may have to resorts to copy. ! Command Line Tools required for ODB binary package on Mac OS [macosx] It seems without them there are no standard headers in /usr/include. Need to test and document. ! Private GCC in Mac OS ODB binary crashes on Yosemite [macosx] The symptom is: odb: error: unable to extract profile paths See email from /23-Oct-2014. - Position pragmas in macros don't work #include #define ODB_COUNT(obj, key) \ PRAGMA_DB(view object(obj)) \ struct obj##_count \ { \ PRAGMA_DB(column("count(" + obj::key + ")")) \ int count; \ }; /* #define ODB_COUNT(obj, key) \ struct obj##_count \ { \ int count; \ }; \ PRAGMA_DB(view(obj##_count) object(obj)) \ PRAGMA_DB(member(obj##_count::count) \ column("count(" + obj::key + ")")) \ */ #pragma db object struct test { #pragma db id int id; }; ODB_COUNT(test, id) The reason it doesn't work is because we use the macro expansion point as the location of the pragmas inside the macro. Fixing this properly won't be simple. Perhaps simply document as a limitation where we describe PRAGMA_DB.