Hi all, I have been writing an ASIO-based client for MySQL, trying to mimic what Beast is to HTTP. It currently supports SQL queries and prepared statements. It can be viewed here: https://github.com/anarthal/mysql-asio Do you guys think this has the potential to be useful or become part of Boost long term? Any feedback is very welcome. Thanks, Ruben (Anarthal).
On Wed, 4 Mar 2020 at 02:50, Ruben Perez via Boost
Hi all,
I have been writing an ASIO-based client for MySQL, trying to mimic what Beast is to HTTP. It currently supports SQL queries and prepared statements. It can be viewed here:
Will definitely take a look. Such a thing is sorely needed imho. https://github.com/anarthal/mysql-asio
Do you guys think this has the potential to be useful or become part of Boost long term? Any feedback is very welcome.
Thanks, Ruben (Anarthal).
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
-- Richard Hodges hodges.r@gmail.com office: +442032898513 home: +376841522 mobile: +376380212
On Tue, Mar 3, 2020 at 8:50 PM Ruben Perez via Boost
I have been writing an ASIO-based client for MySQL, trying to mimic what Beast is to HTTP. It currently supports SQL queries and prepared statements. It can be viewed here:
https://github.com/anarthal/mysql-asio
Do you guys think this has the potential to be useful or become part of Boost long term? Any feedback is very welcome.
Why just MySQL? I would take more interest in a library capable of supporting many database engines. Or, if not such a variety, at least target ODBC, as you can reach more engines through ODBC drivers. While I understand many people like MySQL, some use cases call for other engines (like SQLite3, providing a lightweight, simple database file without all the overhead of MySQL). For a boost library, I would hope it would not limit the developer to a single engine. This said, it would be interesting to see some sort of library become part of the standard library, and boost offers a track towards standardization. SQL databases are a time tested way to work with data, and I would certainly use a boost library capable of supporting the engines I use. To answer your questions directly... yes, it has the potential to be useful, and perhaps part of boost on a longer term I think, but it should not limit the developer to a single engine. At a minimum, I should think it ought to support ODBC. (BTW, I think Howard Hinnant's date library, or something close to it, is due for inclusion in the standard library soon... we sure as heck need it... so if you aren't already doing so, you might want to track that and support the use of the standard library version of this when it finally comes out). - Trey
On Wed, Mar 4, 2020 at 12:32 PM Joseph Van Riper via Boost
On Tue, Mar 3, 2020 at 8:50 PM Ruben Perez via Boost
wrote: I have been writing an ASIO-based client for MySQL, trying to mimic what Beast is to HTTP. It currently supports SQL queries and prepared statements. It can be viewed here:
https://github.com/anarthal/mysql-asio
Do you guys think this has the potential to be useful or become part of Boost long term? Any feedback is very welcome.
Why just MySQL?
I would take more interest in a library capable of supporting many database engines. Or, if not such a variety, at least target ODBC, as you can reach more engines through ODBC drivers.
While I understand many people like MySQL, some use cases call for other engines (like SQLite3, providing a lightweight, simple database file without all the overhead of MySQL). For a boost library, I would hope it would not limit the developer to a single engine.
+1 I don't see the point of having a Boost wrapper for just one specific backend. People who want that could just use MySQL C or C++ API directly.
El mié., 4 mar. 2020 10:18, Andrey Semashev via Boost
On Wed, Mar 4, 2020 at 12:32 PM Joseph Van Riper via Boost
wrote: On Tue, Mar 3, 2020 at 8:50 PM Ruben Perez via Boost <
boost@lists.boost.org>
wrote:
I have been writing an ASIO-based client for MySQL, trying to mimic
what
Beast is to HTTP. It currently supports SQL queries and prepared statements. It can be viewed here:
https://github.com/anarthal/mysql-asio
Do you guys think this has the potential to be useful or become part of Boost long term? Any feedback is very welcome.
Why just MySQL?
I would take more interest in a library capable of supporting many database engines. Or, if not such a variety, at least target ODBC, as you can reach more engines through ODBC drivers.
While I understand many people like MySQL, some use cases call for other engines (like SQLite3, providing a lightweight, simple database file without all the overhead of MySQL). For a boost library, I would hope it would not limit the developer to a single engine.
+1
I don't see the point of having a Boost wrapper for just one specific backend. People who want that could just use MySQL C or C++ API directly.
Just to clarify, this is *not* a wrapper around the MySQL C API, it is an implementation of the MySQL protocol based in ASIO. I see this as a building block, that can be used by any other bigger, more abstract library providing multiple backends. This library takes the approach of doing a single thing well. It provides no abstraction over MySQL specifics. But it can be seen as a step towards something bigger. The other value I see in this is that it is Asio-based. So it would contribute towards the creation of an Asio-based ecosystem. The aim is to integrate well with any project that uses Asio (e.g. using Beast), which I don't think the MySQL C++ API gives you.
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
On Wed, Mar 4, 2020 at 5:18 AM Ruben Perez via Boost
Just to clarify, this is *not* a wrapper around the MySQL C API, it is an implementation of the MySQL protocol based in ASIO.
I took a quick look, and yes there's quite a bit of work here. It uses the Asio asynchronous model idioms correctly. Regards
On 2020-03-04 16:17, Ruben Perez via Boost wrote:
El mié., 4 mar. 2020 10:18, Andrey Semashev via Boost
escribió: I don't see the point of having a Boost wrapper for just one specific backend. People who want that could just use MySQL C or C++ API directly.
Just to clarify, this is *not* a wrapper around the MySQL C API, it is an implementation of the MySQL protocol based in ASIO.
I see this as a building block, that can be used by any other bigger, more abstract library providing multiple backends. This library takes the approach of doing a single thing well. It provides no abstraction over MySQL specifics. But it can be seen as a step towards something bigger.
The other value I see in this is that it is Asio-based. So it would contribute towards the creation of an Asio-based ecosystem. The aim is to integrate well with any project that uses Asio (e.g. using Beast), which I don't think the MySQL C++ API gives you.
I see, thanks for clarifying. A custom implementation of MySQL protocol could be useful to MySQL and ASIO users, so there is value. But I'm still not quite sure it would be universally useful. I mean, if I was implementing an application that needs integration with an SQL database, I'm not sure I would have picked your library over the other alternatives. I'd be more interested in a universal API that allows me to plug in whatever SQL database engine I need without having to rewrite my code. But that's just my wishful thinking.
Why just MySQL?
Getting something useful released is more important than getting something perfect released. If Ruben has a ready-to-go solution for MySQL, why not make it available to users? It can always be complemented or extended with Oracle, SQLite, ODBC etc etc later. If you try to release the all-encompassing-every-database-under-the-sun solution in one hit, you'll just end up releasing nothing.
On Wed, Mar 4, 2020 at 1:50 PM Richard Hodges via Boost
Why just MySQL?
Getting something useful released is more important than getting something perfect released.
If Ruben has a ready-to-go solution for MySQL, why not make it available to users?
Making it available to users is not the same as making it part of Boost. Boost is known for general purpose libraries, as well as more domain-focused solutions, but it is not a place for wrappers around specific other libraries. Let alone, when the said libraries already have C/C++ API.
It can always be complemented or extended with Oracle, SQLite, ODBC etc etc later.
If the proposed library offers a stable and flexible API that can be backed by multiple implementations then by all means - that would be a very interesting proposal indeed. But the author has to demonstrate that the proposed user API can in fact be supported by more than one backend, so at least two backends need to be presented, and preferably with guidelines and infrastructure for adding more.
On Wed, 4 Mar 2020 at 10:31, Joseph Van Riper via Boost
On Tue, Mar 3, 2020 at 8:50 PM Ruben Perez via Boost
wrote: I have been writing an ASIO-based client for MySQL, trying to mimic what Beast is to HTTP. It currently supports SQL queries and prepared statements. It can be viewed here:
https://github.com/anarthal/mysql-asio
Do you guys think this has the potential to be useful or become part of Boost long term? Any feedback is very welcome.
Why just MySQL?
I would take more interest in a library capable of supporting many database engines. Or, if not such a variety, at least target ODBC, as you can reach more engines through ODBC drivers. [...] For a boost library, I would hope it would not limit the developer to a single engine.
This said, it would be interesting to see some sort of library become part of the standard library, and boost offers a track towards standardization. SQL databases are a time tested way to work with data, and I would certainly use a boost library capable of supporting the engines I use.
FYI, the RDB library is not a new topic on this list. Since I've just got a large Americano, I will dig the archives below :) It's more than a decade old with first proposals arriving in 2004 https://lists.boost.org/Archives/boost//2004/10/74169.php During BoostCon 2009, the Library in Week initiative brainstormed the idea of std::rdb where number of Boost community members participated, see at the bottom of this page https://github.com/boostcon/2009_presentations There used to be a mailing list for std::rdb http://mail-lists.crystalclearsoftware.com/listinfo.cgi/std_rdb-crystalclear... In Sept 2009, Jean-Louis Leroy started arriving with some code for std::rdb, see number of threads: https://lists.boost.org/Archives/boost//2009/09/index.php As https://github.com/soci/soci library with its unique, as for C+98/03, approach by Maciej Sobczak gained some attention, it had been discussed in the context of std::rdb and Boost number of times In 2010, Roland Bock resurrected the topic https://lists.boost.org/Archives/boost//2010/09/170947.php and arrived with a very interesting approach for C++11 https://github.com/rbock/sqlpp11 As long time maintainer of the SOCI library, I had also discussed possibilities to combine both approaches, run-time and compile-time binding, there are some posts in the archives. Roland presented sqlcpp11 on number of conferences in 2014 and 2015, you can find it on youtube. There is also https://github.com/rbock/sqlpp117 Another longish iteration of RDB discussions happened around 2013 when Thomas Neumann proposed DBI paper: https://isocpp.org/blog/2013/03/new-paper-n3612-desiderata-of-a-c11-database... and C++ ISO discussion groups on databases started https://groups.google.com/a/isocpp.org/forum/#!forum/databases Each time the topic re-appeared, discussions were long and detailed, but far from any consensus and authors would drop the idea of submitting their libraries to Boost review. If you remember CMake for/in Boost debates, the RDB had lots in common :) I had been a maintainer of SOCI, a database abstraction library with support for DB2, Firebird, MySQL, Oracle, ODBC, PostgreSQL, SQLite for more than 10 years. Development of such a library is very time consuming, and long-term maintenance is even more time consuming, and often turns into a frustrating and thankless job full of DevOps hurdles, a job impossible to perform well without *multiple* *active* team members with DB backend specific exercise. (e.g. ad-hoc contributors submitting GitHub PRs become eventually more problematic than helpful). Finally, everyone has an opinion on how to get it right. It's just far from being as attractive as a year long gig to get a compact utility into Boost. Best regards, -- Mateusz Loskot, http://mateusz.loskot.net
On Wed, 4 Mar 2020 at 02:50, Ruben Perez via Boost
Hi all,
I have been writing an ASIO-based client for MySQL, trying to mimic what Beast is to HTTP. It currently supports SQL queries and prepared statements. It can be viewed here:
In my opinion (which doesn't count for very much) I think it shows promise, but is not yet mature. I have provided some feedback in the form of raised issues against the repo. Happy to chat on the Cpplang slack channel if you care to join: https://cppalliance.org/slack/
Do you guys think this has the potential to be useful or become part of Boost long term? Any feedback is very welcome.
Thanks, Ruben (Anarthal).
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
-- Richard Hodges hodges.r@gmail.com office: +442032898513 home: +376841522 mobile: +376380212
On Wed, 4 Mar 2020 at 02:50, Ruben Perez via Boost
Hi all,
I have been writing an ASIO-based client for MySQL, trying to mimic what Beast is to HTTP. It currently supports SQL queries and prepared statements. It can be viewed here:
https://github.com/anarthal/mysql-asio
Do you guys think this has the potential to be useful or become part of Boost long term? Any feedback is very welcome.
Hi guys, as you may have seen from my mails on the subject, I think a project like this would be of use to the community at large. Ruben has noticed my enthusiasm and has reached out to ask whether I would consider offering myself as a review manager. I'd be happy to do it, subject to approval by our Review Wizards. Are there any steps I should take? R
Thanks, Ruben (Anarthal).
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
-- Richard Hodges hodges.r@gmail.com office: +442032898513 home: +376841522 mobile: +376380212
On Wed, 22 Apr 2020 at 11:10, Richard Hodges via Boost
On Wed, 4 Mar 2020 at 02:50, Ruben Perez via Boost
wrote: I have been writing an ASIO-based client for MySQL, trying to mimic what Beast is to HTTP. It currently supports SQL queries and prepared statements. It can be viewed here:
https://github.com/anarthal/mysql-asio
Do you guys think this has the potential to be useful or become part of Boost long term? Any feedback is very welcome.
Hi guys, as you may have seen from my mails on the subject, I think a project like this would be of use to the community at large.
Ruben has noticed my enthusiasm and has reached out to ask whether I would consider offering myself as a review manager.
I'd be happy to do it, subject to approval by our Review Wizards.
Sounds good!
Are there any steps I should take?
These are docs on the two processes of submission and review 1. https://www.boost.org/development/submissions.html 2. https://www.boost.org/community/reviews.html Best regards, -- Mateusz Loskot, http://mateusz.loskot.net
participants (6)
-
Andrey Semashev
-
Joseph Van Riper
-
Mateusz Loskot
-
Richard Hodges
-
Ruben Perez
-
Vinnie Falco