Details
Description
We are trying to switch from mysql 5.5 to mariadb 10.1, but ran into an unsolvable (for us) binary incompatibility problem in libmysqlclient. I kept the priority for this ticket as the default (major), because it's a complete blocker for us, but I understand that this is a niche problem and might be more of a feature request.
Basically, we use a greenthreads implementation for Perl (the only way to do concurrent sql requests in Perl transparently).
For this, we hook vio_write, vio_read and other "methods" in the vio structure. This has worked for many years in the past, but no longer works with mariadb 10.1 (no other mariadb versions tested).
The minor problem is that the vio functions are no longer exported, which is why cannot check for binary compatibility with the library. The major issue is that sendto/recvfrom and possibly other calls are now hardcoded into the mariadb client - previous versions used the vio->read, vio->write and related function pointers.
As a result, our threads now block the whole process as soon as a sql statement is called, with no way to hook them.
We cannot use the async interface because that requires rewriting all SQL interactions.
My question is: is this considered a bug and will never change, or is this merely an oversight and a fix will be issues?
I understand that vio doesn't look like a very documented feature, but violite.h is installed on most distributions, so it's likely that other software depoends on it as well. Also, there is no alternative to hooking vio for greenthreads implementations - changing the API means rewriting all software that uses it.
I hope future releases of libmysqlclient will again be hookable to allow greenthreads implementations.
Thanks for your time!
Gliffy Diagrams
Attachments
Activity
- All
- Comments
- Work Log
- History
- Activity
- Transitions
I suppose it happened during libmysqlclient refactoring, and if so, it was intentional; I'm passing this to Sergei Golubchik to decide whether it can be reverted.