SELECT t.id AS tid, t.poster, t.subject, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.closed, t.forum_id
FROM punbb_topics AS t
WHERE t.id
IN ( 14524, 29504, 29192, 29526, 29426, 29358, 29381, 29507, 29512, 29534, 29523, 29531, 29532, 29514, 29469, 28791, 29308, 29141, 20353, 29449, 29505, 28867, 29500, 29495, 29535, 29321, 29478, 29480, 29486, 29499, 29506, 29528, 29529, 29457, 29496, 29533, 28380, 29510, 28969, 29142, 29416, 29454, 29511, 29513, 26116, 29333, 29267, 29455, 29493, 29524, 28420, 29258, 29410, 29418, 29452, 29509, 29491, 29477, 29487, 29492, 29501, 29508, 29515, 29517, 29519, 29520, 29525, 29530, 29527, 27926, 28938, 29231, 29265, 29371, 29440, 29485, 29497, 29502, 29518, 29522, 29521 )
GROUP BY t.id, t.poster, t.subject, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.closed, t.forum_id
ORDER BY t.last_post DESC
LIMIT 0 , 30
Un café plus tard, je lance directement la requête dans l’interface de phpMyAdmin et je m’aperçois que les résultats ne sont effectivement pas triés dans l’ordre… Mais qu’ai je fais ?! Je trace le log de yum et je constate que je suis récemment passé de mysql-server 5.0.45 à la version 5.0.51a…
root@borsalino ~> cat /var/log/yum.log | grep mysql
Oct 15 20:05:57 Installed: mysql.i386 5.0.27-1.fc6
Oct 15 20:08:09 Installed: mysql-server.i386 5.0.27-1.fc6
Oct 15 20:08:10 Installed: php-mysql.i386 5.1.6-3.7.fc6
Jan 20 18:56:44 Installed: mysql-libs.i386 5.0.45-1.fc6.remi
Jan 20 18:56:47 Updated: mysql.i386 5.0.45-1.fc6.remi
Jan 20 18:56:54 Updated: mysql-server.i386 5.0.45-1.fc6.remi
Jan 20 18:56:54 Updated: php-mysql.i386 5.2.5-1.fc6.remi
Feb 17 13:06:18 Updated: mysql-libs.i386 5.0.51a-1.fc6.remi
Feb 17 13:06:22 Updated: mysql.i386 5.0.51a-1.fc6.remi
Feb 17 13:06:29 Updated: mysql-server.i386 5.0.51a-1.fc6.remi
Dans le doute je contact l’ami Remi qui m’aide et me trouve ce bug : #30596 : GROUP BY optimization gives wrong result order.
Effectivement en virant les GROUP BY la requête se retrouve ordonnée comme il faut…
5 minutes plus tard Remi lance un build de MySQL comportant le correctif que j’installe dans la foulée et tout ce remet à marcher dans l’ordre ;-).
root@borsalino ~> yum --enable remi-test update mysql\*
De LLaumgui le 18 février 2008
C'est fou quand même, on part sur un PEBKAC et en fait c'est un problème du moteur...