[spip-dev] Probleme dans la fonction ajouter_version

Bonjour,

Lorsque le suivi des révisions est activé,
parfois l'enregistrement d'une modification
de l'article prend une dizaine de secondes.

J'ai examiné la fonction ajouter_version (dans inc/revisions.php)
et j'ai ajouté des traces dans les logs :

a) par exemple, la fonction insère pour l'article 485 une version
(-88160935208126) avec dans "titre_version" : 1276758535.20812500.

b) avant la boucle "while (sql_countsel ", j'ai ajouté des traces (spip_log)
pour obtenir le code de la clause where
de la première requête MYSQL de la boucle :
id_article=485
AND id_version < 0
AND 0.0+titre_version < 1276758535.20812500
AND 0.0+titre_version > 1276758525

j'ai également ajouté des traces
pour obtenir le résultat du select
correspondant à cette clause where :
SELECT * FROM spip_versions WHERE id_article =485
AND id_version <0
AND 0.0 + titre_version < 1276758535.20812500
AND 0.0 + titre_version > 1276758525

Une ligne trouvée :
id_article : 485
id_version : -88160935208126
titre_version : 1276758535.20812500

Le select trouve une ligne avec "titre_version" égal à 1276758535.20812500
alors que la clause WHERE comprend 0.0 + titre_version < 1276758535.20812500

Ce résultat est surprenant.
Avec phpmyadmin, j'ai reproduit le phénomène et j'ai
ajouté 0.0+titre_version dans le champ du select :
titre_version : 1276758535.20812500
0.0+titre_version : 1276758535.2081

Dans la fonction ajouter_version, j'ai remplacé
$date = $sec . substr($ms,1);
par
$date = $sec . substr($ms,1,4);

et depuis, le problème ne s'est pas reproduit.

Cordialement

Equipement

Magnifique !
http://trac.rezo.net/trac/spip/changeset/15778

Ce bug traine depuis le début et personne n'avait encore eu le courage de le debusquer.
un kudo pour toi, tiens !

Cédric