BloGroonga

2017-09-29

Groonga 7.0.7リリース

今日は肉の日ですね!

Groonga 7.0.7をリリースしました!

それぞれの環境毎のインストール方法: インストール

変更内容

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

  • QUERY_NO_SYNTAX_ERROR が効かないケースがあったのを修正しました
  • command-version 3をデフォルトに設定できるようになりました
  • 関数を使っていてもselect結果をキャッシュするようになりました

QUERY_NO_SYNTAX_ERROR が効かないケースがあったのを修正しました

Groonga 7.0.6で入ったQUERY_NO_SYNTAX_ERRORを指定しているのにシンタックスエラーとなるケースがあったのを修正しました。以下のように、クエリーに単独で + を指定した場合に起こっていました。

select Names \
  --match_columns "_key" \
  --query "+" \
  --query_flags ALLOW_PRAGMA|ALLOW_COLUMN|QUERY_NO_SYNTAX_ERROR

今回のリリースでは、上記のクエリーもエラーにならずに実行できるようになりました。

command-version 3をデフォルトに設定できるようになりました

groongaコマンドの–default-command-version3 を指定できるようになりました。以前のバージョンでも --command_version 3 は成功していましたが、 --default-command-version 3 はエラーになっていました。

今回のリリースでは、--default-command-version 3を指定して起動できるようになっています。

関数を使っていてもselect結果をキャッシュするようになりました

selectコマンドで関数を使っていた場合、以前のバージョンではselect結果をキャッシュしていませんでしたが、今回のバージョンから条件付きでキャッシュするようになりました。 条件は、実行ごとに毎回結果が変わらないことです。変わってしまうのであればキャッシュしません。 したがって、 now()rand() は結果が変わるので従来どおり、キャッシュしません。そのほかの関数は同じクエリであれば結果が変わらないのでキャッシュされるようになりました。

Groongaをライブラリーとして使う人に向けに内部的な説明をすると、selectコマンドで使われているすべての関数の is_stable の値がtrue( GRN_TRUE )だった場合、select結果をキャッシュします。 is_stable の値はデフォルトでtrueになっています。引数が同じでも異なる結果を返す可能性のある関数を実装する場合、 is_stable にfalse( GRN_FALSE )を設定するようにしてください。なお、 now()rand()is_stable にはデフォルトでfalseが設定されているため、これらの関数が使われている場合はキャッシュしません。

is_stable を設定・参照するAPIとして、以下の2つを追加しました。

  • grn_proc_set_is_stable()
  • grn_proc_is_stable()

さいごに

7.0.6からの詳細な変更点は7.0.7リリース 2017-09-29を確認してください。

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