MySQL 5.1.32リリース
MySQL 5.1.32でました。といってもCommunity Serverは本日時点でまだのようで、リリースを確認したのは有償のEnterprise Serverの方です。(2009/03/05追記 Community Serverもリリースされました)
MySQL 5.1.32のリリースノートを確認すると、今回は約40個のバグが修正されています。と、これだけだと面白くないので、私が個人的に衝撃を受けたバグをご紹介します。Bug#42634です。
my.cnfでバイナリログをONにして、ステートメントベースにします。
log-bin = server01-bin binlog_format = STATEMENT
以下のようなテーブルを作って、1レコードINSERTしておきます。
mysql> create table t (c1 int primary key, c2 varchar(10)) engine = myisam; Query OK, 0 rows affected (0.01 sec) mysql> insert into t values (1, 'a'); Query OK, 1 row affected (0.00 sec)
以下のUPDATE文を実行します。
mysql> update t set c2 = '%5b' where c1 = 1 limit 1; ERROR 2013 (HY000): Lost connection to MySQL server during query
サーバがクラッシュします。
このような一発でサーバを落とすコマンドを、1行クラッシャーと呼びます。今決めました(笑)。バグ報告をする際にこういう明白な再現ケースが作れる人ってすごいですね。ちなみにこのバグはlimit句をつけないと再現しないのと、UPDATE文にlimit句をつけるのは結果が非決定的になるためご法度なので、実際にバグを踏む人はほとんどいないと思います。
ちなみに5.1.31で直ったバグの中にも1行クラッシャーがあります。MySQL 5.1を使っている方は、半年程度ははてなアンテナなどを利用してリリースノートをウォッチすることをおすすめします。