Tiens tiens

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.55.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.

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/15153

Haut de page