On Saturday, 5 March 2016 at 13:13:09 UTC, Jacob Carlborg wrote:
On 2016-03-05 11:23, Saurabh Das wrote:

A little late to the party, nevertheless: Thanks for doing this, it will
be super-helpful!

My only feature request will be: please make it work with minimal effort
with Vibe.D! :)

Yeah, that's really important. Unfortunately it looks like a synchronous interface is prioritized :(.


I'm definitely going to start working in async capability (or more accurately, non-blocking) into the interface. Both models are essential and there are strong use cases for both, but I know there is a lot of interest in NBIO for vibe.d compatibility. This is challenging and, as many are aware, the C clients for SQL databases have traditionally been synchronous only. One suggested approach is to fork the driver source and change the I/O calls to be non-blocking. Another is to implement a non-blocking driver directly against the wire protocol (a "native" driver). These are limited options, but to the extent this approach is viable in some cases (mysql-native for example), they could be adapted to a standard interface. The good news is that some databases do have (or are working on) non-blocking support in their C clients. The webscalesql mysql fork, for example, has a non-blocking client that is in production and their client works with regular mysql databases. That fork should eventually be merged back into mysql (or may have been already). Postgres also provides non-blocking support. These are two cases that I'm targeting for initial reference implementations.





Reply via email to