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-versionに 3
を指定できるようになりました。以前のバージョンでも --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でガンガン検索してください!