Hi, Honza! On Jan 21, Honza Horak wrote:
Hi guys,
I'm not able to find any information about compatibility assurance of server side -- i.e plugin interface and libmysqld.so library. I expect both should have stable API at least for one minor version across bugfix releases, but I don't believe that libmysqld.so is able to preserve ABI compatibility, since the set of exported symbols there is really huge.
Can you, please, provide some simple statement (ideally as an article) what is your best afford and if we can expect API/ABI of plugin/libmysqld.so interfaces?
libmysqld.so API is stable as long as one uses only the documented client-server API. One can link with libmysqlclient or libmysqld, but the API doesn't change. If one invokes internal libmysqld.so functions directly - there are no promises about that, they can change even in a minor version. Plugin interfaces do not change as long as the plugin API version doesn't change. All plugin-related interfaces are versioned internally and the server compares plugin API versions before running a plugin. Currently in MariaDB 5.5 there are 17 versions protecting various parts of the plugin API. There are no promises when a particular version will or will not change, but practically, API versions for storage engines, information_schema tables and daemon plugins change with every bugfix release. While other 14 versions change very rarely, less than once per major release. Regards, Sergei