お知らせ¶
6.0.8リリース - 2016-08-29¶
改良¶
[object_list]
value_sizeやn_elementsといったメタデータのプロパティを表示できるようにしました。セレクタごとにオペレータを指定できるようになりました。この変更でセレクタごとにインデックスを正しく選択できるようになりました。例えば
between()が範囲検索のためのインデックスを選択したり、in_values()が等価比較のためのインデックスを選択したりできるようになりました。 [GitHub#589] [村上さんが報告][debian] これまではGroongaの [log_reopen] コマンドを使っていましたが、nginxのログを再オープンする機能を使うようにしました。これは
log_reopenコマンドがワーカー1つのときだけきちんと動作するためです。nginxのログを再オープンする機能は複数のワーカーに対しても問題なく動作します。[table_copy] 指定したテーブルをコピーするための
table_copyコマンドを追加しました。- [column_copy] Supported to cast A table
record to B table record. It fixes a case that
column_copyfailure in the previous version. Note that both tables must support key. [column_copy] 参照型のベクタをサポートしました。
[admin] レスポンスがなくエラーになる場合に対応しました。"Loading..."メッセージが表示されたままになる問題が解消します。
[groonga 実行ファイル][http] 実装していない関数に対して400 Bad Requestを返すようにしました。
[groonga-httpd] 失敗時にレスポンスボディを返すようにしました。
[groonga-httpd] 大規模なデータをストリーム処理できるようになりました。
keyがインデックスカラムのソースカラムとして指定されているときに、シーケンシャルサーチを_keyでできるようになりました。ログレベルが
infoのときに、データカラムに対するアクセサが選んだインデックスの情報を表示できるようになりました。[column_create] インデックスのソースを設定する際に、語彙表の妥当性チェックを追加しました。もしユーザーが
column_createで間違ったインデックスを作成しようとすると、この妥当性チェックで詳細を表示します。[doc] テーブルの制限に関する説明を更新しました。
修正¶
[column_create] ログを記録する際にバッファオーバーフローが発生する不具合を修正しました。
クリティカルなエラーが発生したときでも、レスポンスを出力するようにしました。
grn_ctx_sendが呼ばれるたびに、出力バッファをクリアするようにしました。ときどきレスポンスが壊れてしまう問題がおそらくこれで解決します。[GitHub#330]- [fuzzy_search] Fixed a bug that
prefix_match_sizeoption returns wrong node. It causes a problem thatfuzzy_searchreturns wrong edit distance. [GitHub#590] [Patch by Naoya Murakami] [load] カラムの値を設定するときに失敗したらエラーを報告するようにしました。カラムの型と実際の値が一致していないときに気づけるようになります。
[groonga-httpd] 成功時に誤った HTTP ステータスが設定されている不具合を修正しました。
[fuzzy_search][in_values] シーケンシャルサーチでレコードIDを正しく解決するようにしました。[GitHub#591,#592,#593] [村上さんがパッチ提供]
感謝¶
村上さん
6.0.7リリース - 2016-07-29¶
改良¶
[string_substring] 部分文字列を取得するための
string_substring関数を追加しました。string_substringの構文はstring_substring(string, from, [length])です。[GitHub#564] [村上さんがパッチ提供][実験的]
GRN_II_MAX_N_SEGMENTS_TINYとGRN_II_MAX_N_CHUNKS_TINYという環境変数を追加しました。これはセグメントやチャンクの最大値のデフォルト値をカスタマイズするのに使います。この機能はスカラー値を保存しているカラムに対して作成したインデックスカラムに影響します。最大値を調整することでメモリー使用量を削減することができますが、まだ十分にテストされていません。[vector_slice] ベクターカラムの特定の要素を取りだすことのできる
vector_slice関数を追加しました。 [GitHub#582] [村上さんがパッチ提供]PATやDATテーブルでインデックスを使った
_keyの範囲検索をサポートしました。 [GitHub#583][object_list] デバッグ用途に
object_listコマンドを追加しました。データベースの破損を診断するのに便利です。object_listのレスポンスをチェックするスクリプトを追加しました。[mruby]
expression_rewriterでバルクオブジェクトからFloatの値を取り出せるようにしました。 [GitHub#587] [村上さんがパッチ提供][dump] ダンプ結果のテーブルの出力順をIDではなく、名前順にしました。これは非互換な変更ですが、これまでどおりリストアすることができます。
[Windows] バンドルしているmsgpackを2.0.0に更新しました。
[windows] groonga-suggest-create-dataset コマンドを含めるようにしました。
[httpd] バンドルしているnginxのバージョンを1.11.3に更新しました。
[deb] Ubuntu 15.10 (Wily werewolf)のサポートをやめました。
修正¶
[examples edict]
gzcatがあれば、zcatのかわりにそちらを使うようにしました。[GitHub#576] [玉野さんがパッチ提供]参照値を取得する前にポインタのnullチェックを追加しました。 [GitHub#579] [皆川さんがパッチ提供]
インデックスが利用可能であれば、シーケンシャルサーチをしないようにしました。[GitHub#580]
[load]
Timeカラムの値の精度が落ちてしまう不具合を修正しました。 [GitHub#581]複数の論理演算を実行する際、オブジェクトリテラルの実装に問題があったのを修正しました。 [GitHub#584] [村上さんがパッチ提供]
Float、WGS84GeoPoint、TokyoGeoPointが指定していなくてもGRN_OBJ_COMPRESS_ZLIBフラグつきで作成されてしまう不具合を修正しました。 [GitHub#586] [村上さんが報告]
感謝¶
村上さん
玉野裕也さん
皆川さん
6.0.5リリース - 2016-06-29¶
改良¶
[io_flush] 正式なコマンド扱いにしました。
[mruby] マッチ件数を効率よく見積ることで、前方一致検索を最適化しました。
[fuzzy_search] 第3引数として
max_distanceオプションを受けつけるようにしました。よく使うオプションを指定しやすくなります。[GitHub#553] [GitHub#183] [村上さんがパッチ提供][query_expand] クエリ展開のコマンドをサポートしました。同義語がたくさんあるときに使うと便利です。
[select]
--drilldownをcommand_version=3でも使えるようにしました。 [groonga-dev,04055] [村上さんが報告]grn_table_select_sequential()の無駄なコードを削除しました。[GitHub#560] [皆川さんが報告]grn_table_setoperation():
GRN_OP_ADJUSTでスコアを上書きするのではなく、加算することにしました。この変更はgrn_ii_posting_add()との一貫性を保つために行いました。[groonga-dev,04058] [村上さんが報告][dump] 1スレッドで動作しているときに開くテーブルやカラムの最大数を減らすようにしました。
修正¶
[CMake][Windows] mrubyスクリプトのインストール漏れを修正しました。 [groonga-dev,04040] [清川さんが報告]
[Windows] msgpack-cのソースコードをバンドルするようにしました。
[その他] デフォルトのデータベースエンコーディング(utf8)の記述誤りを修正しました。 [GitHub#549] [岩井さんがパッチ提供]
[ユーザーと協力して開発をうまく進めていくための指針] 製品名の記述の誤り(Twitter)を修正しました。 [GitHub#550] [岩井さんがパッチ提供]
検索結果から特定のレコードが漏れてしまう不具合を修正しました。マルチカラムインデックスを
WITH_SECTIONフラグ付きで静的構築していると発生します。 [GitHub#551]GRN_II_CURSOR_SET_MIN_ENABLE=yesが有効な状態でデータをロードしている最中に検索するとクラッシュする不具合を修正しました。GRN_II_CURSOR_SET_MIN_ENABLEはGroonga 6.0.3からデフォルトで有効になりました。[トークンフィルター] スレッドセーフでない実装であったのを修正しました。
[doc] Groonga 6.0.4のリリースエントリの誤字を修正しました。 [GitHub#559] [cafedomancerさんがパッチ提供]
感謝¶
村上さん
清川さん
岩井さん
cafedomancerさん
6.0.4リリース - 2016-06-06¶
6.0.3のバグフィックスリリースです。Groonga 6.0.3ユーザーは6.0.4へアップグレードすることを推奨します。このリリースはいくつかの検索関連の問題を修正しています。
修正¶
[select]
--columnsで作成した一時カラムに対する--drilldownが解放済みのメモリーを参照する問題を修正しました。大きなインデックスを使って検索した場合、不正なデータを参照することがある問題を修正しました。この問題が発生すると検索結果が返るまで長い時間がかかります。 [GitHub#548][groonga-dev,04028][篠田さんが報告]
感謝¶
篠田さん
6.0.3リリース - 2016-05-29¶
改良¶
[実験的]
GRN_II_OVERLAP_TOKEN_SKIP_ENABLEとGRN_NGRAM_TOKENIZER_REMOVE_BLANK_DISABLE環境変数をN-gramトークナイザーのパフォーマンス向上のために追加しました。[GitHub#533][村上さんがパッチ提供][table_create] 存在しないデフォルトトークナイザーやノーマライザー、トークンフィルターを指定したときに無視しないようにしました。過去のバージョンでは
--default_tokenizerや--normalizer、--token_filtersの指定が誤っていても無視するだけで、何もエラー表示をしていませんでした。 これは問題の発覚を遅らせてしまっていました。[select] output_columns v1:
snippet_html(...)などの式を output_columns に指定できるようにしました。[select] ラベルつきドリルダウンの制限をなくしました。これまでは、ラベルつきドリルダウンの最大数は10に制限されていました。
[number_classify]
numberプラグインを追加しました。number_classifyを使うと同じような値を1つにまとめることができます。価格帯ごとにまとめたいときに有用です。timeプラグインを追加しました。time_classify_second,time_classify_minute,time_classify_hour,time_classify_day,time_classify_week,time_classify_month,time_classify_year関数を使うと同じようなタイムスタンプごとにまとめることができます。[select] 動的カラムを
output_columns,drilldownやsortbyに指定できるようになりました。 [GitHub#539,#541,#542,#544,#545][村上さんがパッチ提供]:select \ --columns[LABEL].stage filtered \ --columns[LABEL].type ShortText \ --columns[LABEL].flags COLUMN_SCALAR \ --columns[LABEL].value 'script syntax expression' \ ...
[実験的][select] 範囲検索で十分にフィルタされている場合のパフォーマンスを改善しました。 有効にするには、
GRN_TABLE_SELECT_ENOUGH_FILTERED_RATIO環境変数に値を設定します。[select] フィルタした結果テーブルに対してインデックスを使って検索できるようになりました。
データベースを変更後に閉じられていない場合を検出できるようになりました。Groongaが意図せずクラッシュしたときなど、データベースの整合性が失なわれてしまったかどうかを確認するのに便利です。
[grndb] データベースが正常に閉じられなかった場合を検出できるようになりました。
--drilldown_filterを追加しました。ラベルつきドリルダウンで
filterをサポートしました。インデックスを使わない場合の [between] のパフォーマンスを改善しました。between()の最適化で以前のバージョンに比べ、100倍範囲検索が高速になる場合があります。
[record_number] ウィンドウ関数をサポートしました。
[実験的][select]
--slicesをサポートしました。[select]
--sortbyと--drilldown_sortbyは非推奨になりました。--sort_keysと-drilldown_sort_keysを使うようにしてください。[select]
--drilldown[...]は非推奨になりました。--drilldowns[...]を使うようにしてください。[コマンドバージョン 3] を追加しました。コマンドバージョン3ではオブジェクトリテラル表記になります。
[httpd] バンドルしているnginxのバージョンを1.11.0に更新しました。
修正¶
[select] output_columns v2:
*が正しく展開されない不具合を修正しました。タイムスタンプの値から1usecの情報が失なわれてしまう不具合を修正しました。
mrubyのプラグインが複数のスレッドから初期化されるとクラッシュする不具合を修正しました。
ポスティングリストが非常に長くなると、静的インデックス構築時にクラッシュする不具合を修正しました。これはデータベースのサイズが非常に大きいと発生する可能性があります。
感謝¶
村上さん
6.0.2リリース - 2016-04-29¶
改良¶
比較オペレータ(
>,>=,<,<=)でbool値をサポートしました。TRUEは1、FALSEは0とみなします。これによりbool値を返す関数を比較の際に使えるようになりました。[groonga-http][リクエストタイムアウト]
request_timeoutパラメータをサポートしました。リクエストがキャンセルされたときには、ステータスとしてHTTP/1.1 408 Request Timeoutを返します。[table_tokenize]
index_columnオプションを追加しました。[GitHub#534] [村上さんがパッチ提供][table_tokenize]
estimated_sizeを出力できるようにしました。 [GitHub#518] [村上さんがパッチ提供][geo_in_rectangle] インデックスがなくても動作するようにしました。その場合、シーケンシャルサーチへとフォールバックして動作します。
不必要なループ処理を除去しました。これによりフレーズ検索のパフォーマンスが向上します。[GitHub#519] [村上さんがパッチ提供]
[Groongaへのコントリビュート方法] コントリビューション方法のドキュメントを更新しました。[GitHub#522] [Hiroshi Ohkuboさんがパッチ提供]
[リターンコード] リターンコードのドキュメントを更新しました。
[groonga 実行ファイル]
--default-request-timeoutオプションのドキュメントを追加しました。[windows] DLLのバージョン表示に対応しました。
即値のみ指定されていても、インデックスを使って検索できるようにしました。例えば、
true || column > 0というクエリではcolumnのインデックスがあっても使われませんでした。今回のリリースではインデックスが使われない問題が解決しています。[select] 多段ドリルダウンをサポートしました。[GitHub#524,#526,#527,#528,#529] [村上さんがパッチ提供]
Int{8,16,64}/UInt{8,16,64}型のグループ化をサポートしました。以前のバージョンでは32bitのみがサポートされていました。ソートキーの指定がおかしいときにテーブル名もエラーメッセージに含めるようにしました。
[groonga-suggest-httpd] ドキュメントを更新しました。
[補完] 実行例の誤字を修正しました。[groonga-dev,04008] [立川さんが報告]
[grndb] 後方互換を保つようにしました。ただし、
inspectのかわりにobject_inspectを使うようにしてください。[httpd] バンドルしているnginxのバージョンを1.9.15に更新しました。
[rpm][centos] systemdをサポートしました。
[doc] HTML形式のドキュメントのみをサポートするようにしました。 [GitHub#532] [Hiroshi Ohkuboさんがパッチ提供]
[groonga-httpd][centos] 環境変数をカスタマイズできるようにしました。
[その他]
--with-package-platormオプションのドキュメントを更新しました。[ubuntu] Ubuntu 16.04 (Xenial Xerus)をサポートしました。
修正¶
空文字列のトークナイズ処理が失敗する不具合を修正しました。例えば、
descriptionというカラムがあるとします。そのカラムがインデックスカラムのときに値が空の文字列を与えてトークナイズしようとすると、エラーになっていました。 [GitHub#508] [村上さんが報告]load --table docs [ ["_key","description"], [2,""] ]
クリティカルセクションの処理が原因でクラッシュする不具合を修正しました。 [GitHub#507]
[リリース手順] grntestの使いかたに関する誤字を修正しました。 [GitHub#511] [Hiroshi Ohkuboさんがパッチ提供]
[doc] manのサポートをやめました。
ユーザーを混乱させかねない誤ったデバッグログを出力しないようにしました。
内部で使っているカウンタが誤って初期化されることでデータが正しくフラッシュされない不具合を修正しました。以前のバージョンでは、データ量が一定のサイズを越えると、インデックスを作成するのに失敗していました。 [GitHub#517] [村上さんが報告]
1つのプロセスが複数のキャッシュを並列で扱えない不具合を修正しました。 [GitHub#515]
メモリリークを検出するために内部で使われている
alloc_info構造体の排他処理ができていない問題を修正しました。この修正がないとクラッシュする可能性があります。 [GitHub#523][tokenizer mecab] Groongaと辞書のエンコーディングが一致していないとき、エラーでメモリリークするのを修正しました。 [groonga-dev,04012] [村上さんが報告]
[groonga-suggest-httpd] と [groonga-suggest-learner] の組み合わせが動作しない不具合を修正しました。
[doc] *.poから必要のないUUIDを削除しました [GitHub#531] [Hiroshi Ohkuboさんがパッチ提供]
[highlight_html] 重複したテキストを返す不具合を修正しました。この不具合はハイライトされたキーワードが1024以上あるときに発生していました。
TABLE_HASH_KEY|KEY_LARGEを以前のバージョンで使っていると、データベースが壊れる可能性がある不具合を修正しました。テーブルを再作成してください。
感謝¶
村上さん
Hiroshi Ohkuboさん
立川さん
6.0.1リリース - 2016-03-29¶
改良¶
[mruby] GCとバックトレースに関連してクラッシュするバグを修正するため、バンドルしているmrubyを更新しました。
以下のAPIを公開しました。
- grn_expr_take_obj()
- grn_request_canceler_cancel_all()
- grn_obj_remove_dependent()
- grn_obj_is_text_family_type()
[hash] KEY_LARGE フラグがテーブルに設定されていれば、キーの総サイズが4GiBの制限を超えられるようにしました。:
table_create Users TABLE_HASH_KEY|KEY_LARGE ShortText
[load] 入力データをパラメーターの値ではなく生のJSONで指定したときでも リクエストID を受けつけるようにしました。
POST /d/load?table=XXX&request_id=x load --table XXX --request_id x [ ... ]
[shutdown] 即座に
shutdownするためにmode引数を追加しました。shutdown --mode immediateというように使用します。[Mac OS X] MeCab辞書をHomebrewでセットアップする手順を追加しました。
[load] キャンセル要求があったときにloadをとりやめられるようにしました。
[table_remove] 依存関係のあるテーブルを削除できるようにしました。
--dependent yesを使います。[logical_table_remove] 依存関係のあるテーブルを削除できるようにしました。
[windows] Windows上でメモリデバッグモードをサポートしました。
メモリデバッグモードのstatusでメモリの確保情報をダンプできるようにしました。
[国際化] Sphinxのインストール手順を追加しました。
[実験的] インデックスの静的構築において、チャンクを分割できるようにしました。有効にするには
GRN_INDEX_CHUNK_SPLIT_ENABLE=yesを設定します。[GitHub#479]
修正¶
[load] 存在しないカラムを指定したときに、クラッシュする不具合を修正しました。[GitHub#493]
[load] loadコマンドが適切なエラーコードを返さない不具合を修正しました。[GitHub#495]
[load] loadコマンドのカラムパラメータをパースするときにメモリリークしているのを修正しました。
[load]
--columnsが指定されていないとき、--valuesに含まれる最初の配列がカラム名のリストとして扱われてしまう不具合を修正しました。[GitHub#497][load]
--columnsをより厳密にチェックするようにしました。[GitHub#496]スレッドセーフにするのに不十分なクリティカルセクションの扱いを修正しました。
[column_create] カラムを作成するのに失敗したときにクラッシュする不具合を修正しました。
[table_remove] 存在しないテーブルを削除しようとするとクラッシュする不具合を修正しました。
WITH_POSITIONフラグつきの(保存しているのがテキストでない)ベクターカラムに対してオフラインインデックス構築をすると位置情報が無視されてしまう不具合を修正しました。[grndb] 循環参照していると、スタックオーバーフローを引き起す不具合を修正しました。
[deb] Ubuntu 15.04 (Vivid Vervet)のサポートをやめました。
感謝¶
結城洋志(Piro)さん
6.0.0リリース - 2016-02-29¶
改良¶
[grndb]
--targetモードのとき、テーブルのドメインに指定されているテーブルもチェックするようになりました。[
grn_pat_fuzzy_search()] パトリシアトライを用いた曖昧検索機能を提供する新しいPAIを追加しました。 [GitHub#460][村上さんがパッチ提供][
functions/string] 文字列関連の関数を提供する新しいプラグインを追加しました。 [GitHub#459][村上さんがパッチ提供][
string_length()] 指定した文字列中の文字の数を返す新しい関数を追加しました。この関数はfunctions/stringプラグインに含まれています。 [GitHub#459][村上さんがパッチ提供][
grn_table_fuzzy_search()] 曖昧検索機能を提供する新しいDB APIを追加しました。 [GitHub#463][村上さんがパッチ提供][
GRN_OP_FUZZY] 新しい演算子を追加しました。 [GitHub#463][村上さんがパッチ提供][
grn_obj_search()]GRN_OP_FUZZY演算子をサポートしました。 [GitHub#463][村上さんがパッチ提供][
GRN_TABLE_FUZZY_SEARCH_WITH_TRANSPOSITION]grn_table_fuzzy_search()用のフラグを追加しました。 [GitHub#463][村上さんがパッチ提供][
GRN_TOKENIZE_ONLY] 語彙表に存在しないトークンでもすべてのトークンを返す新しいトークナイズモードを追加しました。 [GitHub#463][村上さんがパッチ提供][
grn_obj_type_to_string()]GRN_VOIDやGRN_BULKといったタイプIDを文字列に変換する新しい関数を追加しました。[object_inspect] 対象オブジェクトに関する情報を返す新しいコマンドを追加しました。
ベクターに対する比較演算をサポートしました。左辺のベクターが
左辺の要素 (演算子) 右辺を満たす要素を1つでも含んでいれば真になります。例:
[1, 2, 3] < 2 # -> true because 1 is less than 2 [1, 2, 3] > 4 # -> false because all elements are less than 4
[
fuzzy_search()] 曖昧検索機能を提供する新しい関数を追加しました。 [GitHub#464][村上さんがパッチ提供][edit_distance] 文字の置換を検出するモードに切り替えるフラグをサポートしました。 [GitHub#464][村上さんがパッチ提供]
vector_column[2] == 29というような式をインデックスを使って検索できるようになりました。[
GRN_PLUGIN_CALLOC()]calloc()機能を提供するプラグイン向けの新しいAPIを追加しました。 [GitHub#472][村上さんがパッチ提供]vector_column[2] < 29のようなベクターの特定要素に対しての比較演算をインデックスを使って検索できるようになりました。[
grn_plugin_proc_get_var_bool()] 真偽値の引数値を取得する機能を提供するプラグイン向けの新しいAPIを追加しました。[
grn_plugin_proc_get_var_int32()] 32bit整数の引数値を取得する機能を提供するプラグイン向けの新しいAPIを追加しました。[
grn_plugin_proc_get_var_string()] 文字列の引数値を取得する機能を提供するプラグイン向けの新しいAPIを追加しました。[object_remove] オブジェクトを削除する新しいコマンドを追加しました。
object_removeは壊れたオブジェクトも削除できます。mips/mpiselをサポートしました。 [debian-bugs:770243][岩松さんが報告][Thorsten Glaserさんが報告][YunQiang Suさんが報告][Dejan Latinovicさんが報告][Steve Langasekさんが報告]
[grndb][CMake] 対応しました。
[
grn_expr_syntax_expand_query()] クエリー展開機能を提供する新しいAPIを追加しました。[
snippet()] スニペット機能を提供する新しい関数を追加しました。 [GitHub#481][村上さんがパッチ提供][
highlight()] ハイライト機能を提供する新しい関数を追加しました。 [GitHub#487][村上さんがパッチ提供]XXX && column != xxxという式の最適化をサポートしました。内部でXXX &! column == xxxに変換します。[Memcachedバイナリプロトコル]
--memcached-columnを追加しました。memcachedプロトコルで既存のカラムにアクセスできます。[groonga-httpd] TLSをサポートしました。 [groonga-dev,03948][北市さんが報告]
[groonga-httpd] バンドルしているnginxのバージョンを1.9.10から1.9.11に更新しました。
[Windows][CMake] LZ4をサポートしました。LZ4はバンドルしています。
修正¶
[select] カラム出力処理にエラー処理を追加しました。 [GitHub#332][横山さんが報告]
function(インデックスがあるカラム) == 29がfunction()を無視する問題を修正しました。 [groonga-dev,03884][村上さんが報告][reindex]
reindexがクエリーキャッシュをクリアーしない問題を修正しました。[パトリシアトライ] パトリシアトライのキーが整数のとき、キーでソートするとソートされていない結果が返る問題を修正しました。 [GitHub#476][佐藤竜之介さんが報告]
[select]
--queryに大量のキーワードを指定したときにクラッシュする問題を修正しました。 [GitHub#484][佐藤博之さんが報告][select] コマンドバージョン または プリティープリント を使ったときに間違ったキャッシュが使われる問題を修正しました。 [GitHub#490][北市さんが報告]
感謝¶
横山さん
村上さん
岩松信洋さん
Thorsten Glaserさん
YunQiang Suさん
Dejan Latinovicさん
Steve Langasekさん
佐藤竜之介さん
佐藤博之さん
北市真さん