[groonga-dev,04767] [ANN] Mroonga 9.05

Back to archive index
Kentaro Hayashi hayas****@clear*****
2019年 7月 31日 (水) 15:53:15 JST


こんにちは。

Mroonga 9.05をリリースしました!

リリースアナウンス:
   http://mroonga.org/ja/blog/2019/07/30/mroonga-9.05.html

変更点:
   http://mroonga.org/ja/docs/news.html#release-9.05

さて、今回の主な変更点は次のとおりです。

  * MySQL 5.6.45と5.7.27とMySQL 8.0.17対応パッケージの更新
  * ユニークインデックスを更新する際の不具合を修正

ユニークインデックスを更新する際の不具合を修正しているので、すでにユニークインデックスを作っている人は
テーブルを作り直す必要があります。 
既存のユニークインデックスにゴミが残っているかもしれないからです。詳細は後述します。

### MySQL 5.6.45と5.7.27とMySQL 8.0.17対応パッケージの更新

今回のリリースでは、MySQLの各バージョンのアップデートに追従するパッケージをリリースしました。
MySQL 8.0向けのパッケージでサポートしていなかった TIMESTAMP 型にも対応しています。

実験的なので、もし不具合や疑わしい挙動をみつけたらメーリングリストでもよいですし、
GitHubのissueでもよいので報告してくれると助かります。

見つけたバグを報告するには以下を参考にしてください。

  * http://mroonga.org/ja/docs/contribution/report.html

### [ストレージモード] ユニークインデックスを更新する際の不具合を修正

今回のリリースでは、ユニークインデックスを更新する際の不具合を修正しました。

以下の条件を満たすと INSERT 時にキーの重複エラーが発生していました。

  * ユニークインデックスをマルチカラムに対して作成する
  * ユニークキーのカラムの一部が更新される

例えば、次のようなサンプルでエラーが再現します。

  MySQL [test]> CREATE TABLE fts_targets (
      ->   id int(11) NOT NULL AUTO_INCREMENT,
      ->   source_id int(11) NOT NULL,
      ->   source_type_id int(11) NOT NULL,
      ->   PRIMARY KEY (id),
      ->   -- Multiple column unique index
      ->   UNIQUE KEY (source_id, source_type_id)
      -> ) DEFAULT CHARSET=utf8mb4 ENGINE=Mroonga;
  Query OK, 0 rows affected (0.027 sec)
  
  MySQL [test]> INSERT INTO fts_targets (source_id, source_type_id) VALUES (10, 100);
  Query OK, 1 row affected (0.006 sec)
  
  MySQL [test]> UPDATE fts_targets SET source_id = 11 WHERE id = 1;
  Query OK, 1 row affected (0.001 sec)
  Rows matched: 1  Changed: 1  Warnings: 0
  
  MySQL [test]> INSERT INTO fts_targets (source_id, source_type_id) VALUES (10, 100);
  ERROR 1062 (23000): Duplicate entry '10-100' for key 'source_id'

上記のようなケースで、古いインデックスのエントリが削除されず、キーの重複が発生してしまっていました。

冒頭でも述べましたが、すでにユニークインデックスを作っている人はテーブルを作り直す必要があります。
テーブルを作り直すには、ダンプ・リストアするか、以下の手順を実行してください。

  ALTER TABLE (ユニークインデックスを作ったテーブル) DISABLE KEYS;
  ALTER TABLE (ユニークインデックスを作ったテーブル) FORCE;
  ALTER TABLE (ユニークインデックスを作ったテーブル) ENABLE KEYS;

-- 
Kentaro Hayashi <hayas****@clear*****>



groonga-dev メーリングリストの案内
Back to archive index