お知らせ - 5系

5.12リリース - 2016-01-29

修正

  • [ストレージモード] 大量のレコード削除・更新した後に範囲検索をすると検索結果が0件になるかもしれない問題を修正しました。 [groonga-dev,03802][各務さんが報告]

  • [UDF (ユーザ定義関数)] JOIN と一緒に使ったときに間違った値を返す問題を修正しました。 [teamskyさんが報告]

感謝

  • 各務さん

  • teamskyさん

5.11リリース - 2015-12-29

改良

  • [rpm][mysql56-community-mroonga] ビルド対象のMySQLを5.6.28に更新しました。 [@stealthinuさんが報告]

  • [rpm][mysql57-community-mroonga] ビルド対象のMySQLを5.7.10に更新しました。 [@stealthinuさんが報告]

  • 内部の語彙表の名前の一部に - を使うことをやめました。理由は、 - はGroongaのクエリー構文でシンボル名に使えない文字だからです。シンボル名に使えない文字があると mroonga_command() で不便です。このリリースからは - の代わりに、シンボル名でも使える文字 # を使うようにしました。 [groonga-dev,03714] [keizi murakamiさんが報告]

    この変更は後方互換性を壊しません。最新のMroongaは古いMroongaで作ったデータベースを変更せずにそのまま使えます。

  • [rpm] Suppressed a confusing error message when root password check. [GitHub#90] [Patch by Larry Kim]

  • [rpm][mariadb-mroonga] CentOS 7.2用にビルドしなおしました。 [GitHub#91] [Larry Kimさんが報告]

  • [UDF][mroonga_normalize()] 文字列を正規化する新しいUDFを追加しました。 [GitHub#89][GitHub#92] [村上さんがパッチ提供]

修正

  • [ラッパーモード] CHECK TABLE FOR UPGRADE が古いテーブルを削除する問題を修正しました。 [groonga-dev,03699] [かとうさんが報告]

感謝

  • かとうさん

  • @stealthinuさん

  • keizi murakamiさん

  • Larry Kimさん

  • 村上さん

5.10リリース - 2015-11-29

改良

  • [rpm][mysql57-community-mroonga] 自動でMroongaを登録するようになりました。 [GitHub#78] [GMOメディア株式会社さんがパッチ提供]

  • [rpm][mysql57-community-mroonga] CentOS 7用パッケージの提供をはじめました。

  • [ラッパーモード] CHECK TABLE FOR UPGRADE に対応しました。 [groonga-dev,03688] [かとうさんが報告]

修正

  • [ストレージモード] 自動復旧機能が原因でクラッシュすることがある問題を修正しました。 [groonga-dev,03608] [各務さんが報告]

  • 同時にUDFを使うとクラッシュする問題を修正しました。 [groonga-dev,03640] [松原さんが報告]

  • [ラッパーモード] DROP TABLE でファイルが残ってしまうかもしれない問題を修正しました。 [groonga-dev,03673] [かとうさんが報告]

感謝

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

  • 各務さん

  • 松原さん

  • かとうさん

5.09リリース - 2015-10-29

改良

  • [rpm][mysql56-community-mroonga] ビルド対象のMySQLを5.6.27に更新しました。 [@star_orihimeさんが報告]

  • [UDF][mroonga_snippet_html] HTML出力用のスニペットを返す新しいUDFを追加しました。

  • [Windows] MeCabをバンドルしました。

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

  • [MariaDB 10.1] MariaDB 10.1.8に対応しました。

  • クラッシュ時に自動で復旧する機能を追加しました。 [groonga-dev,03515][各務さんが提案]

  • [MySQL 5.7] MySQL 5.7.9に対応しました。

  • [MySQL 5.7] JSON型に対応しました。

  • [Ubuntu] Ubuntu 15.10 Wily Werewolfのパッケージを追加しました。

  • [CentOS] Oracle提供のMySQL 5.7用パッケージをサポートしました。CentOS 6向けだけです。

修正

  • MRBContains() がインデックスを使わない問題を修正しました。 [GitHub#73] [Petri Rautiainenさんが報告]

感謝

  • @star_orihimeさん

  • 各務さん

  • Petri Rautiainenさん

5.08リリース - 2015-09-29

改良

  • [CMake][MariaDB 10.1] PLUGIN_MROONGA=NO に対応しました。

  • [UDF] grn_ctx プールを実装しました。 grn_ctx を毎回初期化しなくても済むようになるのでUDF呼び出しが速くなります。

修正

  • 複数の MATCH AGAINST を使いながら ORDER BY LIMIT を指定したときにメモリーリークする問題を修正しました。 [groonga-dev,03496] [安福剛介さんが報告]

  • 複数の MATCH AGAINST を使いながら ORDER BY LIMIT を指定したときに間違った結果を返す問題を修正しました。 [groonga-dev,03496] [安福剛介さんが報告]

感謝

  • 安福剛介さん

5.06リリース - 2015-08-31

改良

  • 埋め込みサーバーとしてビルドされたMariaDB 10.1にも対応しました。 [MDEV-8508][GitHub#66] [Sergei Golubchikさんが報告]

  • [rpm][mysql55-mroonga] ビルド対象のMySQLのバージョンを更新しました。 [groonga-dev,03421] [各務さんが報告]

修正

  • [rpm][percona-server-56-mroonga] クラッシュバグを修正しました。 [GitHub#70] [GMOメディア株式会社さんがパッチ提供]

  • シャットダウン時に開いているテーブルがあるとクラッシュする問題を修正しました。 [GitHub#71] [GMOメディア株式会社さんが報告]

感謝

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

  • Sergei Golubchikさん

  • 各務さん

5.05リリース - 2015/07/29

改良

  • [Ubuntu] Ubuntu 14.10(Utopic Unicorn)のサポートをやめました。2015年7月23日でサポートが切れた(EOLになった)ためです。

  • [rpm][CentOS] CentOS 6/7向けパッケージのMySQL 5.6のバージョンを現在の最新版(5.6.26-2)に更新しました。

  • [rpm][CentOS] CentOS 6向けパッケージのPercona Server 5.6のバージョンを現在の最新版(5.6.25-rel73.1)に更新しました。

修正

  • マルチカラムインデックスで範囲検索(例: WHERE date < '2015-07-01' 内の < )を使った場合に検索結果が減る場合がある不具合を修正しました。[groonga-dev,03332] [GitHub#65] [foamcentimeさんが報告]

  • [ストレージモード] メモリーリークを修正しました。[MDEV-8520] [Elena Stepanovaさんが報告]

感謝

  • foamcentimeさん

  • Elena Stepanovaさん

  • Sergei Golubchikさん

5.04リリース - 2015/06/29

改良

  • [rpm][mysql56-community-mroonga][percona-server-56-mroonga] インストール時にmysqldが動いていない場合は起動するようにしました。(これは5.03-2で入った変更です) [GitHub#58] [GMOメディア株式会社さんがパッチ提供]

  • [mariadb10.1] APIの変更に追従しました。

  • [mariadb] DDL内でカスタムパラメーターをサポートしました。この機能はMariaDBでのみ使うことができます。

    • FULLTEXT IDNEXTOKENIZER パラメーターをサポート:

      CREATE TABLE diaries (
        id int PRIMARY KEY AUTO_INCREMENT,
        body text,
        FULLTEXT INDEX body_index (body) TOKENIZER='TokenBigramSplitSymbolAlphaDigit'
      ) ENGINE = Mroonga DEFAULT CHARSET = utf8;
      
    • FULLTEXT IDNEX と通常の INDEXNORMALIZER パラメーターをサポート:

      CREATE TABLE memos (
        id INT NOT NULL PRIMARY KEY,
        content TEXT NOT NULL,
        FULLTEXT INDEX (content) NORMALIZER='NormalizerAuto'
      ) ENGINE = Mroonga DEFAULT CHARSET = utf8;
      
    • FULLTEXT IDNEXTOKEN_FILTERS パラメーターをサポート:

      CREATE TABLE memos (
        content VARCHAR(64) NOT NULL,
        FULLTEXT INDEX (content) TOKEN_FILTERS='TokenFilterStopWord,TokenFilterStopWord'
      ) ENGINE = Mroonga COMMENT = 'engine "InnoDB"' DEFAULT CHARSET = utf8;
      
    • FULLTEXT IDNEX と通常の INDEXFLAGS パラメーターをサポート:

      CREATE TABLE memos (
        content VARCHAR(64) NOT NULL,
        FULLTEXT INDEX (content) FLAGS='WITH_POSITION|WITH_WEIGHT'
      ) ENGINE = Mroonga DEFAULT CHARSET = utf8;
      
    • フィールドで GROONGA_TYPE パラメーターをサポート:

      CREATE TABLE tags (
        name VARCHAR(64) PRIMARY KEY
      ) ENGINE = Mroonga DEFAULT CHARSET = utf8 COLLATE = utf8_bin;
      
      CREATE TABLE bugs (
        id INT UNSIGNED PRIMARY KEY,
        tag VARCHAR(64) GROONGA_TYPE='tags'
      ) ENGINE = Mroonga DEFAULT CHARSET = utf8;
      
  • [ストレージモード] STRICT_TRANS_TABLES のときに、不正な日付をエラーにするようにしました。 [groonga-dev,03299] [GMOメディア株式会社さんが提案]

    • これは後方互換性のない変更です。例:

      • 準備(共通):

        mysql> CREATE TABLE timestamps (
            ->   id INT PRIMARY KEY AUTO_INCREMENT,
            ->   create_dt DATETIME
            -> ) ENGINE = Mroonga DEFAULT CHARSET = utf8;
        Query OK, 0 rows affected (0.09 sec)
        
        mysql> SET sql_mode='';
        Query OK, 0 rows affected (0.01 sec)
        
        mysql> INSERT INTO timestamps (create_dt) VALUES ("2001-00-00 00:00:00");
        Query OK, 1 row affected, 1 warning (0.00 sec)
        
        mysql> SHOW WARNINGS;
        +---------+------+------------------------------------------------+
        | Level   | Code | Message                                        |
        +---------+------+------------------------------------------------+
        | Warning | 1265 | Data truncated for column 'create_dt' at row 1 |
        +---------+------+------------------------------------------------+
        1 row in set (0.00 sec)
        
        mysql> SELECT * FROM timestamps;
        +----+---------------------+
        | id | create_dt           |
        +----+---------------------+
        |  1 | 2001-01-01 00:00:00 |
        +----+---------------------+
        1 row in set (0.00 sec)
        
        mysql> SET sql_mode='STRICT_TRANS_TABLES';
        Query OK, 0 rows affected (0.01 sec)
        
      • 変更前(5.03以前):

        mysql> INSERT INTO timestamps (create_dt) VALUES ("2002-00-00 00:00:00");
        ERROR 1265 (01000): Data truncated for column 'create_dt' at row 1
        
        mysql> SELECT * FROM timestamps;
        +----+---------------------+
        | id | create_dt           |
        +----+---------------------+
        |  1 | 2001-01-01 00:00:00 |
        |  2 | 2002-01-01 00:00:00 |
        +----+---------------------+
        2 rows in set (0.00 sec)
        
      • 変更後(5.04以降):

        mysql> INSERT INTO timestamps (create_dt) VALUES ("2002-00-00 00:00:00");
        ERROR 22003: Out of range value for column 'create_dt' at row 1
        
        mysql> SELECT * FROM timestamps;
        +----+---------------------+
        | id | create_dt           |
        +----+---------------------+
        |  1 | 2001-01-01 00:00:00 |
        +----+---------------------+
        1 row in set (0.00 sec)
        
  • カスタムトークナイザー使用時のキーワードを parser から tokenizer へ変更しました。

    • インデックスコメント: parser -> tokenizer

    • サーバー変数: mroonga_default_parser -> mroonga_default_tokenizer

    • parsermroonga_default_parser は非推奨ですが、Mroonga 6.XXまでは使うことができます。

  • インデックスカラムのflagsのパラメーター名を変更しました。

    • index_flags -> flags

    • index_flags は非推奨ですが、Mroonga 6.XXまでは使うことができます。Mroonga 7.00で削除される予定です。

  • [ストレージモード] カラムに対してGroongaに存在しない型を指定した場合にエラーメッセージを表示するようにしました。

  • Groongaのカラムの型のパラメーター名を変更しました。

    • type -> groonga_type

    • type は非推奨ですが、Mroonga 6.XXまでは使うことができます。Mroonga 7.00で削除される予定です。

感謝

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

5.03リリース - 2015/05/29

改良

  • mariadb10.1: APIの変更に追従しました。

  • MySQLの内部で使われている FT_SORTED フラグに対応しました。これにより、全文検索時のMySQLとの互換性が向上し、MySQLで行っていた冗長なソート処理を減らせる可能性があります。

  • mysql57: APIの変更に追従しました。

修正

  • [ストレージモード] 不正なdatetimeに対してユニークインデックスが正しく機能しない不具合を修正しました。この不具合は不正なdatetimeを挿入したときに発生します。ユニークインデックスが実際に挿入される値ではなく、補正前の不正な値で作成されてしまうためです。 [groonga-dev,03219] [各務さんが報告]

  • [マルチカラムキー] デコードした値が壊れるかもしれない潜在的な不具合を修正しました。この不具合はバイトオーダーの変換をデコードのときにしていないことが起因で発生する可能性があります。

  • [windows] Mroongaに groonga-normalizer-mysql が組込まれていると、不必要な groonga-normalizer-mysql プラグインの検索が実行される不具合を修正しました。 [GitHub#53] [torinkyさんが報告]

  • クエリに プラグマ が含まれているときに、キーワードの長さを間違えてしまい、正しく検索できない不具合を修正しました。 [GitHub#54] [村上さんがパッチ提供]

  • [ストレージモード] 複数接続時にユニーク制約が無視されてしまう不具合を修正しました。 [groonga-dev,03243] [各務さんが報告]

感謝

  • 各務さん

  • torinkyさん

  • 村上さん

5.02リリース - 2015/04/29

改良

  • [doc] Release procedure を更新しました。

  • [ストレージ] 範囲指定のレコード数を見積もる際のパフォーマンスを改善しました。以前のバージョンでは、Mroongaは実際のレコード数をカウントします。そのため、レコード数が増えるとパフォーマンスに影響していました。この恩恵を受けるにはGroonga 5.0.2以降が必要です。 [groonga-dev,03150] [嶋田さんが報告]

  • [実験的] mroonga_max_n_records_for_estimate サーバー変数を追加しました。この変数はレコード数を見積る際の最大レコード数を制限するのに使います。対象となるレコードが多いときでも、見積もる際のコストを抑えることができます。

  • [rpm][centos] 最新のMySQL 5.6でビルドするようにしました。

  • [ラッパーモード] Mroongaの ORDER BY LIMIT 最適化で主キーのソートに対応しました。 [Tsugunori Nashiroさんが報告]

  • Debian 8.0 (Jessie)に対応しました。

  • Ubuntu 15.04 Vivid Vervetに対応しました。

修正

  • [doc] Windows版パッケージへのリンクが古いのを修正しました。 [METAL_GEAR_mkIIさんが報告]

  • [ストレージモード][mysql56] ORDER BY のカラム指定が重複しているときにクラッシュする問題を修正しました。 ORDER BY LIMIT の最適化を適用するケースでSQLの ORDER BY カラム指定が重複しているときに発生します。この問題はMySQL 5.5には影響しません。 [GitHub#50] [GMOメディア株式会社さんが報告]

感謝

  • 嶋田さん

  • Tsugunori Nashiroさん

  • METAL_GEAR_mkIIさん

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

5.01リリース - 2015/03/29

改良

  • [ストレージモード] PARTITION BY RANGE をサポートしました。この機能は MariaDB 10.xではサポートしていません。これはMariaDB 10.xが.parファイルを削除する仕様に由来する制限です。

  • [mysql56] PRIMARY KEY に対してコピーせずに ALTER TABLE できなくしました。この変更はGroongaの制限によるものです。Groongaではテーブルのキーの変更をサポートしていません。 [加藤さんが報告]

  • Visual Studio 2010 と Visual Studio 2012 のサポートをやめました。Visual Studio 2013 以降をMroongaのビルドに使ってください。 [GitHub#45]

  • [windows] Visual Studio 2015でビルドできるようにしました。

  • プライマリーキーに PRIMARY KEY (...) USING HASH を指定しているときに、そのテーブルのコメントにオプションを指定できるようにしました。[GitHub#46] [村上さんがパッチ提供]

  • インデックスカラムのフラグをインデックスのコメントに指定できるようにしました。 NONEWITH_POSITIONWITH_SECTIONWITH_WEIGHT がインデックスカラムのフラグとして使えます。[GitHub#47] [村上さんがパッチ提供]

  • MySQL 5.7でビルドできるようになりました。

  • [rpm][centos] CentOS 6とCentOS 7でPercona Server 5.6.xをサポートしました。[吉野さんがCentOS 6でテスト]

  • utf8_unicode_520_ciutf8mb4_unicode_520_ci をサポートしました。これらの照合順序をサポートするために、Mroongaは groonga-normalizer-mysql 1.0.9 以降を必要とするようになりました。

修正

  • スコアを浮動小数点で保持するように変更しました。この変更は非互換な変更で、GroongaのDB APIがGroonga 5.0.1で変更されたことに伴います。スコアの値がこれまでと違ってしまうことがあるかも知れません。

  • ALTER TABLE で複数のカラムインデックスを作成するのに失敗したときのエラーチェックがなかったので追加しました。

  • [mariadb] SET variableしたときにクラッシュする不具合を修正しました。この不具合はMariaDBのバージョンに依存します。 (<= 5.5.41 と <= 10.0.16)

  • [rpm][centos] CentOS 7でパッケージのリリースバージョンを修正しました。[GitHub#44] [CharAzさんが報告]

  • [mariadb55] インストール、アンインストールしてから再度インストールしようとすると失敗するのを修正しました。

感謝

  • 加藤さん

  • 村上さん

  • 吉野さん

  • CharAzさん

5.00リリース - 2015/02/09

  • 5.00になりました!

改良

  • [appveyor] WindowsでのCIを AppVeyor で行うようになりました。Windowsでビルドに失敗したのがすぐにわかるようになりました。groonga-mysql-commit@lists.sourceforge.jpを購読するとビルドの状態を知ることができます。

  • [rpm][centos] CentOS 7でMySQL 5.6.23向けにビルドするようにしました。[groonga-dev,03083] [青地さんが報告]

修正

  • [cmake] ビッグエンディアンのサポートを明示的に無効にしました。

感謝

  • 青地さん