こんにちは。堀本です。
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 が原因でマッチするはずのレコードを返さないことがあります。