こんにちは。堀本です。 Groonga 11.0.6 をリリースしました! https://groonga.org/ja/docs/news.html#release-11-0-6 変更点一覧: https://groonga.org/ja/blog/2021/08/29/groonga-11.0.6.html ## 主な変更内容 * クラッシュ時に自動でリカバリーする機能を追加しました。(実験的な機能です。) この機能は実験的な機能です。現状、この機能はまだ安定していません。 この機能によって、Groongaがクラッシュした時、Groongaはクラッシュした後、 最初のデータベースオープン時に自動的にデータベースをリカバリーします。 ただ、全てのクラッシュケースで自動的にデータベースをリカバリーできるわけではありません。 クラッシュのタイミングによっては、手動でデータベースのリカバリーが必要になります。 * [cache_limit] cache_limit 0 を実行したときにキャッシュを削除するようにしました。 Groongaは内部的なテーブルにクエリーキャッシュを保存しています。 このテーブルは、ハッシュテーブルなので、トータルのキーサイズは最大で4GiBです。 そのため、もし多くの巨大なクエリーを実行した場合、トータルのキーサイズの最大値4GiBを超え、 Groongaがクエリーをキャッシュできない可能性があります。 このようなケースで、 cache_limit 0 を実行することで、クエリーキャッシュ用のテーブルをクリアーし、 Groongaがクエリーキャッシュを保存できるようにします。 ### 修正 * 同時期に複数のスレッドで同じオブジェクトをオープンした時に、Groongaがロックを解除しない問題を修正しました。 * [query_parallel_or] query() と結果が異なることがある問題を修正しました。 例えば、 query("tags || tags2", "beginner man") とした場合は、以下のレコードはマッチしますが、 query_parallel_or("tags || tags2", "beginner man") とした場合は、今までは、以下のレコードはマッチしませんでした。 {"_key": "Bob", "comment": "Hey!", "tags": ["expert", "man"], "tags2": ["beginner"]} 今回の変更によって、 query_parallel_or("tags || tags2", "beginner man") を使った場合であっても、 上記のレコードがマッチするようになりました。 ### 既知の問題 * 現在Groongaには、ベクターカラムに対してデータを大量に追加、削除、更新した際にデータが破損することがある問題があります。 * [ブラウザーベースの管理ツール] 現在Groongaには、レコード一覧の管理モードのチェックボックスにチェックを入れても、 非管理モードに入力された検索クエリーが送信されるという問題があります。 * *< と *> は、filter条件の右辺に query() を使う時のみ有効です。もし、以下のように指定した場合、 *< と *> は && として機能します。 * 'content @ "Groonga" *< content @ "Mroonga"' * GRN_II_CURSOR_SET_MIN_ENABLE が原因でマッチするはずのレコードを返さないことがあります。