お知らせ - 8系#
8.1.1リリース - 2019-01-29#
改良#
[logical_select] 新しい引数
--load_table
、--load_columns
、--load_values
を追加しました。logical_select
の結果を--load_table
で指定したテーブルへ格納できます。--load_values
オプションは、logical_select
の結果のカラムを指定します。--load_columns
オプションは、--load_table
で指定したテーブルのカラムを指定します。このようにして、
--load_values
で指定したカラムの値を、--load_columns
で指定したカラムへ格納できます。
インデックスの更新エラー時のログを改善しました。
ログに、より詳細な情報を追加しました。
例えば、ポスティングリストのマージに失敗した時にマージ元のバッファーとチャンクを出力します。
また、バッファー確保のエラーが発生した時は、バッファーの空き領域と要求サイズをログに出力します。
[groonga 実行ファイル] 新しいオプション
--log-flags
を追加しました。Groongaのログに出力する項目を指定できます。
以下のような項目を出力できます。
タイムスタンプ
ログメッセージ
ロケーション(ログが出力された場所)
プロセスID
スレッドID
以下のように接頭辞を指定できます。
+
この接頭辞は、 "フラグを追加する"という意味です。
-
この接頭辞は、"フラグを削除する"という意味です。
接頭辞無しは、"存在しているフラグを置き換える"という意味です。
具体的には、以下のようにフラグ指定できます。
none
ログに何も出力しません。
time
ログにタイムスタンプを出力します。
message
ログにメッセージを出力します。
location
ログの出力場所(ファイル名、行数、関数名)とプロセスIDを出力します。
process_id
ログにプロセスIDを出力します。
pid
このフラグは、
process_id
のエイリアスです。
thread_id
ログにスレッドIDを出力します。
all
このフラグは、
none
とdefault
以外の全てのフラグを指定します。
default
ログに、タイムスタンプとログメッセージを出力します。
|
を使って、複数のフラグを指定することもできます。
修正#
インデックスの更新エラー発生時にメモリリークする問題を修正しました。
[ノーマライザー] ステートレスなノーマライザーとステートフルなノーマライザーを同時に使用した時に、それらが誤った結果を返すバグを修正しました。
ステートレスなノーマライザーとは以下です。
unify_kana
unify_kana_case
unify_kana_voiced_sound_mark
unify_hyphen
unify_prolonged_sound_mark
unify_hyphen_and_prolonged_sound_mark
unify_middle_dot
ステートフルなノーマライザーとは以下です。
unify_katakana_v_sounds
unify_katakana_bu_sound
unify_to_romaji
8.1.0リリース - 2018-12-29#
改良#
[httpd] バンドルしているnginxのバージョンを1.15.8に更新しました。
修正#
io_flush
コマンド実行後に、DBに対するアンロックが常にフラッシュの実行後になってしまうバグを修正しました。参照先を持たないレコードを持つテーブルに対して
reindex
コマンドを実行した際に、reindex
コマンドが終了しないバグを修正しました。
8.0.9リリース - 2018-11-29#
改良#
[トークナイザー] トークナイザーの作成に失敗した際のエラーメッセージにトークナイザーの名前を出力するよう改良。
[トークナイザー][TokenDelimit] トークンの区切り文字のカスタマイズをサポートしました。
空白以外のトークンを区切り文字に使えます。
[トークナイザー][TokenDelimit] 新しいオプション
pattern
を追加しました。このオプションにより、区切り文字にに正規表現を指定できます。
[トークナイザー] 各トークンの情報に
force_prefix_search
の値を追加しました。"force_prefix" は後方互換のため残しています。
[トークンフィルター] ビルトインのトークンフィルタ
TokenFilterNFKC100
を追加しました。NormalizerNFKC100のように
unify_kana
オプションで、カタカナをひらがなへ変換できます。
[トークンフィルター][TokenFilterStem] 新しオプション
algorithm
を追加しました。このオプションによって、英語以外の言語(フランス語、スペイン語、ポルトガル語、イタリア語、ルーマニア語、ドイツ語、オランダ語、スウェーデン語、ノルウェー語、デンマーク語、ロシア語、フィンランド語)をステミングできます。
[トークンフィルター][TokenFilterStopWord] 新しいオプション
column
を追加しましたこのオプションによって、is_stop_word以外のカラムをスットプワードに指定できます。
[dump] トークンフィルターのオプションの出力をサポートしました。
TokenNgram
やTokenMecab
等のようなオプションを持つトークナイザーを指定した場合、それらのオプションもtable_list
コマンドで出力できます。
[truncate] トークンフィルターのオプションを持ったテーブルをサポートしました。
TokenFilterStem
やTokenStopWord
等のようなオプションを持つトークナイザーを持つテーブルでもtruncate
できます。
[schema] トークンフィルターのオプションの出力をサポートしました。
[ノーマライザー]
NormalizerNFKC100
に新しいオプションunify_to_romaji
を追加しました。このオプションによって、ひらがなとカタカナをローマ字に正規化できます。
[query-log][show-condition] "func() > 0"をサポートしました。
[Windows] アンマップ前のフラッシュを確実にするよう改善しました。
ファイル入力のエラーメッセージを改善しました。
[httpd] バンドルしているnginxのバージョンを1.15.7に更新しました。
CVE-2018-16843とCVE-2018-16844のセキュリティの修正が含まれています。
修正#
ウインドウ関数を評価する際にメモリリークする問題を修正しました。
[groonga-httpd] ログの内容が混在することがあるバグを修正しました。
output_columnsのスライスのエラーが発生した際に、無効なJSONが生成されるバグを修正しました。
ネストして参照されているベクターカラムの値を取得する際にメモリリークする問題を修正しました。
インデックス破損を警告するログを出力する際にクラッシュするバグを修正しました。
式の評価で一時的なベクターが再利用された時にクラッシュするバグを修正しました。
例えば、以下のようにベクターを使った式を評価する時にクラッシュします。
_score = _score + (vector_size(categories) > 0)
deleteコマンドで削除したベクターカラムの値がヒットするバグを修正しました。[dodaisukeさんの報告]
感謝#
dodaisukeさん
8.0.8リリース - 2018-10-29#
改良#
[table_list] デフォルトトークナイザーのオプションをサポートしました。
TokenNgram
やTokenMecab
等のようなオプションを持つトークナイザーを指定した場合、それらのオプションもtable_list
コマンドで出力できます。
[select]
record @ 'query'
を使ったシーケンシャルマッチでノーマライザーのオプションをサポートしました。[truncate] トークナイザーのオプションを持ったテーブルをサポートしました。
TokenNgram
やTokenMecab
等のようなオプションを持つトークナイザーを持つテーブルでもtruncate
できます。
[トークナイザー][TokenMecab]
TokenMecab
にtarget_class
オプションを追加しました。このオプションは、指定した品詞のトークンを検索します。例えば、名詞のみを検索することができます。
このオプションは、以下のようにサブクラスを指定することや、
+
や-
を使って、特定の品詞を追加または除外することもできます。したがって、以下のように代名詞を除外して検索することもできます。'TokenMecab("target_class", "-名詞/代名詞", "target_class", "+")'
[io_flush]
io_flush
中のデータベースのロックをサポートしました。io_flush
実行中にio_flush
対象のテーブルを削除するとGroongaがクラッシュする問題があったためです。
[cast_loose] 新しい関数
cast_loose()
を追加しました。この関数は、指定した型へキャストします。もし、指定した値がキャストできない場合、値は、指定したデフォルト値になります。
条件式の評価順序の最適化を追加しました。(実験的)
以下のように環境変数を設定することでこの機能を有効にできます。
GRN_EXPR_OPTIMIZE=yes
インデックス検索可能な正規表現に
(?-mix:XXX)
記法をサポートしました。 [groonga-dev,04683][ Masatoshi SEKIさんの報告](?-mix:XXX)
は XXX と同じ扱いです。
[httpd] バンドルしているnginxのバージョンを1.15.5に更新しました。
Ubuntu 18.10 (Cosmic Cuttlefish)をサポートしました。
修正#
Groonga GQTP サーバーが新しい接続を受け付けなくなることがあるバグを修正しました。[groonga-dev,04688][Yutaro Shimamuraさんの報告]
quitを使わずにクライアントプロセスを中断した時に発生します。
感謝#
Masatoshi SEKIさん
Yutaro Shimamuraさん
8.0.7リリース - 2018-09-29#
改良#
[トークナイザー][TokenMecab] Mecabのメタデータの出力をサポートしました。
TokenMecab
にinclude_class
オプションを追加しました。このオプションは、Mecabのメタデータの
class
とsubclass
を出力します。TokenMecab
にinclude_reading
オプションを追加しました。このオプションは、Mecabのメタデータの
reading
を出力します。TokenMecab
にinclude_form
オプションを追加しました。このオプションは、Mecabのメタデータの
inflected_type
とinflected_form
、base_form
を出力します。TokenMecab
にuse_reading
オプションを追加しました。このオプションは、読みがなによる検索をサポートします。
このオプションは、読みがなを使った検索をするため、表記ゆれの対策として有用です。
[plugin] 複数のディレクトリからプラグインを取得できるようになりました。
GRN_PLUGINS_PATH
に複数のディレクトリを指定できます。Windowsの場合は、":"でWindows以外では、";"で区切ります。GRN_PLUGINS_PATH
は、GRN_PLUGINS_DIR
より優先度が高いです。現状、このオプションはWindowsではサポートされていません。[トークナイザー][TokenNgram]
TokenNgram
にunify_alphabet
オプションを追加しました。unify_alphabet
をfalse
として使うと、TokenNgram
はASCII文字のトークナイズ方法にバイグラムを使います。[トークナイザー][TokenNgram]
TokenNgram
にunify_symbol
オプションを追加しました。TokenNgram("unify_symbol", false)
は、TokenBigramSplitSymbol
と同じ動作です。[トークナイザー][TokenNgram]
TokenNgram
にunify_digit
オプションを追加しました。unify_digit
をfalse
として使うと、TokenNgram
は数字のトークナイズ方法にバイグラムを使います。[httpd] バンドルしているnginxのバージョンを1.15.4に更新しました。
修正#
いくつかのケースでの誤ったスコア計算を修正しました。
ブール値に数値を加算、乗算または除算するときに発生します。
!=
や==
を使ってスカラーとベクトルの列を比較するときに発生します。
8.0.6リリース - 2018-08-29#
改良#
[トークナイザー][TokenMecab]
chunked_tokenize
とchunk_size_threshold
の両オプションに対応しました。[optimizer] query family expressionの推定に対応しました。
column @ query
やcolumn @~ pattern
のようなquery family expressionについて、より効果的な実行計画を立てられます。[optimizer] オプティマイザをプラグインから組み込みの機能に変更し、初期状態で無効としました。環境変数を
GRN_EXPR_OPTIMIZE=yes
と定義するか、従来通りにexpression_rewriters
テーブルを使う事で機能を有効化できます。充分に絞り込み済みの場合において、初期状態でシーケンシャルサーチを行うようにしました。現在の結果が充分に少数である場合、シーケンシャルサーチはインデックス検索よりも高速です。現在の結果がテーブル内の全レコードの1%で1000件未満の場合、インデックス検索可能な場合であってもシーケンシャルサーチが使われます。
現在、この最適化は、
==
と>
と<
と>=
と<=
を使った検索時に適用されます。絞り込みに指定したカラムを持つテーブルのキーが
ShortText
の場合、この最適化を適用するためには、そのテーブルのノーマライザーをNormalizerAuto
にする必要があります。この機能は環境変数で
GRN_TABLE_SELECT_ENOUGH_FILTERED_RATIO=0.0
と設定する事で無効化できます。[load] エラーメッセージにテーブル名を含めるようにしました。
[load]
lock_table
オプションを追加しました。--lock_table yes
が指定された場合、カラムの更新と--each
の適用を行っている間、load
は対象のテーブルをロックします。このオプションはload
とdelete
の衝突を防ぎますが、読み込みの性能を低下させるでしょう。[vector_find] サポートされていないモードでクラッシュしないようにしました。
修正#
[index]
HASH_KEY
を伴ったテキストのベクターに対するオフラインでのインデックス構築に関して、誤ったセクションIDを持つインデックスが構築されてしまうバグを修正しました。--match_columns 'index[0] || index[9]'
が誤ったセクションを使用してしまう問題を修正しました。[highlighter] 語彙表がハッシュテーブルで、且つキーワードがN-gramのNよりも少ない文字数の場合に、誤ったハイライトが行われていた問題を修正しました。
[mruby] 本当のエラーが隠されていた問題を修正しました。mrubyは引数無しで投げられたエラーの伝搬に対応していません。mruby/mruby#290
[トークナイザー][TokenNgram loose]: クエリが曖昧な種類のみであった場合に検索結果が見つからない問題を修正しました。語彙表を伴っての
highlight_html()
も同様に壊れていました。テキストから数値への変換において、後続するゴミ部分が無視されていた問題を修正しました。 "0garbage" は変換エラーになります。
reference_column >= 'key_value'
に当てはまる場合の最適化の問題を修正しました。
8.0.5リリース - 2018-07-29#
改良#
[スクリプト構文] 類似文書検索の補足説明とその日本語訳を追加しました。 [GitHub groonga/GitHub#858] [堀本さんがパッチ提供]
[time_classify_day_of_week] 新しい関数
time_classify_day_of_week()
を追加しました。-fstack-protector
で警告を抑制するようにしました。(OBATA Akioさんが提案)新しいAPI
time_format_iso8601()
を追加しました。grn_raw_string
構造体を公開。新しいAPI:
grn_obj_clear_option_values()
を追加しました。永続的なデータベースのremoveと一時的なデータベースのcloseの際にオプションの値を消去できます。[log]
[ii][update][one]
のエラーメッセージにインデックスカラム名を出力するようにしました。[httpd] バンドルしているnginxのバージョンを1.15.2に更新しました。
[Ubuntu] Ubuntu 17.10 (Artful Aardvark)のサポートをやめました。2018年7月19日でサポートが切れた(EOLになった)ためです。
[Debian GNU/Linux] jessieのサポートをやめました。Debianのセキュリティ&リリースチームはもはやjessieの更新を提供しません。
修正#
POSTでの
/d/load
へのデータ送信が中断された後に誤った結果が返されていたのを修正しました。KyTeaに関する間違った関数呼び出しを修正しました。
[grndb]
--force-truncate
オプションのラベルを追加しました。groonga-normalizer-mysql
のようにプラグインとして提供されているノーマライザーでオプションを使った場合に、データベースを終了するときにクラッシュする問題を修正しました。ノーマライザーとトークナイザーのオプションが無視される場合があった問題を修正しました。この問題は同じオブジェクトIDが再利用された場合に発生していました。
8.0.4リリース - 2018-06-29#
改良#
[log]
[ii][update][one]
のエラーメッセージにサブエラーを追加しました。新しいAPI
grn_highlighter_clear_keywords()
を追加しました。新しいpredicate
grn_obj_is_number_family_bulk()
を追加しました。新しいAPI
grn_plugin_proc_get_value_mode()
を追加しました。[vector_find] 新しい関数
vector_find()
を追加しました。msgpackでのmemcpyの警告を抑制しました。
mrubyを1.0.0から1.4.1に更新しました。
[doc][grn_obj]
grn_obj_is_index_column()
のAPIリファレンスを追加しました。[windows] printfフォーマットの警告を抑制しました。
[windows] msgpackによる警告を抑制しました。
[grn_obj][Plugin] エンコーディングコンバーターを追加しました。ルール:
grn_ctx::errbuf: grn_encoding
grn_logger_put: grn_encoding
mruby: UTF-8
path: locale
[mrb]
LocaleOutput
を追加しました。[windows] イメージのパスのgrn_encodingへの変換をサポートしました。
[トークナイザー][TokenMecab] エラーメッセージのエンコーディングを変換するようにしました。
[window_sum] 対象カラムとしての動的カラムをサポートしました。
[doc][grn_obj]
grn_obj_is_vector_column()
のAPIリファレンスを追加しました。[column_create] より多くのバリデーションを追加しました。
1: ベクターカラムの全文検索インデックスは
WITH_SECTION
フラグが必要です。(ただし、WITH_POSITION
あり、WITH_SECTION
なしのTokenDelmitは許容されます。これはタグ検索に便利なパターンです。)2: ベクターカラムの全文検索インデックスはマルチカラムインデックスであってはいけません。詳細: groonga/groonga
[grndb] 実装が不十分だったため、ログのチェックを一時的に無効にしました
修正#
[sub_filter] 十分にフィルターされたケースで、スコアが多すぎる問題を修正
KyTeaがインストールされているとビルドに失敗する問題を修正しました。
[grndb] 出力チャネルを修正しました。
[query-log][show-condition] クラッシュするバグを修正しました(まだ残っている可能性があります)。
[highlighter][lexicon] ハイライトされないバグを修正しました。キーワードの長さがN未満(N-gramのN。多くの場合はBigramなので2未満)の場合、キーワードがハイライトされていませんでした。
[windows] base path検出時の問題を修正しました。システムロケールのDLLパスが、CP932での「U+8868 CJK UNIFIED IDEOGRAPH-8868」のように0x5c (ASCIIでの
\
)を含む場合に問題がありました。[トークナイザー][TokenNgram] 最初の文字の長さの誤りを修正しました。この問題は、「U+3231 PARENTHESIZED IDEOGRAPH STOCK」のような「PARENTHESIZED IDEOGRAPH」文字で起きていました。
8.0.3リリース - 2018-05-29#
改良#
[highlight_html]
NormalizerNFKC100
またはTokenNgram
を使って検索した結果のハイライトをサポートしました。[トークナイザー]
TokenNgram
に新しいオプションreport_source_location option
を追加しました。このオプションは、highlight_html
で語彙表を使ったハイライトをする時に使用します。[ノーマライザー]
NormalizerNFKC100
に新しいオプションunify_middle_dot option
を追加しました。このオプションは、中点を正規化します。・
の有無や・
位置にかかわらず検索できます。[ノーマライザー]
NormalizerNFKC100
に新しいオプションunify_katakana_v_sounds option
を追加しました。このオプションは、ヴァヴィヴヴェヴォ
をバビブベボ
へ正規化します。例えばバイオリン
をヴァイオリン
で検索できます。[ノーマライザー]
NormalizerNFKC100
に新しいオプションunify_katakana_bu_sound option
を追加しました。このオプションは、ヴァヴィヴゥヴェヴォ
をブ
に正規化します。例えば、セーブル
やセーヴル
をセーヴェル
で検索できます。[sub_filter] 十分にフィルターされたケースでの
sub_filter
の動作を最適化しました。この最適化は、sub_filter
実行前に十分にレコードが絞り込まれているケースで有効になります。[groonga-httpd] 全てのワーカのコンテキストアドレスをユニークにしました。コンテキストアドレスは、以下のクエリーログの
#{ID}
です。#{TIME_STAMP}|#{MESSAGE}#{TIME_STAMP}|#{ID}|>#{QUERY}#{TIME_STAMP}|#{ID}|:#{ELAPSED_TIME} #{PROGRESS}#{TIME_STAMP}|#{ID}|<#{ELAPSED_TIME} #{RETURN_CODE}[delete] 新しいオプション
limit
を追加しました。以下の例のように、削除するレコードの件数を制限できます。delete --table Users --filter '_key @^ "b"' --limit 4
[httpd] バンドルしているnginxのバージョンを1.14.0に更新しました。
修正#
[logical_select] 動的カラムをフィルターした時にエラーが発生するとメモリリークする不具合を修正しました。
[logical_count] 動的カラムの初期化に失敗した際にメモリリークする不具合を修正しました。
[logical_range_filter] 動的カラムの評価に失敗した際にメモリリークする不具合を修正しました。
[トークナイザー]
loose_symbol
のように緩いトークナイズをした時にsource_offset
が誤った値になる不具合を修正しました。[ノーマライザー]
U+FF21 FULLWIDTH LATIN CAPITAL LETTER A
のような全角ラテン大文字が、U+0061 LATIN SMALL LETTER A
のようなラテン小文字に正規化されない不具合を修正しました。すでに、NormalizerNFKC100
を使用している場合は、インデックスを再生成する必要があります。
8.0.2リリース - 2018-04-29#
改良#
[grndb][--force-truncate]
grndb recover --force-truncate
オプションを指定することで、テーブルにロックが残ったままの状態でも truncate できるようにしました。[logical_range_filter]
sort_keys
オプションに対応しました。新しい関数
time_format()
を追加しました。Time
型のカラムの値を時刻表記で出力できます。書式はstrftime
用の形式を指定できます。[トークナイザー] 新しいトークナイザー
TokenNgram
を追加しました。このトークナイザーは、オプションを通じて挙動を動的に変えることができます。対応しているオプションは以下の通りです。n
: Ngram の「N」を指定します。例えば trigram の場合は「3」です。loose_symbol
: 記号を含む語句について、記号の有無の違いを無視して検索できるようにトークナイズします。例えば「090-1111-2222」という語句は、「09011112222」「090」「1111」「2222」「090-1111-2222」のいずれで検索した場合にも検索結果としてヒットするようになります。loose_blank
: 空白を含む語句について、空白の有無の違いを無視して検索できるようにトークナイズします。例えば「090 1111 2222」という語句は、「09011112222」「090」「1111」「2222」「090 1111 2222」のいずれで検索した場合にも検索結果としてヒットするようになります。remove_blank
: 空白を含む語句について、空白無しの語句で検索できるようにトークナイズします。例えば「090 1111 2222」という語句は、「09011112222」「090」「1111」「2222」のいずれで検索した場合にも検索結果としてヒットするようになります。空白を含む語句「090 1111 2222」での検索にはヒットしない点にご注意下さい。
[ノーマライザー] Unicode 10.0 の NFKC(Normalization Form Compatibility Composition)に基づくノーマライザーである "NormalizerNFKC100" を追加しました。
[ノーマライザー] ノーマライザーの "NormalizerNFKC51" と "NormalizerNFKC100" でのオプション指定に対応しました。ノーマライザーの挙動を動的に変えることができます。対応しているオプションは以下の通りです。
unify_kana
: 同じ音となる全角ひらがな、全角カタカナ、半角カタカナの文字を同一視します。unify_kana_case
: 全角ひらがな、全角カタカナ、半角カタカナで拗音、促音などを表す小さな文字(例:「ぁ」「ゃ」「っ」)を大きな文字と同一視します。unify_kana_voiced_sound_mark
: 全角ひらがな、全角カタカナ、半角カタカナで濁点や半濁点の有無を同一視します。unify_hyphen
: ハイフンに類する文字すべてをハイフンと同一視します。unify_prolonged_sound_mark
: 長音記号に類する文字すべてを長音記号と同一視します。unify_hyphen_and_prolonged_sound_mark
: ハイフンに類する文字と長音記号に類する文字のすべてをハイフンと同一視します。
[dump] トークナイザーとノーマライザーのオプションの出力に対応しました。トークナイザーまたはノーマライザーのオプションを含んだ状態でGroonga 8.0.2およびそれ以降で出力した dump は、Grooga 8.0.1以前のバージョンでは読み込めず、未対応の情報によりエラーとなります。
[dump] トークナイザーとノーマライザーのオプションの出力に対応しました。トークナイザーまたはノーマライザーのオプションを含んだ状態でGroonga 8.0.2およびそれ以降で出力した schema は、Grooga 8.0.1以前のバージョンでは読み込めず、未対応の情報によりエラーとなります。
Ubuntu 18.04 (Bionic Beaver)をサポートしました。
修正#
スペースのみの検索クエリが意図しないレコードにマッチする不具合を修正しました。[groonga-dev,04609][satouyuzhさんの報告]
誤ったスコアラーが使われる場合があった不具合を修正しました。この問題は以下のように複数のスコアラーが使われた時に発生していました:
--match_columns 'title || scorer_tf_at_most(content, 2.0)'
「thread_limit」の変更に時間がかかりすぎる問題を修正しました。
感謝#
satouyuzhさん
8.0.1リリース - 2018-03-29#
改良#
[ログ] クエリーログ内で
filter
条件を表示するようにしました。この機能はデフォルトでは、無効になっています。有効にするためには、環境変数GRN_QUERY_LOG_SHOW_CONDITION=yes
を設定します。*.pdb
を*.dll
と*.exe
と同じディレクトリにインストールされるようにしました。[logical_count]
filtered
ステージの動的カラムをサポートしました。[logical_count] [post_filter] フィルタータイミングを新規追加しました。
filtered
ステージのカラムが生成された後に実行されます。[logical_select] [post_filter] フィルタータイミングを新規追加しました。
filtered
ステージのカラムが生成された後に実行されます。ベクターデータに対してLZ4/Zstd/zlibの圧縮をサポートしました。
_key
のようなアクセサへのエイリアスをサポートしました。[logical_range_filter] 大きい結果セットに対するウィンドウ関数の動作を最適化しました。一致するレコードが十分見つかった場合は、残りのウィンドウに対してウィンドウ関数を適用しません。
TODO: この最適化は、最適化によるオーバーヘッドが無視出来ない場合、小さな結果セットに対しては、無効になります。 オーバーヘッドがどのくらいになるのかは、まだ評価出来ていません。
[select]
match_escalation
パラメーターを追加しました。--match_escalation yes
とすることによって、マッチ演算のエスカレーションを強制的に有効にします。このパラメータは、--match_escalation_threshold 99999....999
よりも強力です。match_escalation yes
は、SOME_CONDITIONS && column @ 'query'
もエスカレーションしますが、--match_escalation_threshold
ではしないためです。デフォルトは、
--match_escalation auto
です。これは、既存の動作と同じです。--match_escalation no
とすることで、マッチ演算のエスカレーションを無効にできます。これは、--match_escalation_threshold -1
と同様の動きになります。[httpd] バンドルしているnginxのバージョンを1.13.10に更新しました。
修正#
共通接頭辞がどのトークンにもマッチしない時にメモリリークする問題を修正しました。[GitHub#820] [村上さんがパッチ提供]
同一プロセスで複数のデータベースを開いている時に、異なるデータベースのキャッシュを使用してしまう問題を修正しました。
誤ったインデックスが構築される問題を修正しました。この問題は、インデックスカラムのソースがベクターカラムでかつ、
WITH_SECTION
を指定していない時だけ発生します。比較時(>,>=,<,<=,==,!=)に定数がオーバーフローまたは、アンダーフローし得る問題を修正しました。
感謝#
村上さん
8.0.0リリース - 2018-02-09#
メジャーバージョンアップです! メジャーバージョンアップですが、互換性は壊れていないので、データベースを再構築することなくアップグレードできます。
改良#
[select]
--drilldown_adjuster
とdrilldowns[LABEL].adjuster
を追加しました。drilldown結果に対して、スコア調整できるようになります。[動的なインデックス構築方法] 環境変数の名前を
GRN_II_REDUCE_EXPIRE_ENABLE
からGRN_II_REDUCE_EXPIRE_THRESHOLD
へ変更しました。GRN_II_REDUCE_EXPIRE_THRESHOLD=0 == GRN_II_REDUCE_EXPIRE_ENABLE=no
。GRN_II_REDUCE_EXPIRE_THRESHOLD=-1
とすると、しきい値はii->chunk->max_map_seg / 2
となります。GRN_II_REDUCE_EXPIRE_THRESHOLD > 0
とすると、しきい値はMIN(ii->chunk->max_map_seg / 2, GRN_II_REDUCE_EXPIRE_THRESHOLD)
となります。デフォルト値は、GRN_II_REDUCE_EXPIRE_THRESHOLD=32
です。[between] 境界値なしの
between()
を受け付けるようにしました。between()
の引数の数が3つでも実行できます。2番目と3番目の引数が境界を含むものとして処理されます。
修正#
ハッシュテーブルのメモリリークを修正しました。 [GitHub:mroonga/mroonga#190][fuku1さんの報告]
配列のメモリリークを修正しました。
[select]
output_columns
で結果の変化する関数を使っている時にキャッシュしないようにしました。[Windows]
WSASend
が適切なエラーコードを返すようにしました。
感謝#
fuku1さん