RATIONALE This is to make pluggable storage engines (like InnoDB) work between multiple MySQL versions. SUMMARY Ensure that storage engine interface is stable between versions (or when it is not, we know exactly what part has changed.) DELIVERABLE: Framework to test storage engine API, so that build team (or others) can check compatibility between versions. BACKGROUND Storage Engine API is our external API now, Changes to the API needs to be monitored with a strong check framework. create a abi_check rule that will generate stubs from the existing API and will compare it against pre-existing canon files and will notify of changes in the same. REFERENCES - WL#4394 Changes in the storage engine API versioning for InnoDB
just like we have include/mysql_h.ic we will have interface files for all include files that a storage engine plugin needs - in particular plugin.h and mysql_priv.h And rules in a makefile to check that the interface hasn't changed. When this is done and pushbuild started to ensure this, we can decouple storage engine API version from the server version.
Any change in the canon files(.h.pp) should mark the change uniquely in pushbuild (currently such changes get marked in yellow) and it should trigger an email to concerned people.