[Maria-discuss] libmariadb.so.3 compatibility
Hello, I'm currently quite confused about the *libmariadb* library. In MariaDB 10.1.24 there are: " libmysqlclient_r.so -> libmysqlclient.so " " libmysqlclient.so -> libmysqlclient.so.18 " " libmysqlclient.so.18 -> libmysqlclient.so.18.0.0 " " libmysqlclient.so.18.0.0 " In MariaDB 10.2.6 there are: " libmariadb.so -> libmariadb.so.3 " In MariaDB-connector-c v2.3.3 there are: " libmysqlclient.so -> libmariadb.so " " libmysqlclient_r.so -> libmariadb.so " " libmariadb.so -> libmariadb.so.2 " " libmariadb.so.2 " -- 1) is "libmariadb.so.2" compatibile with "libmysqlclient.so.18.0.0"? Both API and ABI? 2) is "libmariadb.so.3" compatibile with "libmysqlclient.so.18.0.0"? Both API and ABI? 3) is "libmariadb.so.2" compatibile with "libmariadb.so.3"? Both API and ABI? Many packages in Fedora depends on "libmysqlclient.so". I would like to pack 10.2 to Fedora, but I can't before all those packages move to the libmariadb library. It would be considerably easier transfer for me, if all those libraries were compatibile, so I could provide symlinks (simmilar as in the connector C), and provide time for all those packages in Fedora to move safely. -- Michal Schorm Associate Software Engineer Core Services - Databases Team Red Hat
Hi Michal, libmariadb.so.2 is MariaDB Connector/C 2.x, while libmariadb.so.3 refers to MariaDB Connector/C 3.0 (GA will be released together with next MariaDB 10.2 release in July =10.2.7). Both versions are backwards compatible with libmysql.so.18 - API and ABI wise, unless applications will abuse internals of MYSQL or MYSQL_STMT structures instead of using API functions (like mysql->reconnect=1 instead of using mysql_options(mysql, MYSQL_OPT_RECONNECT, &value). Connector/C versions < 2.2.2 are not 100% ABI compatible, since the plugin interface differs (MySQL changed the interface without bumping the interface number years ago). Compared to libmysql.so.18 libmariadb.so.3 offers additional functions and features: Functions: - mariadb_cancel - mariadb_connection - mariadb_get_charset_by_name - mariadb_stmt_execute_direct - mariadb_get_charset_by_nr - mariadb_get_info - mariadb_get_infov - mysql_optionsv Functionality: - prepare and execute in one step (mariadb_stmt_execute_direct) - bulk insert for prepared statements (will be supported in 10.2.7) - TLS/SSL: - finger print verification of host certificate - GnuTLS, Schannel (Windows), OpenSSL or LibreSSL support - Connection plugins (e.g. for replication/failover, tracing, tunelling etc.). - Kerberos authentication plugin Hope this helps! /Georg On Wed, Jun 7, 2017 at 4:50 PM, Michal Schorm <mschorm@redhat.com> wrote:
Hello,
I'm currently quite confused about the *libmariadb* library.
In MariaDB 10.1.24 there are: " libmysqlclient_r.so -> libmysqlclient.so " " libmysqlclient.so -> libmysqlclient.so.18 " " libmysqlclient.so.18 -> libmysqlclient.so.18.0.0 " " libmysqlclient.so.18.0.0 "
In MariaDB 10.2.6 there are: " libmariadb.so -> libmariadb.so.3 "
In MariaDB-connector-c v2.3.3 there are: " libmysqlclient.so -> libmariadb.so " " libmysqlclient_r.so -> libmariadb.so " " libmariadb.so -> libmariadb.so.2 " " libmariadb.so.2 "
--
1) is "libmariadb.so.2" compatibile with "libmysqlclient.so.18.0.0"? Both API and ABI? 2) is "libmariadb.so.3" compatibile with "libmysqlclient.so.18.0.0"? Both API and ABI? 3) is "libmariadb.so.2" compatibile with "libmariadb.so.3"? Both API and ABI?
Many packages in Fedora depends on "libmysqlclient.so". I would like to pack 10.2 to Fedora, but I can't before all those packages move to the libmariadb library. It would be considerably easier transfer for me, if all those libraries were compatibile, so I could provide symlinks (simmilar as in the connector C), and provide time for all those packages in Fedora to move safely.
--
Michal Schorm Associate Software Engineer Core Services - Databases Team Red Hat
_______________________________________________ Mailing list: https://launchpad.net/~maria-developers Post to : maria-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~maria-developers More help : https://help.launchpad.net/ListHelp
Hi Georg
Hope this helps! Yes, That's exactly the answer I was looking for. Thanks!
I'll add those mysql symlinks to the libmariadb.so and propose a change in Fedora. (Which should not rise any problem, because of the API & ABI compatibility) While we talk about it, currently, you provide 2 binaries: mysql_config mariadb_config I guess, you plan to remove mysql_config some versions later? Are there any notable (compatibility) differences between them? -- Michal Schorm Associate Software Engineer Core Services - Databases Team Red Hat On Thu, Jun 8, 2017 at 9:12 AM, G R <holzboote@googlemail.com> wrote:
Hi Michal,
libmariadb.so.2 is MariaDB Connector/C 2.x, while libmariadb.so.3 refers to MariaDB Connector/C 3.0 (GA will be released together with next MariaDB 10.2 release in July =10.2.7).
Both versions are backwards compatible with libmysql.so.18 - API and ABI wise, unless applications will abuse internals of MYSQL or MYSQL_STMT structures instead of using API functions (like mysql->reconnect=1 instead of using mysql_options(mysql, MYSQL_OPT_RECONNECT, &value).
Connector/C versions < 2.2.2 are not 100% ABI compatible, since the plugin interface differs (MySQL changed the interface without bumping the interface number years ago).
Compared to libmysql.so.18 libmariadb.so.3 offers additional functions and features:
Functions: - mariadb_cancel - mariadb_connection - mariadb_get_charset_by_name - mariadb_stmt_execute_direct - mariadb_get_charset_by_nr - mariadb_get_info - mariadb_get_infov - mysql_optionsv
Functionality: - prepare and execute in one step (mariadb_stmt_execute_direct) - bulk insert for prepared statements (will be supported in 10.2.7) - TLS/SSL: - finger print verification of host certificate - GnuTLS, Schannel (Windows), OpenSSL or LibreSSL support - Connection plugins (e.g. for replication/failover, tracing, tunelling etc.). - Kerberos authentication plugin
Hope this helps!
/Georg
On Wed, Jun 7, 2017 at 4:50 PM, Michal Schorm <mschorm@redhat.com> wrote:
Hello,
I'm currently quite confused about the *libmariadb* library.
In MariaDB 10.1.24 there are: " libmysqlclient_r.so -> libmysqlclient.so " " libmysqlclient.so -> libmysqlclient.so.18 " " libmysqlclient.so.18 -> libmysqlclient.so.18.0.0 " " libmysqlclient.so.18.0.0 "
In MariaDB 10.2.6 there are: " libmariadb.so -> libmariadb.so.3 "
In MariaDB-connector-c v2.3.3 there are: " libmysqlclient.so -> libmariadb.so " " libmysqlclient_r.so -> libmariadb.so " " libmariadb.so -> libmariadb.so.2 " " libmariadb.so.2 "
--
1) is "libmariadb.so.2" compatibile with "libmysqlclient.so.18.0.0"? Both API and ABI? 2) is "libmariadb.so.3" compatibile with "libmysqlclient.so.18.0.0"? Both API and ABI? 3) is "libmariadb.so.2" compatibile with "libmariadb.so.3"? Both API and ABI?
Many packages in Fedora depends on "libmysqlclient.so". I would like to pack 10.2 to Fedora, but I can't before all those packages move to the libmariadb library. It would be considerably easier transfer for me, if all those libraries were compatibile, so I could provide symlinks (simmilar as in the connector C), and provide time for all those packages in Fedora to move safely.
--
Michal Schorm Associate Software Engineer Core Services - Databases Team Red Hat
_______________________________________________ Mailing list: https://launchpad.net/~maria-developers Post to : maria-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~maria-developers More help : https://help.launchpad.net/ListHelp
participants (2)
-
G R
-
Michal Schorm