← Back to team overview

maria-discuss team mailing list archive

MariaDB Connector C 3.1 ABI contract broken in latest release

 

Hello!

After uploading MariaDB 10.3.38 in Debian I started seeing reports about
libmariadb3 being broken for some consumers.

Turns out that the function mysql_get_client_version() had a major behavior
change in the latest MariaDB Connector C 3.1.20 which is embedded in the
MariaDB 10.3 build.

Details in PR
https://github.com/mariadb-corporation/mariadb-connector-c/pull/219.
Affected library consumers are listed in
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1031863#86

Unfortunately it might be too late to fix this, the milk is already spilled.

Could you please in future keep as the engineering policy that *libraries
are not allowed to have backwards-incompatible changes* unless the
soname/version is also bumped.

You might add a new symbol in an existing library version without causing
breakage in library consumers, but you cannot remove any symbols/functions,
or change their behavior significantly. In this case you completely changed
what version the library returns.

Please acknowledge these base rules and be more diligent in the future to
avoid risks.

Also, if you want to introduce libmariadb4, please do it on MariaDB 11.0 or
newer only, and don't change any ABI in existing stable releases of
libmariadb3.

Thanks!