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