← Back to team overview

maria-discuss team mailing list archive

Re: [Maria-developers] libmariadb.so.3 compatibility

 

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@xxxxxxxxxx> 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@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~maria-developers
> More help   : https://help.launchpad.net/ListHelp
>
>

Follow ups

References