Mroongaブログ

2019-10-30

Mroonga 9.09リリース!

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

お知らせ

今回のバージョンからパフォーマンスが低下しているかもしれません。もし、以前よりパフォーマンスが低下していたら、是非、再現手順を報告してほしいです。

変更点

今回の変更点は以下の通りです。

  • CentOS MySQL 5.6.46と5.7.28とMySQL 8.0.18(制限あり)をサポートしました。
  • MySQL 8.0.18向けのパッケージのビルドエラーを修正しました。

おわりに

9.08からの詳細な変更点は9.09リリース - 2019-10-30を確認してください。

それでは、Mroongaでガンガン検索してください!

2019-09-27

Mroonga 9.08リリース!

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

変更点

今回の変更点は以下の通りです。

  • MariaDB 5.5.64、10.2.27、10.3.18、10.4.8をサポートしました。
  • CentOS 6の32-bitパッケージのサポートをやめました。
  • Debian 10(buster) に mariadb-server-10.3-mroonga をインストールできない問題を修正しました。

おわりに

9.07からの詳細な変更点は9.08リリース - 2019-09-27を確認してください。

それでは、Mroongaでガンガン検索してください!

2019-08-29

Mroonga 9.07リリース!

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

変更点

今回の変更点は以下の通りです。

  • MariaDB 10.1.41、10.2.26、10.3.17、10.4.7をサポートしました。
  • Percona Server 5.6.45、5.7.27をサポートしました。
  • MariaDB 10.0のサポートをやめました。
  • CentOS 6のMariaDBのサポートをやめました。
  • Debian 10(buster)のインストールドキュメントを追加しました。
  • mroonga_query_log_file のドキュメントを追加しました。
  • Mroongaのアンインストール方法についてのドキュメントを追加しました。
  • 正規表現検索の使い方についてのドキュメントを追加しました。

おわりに

9.05からの詳細な変更点は9.07リリース - 2019-08-29を確認してください。

それでは、Mroongaでガンガン検索してください!

2019-07-30

Mroonga 9.05リリース!

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

変更点

今回の変更点は以下の通りです。

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

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

また、Mroongaの変更点ではないのですが、Groonga 9.0.5で大きな全文検索用のインデックスを更新したときにクラッシュする可能性のある不具合が修正されているので、クラッシュする問題を踏んでいる場合には、アップグレードすることで解決するかもしれません。

MySQL 5.6.45と5.7.27とMySQL 8.0.17への対応

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

MySQL 8.0向けパッケージには制限がいくつかあります。もし不具合や疑わしい挙動をみつけたら報告してくれると助かります。

なお、MySQL8.0に関する既知の問題は以下の通りです。

  • ラッパーモードは未対応
  • ストレージモードでも JSON データ型は未対応

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

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

以下の条件を満たすと 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;

おわりに

9.04からの詳細な変更点は9.05リリース - 2019-07-30を確認してください。

それでは、Mroongaでガンガン検索してください!

2019-06-29

Mroonga 9.04リリース!

今日は肉の日ですね。

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

変更点

今回の変更点は以下の通りです。

  • MySQL 8.0に対応したパッケージの提供をはじめました
  • ((MATCH OR MATCH) AND (MATCH)) というパターンのクエリーでクラッシュする不具合を修正しました

MySQL 8.0に対応したパッケージの提供をはじめました

今回のリリースでは 試してもらいやすいようにMySQL 8.0に対応したパッケージの提供をCentOS向けにはじめました。

実験的なので、もし不具合や疑わしい挙動をみつけたら報告してくれると助かります。

なお、MySQL8.0に関する既知の問題は以下の通りです。

  • ラッパーモードは未対応
  • ストレージモードでも JSON データ型は未対応

((MATCH OR MATCH) AND (MATCH)) というパターンのクエリーでクラッシュする不具合を修正しました

SELECT文のWHERE句で((MATCH AGAINST (...) OR MATCH AGAINST(...)) AND (MATCH AGAINST(...))) というパターンのクエリーを実行するとMroongaがクラッシュする不具合を修正しました。

Mroongaにはコンディションプッシュダウン(検索条件をMySQLレベルではなくGroongaレベルで処理する最適化)という機能があるのですが、その扱いに問題があったためクラッシュしていました。

おわりに

9.03からの詳細な変更点は9.04リリース - 2019-06-29を確認してください。

それでは、Mroongaでガンガン検索してください!