On 30.03.2022 23:00, Ruben Perez via Boost wrote:
Hi all,
I would like to propose my MySQL client library for inclusion in Boost. The library features asynchronous communication with MySQL and MariaDB servers, allowing the user to use txt queries and prepared statements. The library is based on Boost.Asio and follows its asynchronous model (in a similar way Boost.Beast does).
The library is specific to MySQL and MariaDB systems, and is not intended as a SQL framework or ORM. It fits use cases like HTTP servers (possibly already using Beast), ETL pipelines or any other application that needs to access a MySQL database and wants to benefit from Asio's asynchrony.
Please note that the library is a full implementation of MySQL wire protocol and does not use libmysqlclient under the hood.
Great work! Although MariaDB is a fork of MySQL and still to a large degree is compatible, at least in the simple and most common cases, both DBMSs are adding features independently and are diverging more and more. I work at MySQL Engineering at Oracle, and I've seen other attempts to treat MySQL and MariaDB as two variations of the same product, e.g., in packaging in Linux distros and client applications. As the DBMSs diverge more and more, these attempts usually fail, and the DBMSs have to be treated as two completely different DBMSs, like MySQL and Postgres. AFAIK, the basic protocol is still the same in both DBMSs, but new extensions are implemented in one and not the other, and there is no guarantee that they will remain compatible. I wouldn't be surprised if there are already subtle protocol differences when enabling some of the most recent extensions. I believe that in the long term the protocols will diverge more. Is the library designed in a way that can handle growing differences, and maybe a complete protocol incompatibility, in the future? Best regards, Norvald