Hi Ruben,
https://anarthal.github.io/mysql/mysql/ref/boost__mysql__connection/async_qu... The handler signature for this operation is void(boost::mysql::error_code, boost::mysql::resultset<Stream>)
Hier the completion handler is returning an io object i.e. boost::mysql::resultset, which is also unusual as far as I can see. Does that play nice with executors? I would prefer having the completion handler return config parameters with which I can instantiate a boost::mysql::resultset myself in my desired executor.
The three I/O objects this library provides (connection, resultset and prepared_statement) are just proxies for the underlying Stream I/O object in terms of the executor (i.e. they just return the underlying Stream::get_executor() value).
My expectation is that the communication with the mysql server occurs
only through the connection class. It feels awkward to me that I need
these proxy objects when there is a connection object around, the
lifetime of these proxies are bound to it for example.
Some further points:
- A row in your library is basically std::vector<value>, which means
std::vector<row> is pessimized storage for rows with same length.
Aren't rows always equal in length for a table?
- Your value class is a variant behind the scenes i.e.
boost::variant2::variant