On Fri, 3 Apr 2020 at 21:04, Mateusz Loskot via Boost
On Fri, 3 Apr 2020 at 20:41, Jeff Garland via Boost
wrote: FYI, I mentioned SOCI in https://lists.boost.org/Archives/boost/2020/03/248307.php
Apologies, that is true. I have had a quick look into SOCI, and I think the aim is quite different than in MySQL-Asio. SOCI has an impressive support for a lot of backends but does not support (to my knowledge) asynchronous operations (it actually employs the official MySQL C library, which does not implement it). My aim was not to provide a universal DB connector, but to provide an implementation interoperable with Boost.Asio that supports the universal async model (callbacks, coroutines and futures). There is actually this mailing thread about async operations in SOCI: https://sourceforge.net/p/soci/mailman/message/20352440/. It mentions here that implementing async functionality in SOCI is difficult because the underlying backends don't support it (including the MySQL one). My library aims to solve these kind of problems, rather than competing with SOCI.
-- not saying it's perfect, best or right -- just that I've used it in production systems and even written a backend for it to a database that isn't supported out of the box. They worked out all the issues for binding custom types like date_time, etc...
Another, thin, approach to binding some types can be found in https://github.com/nanodbc/nanodbc
I see this supports async operations, but not with Asio (seems more C-like). My aim is to make a library that goes well for anyone already using Asio or Beast.