Sergei Golubchik <serg@mysql.com> 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 done.
Yes.
- 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 certainly attractive...
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. Thanks, - Kristian.