Un bug vicieux déniché par Ailothaen quand on utilise un gestionnaire de base de données MariaDB plutôt que MySQL.
Il se trouve que lorsque la version de MariaDB est supérieure ou égale à 10.0, la chaîne retournée par la fonction mysqli_get_server_info()
retourne la version préfixée de la chaîne 5.5.5 — 5.5.5-10.3.31-MariaDB-0ubuntu0.20.04.1 par exemple sur le serveur qui gère ce blog — ce qui, forcément, pose problème quand on veut que la version soit supérieure ou égale à 5.7 !
Forcément, le code, dans Clearbricks, date du temps ou MariaDB n’existait pas encore (la première version date de 2009, de mémoire).
Alors je suis en train de cloner le dépôt du serveur MariaDB sur mon Mac juste pour vérifier que cette chaîne, 5.5.5, est codée en dur ou bien voir si ça peut dépendre d’autre chose…
Eh bien voilà :
/*
MDEV-4088
MySQL (and MariaDB 5.x before the fix) was using the first character of the
server version string (as sent in the first handshake protocol packet) to
decide on the replication event formats. And for 10.x the first character
is "1", which the slave thought comes from some ancient 1.x version
(ignoring the fact that the first ever MySQL version was 3.x).
To support replication to these old clients, we fake the version in the
first handshake protocol packet to start from "5.5.5-" (for example,
it might be "5.5.5-10.0.1-MariaDB-debug-log".
On the client side we remove this fake version prefix to restore the
correct server version. The version "5.5.5" did not support
pluggable authentication, so any version starting from "5.5.5-" and
claiming to support pluggable auth, must be using this fake prefix.
*/
/* this version must be the one that *does not* support pluggable auth */
#define RPL_VERSION_HACK "5.5.5-"
Y’a plus qu’à gérer ça un peu plus correctement que ce que j’ai patché hier…
Et forcément il y a eu une version 5.5.5 de MySQL, ça va pas aider ça :-)
Et après quelques recherches je pense que je peux faire l’impasse sur quelque chose de mieux, MariaDB est suffisamment récent pour ne pas être pénalisé par les tests de version qu’on fait dans Dotclear.
1 De Franck -
N’empêche qu’ils auraient pu être un peu plus astucieux et remplacer ce 5.5.5 par la version correspondante de MySQL !
2 De Biou -
Est-ce que ce n’est pas plutôt mysql qui devrait annoncer avec quelle version de MariaDB ils sont compatibles ? ;)
3 De stef -
Hihi c’est rigolo, on dirait les tests pourris de user agents 😄
4 De Franck -
Biou pourquoi pas, mais qu’ils se mettent d’accord :-)
stef et bientôt la version 100 de Firefox et Chrome :-D