メモ: InnoDB Pluginのバグ

自分も含め、InnoDB Pluginの使用を検討してる人も多いのではないかと思うのですが、ちと気になるバグを見かけたので追試してみました。

Bug #47621 MySQL and InnoDB data dictionaries will become out of sync when renaming columns

現象

カラムの名前を替えて、新しい名前のカラムに対して index をつけると、InnoDB Plugin 1.0.4 以前は mysqld がクラッシュし、1.0.5 以降はエラーが出て index がつけられない。

対処法

別テーブルを作ってデータをコピーする。

再現方法
DROP TABLE IF EXISTS bug47621;
CREATE TABLE bug47621 (col1 INT) ENGINE=InnoDB;
INSERT INTO bug47621 VALUES (1),(2),(3);
ALTER TABLE bug47621 CHANGE col1 colA INT;

ALTER TABLE bug47621 ADD INDEX bug47621$colA (colA); -- error
結果
  • @5.1.40, 1.0.4
    • mysqldがクラッシュ
  • @5.1.41, 1.0.5
    • ERROR 1034 (HY000): Incorrect key file for table 'bug47621'; try to repair it
  • @5.1.42, 1.0.6
    • ERROR 1034 (HY000): Incorrect key file for table 'bug47621'; try to repair it
  • @5.5.0-m2, 1.0.5
    • ERROR 1034 (HY000): Incorrect key file for table 'bug47621'; try to repair it

Bug #47622 the new index is added before the existing ones in MySQL, but after one in SE

現象

あとからindexをつけようとしたときに、
frmに記録されているindexの順番と、あとから追加したindexとで順番が食い違うといわれてエラーログにエラーメッセージが出力される。

エラーはでるが、indexは作られている。このindexが実際のクエリでちゃんと使われるのか要検証。

対処法

別テーブルを作ってデータをコピーする、か?

再現方法、結果
DROP TABLE IF EXISTS bug47622;
CREATE TABLE bug47622 (
  col1 int NOT NULL DEFAULT 0,
  col2 int          DEFAULT NULL,
  col3 int NOT NULL,
  KEY bug47622$col2 (col2)
) ENGINE=InnoDB;

ALTER TABLE bug47622 ADD UNIQUE bug47622$1$3$2 (col1,col3,col2);
結果

このほかのバグ

今回は2つだけ調べてみましたが、このほかにも、バグデータベース上でまだ close になっていないバグが 12 件あります。


InnoDB Plugin の導入を考えている人は自分の要件で問題にならないか確認したほうがいいんじゃないかと思います。