← Back to team overview

maria-developers team mailing list archive

Re: MariaDB plugin interface and embedded library compatibility

 

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



References