Mailinglist Archive: opensuse-factory (454 mails)

< Previous Next >
Re: [opensuse-factory] libmysqlclient18 removal - replacement
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi jan,

thanks for explanation, very interesting.
everyday i am learning....

simoN



Am 18.12.2017 um 11:38 schrieb Jan Engelhardt:

On Monday 2017-12-18 08:48, Simon Becherer wrote:

https://mariadb.com/kb/en/library/mariadb-vs-mysql-compatibility/ "The
shared client library is binary compatible with MySQL's client library"
..."All MySQL connectors (PHP, Perl, Python, Java, .NET, MyODBC,
Ruby, MySQL C connector etc) work unchanged with MariaDB."

I have not checked *all* the possibilities, but quite a few.


1.

Distributions can in their free power patch it to a certain degree that makes
it _less_ compatible than what upstream promotes.

That is what happened with mysql-community-server. Comparing Leap 42.3's
mysql with Factory mariadb 10.1 ("libmysql56client.so.18" vs
"libmysqlclient.so.18") shows:

[C]'function void mysql_close(MYSQL*)' at client.c:3954:1 has some indirect
sub-type changes: linkage names of function void mysql_close(MYSQL*) changed
from 'mysql_close@@libmysql56client_18' to
'mysql_close@@libmysqlclient_18, mysql_close@libmysqlclient_16' size of
symbol (in bytes) changed from 302 to 114, its version changed from
libmysql56client_18 to libmysqlclient_18

Which means if you had a program which requires the ELF symbol
"mysql_close@libmysqlclient_16" and you attempted this symlink hack, it
should not be able to run on openSUSE's MariaDB, since there is no such
symbol anymore. At least it's a verbose failure when it happens.

(The results were obtained with abigail tools):

abidiff
/var/tmp/jng/D2/home/abuild/rpmbuild/BUILD/mysql-5.6.36/build/libmysql/libmysql56client.so.18.1.0

/var/tmp/jng/standard-x86_64/home/abuild/rpmbuild/BUILD/mariadb-10.1.25/build/libmysql/libmysqlclient.so.18.0.0


... the newest mysqlclient (in 8/2017) for maria db was .18 the
corrospondung of mysql was 20. so the symlink seems to me correct.

2. subtle change(s) from mysql-5.5 (so.18) to mysql-5.7 (so.20), among it for
example:

type of 'mysql_option st_mysql_options::methods_to_use' changed: [..] 2
enumerator changes: 'mysql_option::MYSQL_ENABLE_CLEARTEXT_PLUGIN' from value
'24' to '36' 'mysql_option::MYSQL_OPT_SSL_MODE' from value
'38' to '42'

Possibly not part of the public ABI, but who knows..


... since 08/2017 working fine FOR ME without any "known" data corruption.

3. As for silent problems, take for example this 10.1 possible code:
mysql->reconnt = 1;

In 10.2, this no longer compiles because they have changed the API. And the
behavior (the memory at that location is ignored now). But the ABI stayed
largely the same. So if you just symlink it, your program
believes it is still doing auto reconnects, and if it does not cope with the
sudden drops (because people fail to check error codes and fail to test the
error paths), it is now susceptible to fall on its own
feet now and then break in spectacular ways.

So to summarize: - Treat the incompatibility expressed by SONAME changes as
exactly that: being incompatibile.

And because they are incompatible (at the very least in openSUSE) - there is
no drop-in replacement to suggest.


b) why is this not updated automatically if it was installed already (and
will be automatically removed)?

Something else might still depend on it. Yes if it is an openSUSE package.


c) how did i find this file using zypper

i tried: zypper se --provides mysqlclient.so.18 libmariadb3-32bit

That seems like a bug, that package has no libmysqlclient in it.


- --
B e c h e r e r GmbH
Sondermaschinenbau
Mauermatten Strasse 22
79183 Waldkirch
Germany

Tel.: (+49) (0)7681 3134
Fax: (+49) (0)7681 4378
Mail: info@xxxxxxxxxxx
Web: www.becherer.de

USt-ID-Nr.: DE 814912198
Registergericht: Freiburg HRB 701860
Geschäftsführer:
Dipl.-Ing. (FH), EWE Simon H. Becherer
Gerichtsstand / Sitz: Waldkirch

Es gelten ausschließlich unsere allgemeinen Liefer-
und Zahlungsbedingungen / Einkaufsbedingungen:
www.becherer.de/AGB

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)

iQIcBAEBAgAGBQJaN5+pAAoJEOuDxDCJWQG+J7wP/ApIJOzQRWqW4ZDVJpwH8wnu
Kim/toQslzj1QGHUoV7Y/vZDnNlq2NQcXYJNg2V/yLx0Wx61nKvV8p/l4XeWe7oD
2kWc2Fp142L8qkpukQEp/kLBYnleJuUguXqdbH8flZ520nAwECLIBK/sfmW7f8Ju
ctX1Be4MtUDJe/eGH9nUEy6XHmD7yqUsxN/cRo+0t38ghwlc5yQuNOhrjeZFZ23g
ZtLEwspCTgKb3APZGPX8wTknkbsQVbk0rOyiE5z8hl59VoGuo02Z6zHGWnTAdav0
7JB9NLB6EP6MeM3cqn0dSjmBSOq4E0bamoqwWEzX+9xNyAxvU4HxYT4hQkaUkG7k
B3XM7gH7kp6NBub5qYnZ0XlMfcTQjYsGtoHQkIhVIXs+oySgxVN9iHR5hTShXJJi
EyN7SGxlWlquykrlL5NbnOJL4+tn96pMnqmzFcRDVmnHQj+Vs+8HsU9lNgZ1gN/D
fqWiPxwbImbfO9MgOEsZ1WL3pl4a5fngMb3V2myw9P3d7yYDc/K5D0X3xpb3kBKD
TX+xXrgB+19iSOnXcakPgDLpf0hKY/3d2bUbSkcsdkUws70f6sSvyKZzFoYXmcQK
knd41056KIXFb3yFiaNFqjcVcoTegoGacd8Qjuf63CFi8OjmifWJaTw1WoUWJmA8
QfcAOiZVe51hw+WNl+8M
=KLku
-----END PGP SIGNATURE-----
--
To unsubscribe, e-mail: opensuse-factory+unsubscribe@xxxxxxxxxxxx
To contact the owner, e-mail: opensuse-factory+owner@xxxxxxxxxxxx

< Previous Next >