maria-developers team mailing list archive
Mailing list archive
Re: WL#3859: Plug-in Service API discussion
Sergei Golubchik <serg@xxxxxxxxx> writes:
> On Feb 27, Kristian Nielsen wrote:
>> This basically means that all data and code needs to be exported via
>> the WL#3859 framework, not using the system linker as is currently
>> - Will tend to discourage making desirable changes, as the procedure becomes
>> more complicated (more work to track versioned API, less flexibitily in
>> what C++ language constructs can be used); and there will be the desire to
>> minimize binary incompatibility.
> On the opposite, it will be easier to do changes, because versioning
> will make them safe and we could have old and new versions supported at
> the same time - that we we can add new features to a service without
> causing binary incompatibility with the existing plugins.
> That's the direction we want to move (and are moving) in.
Thanks for the info Sergei, that helped quite a bit.
At first I though this could introduce limitations. I am thinking for example
of a thing like condition pushdown, where storage engine plugins essentially
have access to the complete item tree. Having to wrap everything in item in an
abstration layer doesn't seem attractive, but now I'm starting to see that it
does not necessarily have to be done that way. In principle under WL#3859 we
could just publish an API that exposes the item tree and bump the version
whenever anything changes in the implementation. (of course having a cleaner
condition pushdown API could be a good thing in itself, but the important
thing is that the WL#3859 interface is flexible and does not restrict anything).
The ability to check at load time for compatibility (rather than crash) is
>> 2. It seems impossible that we can keep the Sun/MySQL API versions and
>> the MariaDB API versions 100% synchronised. So how will we handle
>> version compatibility (ie. Sun/MySQL version 0x0109 may be different
>> from Maria version 0x0109 due to different paces of development)? Will
>> all plugins need to track two different versions, one for Sun/MySQL
>> and one for MariaDB? Or will we somehow coordinate between the two
>> teams to avoid version conflicts?
I talked to Mats Kindahl, he said the code is not pushed anywhere available
yet. But I plan to take a closer look when it is, and think more about the
versioning then. Maybe it is as simple as just saying MySQL, MariaDB, Drizzle
etc. are not plugin binary compatible.