お知らせ

13.00リリース - 2023-02-09

メジャーバージョンアップです! メジャーバージョンアップですが、互換性は壊れていないので、データベースを再構築することなく13.00へアップグレードできます。

まずはじめに 13.00の主な変更点を紹介します。次に、Mroonga 12.00 から 12.12 までの変更点を紹介します。

13.00の新規機能と改良

注釈

現在、Percona Server向けMroonga 13.00のパッケージを提供していません。Percona Server向けパッケージのビルドに問題があるためです。この問題が解決したら、再度Percona Server向けパッケージを提供します。

改良

  • [CentOS][AlmaLinux] MariaDB 10.3.38、10.4.28、10.5.19、10.6.12、10.7.8、10.8.7、10.9.5、10.10.3をサポートしました。

Mroonga 12.00から 12.12までの主な変更点

ハイライト

  • 参照カウントモードをサポートしました。

    この機能によりメモリー使用量を一定量に保つことができますが、パフォーマンスが悪化します。そのため、メモリー不足の場合には、この機能を使用する前に、メモリーを増強することを検討してください。

    参照カウントモードは MySQLの table_open_cache とともに使用します。

    MySQLは table_open_cache で指定した個数のテーブルをキャッシュしておくことができます。キャッシュされているテーブルはまだ使用中なので、Groongaのオブジェクトも解放されません。

    table_open_cache で指定した個数よりも多いテーブルが開かれたとき、使用頻度が低いテーブルが閉じられます。参照カウントモードが有効なとき、そのタイミングでGroongaのオブジェクトも閉じられます。

    このようにして参照カウントモードではメモリー使用量を一定に保っています。

    実際に使用する際には、ステータス変数の Open_tables の値とメモリー使用量を見ながら table_open_cache の値を調整することで、メモリー使用量とパフォーマンスのバランスを調整する必要があります。なぜなら、この機能はメモリー使用量を一定に保ちますが、その分パフォーマンスが悪化するためです。

    Open_tables の確認方法は以下の通りです。

    SHOW GLOBAL STATUS LIKE 'Open_tables';
    -- +---------------+-------+
    -- | Variable_name | Value |
    -- +---------------+-------+
    -- | Open_tables   | 643   |
    -- +---------------+-------+
    

    通常は Open_tables より table_open_cache を大きくして常に使っているすべてテーブルをキャッシュします。しかし、メモリーに余裕がない環境では一部の使用頻度の低いテーブルをキャッシュから落として解放することでメモリー使用量を削減します。使用頻度の低いテーブルをキャッシュから落とすには Open_tables より table_open_cache を小さくします。table_open_cache を小さくすればするほど、より多くのテーブルがキャッシュから落ちます。その分メモリー使用量は減りますが、テーブルの開き直しが必要になるためパフォーマンスは悪化します。table_open_cache を小さくすればするほど、パフォーマンスが悪化するので、小さくするのはメモリー使用量が許容範囲内に収まる程度までにしておきます。

    参照カウントモードを有効にするには、my.cnfに以下の値を設定します。

    loose-mroonga-enable-reference-count = ON
    

    注釈

    MySQL起動後に変数で指定しても参照カウントモードは有効になりません。my.cnfで指定してください。

    SET GLOBAL mroonga_enable_reference_count = ON
    
  • クエリーのタイムアウトパラメータをサポートしました。 [GitHub #344] [かずひこさんが報告]

    MySQL/MariaDB はクエリーの実行時間がタイムアウトパラメータで指定した時間を超過した場合、クエリーを中断することができます。タイムアウトパラメータは、MySQL では MAX_EXECUTION_TIME 、MariaDBでは max_statement_time です。

    しかし、MySQL/MariaDBがクエリーを中断し結果を返した後も、Mroongaは実行中のクエリーを中断していませんでした。そのため、クエリーが大量に結果にマッチする場合には、MySQL/MariaDBがクエリーを中断した後もメモリやCPUのリソースを消費し続けていました。

    本バージョンから、Mroongaは指定された時間でクエリーを中断できるようになり、タイムアウトパラメータが正しく動作するようになりました。そのため、クエリーを中断した後もメモリやCPUリソースを消費し続ける問題も発生しなくなりました。

    この機能の使い方は以下の通りです。

    以下はMySQLの場合の例です。

    CREATE TABLE diaries(
      title TEXT
      FULLTEXT INDEX (title)
    ) ENGINE = Mroonga DEFAULT CHARSET=utf8mb4;
    
    INSERT INTO diaries (title) VALUES ("It'll be fine tomorrow.");
    INSERT INTO diaries (title) VALUES ("It'll rain tomorrow");
    
    SELECT /*+ MAX_EXECUTION_TIME(1) */ title
      FROM diaries
     WHERE MATCH(title) AGAINST("+fine" IN BOOLEAN MODE);
    

    以下はMariaDBの場合の例です。

    CREATE TABLE diaries(
      title TEXT
      FULLTEXT INDEX (title)
    ) ENGINE = Mroonga DEFAULT CHARSET=utf8mb4;
    
    INSERT INTO diaries (title) VALUES ("It'll be fine tomorrow.");
    INSERT INTO diaries (title) VALUES ("It'll rain tomorrow");
    
    SET STATEMENT max_statement_time = 0.001 FOR
    SELECT title
      FROM diaries
     WHERE MATCH(title) AGAINST("+fine" IN BOOLEAN MODE);
    

    この機能は、 mroonga_command() でも使えます。

  • install.sqlを使用したインストールおよびアップグレードに失敗する問題を修正しました。[GitHub #525][Tomohiro KATOさんの報告][Jérome Perrinさんがパッチ提供]

    install.sqlが壊れていたことが原因です。この問題は、 Mroonga 12.06以降で発生していました。

  • 全文検索でメモリーリークする問題を修正しました。[OHTSUKA SoushiさんとMitsuo Yoshidaさんの報告]

    この問題は、 order limit の最適化 が使われた時に発生します。ただし、MariaDBを使っている場合はこの最適化を使っていなくても発生します。

    この問題は、 Mroonga 11.03以降で発生していました。

  • Windows版のMroongaに groonga-normalizer-mysql をバンドルしていなかった問題を修正しました。

概要

改良

[12.12リリース - 2023-01-29]

[12.11リリース - 2020-01-06]

  • [CentOS][AlmaLinux] 新しく、MariaDB 10.10をサポートしました。

  • [Amazon Linux] MariaDB 10.5.10-2.amzn2.0.2をサポートしました。

  • [サーバ変数の一覧] 新しいサーバーステータス変数 libgroonga_support_mecab を追加しました。

  • [Debian GNU/Linux] MariaDB 10.5.18をサポートしました。

[12.10リリース - 2022-11-29]

  • [CentOS][AlmaLinux] MariaDB 10.3.37、10.4.27、10.5.18、10.6.11、10.7.7、10.8.6、10.9.4をサポートしました。 [GitHub #564][Josep Sanzさんの報告][かとうさんがパッチ提供]

  • [CentOS][AlmaLinux] Percona Server 8.0.30-22をサポートしました。

  • [CentOS] Percona Server 5.7.40-43をサポートしました。

  • [Windows] MariaDB 10.7、10.8、10.9をサポートしました。

  • [Windows] 32bitバージョンのサポートをやめました。

  • [mroonga_highlight_html()] 新しいパラメータ open_tagclose_tag を追加しました。 [GitHub #537][ishitakaさんによる報告]

  • 参照カウントモードをサポートしました。

[12.09リリース - 2022-10-28]

  • [CentOS][AlmaLinux] MariaDB 10.9.3をサポートしました。

  • [CentOS][Ubuntu] MySQL 5.7.40をサポートしました。

  • [CentOS][AlmaLinux][Debian GNU/Linux][Ubuntu] MySQL 8.0.31をサポートしました。

  • [Ubuntu] Ubuntu 22.04 (Jammy Jellyfish) の MariaDB 10.6 をサポートしました。

  • クエリーのタイムアウトパラメータをサポートしました。 [GitHub #344] [かずひこさんが報告]

[12.08リリース - 2022-10-03]

  • [CentOS][AlmaLinux] MariaDB 10.6.10, 10.7.6, 10.8.5をサポートしました。

  • [Oracle Linux] MySQL 8.0.30をサポートしました。

[12.07リリース - 2022-08-30]

  • [CentOS][AlmaLinux] MariaDB 10.3.36、10.4.26、10.5.17、10.6.9、10.7.5、10.8.4をサポートしました。

  • [CentOS][AlmaLinux] Percona Server 5.7.39-42をサポートしました。

  • [CentOS][AlmaLinux] Percona Server 8.0.29-21をサポートしました。

[12.06リリース - 2022-08-04]

  • [CentOS] MySQL 5.7.39をサポートしました。

  • [CentOS][AlmaLinux] MySQL 8.0.30をサポートしました。

  • [CentOS][AlmaLinux] Percona Server 8.0.28-20をサポートしました。

  • [CentOS][AlmaLinux] MariaDB 10.8をサポートしました。

  • [CentOS][AlmaLinux] MariaDB 10.2のサポートをやめました。

  • [Debian GNU/Linux] Debian 10 (buster)のサポートをやめました。

  • MroongaをMySQLに登録する際に、update.sql を実行する必要がないように変更しました。[GitHub #509][Jérome Perrin さんの報告]

[12.04リリース - 2022-06-01]

  • [サーバ変数の一覧] 新しいサーバー変数 Mroonga_memory_map_size を追加しました。

  • [CentOS][AlmaLinux] Percona Server 8.0.28-19をサポートしました。

  • [CentOS][AlmaLinux] Percona Server 5.7.38-41をサポートしました。

  • [CentOS][AlmaLinux] MariaDB 10.2.44, 10.3.35、10.4.25、10.5.16、10.6.8、10.7.4をサポートしました。

[12.03リリース - 2022-05-06]

  • [CentOS] Percona Server 5.7.37-40をサポートしました。

  • [CentOS] MySQL 5.7.38をサポートしました。

  • [CentOS][AlmaLinux] MySQL 8.0.29をサポートしました。

[12.02リリース - 2022-03-29]

  • MySQL 8.0以降でラッパーモードのサポートをやめました。

  • サーバー変数を使って、バックトレースを無効にできるようになりました。

  • 重み付きベクターの重みに float32 型を追加しました。

  • [CentOS][AlmaLinux] MariaDB 10.3.34、10.4.24、10.5.15、10.6.7、10.7.3をサポートしました。

  • [CentOS] MariaDB 10.2.43をサポートしました。

  • [CentOS][AlmaLinux] Percona Server 8.0.27-18をサポートしました。

  • MISSING_*INVALID_* フラグをサポートしました。

[12.00リリース - 2022-02-09]

  • [Ubuntu] Ubuntuの mysql-server パッケージの最新バージョンをサポートしました。

  • [CentOS] MariaDB 10.2.42、10.3.33、10.4.23、10.5.14、10.6.6をサポートしました。

  • [AlmaLinux] MariaDB 10.3.33、10.4.23、10.5.14、10.6.6をサポートしました。

修正

[12.11リリース - 2020-01-06]

  • [mroonga_highlight_html()] mroonga_highlight_htmlAS query と一緒に使った際にメモリーリークする問題を修正しました。

  • Windows版MariaDB 10.9以降のMroongaを使った時にMeCabの初期化に失敗する問題を修正しました。

[12.10リリース - 2022-11-29]

  • Windows版のMroongaに groonga-normalizer-mysql をバンドルしていなかった問題を修正しました。

[12.09リリース - 2022-10-28]

  • Windows版のMroongaに groonga-normalizer-mysql をバンドルしていなかった問題を修正しました。

[12.07リリース - 2022-08-30]

  • install.sqlを使用したインストールおよびアップグレードに失敗する問題を修正しました。[GitHub #525][Tomohiro KATOさんの報告][Jérome Perrinさんがパッチ提供]

  • MySQL 8.0 以上を使用しているとき、mroonga_command() が16進数ダンプで結果を返す問題を修正しました。

  • [AlmaLinux] AlmaLinux 8 向けMroongaのインストール手順を修正しました。[Gitter/ja:62fe4ca5b16e8236e3ef225c][handmoundさんの報告]

[12.04リリース - 2022-06-01]

  • Mroongaのアップデートに失敗することがある問題を修正しました。 [groonga-dev,04982, groonga-dev,04987][Mitsuo YoshidaさんとOHTSUKA Soushiさんの報告]

[12.03リリース - 2022-05-06]

  • MariaDB 10.5.14 上でMroongaがインデックスの作成に失敗することがある問題を修正しました。 [GitHub clear-code/redmine_full_text_search#103][wateさんの報告]

  • 全文検索でメモリーリークする問題を修正しました。[OHTSUKA SoushiさんとMitsuo Yoshidaさんの報告]

感謝

  • handmoundさん

  • Josep Sanzさん

  • かとうさん

  • ishitakaさん

  • かずひこさん

  • Jérome Perrinさん

  • Mitsuo Yoshidaさん

  • OHTSUKA Soushiさん

  • wateさん

12.12リリース - 2023-01-29

改良

  • [AlmaLinux] AlmaLinux 9 を新しくサポートしました。

  • [CentOS][AlmaLinux][Debian GNU/Linux][Ubuntu] MySQL 8.0.32をサポートしました。

  • [CentOS][AlmaLinux][Debian GNU/Linux][Ubuntu] MySQL 5.7.41をサポートしました。

  • 複合主キーを設定しているテーブルで通常のカラムの更新ができるようになりました。 [GitHub#592] [handmoundさんが報告]

    以下のようにMroongaストレージエンジンを使ったテーブルに複合主キーを設定しているときは、通常のカラムを更新できませんでした。

    CREATE TABLE scores (
      name char(30) NOT NULL,
      score int NOT NULL,
      PRIMARY KEY (name, score),
      note char(30),
      FULLTEXT INDEX search_note_idx (note)
    ) ENGINE = Mroonga DEFAULT CHARSET=utf8mb4;
    
    INSERT INTO scores (name, score) VALUES ("Taro Yamada", 29);
    
    UPDATE scores SET note = "Note"
      WHERE name = "Taro Yamada" AND score = 29;
    
    ERROR 1265 (01000): data truncated for primary key column: <name>
    

    このエラーはMariaDB向けMroongaでは発生しません。

感謝

  • handmoundさん

12.11リリース - 2020-01-06

改良

  • [CentOS][AlmaLinux] 新しく、MariaDB 10.10をサポートしました。

  • [Amazon Linux] MariaDB 10.5.10-2.amzn2.0.2をサポートしました。

  • [サーバ変数の一覧] 新しいサーバーステータス変数 libgroonga_support_mecab を追加しました。

    これはGroongaがTokenMecabをサポートしている時のみtrueです。

  • [Debian GNU/Linux] MariaDB 10.5.18をサポートしました。

修正

  • [mroonga_highlight_html()] mroonga_highlight_htmlAS query と一緒に使った際にメモリーリークする問題を修正しました。

  • Windows版MariaDB 10.9以降のMroongaを使った時にMeCabの初期化に失敗する問題を修正しました。

12.10リリース - 2022-11-29

改良

  • [CentOS][AlmaLinux] MariaDB 10.3.37、10.4.27、10.5.18、10.6.11、10.7.7、10.8.6、10.9.4をサポートしました。 [GitHub #564][Josep Sanzさんの報告][かとうさんがパッチ提供]

  • [CentOS][AlmaLinux] Percona Server 8.0.30-22をサポートしました。

  • [CentOS] Percona Server 5.7.40-43をサポートしました。

  • [Windows] MariaDB 10.7、10.8、10.9をサポートしました。

  • [Windows] 32bitバージョンのサポートをやめました。

    最近のMariaDBは32bitのWindowsでビルドできず、32bit向けの公式パッケージも存在しないためです。

  • [mroonga_highlight_html()] 新しいパラメータ open_tagclose_tag を追加しました。 [GitHub #537][ishitakaさんによる報告]

    ハイライトに使うタグを open_tagclose_tag で指定できるようになりました。

    今までは固定で <span class="keyword">...</span> というタグを使用しており、 class の変更や、別のタグが指定できず不便でした。今回からタグを指定できるようになったので、 <mark>...</mark> などのハイライト用のタグも使えるようになって便利になりました。

    SELECT mroonga_highlight_html('Mroonga is the Groonga based storage engine.', 'groonga',
                                  '<mark>' AS open_tag, '</mark>' AS close_tag) AS highlighted;
    
    -- +-----------------------------------------------------------+
    -- | highlighted                                               |
    -- +-----------------------------------------------------------+
    -- | Mroonga is the <mark>Groonga</mark> based storage engine. |
    -- +-----------------------------------------------------------+
    

    詳細は mroonga_highlight_html() を参照してください。

  • 参照カウントモードをサポートしました。

    この機能によりメモリー使用量を一定量に保つことができますが、パフォーマンスが悪化します。そのため、メモリー不足の場合には、この機能を使用する前に、メモリーを増強することを検討してください。

    参照カウントモードは MySQLの table_open_cache とともに使用します。

    MySQLは table_open_cache で指定した個数のテーブルをキャッシュしておくことができます。キャッシュされているテーブルはまだ使用中なので、Groongaのオブジェクトも解放されません。

    table_open_cache で指定した個数よりも多いテーブルが開かれたとき、使用頻度が低いテーブルが閉じられます。参照カウントモードが有効なとき、そのタイミングでGroongaのオブジェクトも閉じられます。

    このようにして参照カウントモードではメモリー使用量を一定に保っています。

    実際に使用する際には、ステータス変数の Open_tables の値とメモリー使用量を見ながら table_open_cache の値を調整することで、メモリー使用量とパフォーマンスのバランスを調整する必要があります。なぜなら、この機能はメモリー使用量を一定に保ちますが、その分パフォーマンスが悪化するためです。

    Open_tables の確認方法は以下の通りです。

    SHOW GLOBAL STATUS LIKE 'Open_tables';
    -- +---------------+-------+
    -- | Variable_name | Value |
    -- +---------------+-------+
    -- | Open_tables   | 643   |
    -- +---------------+-------+
    

    通常は Open_tables より table_open_cache を大きくして常に使っているすべてテーブルをキャッシュします。しかし、メモリーに余裕がない環境では一部の使用頻度の低いテーブルをキャッシュから落として解放することでメモリー使用量を削減します。使用頻度の低いテーブルをキャッシュから落とすには Open_tables より table_open_cache を小さくします。table_open_cache を小さくすればするほど、より多くのテーブルがキャッシュから落ちます。その分メモリー使用量は減りますが、テーブルの開き直しが必要になるためパフォーマンスは悪化します。table_open_cache を小さくすればするほど、パフォーマンスが悪化するので、小さくするのはメモリー使用量が許容範囲内に収まる程度までにしておきます。

    参照カウントモードを有効にするには、my.cnfに以下の値を設定します。

    loose-mroonga-enable-reference-count = ON
    

    注釈

    MySQL起動後に変数で指定しても参照カウントモードは有効になりません。my.cnfで指定してください。

    SET GLOBAL mroonga_enable_reference_count = ON
    

修正

  • Windows版のMroongaに groonga-normalizer-mysql をバンドルしていなかった問題を修正しました。

    Mroonga 12.09 にて groonga-normalizer-mysql をバンドルするよう修正したとアナウンスしましたが、修正されていませんでした。

感謝

  • Josep Sanzさん

  • かとうさん

  • ishitakaさん

12.09リリース - 2022-10-28

改良

  • [CentOS][AlmaLinux] MariaDB 10.9.3をサポートしました。

  • [CentOS][Ubuntu] MySQL 5.7.40をサポートしました。

  • [CentOS][AlmaLinux][Debian GNU/Linux][Ubuntu] MySQL 8.0.31をサポートしました。

  • [Ubuntu] Ubuntu 22.04 (Jammy Jellyfish) の MariaDB 10.6 をサポートしました。

  • クエリーのタイムアウトパラメータをサポートしました。 [GitHub #344] [かずひこさんが報告]

    MySQL/MariaDB はクエリーの実行時間がタイムアウトパラメータで指定した時間を超過した場合、クエリーを中断することができます。タイムアウトパラメータは、MySQL では MAX_EXECUTION_TIME 、MariaDBでは max_statement_time です。

    しかし、MySQL/MariaDBがクエリーを中断し結果を返した後も、Mroongaは実行中のクエリーを中断していませんでした。そのため、クエリーが大量に結果にマッチする場合には、MySQL/MariaDBがクエリーを中断した後もメモリやCPUのリソースを消費し続けていました。

    本バージョンから、Mroongaは指定された時間でクエリーを中断できるようになり、タイムアウトパラメータが正しく動作するようになりました。そのため、クエリーを中断した後もメモリやCPUリソースを消費し続ける問題も発生しなくなりました。

    この機能の使い方は以下の通りです。

    以下はMySQLの場合の例です。

    CREATE TABLE diaries(
      title TEXT
      FULLTEXT INDEX (title)
    ) ENGINE = Mroonga DEFAULT CHARSET=utf8mb4;
    
    INSERT INTO diaries (title) VALUES ("It'll be fine tomorrow.");
    INSERT INTO diaries (title) VALUES ("It'll rain tomorrow");
    
    SELECT /*+ MAX_EXECUTION_TIME(1) */ title
      FROM diaries
     WHERE MATCH(title) AGAINST("+fine" IN BOOLEAN MODE);
    

    以下はMariaDBの場合の例です。

    CREATE TABLE diaries(
      title TEXT
      FULLTEXT INDEX (title)
    ) ENGINE = Mroonga DEFAULT CHARSET=utf8mb4;
    
    INSERT INTO diaries (title) VALUES ("It'll be fine tomorrow.");
    INSERT INTO diaries (title) VALUES ("It'll rain tomorrow");
    
    SET STATEMENT max_statement_time = 0.001 FOR
    SELECT title
      FROM diaries
     WHERE MATCH(title) AGAINST("+fine" IN BOOLEAN MODE);
    

    この機能は、 mroonga_command() でも使えます。

修正

  • Windows版のMroongaに groonga-normalizer-mysql をバンドルしていなかった問題を修正しました。

    このバグは、 Mroonga 12.02から存在していました。したがって、Windows版のMroonga 12.02 から 12.08 では groonga-normalizer-mysql を使えません。

感謝

  • かずひこさん

12.08リリース - 2022-10-03

  • [CentOS][AlmaLinux] MariaDB 10.6.10, 10.7.6, 10.8.5をサポートしました。

  • [Oracle Linux] MySQL 8.0.30をサポートしました。

12.07リリース - 2022-08-30

改良

  • [CentOS][AlmaLinux] MariaDB 10.3.36、10.4.26、10.5.17、10.6.9、10.7.5、10.8.4をサポートしました。

  • [CentOS][AlmaLinux] Percona Server 5.7.39-42をサポートしました。

  • [CentOS][AlmaLinux] Percona Server 8.0.29-21をサポートしました。

    注釈

    Percona Server 8.0.29で使用しているMySQL 8.0.29には重大な問題があります。そのため、このバージョンの使用は推奨しません。

    問題に関する詳細は、 MySQL 8.0.29 リリースノート を参照してください。

修正

  • install.sqlを使用したインストールおよびアップグレードに失敗する問題を修正しました。[GitHub #525][Tomohiro KATOさんの報告][Jérome Perrinさんがパッチ提供]

    install.sqlが壊れていたことが原因です。この問題は、 Mroonga 12.06以降で発生していました。

  • MySQL 8.0 以上を使用しているとき、mroonga_command() が16進数ダンプで結果を返す問題を修正しました。

    このバージョンから、mroonga_command() が正しい文字コードで結果を返すようになります。

  • [AlmaLinux] AlmaLinux 8 向けMroongaのインストール手順を修正しました。[Gitter/ja:62fe4ca5b16e8236e3ef225c][handmoundさんの報告]

感謝

  • handmoundさん

  • Jérome Perrinさん

  • かとうさん

12.06リリース - 2022-08-04

改良

  • [CentOS] MySQL 5.7.39をサポートしました。

  • [CentOS][AlmaLinux] MySQL 8.0.30をサポートしました。

  • [CentOS][AlmaLinux] Percona Server 8.0.28-20をサポートしました。

  • [CentOS][AlmaLinux] MariaDB 10.8をサポートしました。

  • [CentOS][AlmaLinux] MariaDB 10.2のサポートをやめました。

  • [Debian GNU/Linux] Debian 10 (buster)のサポートをやめました。

  • MroongaをMySQLに登録する際に、update.sql を実行する必要がないように変更しました。[GitHub #509][Jérome Perrin さんの報告]

    Mroonga 12.04から、MroongaをMySQLに登録するには、install.sqlとupdate.sqlの両方を実行する必要がありました。

    % mysql -u root < /usr/share/mroonga/install.sql
    % mysql -u root < /usr/share/mroonga/update.sql
    

    この改善では、Mroonga 12.04 より前と同じように、install.sqlを実行するだけで良いように変更しています。

    % mysql -u root < /usr/share/mroonga/install.sql
    

感謝

  • Jérome Perrinさん

12.04リリース - 2022-06-01

改良

  • [サーバ変数の一覧] 新しいサーバー変数 Mroonga_memory_map_size を追加しました。

    以下のように、Mroongaのメモリーマップサイズの合計を取得できます。

    mysql> SHOW STATUS LIKE 'Mroonga_memory_map_size';
    +-------------------------+----------+
    | Variable_name           | Value    |
    +-------------------------+----------+
    | Mroonga_memory_map_size | 83406848 |
    +-------------------------+----------+
    1 row in set (0.00 sec)
    

    Windowsでは、Mroogaが物理メモリーとスワップ領域を使い果たした場合、それ以上メモリーをマップすることができません。そのため、この値を監視することで、メモリーが十分でない環境でもメモリーマップサイズを適切にコントロールできます。

  • [CentOS][AlmaLinux] Percona Server 8.0.28-19をサポートしました。

  • [CentOS][AlmaLinux] Percona Server 5.7.38-41をサポートしました。

  • [CentOS][AlmaLinux] MariaDB 10.2.44, 10.3.35、10.4.25、10.5.16、10.6.8、10.7.4をサポートしました。

修正

  • Mroongaのアップデートに失敗することがある問題を修正しました。 [groonga-dev,04982, groonga-dev,04987][Mitsuo YoshidaさんとOHTSUKA Soushiさんの報告]

    この問題が発生した場合、"apt update"等でMroongaを更新した後、Mroongaが無効になります。その場合、以下の手順でMroongaを手動でインストールしてください。

    % mysql -u root < /usr/share/mroonga/install.sql
    

感謝

  • Mitsuo Yoshidaさん

  • OHTSUKA Soushiさん

12.03リリース - 2022-05-06

改良

  • [CentOS] Percona Server 5.7.37-40をサポートしました。

  • [CentOS] MySQL 5.7.38をサポートしました。

  • [CentOS][AlmaLinux] MySQL 8.0.29をサポートしました。

修正

  • MariaDB 10.5.14 上でMroongaがインデックスの作成に失敗することがある問題を修正しました。 [GitHub clear-code/redmine_full_text_search#103][wateさんの報告]

  • 全文検索でメモリーリークする問題を修正しました。[OHTSUKA SoushiさんとMitsuo Yoshidaさんの報告]

    この問題は、 order limit の最適化 が使われた時に発生します。ただし、MariaDBを使っている場合はこの最適化を使っていなくても発生します。

    この問題は、 Mroonga 11.03以降で発生していました。

感謝

  • wateさん

  • OHTSUKA Soushiさん

  • Mitsuo Yoshidaさん

12.02リリース - 2022-03-29

改良

  • MySQL 8.0以降でラッパーモードのサポートをやめました。

  • サーバー変数を使って、バックトレースを無効にできるようになりました。

    "SET GLOBAL mroonga_enable_back_trace = false;" とすることで、バックトレースを無効にできます。

  • 重み付きベクターの重みに float32 型を追加しました。

    float32 で重みを格納できます。この機能を使うには、カラムを定義する時に WEIGHT_FLOAT32 フラグを追加する必要があります。

  • [CentOS][AlmaLinux] MariaDB 10.3.34、10.4.24、10.5.15、10.6.7、10.7.3をサポートしました。

  • [CentOS] MariaDB 10.2.43をサポートしました。

  • [CentOS][AlmaLinux] Percona Server 8.0.27-18をサポートしました。

  • MISSING_*INVALID_* フラグをサポートしました。

    これらのフラグの詳細は、 https://groonga.org/ja/docs/news.html#release-12-0-2 を参照してください。

12.00リリース - 2022-02-09

メジャーバージョンアップです! メジャーバージョンアップですが、互換性は壊れていないので、データベースを再構築することなく12.00へアップグレードできます。

まずはじめに、Mroonga 11.00から11.13までの変更点を紹介します。次に、12.00の主な変更点を紹介します。

Mroonga 11.00から 11.13までの主な変更点

新規機能と改良

  • 以下のようにパッケージ名を変更しました。

    • mariadb-server-10.x-mroonga -> mariadb-10.x-mroonga

    • mysql-server-5.x-mroonga -> mysql-community-5.x-mroonga

    • mysql-server-8.x-mroonga -> mysql-community-8.x-mroonga

    • percona-server-5x-mroonga -> percona-server-5.x-mroonga

    • percona-server-8x-mroonga -> percona-server-8.x-mroonga

    警告

    パッケージ名を変更しています。この変更の影響でこのバージョンにアップグレード後、Mroongaが無効になることがあります。このバージョンにアップグレードする場合、以下の点を必ず確認してください。

    アップグレード後にMroongaが無効だった場合は、Mroongaを手動でインストールし直す必要があります。Mroongaの手動インストール及び、Mroongaが有効かどうかの確認については、以下のURLを参照してください。

    Mroonga 11.03をまたいでMroongaをアップグレードする場合は、この現象が発生するので、注意してください。

    このバージョンにアップグレード後に、Mroongaは有効だがバージョンが古いという場合は、MySQL、MariaDB、PerconaServerを再起動する必要があります。Mroongaのバージョンは以下のコマンドで確認できます。

    • SHOW VARIABLES LIKE 'mroonga_version';

  • [mroonga_snippet_html()] mroonga_snippet_html() でカスタマイズしたノーマライザーをサポートしました。

    • この機能によって、以下のように mroonga_snippet_html() でカスタマイズしたノーマライザーを使えます。

      CREATE TABLE terms (
        term VARCHAR(64) NOT NULL PRIMARY KEY
      ) COMMENT='normalizer "NormalizerNFKC130(''unify_kana'', true)"'
        DEFAULT CHARSET=utf8mb4
        COLLATE=utf8mb4_unicode_ci;
      
      SELECT mroonga_snippet_html('これはMroonga(ムルンガ)です。',
                                  'terms' as lexicon_name,
                                  'むるんが') as snippet;
      
      snippet
      <div class="snippet">これはMroonga(<span class="keyword">ムルンガ</span>)です。</div>
      
  • [サーバ変数の一覧] mroonga_enable_operations_recording をデフォルトで無効にしました。

    mroonga_enable_operations_recording 自動リカバリーのために操作の記録を有効にするかどうかを決めるものです。

    この操作記録はMroongaがクラッシュしたときに自動的にリカバリーするためのものです。通常、Mroonga内にロックが残留している場合、INSERT/DELETE/UPDATEは実行できませんが、 mroonga_enable_operations_recording が有効な場合、INSERT/DELETE/UPDATEに加えてSELECTも実行出来ないことがあります。自動リカバリーがロックの残留によって、ブロックされるためです。

    したがって、このバージョンから、デフォルト値を OFF にしました。ISERT/DELETE/UPDATE は、ロックの残留によって変わらずブロックされますが、操作記録を無効にすることで、SELECTは動作する可能性があります。

    残留したロックに対する正しい対処は以下の通りです。

修正

  • MySQL/MariaDBのアップグレード後にクラッシュすることがある問題を修正しました。

    • MySQL/MariaDB をアップグレード後に、 SELECT ... MATCH AGAINST を実行するとMroongaがクラッシュすることがあります。

  • WHERE句に "WHERE primary_key IN ("")" と指定した際にMroongaが誤ったレコードを返すことがある問題を修正しました。

    詳細は、 release 11.07 を参照してください。

  • [最適化] Mroongaが行カウントの最適化を誤って適用する問題を修正しました。

    詳細は、 release 11.10 を参照してください。

  • MySQL 5.7で作成されたDBをMySQL 8.0にアップグレードすると、Mroongaがクラッシュする問題を修正しました。

  • 緯度と経度を逆に保存していた問題を修正しました。

    警告

    この修正によって、後方互換性が壊れます。

    GEOMETRY 型を使用しているユーザーは、Mroonga 11.03にアップグレードする前に現在のデータを保存し、アップグレード後に保存したデータをリストアする必要があります。 データのダンプ/リストアには、以下の方法が使えます。

    • mysqldump

    • アップグレード前に ALTER TABLE ENGINE=InnoDB を実行し、アップグレード後に ALTER TABLE ENGINE=Mroonga を実行する。

    この修正を適用しない場合、 INSERT/UPDATE/SELECT/SELECT はうまく動作しますが、データはGroongaが誤った(緯度と経度はGroonga内で逆にされます)保存をします。そのため、 空間データに対する、 mroonga_command('select ...') は動作しません。

  • 外部キー制約が登録されない問題を修正しました。

    この問題は MySQL8.0 でのみ発生します。

    詳細は、 release 11.01 を参照してください。

  • 対象のデータベースに外部キー制約があると、 DROP DATABASE に失敗する問題を修正しました。

    詳細は、 release 11.01 を参照してください。

  • 対象のテーブルが別のテーブルから参照されていると、 DROP COLUMN に失敗する問題を修正しました。

    詳細は、 release 11.01 を参照してください。

  • MariaDBのMroongaでアップデートに失敗する問題を修正しました。

新しくサポートしたOS

  • [Debian GNU/Linux] Debian 11 (bullseye)をサポートしました。

  • [AlmaLinux] AlmaLinux 8 をサポートしました。

サポートをやめたOS

  • [CentOS] CentOS 8のサポートをやめました。

  • [Ubuntu] Ubuntu 21.04 (Hirsute Hippo) のサポートをやめました。

  • [Ubuntu] Ubuntu 20.10 (Groovy Gorilla) のサポートをやめました。

  • [Ubuntu] Ubuntu 16.04 LTS (Xenial Xerus)のサポートをやめました。

  • [Ubuntu] Ubuntu 18.04 LTSのMariaDB 10.1のサポートをやめました。

感謝

  • shibanao4870さん

  • Marc Laporteさん

  • santalexさん

  • Josep Sanzさん

  • かとうさん

  • Katsuhito Watanabeさん

  • kenichi arimotoさん

  • Vincent Pelletierさん

  • Kosuke Yamashitaさん

  • ひじーさん

12.00の主な変更点は以下の通りです。

改良

  • [Ubuntu] Ubuntuの mysql-server パッケージの最新バージョンをサポートしました。

    以下のバージョンをサポートしました。

    • Ubuntu 18.04 LTS (bionic) mysql-server (5.7.37-0ubuntu0.18.04.1)

    • Ubuntu 20.04 LTS (focal) mysql-server (8.0.28-0ubuntu0.20.04.3)

    • Ubuntu 21.10 LTS (impish) mysql-server (8.0.28-0ubuntu0.21.10.3)

  • [CentOS] MariaDB 10.2.42、10.3.33、10.4.23、10.5.14、10.6.6をサポートしました。

  • [AlmaLinux] MariaDB 10.3.33、10.4.23、10.5.14、10.6.6をサポートしました。

11.13リリース - 2022-01-29

改良

  • [CentOS] MySQL 5.7.37をサポートしました。

  • [CentOS][AlmaLinux] MySQL 8.0.28をサポートしました。

    MySQL 8.0 のパッケージには以下の制限があります。

  • [CentOS][AlmaLinux] Percona Server 8.0.26-17をサポートしました。

  • [Ubuntu] Ubuntu 21.04 (Hirsute Hippo) のサポートをやめました。

    • Ubuntu 21.04 は、2022年1月20日でEOLとなったためです。

11.11リリース - 2021-12-29

改良

  • [CentOS] CentOS 8のサポートをやめました。

    CentOS 8は、2021年12月31日でEOLとなるためです。

修正

  • [AlmaLinux] MariaDB 10.3、10.4、10.5、10.6向けMroongaを提供していなかった問題を修正しました。 [Gitter][shibanao4870さんの報告]

  • [Documentation][インストール] 誤記を修正しました。[GitHub #469,#470][Marc Laporteさんがパッチ提供]

  • [Documentation][CentOS] percona-release-latest.noarch.rpm のURLを修正しました。 [GitHub #471][santalexさんがパッチ提供]

感謝

  • shibanao4870さん

  • Marc Laporteさん

  • santalexさん

11.10リリース - 2021-11-29

改良

  • [AlmaLinux] AlmaLinux 8 をサポートしました。

  • [AlmaLinux] MySQL 8.0.27をサポートしました。

    • MySQL 8.0 のパッケージには以下の制限があります。

  • [AlmaLinux] Percona Server 8.0.26をサポートしました。

  • [AlmaLinux] MariaDB 10.3.32、10.4.22、10.5.13、10.6.5をサポートしました。

  • [CentOS] MariaDB 10.2.41、10.3.32、10.4.22、10.5.13、10.6.5をサポートしました。

  • [Ubuntu] Ubuntu 21.04 (Hirsute Hippo) と 21.10 (Impish Indri) の MySQL 8.0 をサポートしました。

    • MySQL 8.0 のパッケージには以下の制限があります。

修正

  • [CentOS] MariaDB 10.6向けMroongaを提供していなかった問題を修正しました。

  • [最適化] Mroongaが行カウントの最適化を誤って適用する問題を修正しました。[MDEV-16922][Josep Sanzさんの報告]

    通常、Mroongaは、 SELECTCOUNT(*) だけを取得し、 WHERE の条件がインデックスだけで処理できる時に、行カウントの最適化を適用します。

    しかし、以下のケースのように WHERE の条件がインデックスだけで処理できない場合でも、Mroongaは、行カウントの最適化を適用していました。

    結果として、 SELECT COUNT(*) WHERE ... の結果が間違っていました。

    CREATE TABLE roles (
      id INT
    );
    
    INSERT INTO roles VALUES (1), (2), (3), (4), (5);
    
    CREATE TABLE users (
      id INT,
      role_id INT,
      INDEX (role_id)
    );
    
    INSERT INTO users VALUES (10, 1);
    INSERT INTO users VALUES (11, 2);
    INSERT INTO users VALUES (13, 3);
    INSERT INTO users VALUES (14, 4);
    INSERT INTO users VALUES (15, 5);
    INSERT INTO users VALUES (20, 1);
    INSERT INTO users VALUES (21, 2);
    INSERT INTO users VALUES (23, 3);
    INSERT INTO users VALUES (24, 4);
    INSERT INTO users VALUES (25, 5);
    
    SELECT COUNT(*)
      FROM (
        SELECT roles.id
          FROM roles
               LEFT JOIN users ON users.id <= 100 AND
                                  users.role_id = roles.id
      ) roles_users;
    
  • Mroongaが 'STRING_FIELD =' のコンディションプッシュダウンで適切なエンコーディングを設定しない問題を修正しました。[groonga-dev,04913][Tomohiro 'Tomo-p' KATOさんの報告]

    以下ケースでは、 Mroongaが 'STRING_FIELD =' の条件をコンディションプッシュダウンしますが、この時、Mroongaは適切なエンコーディングを検索キーワードに設定しません。結果として、Mroongaは検索キーワードのノーマライズに失敗します。

    CREATE TABLE memos (
      id INT PRIMARY KEY,
      title TEXT,
      INDEX (title)
    ) ENGINE=Mroonga DEFAULT CHARSET=utf8mb4;
    
    INSERT INTO memos VALUES (1, 'Groonga');
    INSERT INTO memos VALUES (2, 'Mroonga');
    
    SELECT *
      FROM memos
      WHERE title = 'mroonga'
      ORDER BY id;
    

感謝

  • Josep Sanzさん

  • かとうさん

11.09リリース - 2021-11-04

改良

  • [CentOS] MySQL 5.7.36, 8.0.27をサポートしました。

  • [CentOS] Percona Server 8.0.26をサポートしました。

11.08リリース - 2021-10-06

修正

  • MySQL 5.7で作成されたDBをMySQL 8.0にアップグレードすると、Mroongaがクラッシュする問題を修正しました。

11.07リリース - 2021-09-29

警告

Mroongaには、MySQL 5.7で作成されたDBをMySQL 8.0にアップグレードすると、Mroongaがクラッシュする問題がありました。

この問題は、Mroonga 11.08で修正されています。MySQL 8.0 より前のバージョンでMroongaを使用しているユーザーは、Mroonga 11.08以降を使うことを強くおすすめします。

改良

  • [Ubuntu] Ubuntu 20.04 (Focal Fossa) の MySQL 8.0 をサポートしました。

    • MySQL 8.0 のパッケージには以下の制限があります。

  • [mroonga_snippet_html()] ノーマライザーのカスタマイズに対応しました。

    • この機能によって、以下のように mroonga_snippet_html() でカスタマイズしたノーマライザーを使えます。

      CREATE TABLE terms (
        term VARCHAR(64) NOT NULL PRIMARY KEY
      ) COMMENT='normalizer "NormalizerNFKC130(''unify_kana'', true)"'
        DEFAULT CHARSET=utf8mb4
        COLLATE=utf8mb4_unicode_ci;
      
      SELECT mroonga_snippet_html('これはMroonga(ムルンガ)です。',
                                  'terms' as lexicon_name,
                                  'むるんが') as snippet;
      
      snippet
      <div class="snippet">これはMroonga(<span class="keyword">ムルンガ</span>)です。</div>
      
  • ベクターカラムの値をバイナリーではなくテキストとして出力できるようにしました。

    • この機能によって、ベクターカラムの値をダンプするのに、 mysqldump を使えます。

  • 存在しないテーブルを削除した際に、 .mrn ファイルを作らないようにしました。 [groonga-dev: 04893][kenichi arimotoさんの報告]

  • ベクターの要素に対して W プラグマを使えるようにしました。

    • この機能によって、ベクターの要素に重みをセットできますが、この場合、Mroongaは指定したセクションのみ検索します。通常のマルチカラムインデックスでは、Mroongaは指定していないセクションもデフォルトの重みで検索します。

修正

  • WHERE句に "WHERE primary_key IN ("")" と指定した際にMroongaが誤ったレコードを返すことがある問題を修正しました。 [groonga-dev,04855][Katsuhito Watanabeさんが報告]

    • 例えば、以下ようなケースでMroongaが誤ったレコードを返すことがあります。

      CREATE TABLE ids (
        id varchar(7) PRIMARY KEY,
        parent_id varchar(7)
      )ENGINE=Mroonga DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
      
      INSERT INTO ids VALUES("abcdefg", "");
      INSERT INTO ids VALUES("hijklmn", "");
      INSERT INTO ids VALUES("opqrstu", "hijklmn");
      
      SELECT * FROM ids WHERE id IN (SELECT parent_id FROM ids);
      +---------+-----------+
      | id      | parent_id |
      +---------+-----------+
      | abcdefg |           |
      | hijklmn |           |
      +---------+-----------+
      2 rows in set (0.00 sec)
      

感謝

  • Katsuhito Watanabeさん

  • kenichi arimotoさん

11.06リリース - 2021-08-29

改良

  • [CentOS] MariaDB 10.2.40、10.3.31、10.4.21、10.5.12をサポートしました。

  • [CentOS] MariaDB 10.6.4をサポートしました。 [GitHub#434][Tomohiro KATOさんがパッチ提供]

  • [CentOS] Percona Server 5.7.35をサポートしました。

  • [Debian GNU/Linux] Debian 11 (bullseye)をサポートしました。

感謝

  • かとうさん

11.05リリース - 2021-07-30

改良

  • [CentOS] Percona Server 8.0.25 をサポートしました。

  • [CentOS] MySQL 5.7.35, 8.0.26をサポートしました。

    • MySQL 8.0 のパッケージには以下の制限があります。

  • [Ubuntu] Ubuntu 20.10 (Groovy Gorilla) のサポートをやめました。

    • Ubuntu 20.10 は、2021年7月22日でEOLとなったためです。

修正

  • MySQL/MariaDBのアップグレード後にクラッシュすることがある問題を修正しました。[GitHub#423][Vincent Pelletierさんの報告]

    • MySQL/MariaDB をアップグレード後に、 SELECT ... MATCH AGAINST を実行するとMroongaがクラッシュすることがあります。

感謝

  • Vincent Pelletierさん

11.04リリース - 2021-06-29

改良

  • [サーバ変数の一覧] mroonga_enable_operations_recording をデフォルトで無効にしました。

    mroonga_enable_operations_recording 自動リカバリーのために操作の記録を有効にするかどうかを決めるものです。

    この操作記録はMroongaがクラッシュしたときに自動的にリカバリーするためのものです。通常、Mroonga内にロックが残留している場合、INSERT/DELETE/UPDATEは実行できませんが、 mroonga_enable_operations_recording が有効な場合、INSERT/DELETE/UPDATEに加えてSELECTも実行出来ないことがあります。自動リカバリーがロックの残留によって、ブロックされるためです。

    したがって、このバージョンから、デフォルト値を OFF にしました。ISERT/DELETE/UPDATE は、ロックの残留によって変わらずブロックされますが、操作記録を無効にすることで、SELECTは動作する可能性があります。

    残留したロックに対する正しい対処は以下の通りです。

  • [Debian GNU/Linux] Debian GNU/Linux 向けの Oracle の MySQLパッケージ を使用した Mroonga のインストール手順を追加しました。

    Mroonga 11.03にて、Debian GNU/Linux 向けの Oracle の MySQLパッケージ を使用した Mroongaをサポートしました。これらのパッケージのインストール手順をドキュメントに記載しました。これらのパッケージをインストールする際には、このドキュメントを参考にしてください。

  • [CentOS] MariaDB 10.2.39、10.3.30、10.4.20、10.5.11をサポートしました。

修正

  • 検索を実行した際にクラッシュする問題を修正しました。

    この問題は通常は発生しません。

    発生条件は以下の通りです。

    • mroonga_command を使ってGroongaに直接テーブルやカラムを作成している。

    • 検索の実行と同時に上記のテーブルやカラムを削除する。

    上記の条件が成立した時にMroongaがクラッシュします。

11.03リリース - 2021-05-31

警告

このリリースにはアップグレードとアンインストールに関する重大な問題があります。もし、このバージョンをインストールした場合、Mroongaのアップグレードとアンインストールに失敗します。

したがって、このバージョンのMroongaは使用しないでください。

すでにこのバージョンのMroongaをインストール済みの場合、以下の回避策を使うことでMroongaをアップグレードしたりアンインストールしたりできます。

  1. % echo "#!/bin/sh" > /usr/share/mroonga/deb/postrm.sh

  2. % chmod u+x /usr/share/mroonga/deb/postrm.sh

  3. Mroongaのアップグレード、または、アンインストール

警告

このリリースから、パッケージ名が変更されます。この変更の影響でこのバージョンにアップグレード後、Mroongaが無効になることがあります。このバージョンにアップグレードする場合、以下の点を必ず確認してください。

アップグレード後にMroongaが無効だった場合は、Mroongaを手動でインストールし直す必要があります。Mroongaの手動インストール及び、Mroongaが有効かどうかの確認については、以下のURLを参照してください。

また、今後も、Mroonga 11.03をまたいでMroongaをアップグレードする場合は、この現象が発生するので、注意してください。

このバージョンにアップグレード後に、Mroongaは有効だがバージョンが古いという場合は、MySQL、MariaDB、PerconaServerを再起動する必要があります。Mroongaのバージョンは以下のコマンドで確認できます。

  • SHOW VARIABLES LIKE 'mroonga_version';

警告

このバージョンには非互換の変更があります。

GEOMETRY 型を使用しているユーザーは、Mroonga 11.03にアップグレードする前に現在のデータを保存し、アップグレード後に保存したデータをリストアする必要があります。 データのダンプ/リストアには、以下の方法が使えます。

上記の処置を実施せずに、アップグレードするとデータが破損するので注意してください。

データのダンプ/リストアには、以下の方法が使えます。

  • mysqldump

  • アップグレード前に ALTER TABLE ENGINE=InnoDB を実行し、アップグレード後に ALTER TABLE ENGINE=Mroonga を実行する。

この修正を適用しない場合、 INSERT/UPDATE/SELECT/SELECT はうまく動作しますが、データはGroongaが誤った(緯度と経度はGroonga内で逆にされます)保存をします。そのため、 空間データに対する、 mroonga_command('select ...') は動作しません。

改良

  • 以下のようにパッケージ名を変更しました。

    • mariadb-server-10.x-mroonga -> mariadb-10.x-mroonga

    • mysql-server-5.x-mroonga -> mysql-community-5.x-mroonga

    • mysql-server-8.x-mroonga -> mysql-community-8.x-mroonga

    • percona-server-5x-mroonga -> percona-server-5.x-mroonga

    • percona-server-8x-mroonga -> percona-server-8.x-mroonga

  • [Debian GNU/Linux] Oracle の MySQL 5.7 と Oracle の MySQL 8.0 をサポートしました。

    • このリリースから、新たに Debian GNU/Linux 向けに Oracle の MySQL 5.7 と 8.0 を使用した Mroonga パッケージを提供しました。

      • これにより、MroongaのDockerイメージをDocker公式のMySQLイメージを使って作成できます。

    • MySQL 8.0 のパッケージには以下の制限があります。

  • 空間インデックスのSRIDをサポートしました。

    • 今回のリリースから MBRContains 関数を使った検索で、Mroongaのインデックスが使用されます。

  • コンディションプッシュダウンを適用する条件式を増やしました。

    注釈

    コンディションプッシュダウンは、MySQLではなく、Mroonga内で条件式を評価します。したがって、多くのクエリーは、高速になりますが、Mroongaが条件式を評価することで、今までと異なる検索結果を返すことがあります。もし、Mroongaが意図しない検索結果を返した場合、以下のURLから報告してください。そして、コンディションプッシュダウンを無効にしてください。

    コンディションプッシュダウンは以下のように無効にできます。

    • SET GLOBAL mroonga_condition_push_down_type = "NONE"

  • [CentOS] Percona Server 8.0.23 をサポートしました。

修正

  • 緯度と経度を逆に保存していた問題を修正しました。

    警告

    この修正によって、後方互換性が壊れます。

    GEOMETRY 型を使用しているユーザーは、Mroonga 11.03にアップグレードする前に現在のデータを保存し、アップグレード後に保存したデータをリストアする必要があります。 データのダンプ/リストアには、以下の方法が使えます。

    • mysqldump

    • アップグレード前に ALTER TABLE ENGINE=InnoDB を実行し、アップグレード後に ALTER TABLE ENGINE=Mroonga を実行する。

    この修正を適用しない場合、 INSERT/UPDATE/SELECT/SELECT はうまく動作しますが、データはGroongaが誤った(緯度と経度はGroonga内で逆にされます)保存をします。そのため、 空間データに対する、 mroonga_command('select ...') は動作しません。

11.02リリース - 2021-05-10

改良

  • [CentOS] MySQL 5.7.34, 8.0.25をサポートしました。

    • MySQL 8.0 のパッケージには以下の制限があります。

      • [ラッパーモード] ラッパーモードは未対応です。

      • [ストレージモード] ストレージモードでは、以下の機能が未対応です。

        • 最適化関連の機能

        • 空間インデックスのSRID

          • 例えば、MBRContains関数を使った検索では、Mroongaのインデックスは使用されません。 (シーケンシャルサーチで検索します。)

  • [CentOS] MariaDB 10.2.38、10.3.29、10.4.19、10.5.10をサポートしました。

  • [Ubuntu] Ubuntu 16.04 (Xenial Xerus)のサポートをやめました。

    • 2021年4月でEnd of Standard Supportとなったためです。

11.01リリース - 2021-04-02

改良

  • [CentOS] MariaDB 10.2.37、10.3.28、10.4.18、10.5.9をサポートしました。

  • [CentOS] Percona Server 5.7.33をサポートしました。

  • 以下のように、JSON形式のテキストを使って、参照ベクターカラムに値を追加できるようになりました。

    • この機能によって、参照元のテーブルから参照先のカラムへ値を直接入力できるため、参照カラムにJSONデータを追加しやすくなります。

    CREATE TABLE attributes (
      _id int,
      name varchar(255),
      value varchar(255)
    ) DEFAULT CHARSET=utf8mb4;
    
    CREATE TABLE items (
      id int PRIMARY KEY AUTO_INCREMENT,
      attributes text DEFAULT NULL flags='COLUMN_VECTOR' groonga_type='attributes'
    );
    
    INSERT INTO items (attributes)
      VALUES ('[{"name": "color", "value": "white"},
                {"name": "size",  "value": "big"}]');
    INSERT INTO items (attributes)
      VALUES ('[{"name": "color", "value": "black"}]');
    INSERT INTO items (attributes) VALUES ('');
    
    SELECT * FROM attributes;
      _id      name    value
      1        color   white
      2        size    big
      3        color   black
    
    SELECT * FROM items;
    id attributes
    1  [1,2]
    2  [3]
    3  []
    

修正

  • 外部キー制約が登録されない問題を修正しました。 [GitHub#393] [Kosuke Yamashitaさんが報告]

    • この問題は MySQL8.0 でのみ発生します。

    • 例えば、以下のように外部キー制約を定義しても、外部キー制約の情報が出力されていませんでした。

      CREATE TABLE referred (
        id int PRIMARY KEY AUTO_INCREMENT
      );
      
      CREATE TABLE refer (
        id int PRIMARY KEY AUTO_INCREMENT,
        id_referred int NOT NULL,
        CONSTRAINT id_referred FOREIGN KEY (id_referred) REFERENCES referred (id)
      );
      
      SELECT CONSTRAINT_NAME, TABLE_NAME, REFERENCED_TABLE_NAME
             FROM information_schema.REFERENTIAL_CONSTRAINTS;
      Empty set (0.000 sec)
      
  • 以下のように、対象のデータベースに外部キー制約があると、 DROP DATABASE に失敗する問題を修正しました。[GitHub#390][Kosuke Yamashitaさんが報告]

    CREATE DATABASE another;
    USE another;
    
    CREATE TABLE referred (
      id int PRIMARY KEY AUTO_INCREMENT
    ) ENGINE=mroonga DEFAULT CHARSET utf8mb4;
    
    CREATE TABLE refer (
      id int PRIMARY KEY AUTO_INCREMENT,
      id_referred int NOT NULL,
      CONSTRAINT id_referred FOREIGN KEY (id_referred) REFERENCES referred (id)
    ) ENGINE=mroonga DEFAULT CHARSET utf8mb4;
    
    DROP DATABASE another;
    ERROR 1016 (HY000): [table][remove] a column that references the table exists: <refer.id_referred> -> <referred>
    
  • 以下のように、対象のテーブルが別のテーブルから参照されていると、 DROP COLUMN に失敗する問題を修正しました。[GitHub#389][Kosuke Yamashitaさんが報告]

    CREATE TABLE referred (
      id int PRIMARY KEY AUTO_INCREMENT,
      name varchar(255),
      text text
    ) ENGINE=mroonga DEFAULT CHARSET utf8mb4;
    
    CREATE TABLE refer (
      id int PRIMARY KEY AUTO_INCREMENT,
      id_referred int NOT NULL,
      CONSTRAINT id_referred FOREIGN KEY (id_referred) REFERENCES referred (id)
    ) ENGINE=mroonga DEFAULT CHARSET utf8mb4;
    
    ALTER TABLE referred DROP COLUMN name;
    ERROR 1016 (HY000): [table][remove] a column that references the table exists: <refer.id_referred> -> <#sql2-3bc-25>
    
  • MariaDB 10.3.28、 10.4.18、 10.5.9 との組み合わせでMroongaをビルドすると、ビルドエラーになる問題を修正しました。[GitHub#392][Tomohiro KATOさんがパッチ提供]

  • MariaDBのMroongaでアップデートに失敗する問題を修正しました。 [Reported by ひじー]

感謝

  • Kosuke Yamashitaさん

  • かとうさん

  • ひじーさん

11.00リリース - 2021-02-09

メジャーバージョンアップです! メジャーバージョンアップですが、互換性は壊れていないので、データベースを再構築することなく11.00へアップグレードできます。

今回のリリースでは、MySQL、MariaDB、PerconaServerが自動的に再起動します。Mroonga 11.00が必要としているGroonga 11.0.0が、MySQL、MariaDB、PerconaServerが再起動されるまで有効にならないためです。

改良

  • [CentOS] MySQL 5.6のサポートをやめました。

    • 2021年2月1日でEOLとなったためです。

  • [CentOS] Percona Server 5.6 のサポートをやめました。

  • Ubuntu 18.04 LTSのMariaDB 10.1のサポートをやめました。

    • MariaDB 10.1は、既にアップストリームでEOLとなったためです。

  • Mroongaが要求するGroongaのバージョンを11.0.0以降に更新しました。

    • Groonga 11.0.0 で影響の大きなインデックス破損の問題が修正されているためです。

10.11リリース - 2021-01-29

改良

  • lexicon_flags パラメータをサポートしました。

    • このパラメータを使うことで、以下のように(全文検索インデックスではない) USING HASH なインデックスに KEY_LARGE フラグを追加できます。

      CREATE TABLE memos (
        id INT UNSIGNED PRIMARY KEY,
        title VARCHAR(64) NOT NULL,
        UNIQUE INDEX (title) USING HASH COMMENT 'lexicon_flags "KEY_LARGE"'
      ) DEFAULT CHARSET=utf8mb4;
      
  • [CentOS] MySQL 5.6.51、5.7.33、MySQL 8.0.23をサポートしました。

修正

  • [最適化] "WHERE COLUMN IN (SUBQUERY)" が存在する時、 "fast order limit" の最適化が効かない問題を修正しました。

  • インデックスが付与されたカラムのデータ型を変更する時 インプレースの ALTER TABLE が使えない問題を修正しました。

    • この問題は、 ALTER TABLEALGORITHM=INPLACE で実行した時に発生します。したがって、 ALTER TABLEALGORITHM=COPY で実行した場合は、発生しません。

10.10リリース - 2020-12-29

改良

  • [ストレージモード] テーブルフラグのカスタマイズをサポートしました。[Gitter][Shinichi Takayanagiさんが報告]

    • 今までは、ストレージモードでは、テーブルフラグのカスタマイズをサポートしていませんでした。

    • このリリースから、以下のようにテーブルフラグのカスタマイズができます。

      CREATE TABLE terms (
        term VARCHAR(64) NOT NULL PRIMARY KEY
      ) COMMENT='flags "TABLE_HASH_KEY|KEY_LARGE"'
        DEFAULT CHARSET=utf8mb4;
      
    • カスタマイズ可能な項目については、以下のURLを参照してください。

  • [Ubuntu] Ubuntu 20.10 (Groovy Gorilla)をサポートしました。

  • [CentOS] Percona Server 8.0.22をサポートしました。

感謝

  • Shinichi Takayanagiさん

  • pinpikokunさん [GitHub#373にてパッチ提供]

10.09リリース - 2020-12-04

改良

  • [CentOS] MariaDB 10.2.36、10.3.27、10.4.17、10.5.8をサポートしました。

  • [CentOS] Percona Server 5.6.50、5.7.32、8.0.21をサポートしました。

  • [CentOS] MySQL 5.6.50、5.7.32、MySQL 8.0.22をサポートしました。

  • Ubuntu 18.04 LTS以外のMariaDB 10.1のサポートをやめました。

    • MariaDB 10.1はEOLになったためです。

    • ただ、Ubuntu 18.04 LTS では、MariaDB10.1をサポートします。

      • MariaDB 10.1は、Ubuntu 18.04 LTSではまだサポートされているためです。

  • CentOS 6のサポートをやめました。

    • CentOS 6はEOLになったためです。

  • [mroonga_snippet_html()] ノーマライザーのカスタマイズをサポートしました。

    • table_nameindex_name を使用することで、デフォルトのノーマライザー(NormalizerAuto)の代わりにカスタムのノーマライザーを使えます。

      • table_name には、以下のように、対象のテーブルの名前を指定します。

      • index_name には、以下のように、対象のテーブル上で指定されたインデックスの名前を指定します。

      SET NAMES utf8mb4;
      
      CREATE TABLE memos (
      content text,
      fulltext index content_index (content)
      COMMENT 'normalizer "NormalizerNFKC121(\'unify_kana\', true)"'
      ) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
      
      SELECT mroonga_snippet_html('This is Mroonga(ムルンガ).',
      'memos' as table_name,
      'content_index' as index_name,
      'むるんが') as snippet;
      
      snippet
      <div class="snippet">This is Mroonga(<span class="keyword">ムルンガ</span>).</div>
      
      • この変更によって、クエリーによる検索とキーワードによる検索を混在して使うことができます。

      • 例えば以下のように、AS queryAS snippet の両方で指定したキーワードをハイライトできます。

        SET NAMES utf8mb4;
        SELECT mroonga_snippet_html('Mroonga has two running modes.
        
        One is “storage mode”, that is the default mode, and we use Groonga for both storing data and searching. With this mode, you can have full benefits of Groonga described above, like fast data update, lock-free full text search and geolocation search. But it does not support transactions.
        
        Another one is “wrapper mode”, that adds full text search function on other storage engines like MyISAM or InnoDB. With this mode, you can use Groonga’s fast full text search with having the benefits of the storage engine, ex. transaction in InnoDB. But you cannot have benefits from Groonga’s read-lock free characteristic. And you might have the performance bottle neck in the storage engine in updating data.',
        'lock storage' AS query,
        'update' AS snippet;
        
        snippet
        <div class="snippet"><span class="keyword">storage</span> mode”, that is the default mode, and we use Groonga for both storing data and searching. With this mode, you can have full benefits of Groonga described above, like fast data <span class="keyword">update</span>, <span class="keyword">lock</span>-fr</div><div class="snippet">text search function on other <span class="keyword">storage</span> engines like MyISAM or InnoDB. With this mode, you can use Groonga’s fast full text search with having the benefits of the <span class="keyword">storage</span> engine, ex. transaction in In</div><div class="snippet">noDB. But you cannot have benefits from Groonga’s read-<span class="keyword">lock</span> free characteristic. And you might have the performance bottle neck in the <span class="keyword">storage</span> engine in updating data.</div>
        

10.07リリース - 2020-10-02

改良

  • [CentOS] MariaDB 10.5.5をサポートしました。

  • カラム圧縮のテストで256byte以上の文字列を使うテストを追加しました。 [GitHub#350][KartikSonejiさんがパッチ提供]

感謝

  • KartikSonejiさん

10.06リリース - 2020-09-02

改良

注釈

「MariaDB 10.5.5をサポートしました。」 というニュースを削除しました。

当初、「MariaDB 10.5.5をサポートしました。」とアナウンスしましたが、これは誤りでした。Mroonga 10.06はMariaDB10.5でビルドできるようになりましたが、まだ動作しない箇所があります。

  • [Ubuntu] Ubuntu 19.10 (Eoan Ermine) のサポートをやめました。

  • [CentOS] Percona Server 8.0.20をサポートしました。

  • [CentOS] MariaDB 10.1.46、10.2.33、10.3.24、10.4.14をサポートしました。

  • Debian GNU/Linux へのインストール方法を変更しました。

    • groonga-archive-keyring の代わりに groonga-apt-source を使うように変更しました。

    • lintian コマンドが /etc/apt/sources.lists.d/ 配下にファイルを置くパッケージは apt-source を使うよう推奨しているためです。

      • lintian コマンドはパッケージングに共通のエラーをチェックするためのコマンドです。

      • インストール方法についての詳細は、以下も参照してください。

  • [CentOS] Percona Server 5.7.31をサポートしました。

10.05リリース - 2020-07-29

改良

  • [CentOS] MySQL 5.6.49と5.7.31とMySQL 8.0.21をサポートしました。

  • [CentOS] Percona Server 5.6.49をサポートしました。

10.03リリース - 2020-05-29

改良

  • [Ubuntu] Ubuntu 20.04 (Focal Fossa)をサポートしました。

  • [Ubuntu] Ubuntu 19.04 (Disco Dingo) のサポートをやめました。

  • [CentOS] MariaDB 10.1.45、10.2.32、10.3.23、10.4.13をサポートしました。

  • [CentOS] Percona Server 5.6.48、5.7.30をサポートしました。

  • WindowsのMariaDB 10.1のサポートをやめました。

    • MariaDB 10.1はもうすぐEOLになるためです。

修正

  • [Ubuntu] Ubuntu 19.10 (Eoan Ermine)向けMroongaが提供されていなかった問題を修正しました。

10.02リリース - 2020-04-29

改良

  • WITH_WEIGHT フラグをサポートしました。

    • このフラグは10.0.2以降のGroongaが必要です。

    • このフラグを使用して以下のように重み付きベクターを挿入できます。

      CREATE TABLE tags (
        name VARCHAR(64) PRIMARY KEY
      ) DEFAULT CHARSET=utf8mb4;
      
      CREATE TABLE bugs (
        tags TEXT COMMENT 'flags "COLUMN_VECTOR|WITH_WEIGHT", type "tags"',
        FULLTEXT INDEX bugs_tags (tags) COMMENT 'table "tags", flags "WITH_WEIGHT"'
      ) DEFAULT CHARSET=utf8mb4;
      
      INSERT INTO bugs VALUES ('{"package": 100, "priority": 5}');
      
  • CentOS7のMariaDB 5.5のサポートをやめました。

  • [CentOS] MySQL 5.6.48, 5.7.30, 8.0.20をサポートしました。

10.01リリース - 2020-03-30

改良

  • [CentOS] Percona Server 5.7.29をサポートしました。

修正

  • 以下の条件を満たしたクエリーを送信した際に、Mroongaがクラッシュする問題を修正しました。 [GitHub#303] [pinpikokunさんが報告]

感謝

  • pinpikokunさん

9.12リリース - 2020-01-29

改良

  • [CentOS] MySQL 5.6.47, 5.7.29, 8.0.19をサポートしました。

  • [CentOS] MariaDB 10.1.44、10.2.31、10.3.22、10.4.12をサポートしました。

  • MySQL 8.0.19のソースを使ったビルドがエラーになる問題を修正しました。

  • [CentOS] Percona Server 5.6.47をサポートしました。

9.11リリース - 2020-01-08

改良

  • [Ubuntu] Ubuntu 14.04 LTS (Trusty Tahr) のサポートをやめました。

  • [Ubuntu] Ubuntu 18.10 (Cosmic Cuttlefish) のサポートをやめました。

  • [CentOS] CentOS 8向けのインストール方法を追記しました。

  • [CentOS] MariaDB 10.2.30、10.3.21、10.4.11をサポートしました。

  • InnoDBのシャットダウンプロセスを可視化するためのパッチをMariaDB 10.3と10.4に適用しました。

    • この変更は一時的なものです。将来のバージョンで削除する予定です。

    • この変更によって、InnoDBのシャットダウン時に出力されるログが増加します。

修正

  • [Ubuntu] 不足していた Ubuntu 16.04 (Xenial Xerus) のサポートを追加しました。

9.10リリース - 2019-11-29

改良

  • [CentOS] MariaDB 10.1.43、10.2.29、10.3.20、10.4.10をサポートしました。

  • [CentOS] CentOS8のMariaDB 10.3.20と10.4.10、MySQL 8.0.18をサポートしました。

  • [Ubuntu] Ubuntu 19.10 (Eoan Ermine)をサポートしました。

修正

  • WSL上のUbuntu 18.04でパッケージインストール時に dpkg --configure が失敗する問題を修正しました。 [GitHub#282][ochaochaocha3さんがパッチ提供]

感謝

  • ochaochaocha3さん

9.09リリース - 2019-10-30

注釈

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

改良

  • [CentOS] MySQL 5.6.46と5.7.28とMySQL 8.0.18(制限あり)をサポートしました。

修正

  • MySQL 8.0.18向けのパッケージのビルドエラーを修正しました。

9.08リリース - 2019-09-27

改良

  • [CentOS] MariaDB 5.5.64、10.2.27、10.3.18、10.4.8をサポートしました。

  • [CentOS] CentOS 6の32-bitパッケージのサポートをやめました。

修正

  • [Debian GNU/Linux] Debian 10(buster) に mariadb-server-10.3-mroonga をインストールできない問題を修正しました。

感謝

  • kajiysさん

  • bizlevelさん

9.07リリース - 2019-08-29

改良

  • [Debian GNU/Linux] Debian 10(buster)のインストールドキュメントを追加しました。

  • [CentOS] MariaDB 10.1.41、10.2.26、10.3.17、10.4.7をサポートしました。

  • [サーバ変数の一覧] mroonga_query_log_file のドキュメントを追加しました。

  • [Ubuntu] Mroongaのアンインストール方法についてのドキュメントを追加しました。 [GitHub#135][ryfjwrさんがパッチ提供]

  • [ストレージモード] 正規表現検索の使い方についてのドキュメントを追加しました。

  • MariaDB 10.0のサポートをやめました。

  • [CentOS] Percona Server 5.6.45、5.7.27をサポートしました。

  • [CentOS] CentOS 6でMariaDB 10.x のサポートをやめました。

感謝

  • ryfjwrさん

9.05リリース - 2019-07-30

改良

  • [CentOS] MySQL 8.0における制限事項を追記しました。

  • [CentOS] MySQL 5.6.45と5.7.27とMySQL 8.0.17(制限あり)をサポートしました。

修正

  • [CentOS] mysql80-comunity-release のパッケージ名が間違っていたのを修正しました。[groonga-dev,04759][各務さんが報告]

  • [ストレージモード] ユニークインデックスを更新する際の不具合を修正しました。以下の条件を満たすとキーの重複エラーが発生します。

    • ユニークインデックスをマルチカラムに対して作成する。

    • ユニークキーのカラムの一部が更新される。

    すでにユニークインデックスを作成している場合には、作成したインデックスにゴミが残っている可能性があるので該当するテーブルを再作成してください。ダンプ・リストアするか、 ALTER TABLE (TABLE_NAME) FORCE で再作成することをおすすめします。

  • [mysql8.0] TIMESTAMP 型をサポートしました。[groonga-dev,04763][各務さんが報告]

感謝

  • 各務さん

9.04リリース - 2019-06-29

改良

  • [CentOS] Percona Server 5.7.26をサポートしました。

  • [CentOS] MariaDB 10.2.25/10.3.16をサポートしました。

  • [CentOS][実験的] MySQL 8.0.16をサポートしました。

修正

  • 無限ループすることがある不具合を修正しました。この不具合は FULLTEXT INDEX (...) COMMENT 'index_flags "INVALID|WITH_SECTION"' のようにフラグの指定が間違っていると発生します。

  • [windows] MariaDB 10.2/10.3のpdbのインストール先のパスの誤りを修正しました。

  • [その他] プラグインのインストール手順でアカウントの指定がないのを修正しました。

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

9.03リリース - 2019-05-29

改良

  • [ストレージモード] サンプルの COMMENT では tokenizer "XXX"` を使うようにしました。``default_tokenizer "XXX" は9.01から非推奨なためです。

  • [Windows] MariaDB 10.1と10.2のzipパッケージを再びサポートしました。

  • [CentOS] MariaDB 10.3.14と10.3.15をサポートしました。

  • [Debian GNU/Linux] インストール手順をコピペしやすくしました。

  • COMMENT 'flags "INDEX_LARGE"' というように指定する INDEX_LARGE フラグをサポートしました。

  • [CentOS] MariaDB 10.2.24をサポートしました。

  • [CentOS] MariaDB 10.1.40をサポートしました。

  • [Ubuntu] Ubuntu 19.04 (Disco Dingo)をサポートしました。

  • [CentOS] Percona Server 5.6.44をサポートしました。

  • [CentOS] MySQL 5.6.44と5.7.26をサポートしました。

9.01リリース - 2019-03-29

改良

  • [ストレージ] トークナイザーのオプション指定をサポートしました。

    • 例えば、 COMMENT にトークナイザーのオプションを CREATE TABLE foo (...) COMMENT='tokenizer "TokenNgram('n', 4)"' などと指定できます。

  • [mariadb] テーブルのパラメーターとして "tokenizer" をサポートしました。

    • 例えば、 トークナイザーを CREATE TABLE foo (...) TOKENIZER='TokenNgram("n", 4)' などと指定できます。

  • [ストレージ] コメントのトークナイザーのパラメータとして tokenizer をサポートしました。

    • default_tokenizer は非推奨になりました。

  • [mariadb] テーブルのパラメーターとして "normalizer" をサポートしました。

    • 例えば、ノーマライザーを CREATE TABLE foo (...) NORMALIZER='NormalizerNFKC100("unify_kana", true)' などと指定できます。

  • [mariadb] テーブルのパラメータとして "token_filters" をサポートしました。

    • 例えば、トークンフィルターを CREATE TABLE foo (...)  TOKEN_FILTERS='TokenFilterNFKC100("unify_katakana_v_sounds", "true")' などと指定できます。

  • インデックスのパラメーターとして "LEXICON" をサポートしました。

    • 例えば、 FULLTEXT INDEX foo (bar) LEXICON='terms'FULLTEXT INDEX foo (bar) COMMENT 'lexicon "terms"' などと指定できます。

  • [appveyor] Mroongaを有効にしたパッケージのビルドをサポートしました。[GitHub#230]

  • [CentOS] Percona Server 5.7.25-28をサポートしました。

  • [CentOS] MariaDB 10.3.13をサポートしました。

  • [CentOS] MariaDB 10.2.23をサポートしました。

9.00リリース - 2019-02-09

メジャーバージョンアップです! メジャーバージョンアップですが、互換性は壊れていないので、データベースを再構築することなく9.00へアップグレードできます。

Groonga 9.0.0 にて、 TokenPatternTokenTable トークナイザーと NormalizerNFKC100remove_blank をサポートしました。Groonga 9.0.0 にアップグレードすることで、Mroonga 9.00からこれらを使えます。

改良

  • [CentOS] Percona Server 5.7.24-27をサポートしました。

  • [CentOS] Percona Server 5.6.43 rel84.3をサポートしました。

  • [rpm][centos] MariaDB 10.3.12に対応しました。

  • [rpm][centos] MariaDB 10.2.21に対応しました。

  • [rpm][centos] Percona Server 5.7.24-27をサポートしました。

  • [rpm][centos] Percona Server 5.6.43 rel84.3に対応しました。

  • [rpm][centos] MySQL 5.7.25をサポートしました。

  • [rpm][centos] MySQL 5.6.43をサポートしました。

8.09リリース - 2018-11-29

改良

  • [Ubuntu] Ubuntu 18.10 (Cosmic Cuttlefish)をサポートしました。

  • [Windows] MariaDB 10.3.10をサポートしました。

  • [CentOS] MariaDB 10.2.19をサポートしました。

  • [CentOS] MariaDB 10.1.37をサポートしました。

  • [CentOS] Percona Server 5.7.23-25をサポートしました。

  • [rpm][centos] MariaDB 10.3.11に対応しました。

  • [rpm][centos] MySQL 5.6.42をサポートしました。

  • [rpm][centos] MySQL 5.7.24をサポートしました。

訂正:

以下の情報を削除しました。

"MySQL 8をサポートしました。"

すみません。Mroonga 8.09のリリース情報に誤りがありました。MySQL 8はサポートしていません。まだ対応中となります。

8.07リリース - 2018-09-29

改良

  • トークナイザーの off オプションは非推奨になりました。かわりに none オプションを使ってください。

  • 2016年9月27にリリースされたMariaDB 10.2.2以前のMariaDB 10.2系サポートをやめました。

修正

  • [CentOS] MariaDB 10.1.36をサポートしました。

8.06リリース - 2018-08-29

今回のリリースでは、Mroongaをすでにインストールしていて、かつGroonga 8.0.4以降をインストールしていない場合、MySQLが自動的に再起動されます。Mroonga 8.06が必要としているGroonga 8.0.4以降が、MySQLが再起動されるまで有効にならないためです。

改良

  • Groonga 8.0.4以降が必要になります。

  • groonga-normalizer-mysql 1.1.3以降が必要になります。

  • utf8mb4_0900族の照合順序をサポートしました。

  • トークナイザーのオプションをサポートしました。

  • Groongaのデフォルトのロガーを使うようにしました。

  • [Windows] ベースにしているMariaDBを10.1.33から10.3.9にアップデートしました。

    • 注意: MariaDB 10.3にアップグレードする前に、既存のMariaDB 10.1のデータベースをダンプする必要があります。そのあと、アップグレード後にリストアしてください。

  • [Debian GNU/Linux] Debian 8 (jessie) のサポートをやめました。

  • [Ubuntu] Ubuntu 17.10 (Artful Aardvark) のサポートをやめました。

  • [WIP] MySQL 8に対応中です。

    • ストレージモードはほぼ完了しています。(JSON型はまだ動きません)

    • ラッパーモードは対応中です。

修正

  • [ストレージモード] マルチレンジリードで誤った結果が返される場合がある問題を修正。[GitHub#211][colt27さんが報告]

感謝

  • colt27さん

8.03リリース - 2018-05-29

改良

  • [Docker] Docker Hubへのクイックスタートガイドのリンクを追加しました。

  • [CentOS] MariaDB 10.3.7をサポートしました。

  • [CentOS] MariaDB 10.2.15 をサポートしました(8.02にバックポート済み)。

  • [CentOS] MariaDB 10.1.33 をサポートしました(8.02にバックポート済み)。

修正

  • [Ubuntu] Ubntu 14.04 LTS(Trusty)でインストールに失敗していた問題を修正しました(8.02にバックポート済み)。[GitHub#202,#205][Masato Hiraiさんが報告]

感謝

  • Masato Hiraiさん

8.02リリース - 2018-04-29

改良

  • [Ubuntu] Ubuntu 18.04 LTS (Bionic Beaver)をサポートしました。

  • [Debian GNU/Linux] Jessieでi386をサポートしました。

  • 意味のない「duplicated unique id」というエラーログを表示しないようにしました。 [GitHub#197]

  • [developer][test] --record オプションをサポートしました。

  • [CentOS] groonga-release-X.X.X の代わりに groonga-release-latest を使うようにしました。

  • [インストールチェック] バージョンチェックの方法を追記しました。

  • [CentOS][percona] 5.6.34未満と5.7.21未満からのアップグレードをサポートしました。 [groonga-dev,04599][木下崇さんが報告][三谷さんが調査]

  • [CentOS] MySQL 5.6.40と5.7.22をサポートしました。

  • [CentOS] Percona Server 5.7.21-21をサポートしました。

修正

  • ORDER BY の中に ORDER BY 1 + 1, id, content のような複雑な条件があるとクラッシュするバグを修正しました。

  • コンディションプッシュダウンが有効になっているときに AND (x = 1 OR x = 2) などがSQLに含まれていると MATCH AGAINST 条件が無視されるバグを修正しました。 [Gitter/ja:5ae014842b9dfdbc3ac7ce1f][colt27さんが報告]

  • カラムキャッシュのメモリリークを修正しました。

感謝

  • 木下崇さん

  • 三谷さん

  • colt27さん

8.01リリース - 2018-03-29

今回のリリースで、Mroongaをすでにインストールしている場合にはMySQLが自動的に再起動されます。これはMroongaが必要としている新しいバージョンのGroonga 8.0.1が、MySQLが再起動されるまで有効にならないためです。

改良

  • [rpm][centos] Percona Server 5.6.39をサポートしました。 [@iiiiyyyyさんが報告]

  • [rpm][centos] Percona Server 5.7.21をサポートしました。

  • [rpm][centos] MariaDB 10.2.13をサポートしました。[GitHub#198] [Shota Suzukiさんが報告]

  • [rpm][centos] MariaDB 10.2.14に対応しました。

修正

  • 誤ったキャッシュが使われる不具合を修正しました。複数のデータベースを作成していて、そのどれかに mroonga_command() 経由でアクセスしたときに意図せず誤ったキャッシュが返る問題が発生します。問題を修正するにはGroonga 8.0.1以降が必要です。

  • "NOT IN"クエリーが空の結果を返す不具合を修正しました。この不具合は "NOT IN"を複数の引数と一緒に使ったときに発生します。例えば "NOT IN (xxx, xxx)" などです。

  • コンディションプッシュダウンが有効なときに"NOT IN"で結果から除外することができない不具合を修正しました。

  • "ORDER BY RAND()" クエリーが誤った結果を返す不具合を修正しました。この不具合は "ORDER BY RAND()" と "LIMIT" を同時に指定したときに発生します。

  • ORDER LIMITの最適化が意図せずORDER BY function()にも適用されてしまう不具合を修正しました。

感謝

  • @iiiiyyyyさん

  • Shota Suzukiさん

8.00リリース - 2018-02-09

メジャーバージョンアップです! メジャーバージョンアップですが、互換性は壊れていないので、データベースを再構築することなくアップグレードできます。

改良

  • ハッシュインデックスを作成する際に、使用するリソースを減らすために小さいハッシュを使うようにしました。

  • [percona57] ギャップロック検出をサポートしました。 [GitHub#188][Iwoさんの報告]

感謝

  • Iwoさん

7.11リリース - 2018-01-29

改良

  • [テスト] サブクエリーとORDER BY ... LIMIT最適化のテストケースを追加しました。[GitHub#184] [濵﨑一樹さんが報告]

  • [rpm][centos] MariaDB 10.3に対応しました。

  • [deb][ubuntu] Ubuntu 17.10向けにMariaDB 10.1のパッケージをサポートしました。

修正

  • [Mroonga_n_pooling_contexts] FLUSH STATUS により値が意図せずリセットされてしまう不具合を修正しました。

  • [maradb10.3] 定数の変更によりビルドエラーになっていた問題を修正しました。(HA_MUST_USE_TABLE_CONDITION_PUSHDOWNHA_CAN_TABLE_CONDITION_PUSHDOWN へと変更)

  • [macOS] 現状にそぐわないインストール手順を削除し、最新のドキュメントへのリンクに差し替えました。 [天野龍司さんが報告]

  • [rpm][centos] MariaDB 10.2.12をサポートしました。[GitHub#186] [Shota Suzukiさんが報告]

  • [rpm][centos] Percona Server 5.7.20-19に対応しました。

  • [Ubuntu] Ubuntu 17.04(Zesty Zapus)のサポートをやめました。2018年1月13日でサポートが切れた(EOLになった)ためです。

感謝

  • 濵﨑一樹さん

  • 天野龍司さん

  • Shota Suzukiさん

7.10リリース - 2017-12-29

改良

  • Groonga 7.1.0が必要になります。Mroonga 7.10にアップグレード後にMySQLを再起動する必要があります。

  • [MariaDB 10.3] MariaDB 10.3に対応しました。

  • [rpm][centos] MariaDB 10.2.11に対応しました。

  • [rpm][centos] MariaDB 10.1.30に対応しました。

  • [rpm][centos] Percona Server 5.7.20に対応しました。

  • [rpm][centos] Percona Server 5.6.38に対応しました。

  • [最適化] マルチカラムインデックスでもカウントスキップ最適化をサポートしました。

  • コンディションプッシュダウン(検索条件をMySQLレベルではなくGroongaレベルで処理する最適化)をサポートしました。この最適化関連の変数をいくつか追加しました。

    • [Mroonga_condition_push_down] Mroonga_condition_push_down を追加しました。

    • [mroonga_condition_push_down_type] mroonga_condition_push_down_type を追加しました。デフォルト値は ONE_FULL_TEXT_SEARCH です。このときは、 WHERE 句の中に1つだけ MATCH AGAINST がある場合にだけコンディションプッシュダウンを使います。従来と同じ挙動です。この値を ALL にすると、常にコンディションプッシュダウンを使います。今のところ、 ALL は実験的な機能です。実際に使って、速くなるか遅くなるかフィードバックして欲しいです。

  • 固定長カラムの値の取得処理を高速化するためにカラムキャッシュ機能をサポートしました。

  • last_insert_grn_id 関数を mroonga_last_insert_grn_id 関数に改名しました。他のUDFと同じように mroonga_ プレフィックスが付きました。 last_insert_grn_id は非推奨ですが引き続き使えます。 [GitHub#177] [Ian Gilfillanさんが報告]

  • [Mroonga_n_pooling_contexts] mroonga_command() 用にプールしているコンテキストの数を確認するためのステータス変数を追加しました。

  • [ FLUSH TABLES ] mroonga_command() 用にプールしているコンテキストもクリアーするようになりました。

感謝

  • Ian Gilfillanさん

7.09リリース - 2017-11-29

改良

  • [rpm][centos] MariaDB 10.2.10に対応。

  • [rpm][centos] MariaDB 10.1.29に対応。

  • テストを実行するときにsedがなくてもよいようにしました。 [Sergei Golubchikさんがパッチ提供]

  • [cmake] Mroongaを無効にしてビルドする場合にはMroonga関連の設定をスキップするようにしました。 [Vladislav Vaintroubさんがパッチ提供]

感謝

  • Sergei Golubchikさん

  • Vladislav Vaintroubさん

7.08リリース - 2017-10-29

改良

  • テーブル作成時に flags オプションを指定できるようになりました。 オプションには TABLE_HASH_KEYTABLE_PAT_KEYTABLE_DAT_KEYKEY_LARGE が指定できます。 [groonga-dev, 04494] [宮下さんが報告]

  • [rpm][centos] MySQL 5.6.38-2と5.7.20-15.24に対応。

  • [Ubuntu] Ubuntu 17.10 (Artful Aardvark)をサポートしました。

感謝

  • 宮下さん

7.07リリース - 2017-10-12

改良

  • [mroonga_query_expand] mroonga_query_expand UDFを追加しました。同義語テーブルを用意しておけば、クエリに含まれる語の同義語を mroonga_query_expand で展開できます。この関数を使うためには Groonga 7.0.6以降が必要です。

  • [rpm][centos] 最新のPercona Server 5.7.19-17.1をサポートしました。 [tigersun2000さんが報告]

  • [rpm][centos] MariaDB 5.5.56-2をサポートしました。 [@akiko_pusuさんが報告]

  • [rpm][centos] MariaDB公式が提供するMariaDB 10.1/10.2をサポートしました。

修正

  • "DROP DATABASE" したときに誤ったデータベースが使われてしまう可能性のある不具合を修正しました。この不具合により内部で使っている "mroonga_operations" テーブルが意図せず削除されてしまうため、クラッシュする可能性があります。この不具合は次の2つの条件を満たすと発生します:

    1. Mroongaを使っているデータベースが複数あること

    2. "DROP DATABASE" をMroongaのテーブルを作成していないデータベースに対して実行すること

    意図しない結果として、 "DROP DATABASE x" は 既存の "y" データベースの "mroonga_operations" テーブルを削除してしまいます。

  • CHECK TABLEしたあとにクラッシュする不具合を修正しました。 [GitHub#167] [GMOメディア株式会社さんが報告]

  • [deb][mariadb10] lsb-releaseパッケージへの依存関係を追加しました。preinst や postrm などメンテナスクリプトに必要でした。 [GitHub#169] [すぎうらさんがパッチ提供]

感謝

  • @tigersun2000さん

  • @akiko_pusuさん

  • GMOメディア株式会社さん

  • すぎうらさん

7.06リリース - 2017-08-29

改良

  • [mroonga_highlight_html()] mroonga_highlight_html の使用方法を追記しました。

  • Generated Columnをサポートしました。JSON型のカラムから値を取り出した結果をカラムとして実体化して全文検索できるので便利です。 [GitHub#159,#160,#163] [村上さんがパッチ提供]

  • mroonga_enable_operations_recording サーバー変数を追加しました。 [GitHub#158] [村上さんがパッチ提供]

  • MariaDB 10.2 と MySQL 5.7 で VIRTUAL Generated Columnをサポートしました。 [GitHub#161,#162] [村上さんがパッチ提供]

  • MariaDB 10.1.26に対応しました。

  • [rpm][centos] Percona Server 5.6.36 rel82.1 と 5.7.18-16 をサポートしました。 [Gitter/ja:59894500bc46472974622cbd] [@tigersun2000_twitterさんが報告]

  • [rpm][centos] CentOS 7にてMySQL 5.6.37 と MySQL 5.7.19に対応しました。 [groonga-dev,04441] [各務さんが報告]

感謝

  • 村上さん

  • @tigersun2000_twitterさん

  • 各務さん

7.05リリース - 2017-07-29

改良

  • Groongaのクエリーログをサポートしました。 mroonga_query_log_file 変数を指定してください。 [GitHub#148]

  • MariaDB 10.2.7をサポートしました。 [groonga-dev,04397] [かとうさんが報告]

  • [mroonga_command()] データベース名が特別な名前( 例えば db-1 )な場合もサポートしました。データベース名に - が含まれていても大丈夫です。

  • [mroonga_command()] コマンドの自動エスケープに対応しました。Groongaの機能をMroongaから使いやすくなります。

  • MariaDB 5.5.57に対応しました。

  • [rpm][centos] CentOS 6にてMySQL 5.6.37-2 と MySQL 5.7.19-1に対応しました。 [groonga-dev,04403] [各務さんが報告]

  • [Ubuntu] Ubuntu 16.10(Yakkety Yak)のサポートをやめました。2017年7月20日でサポートが切れた(EOLになった)ためです。

  • [mroonga_highlight_html()] 対象となるカラムや文字列をハイライトする関数をサポートしました。

修正

  • 内部的に有効なインデックスが見つからない場合にクラッシュする不具合を修正しました。 [Gitter:groonga/ja:596714a5c101bc4e3a7db4e5] [K Torimotoさんが報告]

感謝

  • K Torimotoさん

  • かとうさん

  • 各務さん

7.04リリース - 2017-06-29

改良

  • ヒットしたレコード用に一時テーブルを作成しようとして失敗したときにエラーメッセージをだすようにしました。この種のエラーはインデックスが壊れているときに発生します。

  • [Debian GNU/Linux] Debian 9 (stretch)をサポートしました。

修正

  • 内部で呼び出している関数 grn_table_setoperation を呼ぶ前の NULL チェックが抜けているせいでクラッシュする不具合を修正しました。このようなクラッシュはインデックスが壊れているときに発生します。

7.03リリース - 2017-05-29

改良

  • [制限事項] カラムのNULL値に関する制限情報を更新しました。 [Gitter/ja] [@bignum_twitterさんが報告]

  • INDEX_MEDIUMINDEX_SMALL フラグをサポートしました。 [GitHub#141] [村上さんがパッチ提供]

  • [CentOS] 最新のPercona Server 5.6/5.7をサポートしました。 [@pinpikokunさんが報告]

感謝

  • @bignum_twitterさん

  • @pinpikokunさん

  • 村上さん

7.02リリース - 2017-04-29

改良

  • [Ubuntu] EOLのため、Ubuntu 12.04 (Precise Pangolin)のサポートをやめました。

  • [Ubuntu] Ubuntu 17.04 (Zesty Zapus)をサポートしました。

修正

  • [CentOS] MySQL 5.6.36とMySQL 5.7.18でビルドエラーになる問題を修正しました。

  • [cmake] Mroongaがバンドルされているがシステムの libgroonga を使う場合に libgroonga がリンクされていない問題を修正しました。 [GitHub#137] [村上さんがパッチ提供]

感謝

  • 村上さん

7.01リリース - 2017-03-29

改良

  • [CentOS] EOLのため、CentOS 5のサポートをやめました。

  • [ストレージモード] ALTER TABLE ADD/DROP FOREIGN KEY をサポートしました。

  • [ストレージモード] ENUM を使っている場合の ORDER LIMIT 最適化をサポートしました。[groonga-dev,04277] [村田さんが報告]

  • [ストレージ] カラムのZSTD圧縮フラグ(COMPRESS_ZSTD)をサポートしました。 [GitHub#133] [村上さんがパッチ提供]

  • [サーバ変数の一覧] mroonga_libgroonga_support_zstd サーバー変数のドキュメントを追加しました。 [GitHub#133] [村上さんがパッチ提供]

  • [インストール] リソースのダウンロードに https://packages.groonga.org を推奨するようにしました。

修正

  • [ストレージモード] log-bin と COLLATE が指定されている場合、 UPDATE PRIMARY KEY で更新エラーになる問題を修正しました。 [GitHub#132] [kitoraさんが報告]

  • 設定していないのに FOREIGN KEY が意図せずダンプされる不具合を修正しました。 [groonga-dev,04276] [村田さんが報告]

感謝

  • kitoraさん

  • 村田さん

  • 村上さん

7.00リリース - 2017-02-09

改良

  • [CentOS] EPELをパッケージインストール時に有効にするようにしました。

  • FOREIGN KEY 制約を UPDATE と 親側の行を DELETE するときにもサポートしました。以前のバージョンでは、 INSERT 時のみサポートしていました。

  • [ストレージモード] 主キーをもつテーブルでbinlogを使っていても、レコードの更新をサポートしました。以前は更新時に構文エラーになっていました。 [GitHub#130] [Reported by kitora]

感謝

  • kitoraさん

過去のリリース